Разветвленная сеть команд по условию. Для построения сессий. Что скажут мэтры?
Всем привет!
Возникла идея относительно построения разветвленного списка команд в строке команд машинисту. С ней чумовые сессии смогут строить даже те, кто не знаком с языком скриптования.
Суть в следующем. Как стало известно, команда машиниста может получить список команд, присутствующих в строке команд машинисту. Раз она может получить этот список, значит она может и удалять команды оттуда, верно? Добавлять то вряд ли, но это и не требуется. Итак, некая команда под названием "Условие...", дальше по значку > вываливается список собственно условий "Если.../Иначе.../КонецЕсли", потом вываливается список переменных, которые заведены правилом InputTable, как это происходит в команде SVariables (изменить переменную), затем собственно список логических условий ">/</=" и потом целочисленное число.
Когда дойдет очередь до выполнения команды, она проверяет истинность условия и если оно не ложно, передаёт управление следующей команде. Если ложно, ищет в предварительно взятом в массив списке команду "Если..." со значением "Иначе..." и команду "Если..." со значением "КонецЕсли". В ложном варианте удаляет все команды, начинающиеся с команды "Если..." до значения либо "Иначе", либо, если такое значение не встретилось, до значения "КонецЕсли" включительно. И передаёт управление следующей команде, которая осталась в результате проверки.
Для чего нужно. Например, неизвестно какой грузовой состав прибудет на сортировочную станцию, то есть, из каких вагонов. Но когда состав формировался, то переменной PoluvagCoal присвоено значение 14. Когда на сортировочной станции маневровый по командам прицепится к составу, то сработает конструкция:
"Условие...->Если PoluvagCoal=14 --здесь следует набор команд по отцепке 14 полувагонов и дальнейшей их разгрузки/погрузки углем--,Условие...->КонецЕсли
Таким образом, если условие не выполнится, то команда "Условие...->Если" удалит всё, что находится от неё до "Условие...->КонецЕсли" включительно. И дальше будет выполняться команда, которая стоит за "Условие...->КонецЕсли" А там может быть ещё одна проверка, ещё и ещё... Ну при всё при том, конструкция Если .... КонецЕсли, думаю, должна быть в прямом списке команд машинисту: наверняка во всяких ScheduleLibrary шариться слишком накладно.
Что скажете, мэтры скрипта?