тема не совсем по 1с (в реальности это MySQL), но по сколько она носит не теоретический вопрос вполне можно обсуждать и на примере 1с
есть некий справочник в котором условно 100 000 элементов (то есть всякие циклы отпадают), каждый элемент этого справочника должен пройти некую цепочку действий, часть действий ручные, часть автоматические
пример выполнения последовательности
вручную поставить цену
вручную отнести к нескольким категориям
автоматически отправить предложение нескольким контрагентам
автоматически путем поиска в другой базе заполнить аналоги
вручную проверить корректность заполнения аналогов
заранее мы точно не знаем всей последовательности а можем определить следующий шаг только по итогам текущего, например отправка контрагентам нужна только определенной категории. Для некоторых случаев допускается параллельное выполнение нескольких процессов.
А теперь вопрос - как организовать хранение состояний и всей последующей цепочки?
самый простой вариант добавить поле/поля в сам справочник, но это не очень хорошо, так как во первых частая перезапись справочника это плохо с точки зрения возможности потери информации (я работаю не НЕ транзакционном MySQL, да такое бывает)
второй вариант - сделать отдельную таблицу (регистр сведений) и туда писать план (что надо выполнить), вариант не очень хороший так как придется заморачиватся с реализацией сборщика мусора
третий вариант - сделать отдельную таблицу (регистр сведений) и туда писать все, все этапы и по каждому этапу результат, в данном варианте не очень хорошо - размер и проблемы с индексами, или необходимость делать дополнительные таблицы для справочника обработок (сейчас это просто строка)
короче каким путем идти?
может еще какие варианты?
(6)+ Но в mysql конечно слегка урезанные view вот в oracle они просто офигенны
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший