Ошибка src\frntend\src\MergeModuleUtil.cpp или как не потерять недели работы при обновлении конфигурации

11.03.25

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

Расследование ошибки [fntend - src\frntend\src\MergeModuleUtil.cpp] при сравнении/объединении. Восстанавливаем утерянные недели работы.

Одной из задач программиста 1С является обновление релиза типовой конфигурации. Вот и у нас настал момент, когда одновременно с обновлением релиза ERP потребовалось обновить и версию платформы.

Установив новую платформу 1С (8.3.24.1691), перешли к процессу обновления с ERP 2.5.12.270 на ERP 2.5.17.141. Процесс обновления не быстрый, поэтому в окне сравнения/объединения периодически сохраняли настройки объединения в .xml файл MergeSettings. Спустя примерно 2 недели кропотливой работы все-таки пришлось перезагрузить компьютер и установить обновления операционной системы, не завершив обновление релиза до конца.

В надежде на то, что у нас есть MergeSettings файл запустили обновление конфигурации повторно и попытались xml файл с настройками загрузить в конфигуратор.

Но что-то пошло не так, и мы получили следующее сообщение:

 

Недопустимое значение аргумента функции [fntend - src\frntend\src\MergeModuleUtil.cpp]

 

После которого пробил холодный пот... Все сроки были согласованы, планы были построены, даты технологического окна были выбраны, дедлайн был уже близок.

Перспектива начинать всю работу по объединению заново начала прорисовываться. Шансы переноса  даты перехода на новый релиз в январь 2025 года резко увеличились.

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

Вооружившись текстовым редактором который сможет переварить XML файл MergeSettings размером в 20Мб и поддерживает функции сворачивания/разворачивания веток, что позволяет удалять целые блоки в xml файле, приступил к работе хирурга... Удалял из файла объекты с настройками и пытался заново грузить в конфигуратор каждый раз заново запуская обновление, т.к. платформа дает на выбор лишь 2 варианта: "Завершить работу" и "Перезапустить". Какие-то файлы грузились, какие-то снова приводили к падению Конфигуратора. Ушло около 30 попыток прежде чем удалось локализовать проблемный участок.

 

Причины

 

Обнаружилось 2 процедуры с одинаковым наименованием и стало понятно, что Конфигуратор 1С переварить это не может по какой-то причине.

 

 

Сначала была мысль, что 2 процедуры образовались в следствии неудачного объединения или копирования участка из одного места в другой в окне с результатом объединения кода.

Но оказалось, что в обеих конфигурациях поставщика (старой и новой) этот код присутствует.

Располагается он в модуле менеджера справочника "Номенклатура" в ERP и вполне себе типовой.

В сокращенном виде это выглядит таким образом:

 

#Если НЕ МобильныйАвтономныйСервер Тогда
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	//
КонецПроцедуры
#Иначе
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Поля.Добавить("Наименование");
КонецПроцедуры
#КонецЕсли
#КонецЕсли

 

Т.е. процедуры с одинаковым наименованием вполне себе имеют право на существование в различных контекстах.

 

Как вылечить

Чтобы спасти несколько недель работы в данной ситуации единственное что вы можете сделать - удалить проблемные настройки для процедур из xml файла MergeSettings. Закончить процедуру объединения конфигураций полностью и не пытаться больше ничего сохранять или загружать из файла настроек. При повторном сохранении проблемные настройки возвращаются обратно. Т.е. придется каждый раз удалять эти строки, если без сохранений вообще никуда.

 

Как быстро найти проблемный участок

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

Открываем инструмент "Конструктор выражения XPath" из "Инструменты Разработчика" от Сергея Старых. Далее находим команду "Редактировать текст в отдельном окне". В открывшемся диалоге загружаем xml файл MergeSettings. Жмем "ОК" и содержимое переносится в основное окно инструмента. Переходим в поле "Выражение" и копируем "магическое" выражение ниже:

//t:Method[(@name = following-sibling::t:Method/@name and @nameInSecondConfiguration = following-sibling::t:Method/@nameInSecondConfiguration) or (@name = preceding-sibling::t:Method/@name and @nameInSecondConfiguration = preceding-sibling::t:Method/@nameInSecondConfiguration)]/ancestor-or-self::*

Это выражение XPath, которое ищет последовательность узлов с одинаковым наименованием атрибута "name", которое есть ниже или выше от текущего узла. Затем возвращает всех предков (узлы), чтобы найти конкретный объект, которому принадлежат функции/процедуры.

Результат на скриншоте:

 

 

Далее открываем в редакторе, который хорошо работает с большими xml файлами и находим найденный объект с его настройками методов. Удаляем методы, пробуем грузить.

Ошибка присутствует в следующих версиях платформ, которые мне удалось протестировать:

  • 8.3.24.1691
  • 8.3.24.1758
  • 8.3.25.1394

 

Выводы

Правы те, кто говорит, что необходимо не только делать бэкапы, но еще и проверять их работоспособность. Ставка на XML формат для сохранения настроек объединения компанией 1С сделана удачно, т.к в случае с двоичным форматом хранения можно было бы потерять очень много человеко-часов.

 

Обновление от 26.11.2024:

- ошибка была зарегистрирована в 1С еще 14.10.24 - 000164583

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

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

  • 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    4281    1c-izh    20    

21

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

Обновление ролей в расширении 1С отличается от аналогичного процесса в основной конфигурации. Ситуация осложняется, когда доработки вносятся не в «обычное», а в поставляемое расширение.

26.06.2026    1864    1c-izh    3    

5

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

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

25.06.2026    1454    135    akeeela    8    

17

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

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

24.06.2026    1262    NikolayMaerov    2    

2

Нейросети Обновление 1С Программист 1С:Предприятие 8 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Делюсь практикой переноса доработок при обновлении 1С:КА с 2.5.22 на 2.5.27 с помощью Claude, подключённого к конфигурации в EDT через MCP. Что у ИИ получилось хорошо, где он бессилен, что он осознанно отказался переносить — и какой главный вывод я сделал для следующего раза.

18.06.2026    2891    Angoleiro    2    

6

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

Релиз 1С часто превращается в ночной аврал: задачи собираются из переписок, внешние обработки забывают проверить, пользователи тестируют “как получится”, а после обновления команда тушит пожары. Разбираем минимальный релизный процесс для 1С-команды: состав релиза, роли, чек-листы, smoke-проверки, коммуникацию с пользователями и разбор ошибок после выпуска.

10.06.2026    1518    NikolayMaerov    0    

2

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

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

05.06.2026    7005    wonderboy    6    

28

Обновление 1С Обмен с ГосИС Программист 1С 8.3 1С:Управление торговлей 10 Абонемент ($m)

ВАЖНО! Обновление предназначено для технических специалистов! Поддержка формата обмена V2 в локальном модуле ЧЗ. Поддержка формата обмена V2 в модуле ПиоТ. Поддержка многих видов маркируемой продукции.

10 стартмани

04.06.2026    2708    54    andrew.ab    118    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. o.nikolaev 217 15.11.24 02:09 Сейчас в теме
Всегда отдавал обновление на откуп ИжТиСи (не реклама).
3. RustIG 1979 15.11.24 09:22 Сейчас в теме
Спустя примерно 2 недели кропотливой работы все-таки пришлось перезагрузить компьютер и установить обновления операционной системы, не завершив обновление релиза до конца.


не завершив обновление релиза до конца - это что имеется в виду?

Но что-то пошло не так
2. user900380 15.11.24 07:58 Сейчас в теме
Здравствуйте! У меня произошла такая же проблема. Открыл "Конструктор выражения XPath", загрузил xml по кнопке "Редактировать текст в отдельном окне", скопировал "магическое" выражение в поле "Выражение", нажал на кнопку "Вычислить" над основным окном инструмента, но дальше в крайнем правом поле ничего не появилось. Может что сделал не так. Ранее не было опыта работы с "Конструктор выражения XPath". Если не сложно подскажите что делать дальше. Иначе, неделя работы была напрасной. Прилагаю скрин.
Прикрепленные файлы:
12. PerlAmutor 162 17.11.24 19:16 Сейчас в теме
(2) Файл настроек лучше приложите. А так, удаляйте блоками и пытайтесь грузить. Если загрузит, то возвращаете удаленный блок в сокращенном виде и снова грузите, до тех пор пока не найдете проблемное место. Может дополним статью еще какой-нибудь ситуацией.
4. RustIG 1979 15.11.24 09:23 Сейчас в теме
поэтому в окне сравнения/объединения периодически сохраняли настройки объединения в .xml файл MergeSettings

а для чего нужны настройки МерджСеттингс?
5. RustIG 1979 15.11.24 09:29 Сейчас в теме
(0) Зачем вы отключили показывать картинки в статье? Стало не удобно, с одной стороны.
В тексте статьи картинки мелкие, и их можно было бы посмотреть в отдельном окне в разделе картинок....
6. RustIG 1979 15.11.24 09:34 Сейчас в теме
(0)
Правы те, кто говорит, что необходимо не только делать бэкапы, но еще и проверять их работоспособность.

о чем речь? как вы проверите работоспособность бэкапов? особенно ЕРП или многолетних УТ
7. roman72 404 15.11.24 12:50 Сейчас в теме
(6) Авторазвёрткой бэкапа в базу и запуском автотестов?
8. RustIG 1979 15.11.24 14:42 Сейчас в теме
(7) это какой-то поднебесный уровень развития :)
у кого так все круто настроено?
9. roman72 404 16.11.24 01:52 Сейчас в теме
(8) Авторазвёртка бэкапов не поднебесый уровень развития, а банальщина.
Автотесты запускают те, кто и так делает автотесты для проверки качества кода.
Тот же автотест можно и для проверки базы, развёрнутой из бэкапа, запустить.
10. RustIG 1979 16.11.24 09:35 Сейчас в теме
(9) Спасибо, Роман за разъяснение.
Я вот понимаю, что в теории можно сделать. А с практической точки зрения - в какой компании так настроено -
чтобы бэкапы тестами проверять?
Считаю, что это поднебесный уровень развития - бэкапы автоматически разворачивать и проверять автотестами.
ПС. Ожидал, что вы скажете "мы у себя так делаем с ЕРП" или примеры известных компаний приведете. Я бы позавидовал по-хорошему. :)
11. roman72 404 16.11.24 12:50 Сейчас в теме
(10) Я смотрю, вы везде в комментах контролером работаете - "чё сказал? а если у тебя в компании не найду?" )))))))
13. tormozit 7381 10.03.25 08:14 Сейчас в теме
Ссылку бы указать на инструменты разработчика, а то не все знают где качать.
14. PerlAmutor 162 11.03.25 06:35 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация