Архитектура решения включала следующие изменения:
- Метаданные: добавлена табличная часть, которая заполнялась программно в модуле объекта внутри процедуры ПриКомпоновкеРезультата.
- Интерфейс: форма отчета — копия общей формы ФормаОтчета, была обновлена в соответствии с типовыми изменениями.
- Функционал: на форму добавлена команда, которая считывала данные из табличной части объекта, выгружала их в таблицу значений и передавала как параметр при открытии другой формы.
Выявление проблемы: исчезновение данных в табличной части
В ходе пошаговой отладки было установлено, что добавленная табличная часть корректно заполняется в модуле объекта, однако в момент вызова команды на форме данные в табличной части уже отсутствуют. Происходила неявная очистка коллекции.
Сравнительный анализ стека вызовов в базах до обновления и после обновления выявил различие в последовательности событий:
- До обновления (3.2.1.83): Нажатие «Сформировать» → МодульОбъекта.ПриКомпоновкеРезультата.
- После обновления (3.2.8.9): Нажатие «Сформировать» → МодульФормы.Сформировать → МодульФормы.СформироватьОтчет → МодульОбъекта.ПриКомпоновкеРезультата.
Изменение стека вызовов свидетельствовало об изменении механизма инициализации компоновки результата.
Ловушка «невидимых» изменений в свойствах элементов формы
Причиной различия стала незамеченная при первичном сравнении доработка элементов формы. В типовых решениях для формирования отчетов используется команда «ОтчетСкомпоноватьРезультат», обеспечивающая фоновое выполнение. В доработанном отчете для кнопки «СформироватьОтчет» была переназначена стандартная команда «Сформировать».

Для восстановления работоспособности потребовалось повторно переопределить команду для кнопки на форме, вернув привязку к стандартной команде «Сформировать», как это было реализовано в исходной базе.
После корректного переноса доработки элементов формы («закрепления» команды за кнопкой) логика выполнения синхронизировалась с ожидаемой. Данные в табличной части стали доступны для выгрузки в ТЗ в момент вызова команды открытия вспомогательной формы.
Как не пропустить доработки в элементах форм
При обновлении форм-копий проверять только код недостаточно — нужно мониторить свойства элементов. Мы используем следующий алгоритм выявления «невидимых» изменений:
- Создание эталона: Создаем новый внешний отчет (.erf) и копируем в него типовую форму из релиза-источника.
- Экспорт доработки: Сохраняем текущий доработанный отчет как внешний.
- Сравнение: Используем штатный механизм платформы «Сравнить файлы» для двух полученных .erf файлов.
Важно: Если форма принадлежит справочнику или документу, которые нельзя сохранить напрямую как внешние файлы (.erf или .epf), просто создайте пустую внешнюю обработку и скопируйте форму туда для последующего сравнения.
Этот метод позволяет детально увидеть отличия в свойствах элементов, включая привязки команд и специфические флаги, которые не видны при обычном сравнении текстов модулей.
Вступайте в нашу телеграмм-группу Инфостарт