Как не потерять доработки 1С при обновлении форм-копий: алгоритм сравнения через внешние файлы

05.08.26

База данных - Обновление 1С

К нам на проект сложного обновления пришла конфигурация «1С:ERP УХ» с доработанным отчетом, построенным на базе типового «Задолженность поставщикам по срокам». После обновления целевая форма открывалась без учета переданных данных.

Архитектура решения включала следующие изменения:

  • Метаданные: добавлена табличная часть, которая заполнялась программно в модуле объекта внутри процедуры ПриКомпоновкеРезультата.
  • Интерфейс: форма отчета — копия общей формы ФормаОтчета, была обновлена в соответствии с типовыми изменениями.
  • Функционал: на форму добавлена команда, которая считывала данные из табличной части объекта, выгружала их в таблицу значений и передавала как параметр при открытии другой формы.
     

Выявление проблемы: исчезновение данных в табличной части

В ходе пошаговой отладки было установлено, что добавленная табличная часть корректно заполняется в модуле объекта, однако в момент вызова команды на форме данные в табличной части уже отсутствуют. Происходила неявная очистка коллекции.

Сравнительный анализ стека вызовов в базах до обновления и после обновления выявил различие в последовательности событий:

  • До обновления (3.2.1.83): Нажатие «Сформировать» → МодульОбъекта.ПриКомпоновкеРезультата.
  • После обновления (3.2.8.9): Нажатие «Сформировать» → МодульФормы.Сформировать → МодульФормы.СформироватьОтчет → МодульОбъекта.ПриКомпоновкеРезультата.

Изменение стека вызовов свидетельствовало об изменении механизма инициализации компоновки результата.
 

Ловушка «невидимых» изменений в свойствах элементов формы

Причиной различия стала незамеченная при первичном сравнении доработка элементов формы. В типовых решениях для формирования отчетов используется команда «ОтчетСкомпоноватьРезультат», обеспечивающая фоновое выполнение. В доработанном отчете для кнопки «СформироватьОтчет» была переназначена стандартная команда «Сформировать».
 


 

Для восстановления работоспособности потребовалось повторно переопределить команду для кнопки на форме, вернув привязку к стандартной команде «Сформировать», как это было реализовано в исходной базе.

После корректного переноса доработки элементов формы («закрепления» команды за кнопкой) логика выполнения синхронизировалась с ожидаемой. Данные в табличной части стали доступны для выгрузки в ТЗ в момент вызова команды открытия вспомогательной формы.
 

Как не пропустить доработки в элементах форм

При обновлении форм-копий проверять только код недостаточно — нужно мониторить свойства элементов. Мы используем следующий алгоритм выявления «невидимых» изменений:

  1. Создание эталона: Создаем новый внешний отчет (.erf) и копируем в него типовую форму из релиза-источника.
  2. Экспорт доработки: Сохраняем текущий доработанный отчет как внешний.
  3. Сравнение: Используем штатный механизм платформы «Сравнить файлы» для двух полученных .erf файлов.

Важно: Если форма принадлежит справочнику или документу, которые нельзя сохранить напрямую как внешние файлы (.erf или .epf), просто создайте пустую внешнюю обработку и скопируйте форму туда для последующего сравнения.

Этот метод позволяет детально увидеть отличия в свойствах элементов, включая привязки команд и специфические флаги, которые не видны при обычном сравнении текстов модулей.

Вступайте в нашу телеграмм-группу Инфостарт

обновление

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Рефакторинг и качество кода Обновление 1С Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бесплатно (free)

На проекте сложного обновления 1С:ERP 2.4.14.181 до версии 2.5.22.106 нам было нужно уложить обновление в технологическое окно 48 часов (выходные). Исходный замер, с учетом промежуточных релизов 2.5.8.443, 2.5.12.270, 2.5.17.234, 2.5.22.106, показал требуемое время в 659 часов…

07.07.2026    5417    1c-izh    21    

21

Обновление 1С Программист 1С 8.3 Россия Бесплатно (free)

Внешняя обработка для проверки методов расширений с директивами &Вместо, &Перед, &После и &ИзменениеИКонтроль после обновления типовой конфигурации. Обработка анализирует файловые выгрузки старой и новой конфигурации, автоматически определяет изменившиеся типовые методы и формирует список методов расширения, требующих проверки.

25.06.2026    1711    150    akeeela    8    

18

Нейросети Обновление 1С Бесплатно (free)

Когда доработанную 1С не обновляли годами, начинать приходится не с переноса кода, а с разбора того, что вообще накопилось в базе. Там могут быть десятки обработок, расширения, правки типовых объектов, а документации либо нет, либо она давно не актуальна. На примере реального обновления разбираем, как кодовые агенты, MCP-серверы и языковые модели помогают навести порядок в доработках, собрать план миграции, понять, где при переносе будут проблемы, и автоматизировать часть исправлений.

05.06.2026    7918    wonderboy    6    

29

Инструментарий разработчика Рефакторинг и качество кода Программист 1С:Предприятие 8 Бесплатно (free)

Инструмент для тех, кто устал читать модули по 50 тысяч строк и искать ошибки глазами. MetaVision загружает выгруженные файлы конфигурации и за секунды строит графы функций, находит уязвимости и подсвечивает проблемы производительности. Ключевые возможности: Визуализация логики функций (графы условий, циклов, транзакций и вызовов). Статический аудит безопасности (RCE, SSRF, COM-инъекции, пароли в коде). Поиск проблем производительности (запросы в циклах, вложенные блокировки). Полнотекстовый поиск по всем модулям конфигурации. Статистика по объектам и функциям. Безопасность: Программа работает строго локально. Код вашей конфигурации не отправляется в интернет и не анализируется на сторонних серверах. Попробуйте MetaVision сегодня — узнайте, что скрывает ваш код.

20.04.2026    13955    1387    KHoroshulinAV    63    

95

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

ИИ действительно помогает команде ускориться: быстрее разбирать код, быстрее входить в сложные участки, быстрее запускать доработки. Проблема в том, что вместе со скоростью он может ускорять и другое — накопление скрытой сложности, рост цены изменений и потерю управляемости. В статье разбираю, почему первые успехи с ИИ так легко опьяняют, когда система начинает выставлять счёт и что нужно сделать, чтобы ускорение не превратилось в новый виток технического долга.

17.03.2026    4157    IgorVasilyev    54    

28

Обновление 1С Программист 1С 8.3 Россия Бесплатно (free)

При разработке тиражного прикладного решения или при использовании автоматизации сборки вам потребуется механизм создания файлов поставки. В статье приведена шпаргалка по работе с ним.

11.02.2026    4280    AntonovaElena    9    

19

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

В статье рассказываю, как писать код 1С в VS Code с помощью бесплатных AI-моделей 🤖 Используем GLM-4.7 через Roocode + Cerebras (до 1 миллион токенов в день). Подключаем бесплатные MCP. Генерируем новый код и смотрим, как AI справляется с задачами.

06.02.2026    26106    Ibrogim    83    

52

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

Некоторые задачи можно и нужно делегировать ИИ, а простые задачи можно отдавать бесплатным моделям. В статье коротко рассказываю про расширение roocode для vscode, инструмент openrouter и реальную задачу по рефакторингу кода.

02.02.2026    20353    Ibrogim    59    

53
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nedomolkov.ivan 173 06.08.26 05:06 Сейчас в теме
Приём с эталонным .erf рабочий, спасибо. Отдельно полезна оговорка про формы справочников и документов, которые напрямую наружу не сохранишь — про это обычно спотыкаются в первый раз.

Добавлю альтернативу для тех, у кого конфигурация уже выгружается в файлы. Форма в XML-выгрузке — это обычный Form.xml, и переназначенная у кнопки команда видна в нём как изменение атрибута, то есть ловится штатным diff-ом, без сборки эталона руками. По трудозатратам разница появляется на второй-третьей форме: эталонный .erf собирается под каждый случай отдельно, а выгрузка делается один раз на всю конфигурацию.

И побочный эффект, ради которого это стоит завести, даже если обновление разовое. Если XML-выгрузка лежит в git, «невидимые» правки свойств перестают быть невидимыми в принципе: они попадают в историю в тот момент, когда их сделали, а не всплывают через два релиза, когда отчёт перестал отдавать данные. Ваш случай — переназначенная команда у кнопки — в git-истории выглядел бы одной строкой диффа с датой и автором, и искать его пошаговой отладкой не пришлось бы.

Ваш алгоритм это не отменяет: когда выгрузки нет и есть только «сломалось после обновления», он остаётся самым коротким путём.

Вопрос по практике: вы собираете эталон на все форм-копии подряд при каждом обновлении или только когда уже что-то отвалилось? Интересно, окупается ли сплошная проверка — форм-копий в доработанной ERP обычно немало.
2. 1c-izh 170 06.08.26 15:59 Сейчас в теме
(1)
ы собираете эталон на все форм-копии подряд при каждом обновлении или только когда уже что-то отвалилось?

Наша методика — постараться найти все формы-копии на этапе оценки, таким образом — да, делаем эталон на все.

Окупаемость же...конкретно по формам-копиям отдельную трудоемкость выделить сложно, всё делается вместе с другими работами по обновлению, но по опыту 100+ проектов — в бюджет попадаем, заказчиков время и стоимость устраивают. Поэтому снова скажем «Да», сплошная проверка окупается)
3. nedomolkov.ivan 173 06.08.26 16:22 Сейчас в теме
(2) Понял, спасибо за прямой ответ. Тогда расходимся мы не в методике, а в исходных условиях. Вы заходите в чужую базу на разовое обновление, истории правок там нет вообще, и эталон единственный способ узнать, что натворили до вас. У нас база живёт годами и лежит в git, поэтому переназначенная команда видна в дифе в тот день, когда её сделали, и сплошную сверку гонять незачем.

Отсюда практический вывод для ваших заказчиков, которые остаются на сопровождении: сразу после вашего обновления заводить выгрузку конфигурации в файлы. Эталон вы собрали один раз, дальше он уже не понадобится.
1c-izh; user1805342; +2 Ответить
4. 1c-izh 170 07.08.26 12:55 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация