Ошибка 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% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Архивирование (backup) Обновление 1С Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Платформа 8.3.17, MS SQL Server: обновление конфигурации падает через 15 секунд на этапе обновления предопределённых данных, и конфигуратор при каждом входе предлагает только повторить. Проверьте у себя, когда сделана последняя полная копия базы: у нас её не было почти месяц. Разбор по минутам: что не помогло (перезапуск агента сервера 1С, перезагрузка, пакетный /UpdateDBCfg, три совета со стороны) и почему. Как ibcmd достал .dt из базы, которая не открывается, и как новую базу подставили под старым именем в кластере 1С через rac, не трогая пользователей. Простой 57 минут, потерь данных нет. Отдельно ошибки ИИ-агента Claude, который работал на сервере, и порядок действий на случай, если это случилось у вас.

03.11.2026    455    nedomolkov.ivan    10    

5

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

Вторая часть серии о переходе ERP 2.5 на 2.6. Я сравнил чистые выгрузки 2.5.27.88, 2.6.1.70 и 2.6.2.59 и выписал то, чего нет в официальных описаниях версий: какие экспортные методы удалены поимённо, какие документы больше нельзя создать и при каком условии, что переименовали без предупреждения. Из двенадцати механизмов, от которых отказывается 1С, к 2.6.2 удалены только два, а большая часть удалённого к ним не относится. Отдельно разбираю, почему перехватчики &ИзменениеИКонтроль ломаются на процедурах, где поменялся только английский текст, и почему доработки выгоднее готовить сразу под 2.6.2. Будет полезно разработчикам, которые сопровождают расширения и внешние обработки на ERP 2.5.27, и тем, кто планирует сроки перехода.

20.10.2026    883    lexatsch    6    

8

Обновление 1С Разработчик 1С 8.3 1С 8.5 Абонемент ($m)

Перед обновлением типовой конфигурации обработка читает код ваших доработок — внешних обработок, отчетов и расширений — и сверяет каждое обращение к конфигурации со старым и новым релизом. Результат — один отчет по всем доработкам: файл и строка, сам фрагмент кода и понятная причина («метод теперь принимает один параметр», «значение перечисления удалено», «перехватываемый метод не найден»). Исходники релизов и обработок можно подготовить прямо из обработки — пакетным запуском Конфигуратора.

3 стартмани

19.10.2026    296    1    InShallaH    0    

3

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

1С считает, что перейти с ERP 2.5 на 2.6 не сложнее, чем обновиться между версиями длительной поддержки, а обязательным переход станет не раньше 30 апреля 2027 года. Я решил проверить это заранее на нашей доработанной ERP 2.5.27, где есть два больших расширения и 517 внешних отчётов и обработок. Форма готовности нашла четыре механизма, которые надо перевести, а про код промолчала. Проверка применимости на чистой 2.6.1 выдала 478 проблем, и настоящих среди них меньше сотни. А сверка кода со словарём изменений нашла ещё 63 проблемы, которых проверка применимости вообще не видит. Часть из них не даст открыть модуль, остальные вылезут уже у пользователей. Рассказываю, как проверить применимость расширения к 2.6.1 без записи в базу, что ловит компилятор, что ломается чаще всего и чем это заменить.

16.10.2026    606    lexatsch    0    

3

Инструментарий разработчика Обновление 1С Разработчик 1С 8.3 Бесплатно (free)

Бесплатная внешняя обработка: до обновления типовой показывает, какие ваши внешние обработки и печатные формы после него упадут. Находит в их коде вызовы общих модулей и менеджеров типовой и сверяет каждый с текущей конфигурацией и с выгрузкой нового релиза: есть ли метод, экспортный ли, сходится ли число параметров. Обработки берёт из справочника или из папки .epf и .erf, без конфигуратора. У каждого вызова статус, строка и причина.

29.09.2026    1166    140    nedomolkov.ivan    2    

9

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

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

22.09.2026    1149    1c-izh    2    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. o.nikolaev 219 15.11.24 02:09 Сейчас в теме
Всегда отдавал обновление на откуп ИжТиСи (не реклама).
3. RustIG 1990 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 1990 15.11.24 09:23 Сейчас в теме
поэтому в окне сравнения/объединения периодически сохраняли настройки объединения в .xml файл MergeSettings

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

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