Нет слов, одни маты
Случилось тут одно происшествие. Расследование оного привело в состояние шока...
1С. План обмена для нестандартной интеграции. Авторегистрация почему-то отключена. Так решили предыдущие разработчики. Никогда не понимал какой в этом плюс, ну да ладно.
Допустим нам надо массово зарегистрировать изменения для всех чеков. Пишем явно:
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Метаданные.Документы.ЧекККМ);
А как зарегистрировать изменение одного чека? Правильно, где-нибудь в подписке на событие обработки проведения (чтобы не при каждой записи, иначе зачем это все):
ПланыОбмена.ЗарегистрироватьИзменения(Узел, СсылкаНаЧек);
И вот интересно, что будет, если что-нибудь пойдет не так и в переменной окажется Неопределено? То есть, что будет, если:
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Неопределено);
Ничего не произойдет, сработает исключение или еще что-нибудь? Читаем синтаксис-помощник, а там... Та-дам!!!
Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае будет выполнена регистрация изменений для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра.
Опущу многочисленные возникающие в голове и во рту маты. То есть, можно конечно это восстановить очистив изменения и зарегистрировав за сегодняшний день. А если в плане обмена много документов разных видов? Тут скорее всего понадобятся манипуляции с архивной копией. В общем, глядя на это, захотелось перестать быть программистом. Ну его на фиг. Лучше уж аналитиком каким, сидеть копипастить БТ в ТЗ и спрашивать сроки...
Если СсылкаНаЧек <> Неопределено Тогда ПланыОбмена.ЗарегистрироватьИзменения(Узел, СсылкаНаЧек); КонецЕсли;