Ошибка 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

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

См. также

Обновление 1С Программист 1С 8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1C:ERP Бесплатно (free)

В ходе тестового обновления нетиповой конфигурации «1С:ERP» с версии 2.5.7.201 на 2.5.22.129 после завершения всех регламентных процедур были зафиксированы массовые отрицательные остатки по складам.

17.04.2026    182    1c-izh    0    

3

Обновление 1С Программист 1С 8.3 1С:ERP. Управление холдингом Бесплатно (free)

Проект обновления «1С:ERP Управление холдингом» с 3.2.1 на 3.2.8 принёс задачку: логика проверки заполнения обязательных реквизитов «переехала» с момента проведения на этап первичной записи документа.

16.04.2026    218    1c-izh    2    

3

Обновление 1С Программист 1С 8.3 Россия Абонемент ($m)

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

1 стартмани

09.04.2026    364    4    NAlex    0    

2

Обновление 1С Перенос данных 1C Программист 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 Бесплатно (free)

Однажды к нам на проект сложного обновления пришла конфигурация «1С: Документооборот КОРП», которую требовалось обновить в технологическое окно 1 час. И мы обновили базу так, как это делают в подобных случаях с ERP — используя механизм «Обновление через копию».

06.04.2026    3194    1c-izh    9    

6

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

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

01.04.2026    996    vladimir-89    0    

5

Нейросети Обновление 1С Программист 1С 8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

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

1 стартмани

30.03.2026    798    6    erni    6    

4

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

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

11.02.2026    1544    AntonovaElena    9    

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


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

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

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

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