Коварство &Вместо: почему «тихое» копирование процедур — это бомба замедленного действия при обновлении 1С

27.05.26

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

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

При обновлении эта сторона в работе ERP особенно опасна: ошибка закрытия месяца

В процессе тестирования закрытия месяца в обновленной базе выполнение операции «Актуализация движений документов по данным взаиморасчетов» прерывалось ошибкой: «Временная таблица уже существует "ВтРучныеКорректировки"»
 



 

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

Слабое звено &Вместо

Для локализации проблемы был применен метод пошаговой отладки процедур закрытия месяца в контексте расширений. Установлено, что в обновленной базе в методе ВзаиморасчетыСервер.Выполнить_ФормированиеДвиженийПоРасчетамСПартнерамиИПереоценкаРасчетов переменная ТребуетсяПереоценка принимает значение Истина, а в базе до обновления  — Ложь:



 

Из-за этого отладка в обновленной базе заходит в цикл “Пока НачалоРасчета <= ПараметрыОбработчика.ПараметрыРасчета.КонецПериода”, а в базе до обновления — нет, но именно в этом цикле и вызывается метод ОперативныеВзаиморасчетыСервер.ИсправитьРазвернутоеСальдо, расширенный аннотацией &Вместо, который и содержит ошибку.

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

Но также в процессе отладки общих модулей мы заметили, что текст расширенного метода ИсправитьРазвернутоеСальдо напоминает текст другого типового метода, который тоже выполняется на данном этапе закрытия и выяснилось, что расширенный метод не являлся уникальной разработкой, а представлял собой некомментированную копию типовой процедуры ИсправитьОстаткиВзаиморасчетов с внесенными изменениями.

То есть после доработок клиента один метод выполнялся дважды, так как в типовом коде сначала вызывается метод ИсправитьОстаткиВзаиморасчетов, а сразу после ИсправитьРазвернутоеСальдо.

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

Как оказалось, в релизе 1С:ERP 2.5.22.129 в процедуре ИсправитьОстаткиВзаиморасчетов добавили текст уничтожения временной таблицы ВтРучныеКорректировки:





 

После обновления типовой код стал вызывать последовательно сначала актуализированный метод ИсправитьОстаткиВзаиморасчетов, а затем неактуальный расширенный метод ИсправитьРазвернутоеСальдо, в котором текст уничтожения ВТ отсутствует, что и вызывало конфликт имен временных таблиц.

Решение оказалось простым: код метода в расширении был обновлен в соответствии с актуальной типовой логикой ИсправитьОстаткиВзаиморасчетов из релиза 2.5.22.129, с последующим перенесением доработок клиента.



 

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

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

Чек-лист для обновления расширений с аннотациями &Вместо

Прикрепляем краткий чек-лист для обновления расширений 1С с аннотациями &Вместо, в которых расширенные методы являются копиями расширяемых:

  1. Контроль параметров: при обновлении конфигурации-поставщика в целевом методе могут появиться новые параметры, в том числе необязательные. Сверьте количество и состав параметров в расширении и в новой версии типовой конфигурации. Если параметры не совпадут, расширение просто не скомпилируется.
  2. Проверка контекста и экспортности: иногда при рефакторинге 1С переносит методы из одних модулей в другие или меняет признак Экспорт. Убедитесь, что заимствованный метод все еще находится в том же модуле и доступен для расширения.
  3. Анализ изменений в коде: это самое трудоемкое. Поскольку &Вместо полностью подавляет типовой код, вы обязаны знать, что именно изменил вендор внутри этого метода в новом релизе. Сравните текст типового метода «до» и «после» обновления.  Например, если 1С добавила в метод важную проверку или регистрацию в новом регистре сведений, а ваше расширение об этом «не знает» и крутит старую логику — вы получите расхождение в данных.
  4. Поиск альтернатив (Рефакторинг в &ИзменениеИКонтроль): если вы видите, что типовой метод часто меняется, это повод для рефакторинга. Рассмотрите возможность замены &Вместо на аннотацию &ИзменениеИКонтроль. Так платформа сама подсветит вам места изменений в типовом коде при обновлении (через трехстороннее сравнение), и вам не придется вручную выискивать отличия в текстах модулей.

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

обновление 1с 1С:ERP закрытие месяца

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

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

См. также

Инструменты администратора БД Обновление 1С Системный администратор Разработчик 1С 8.3 Абонемент ($m)

Если обновление 1С уже падало с "Записи регистра сведений стали неуникальными", вы знаете, что платформа называет только первый такой регистр, и каждый следующий всплывает новым запуском обновления. Проверьте заранее: снимите слепок регистров в базе с новой конфигурацией и нажмите "Проверить" в рабочей. Обработка покажет все регистры сведений, где записи после обновления совпадут по измерениям, и сами группы таких записей: укороченная строка, меньше знаков после запятой, укрупнённая периодичность, убранный из составного тип. Удалённое измерение называет, но записи по нему не считает. Что разобрать не может, называет с причиной и в "дублей не найдено" не записывает. Только чтение, без доступа к таблицам СУБД.

10 стартмани

вчера в 15:50    158    0    nedomolkov.ivan    0    

3

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

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

03.11.2026    482    nedomolkov.ivan    12    

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    909    lexatsch    6    

8

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

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

3 стартмани

19.10.2026    303    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    625    lexatsch    0    

3

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

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

29.09.2026    1172    140    nedomolkov.ivan    2    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. unknown181538 166 27.05.26 20:06 Сейчас в теме
Думаю, что это достаточно очевидная проблема. Если конфигурация на замке, то, на мой взгляд, если процедура длинная и потенциально изменяемая поставщиком с большой вероятностью, то лучше сделать комментированное изменение прямо в конфигурации, нежели потратить несколько часов, на поиск "бомбы".
zqzq; papche; Yashazz; Трактор; +4 – Ответить
3. Dragonim 156 28.05.26 06:23 Сейчас в теме
(1) А &ИзменениеИКонтроль вас чем не устраивает?
SlavaKron; markw; +2 – Ответить
4. markw 28.05.26 09:32 Сейчас в теме
(3)
А &ИзменениеИКонтроль вас чем не устраивает?

Ну, видимо, &Вместо позволяет героически создать трудности, а потом их преодолеть. Или просто был старый кусок, который работал, а потом вот так поломалось всё. Причём и раньше могло не всё работать, просто критических изменений не было, которые не приводили к описанному эффекту.
papche; d4rkmesa; DanilaSpevak; +3 – Ответить
7. unknown181538 166 28.05.26 15:44 Сейчас в теме
(4) Я считаю, что вместо использовать целесообразно там, где логика процедуры меняется сильно до неузнаваемости, а изменение способа вызова не ожидается.
8. Dragonim 156 29.05.26 06:27 Сейчас в теме
(7) Когда у меня появляется желание имеющуюся функцию/процедуру изменить до неузнаваемости, я бью себя по рукам и ищу другую точку входа, которая не будет так сильно калечить имеющуюся логику программы.
YannikAlx; ixijixi; +2 – Ответить
9. unknown181538 166 29.05.26 20:24 Сейчас в теме
(8) я тоже так делаю. Но иногда не нахожу.
5. Dach 440 28.05.26 13:38 Сейчас в теме
(3) например, у обработчиков элементов форм нет этой директивы
unknown181538; +1 – Ответить
6. unknown181538 166 28.05.26 15:42 Сейчас в теме
(3) В некоторых случаях устраивает, я иногда ее использую. Однако, опять же, переносить код при обновлении в конфигурации проще, чем восстанавливать корректность ИзменениеИКонтроль. К тому же, последняя до сих пор нередко глючит.
2. o.nikolaev 219 27.05.26 22:16 Сейчас в теме
Не реклама, но - просто отдайте накатку обновлений типовых мастерам из ИжТиСи и спите спокойно.
Khaliullin_Ilmir; pscorp; 1c-izh; user1805342; +4 –1 Ответить
10. Suker86 87 30.05.26 15:47 Сейчас в теме
Когда я обновляю сильно измененную конфигурацию, всегда составляю список изменений по объектам метаданных (в экселе). При сравнении текущей конфигурации я всегда уделяю внимание, не изменена ли функция/процедура в которой &Вместо, если изменена сильно - я копирую её полностью и вношу предыдущие изменения, если незначительно - переношу измененные участки вручную. Это основное правильно, что бы ничего не сломалось.

Кстати, выявить все использования &Вместо можно в функционале "Анализ состава расширения", если интересно ссылка:
Анализ конфигураций, расширений, отчетов и обработок на наличие ошибок (версия 6). Анализ состава расширений.
11. BackinSoda 01.06.26 12:04 Сейчас в теме
По теме: расширения - зло.
Не по теме: Неужели удобно с этими ёлочками и точками на экране, чем обычный белый фон не устраивает ?
12. triviumfan 103 01.06.26 12:28 Сейчас в теме
(11) Это для пробелофобов
unknown181538; +1 – Ответить
13. Baronello 36 01.06.26 14:28 Сейчас в теме
(11) Как включил, когда работал у вендора, так и привык. Чем елочки с точками не устраивают?
user1805342; +1 – Ответить
14. interforum 01.06.26 15:45 Сейчас в теме
Патчи прилетают с аннотацией &Вместо и могут вырубить функционал расширения.
Tarlich; user1805342; +2 – Ответить
15. TimofeySin 179 27.06.26 20:27 Сейчас в теме
Вместо &Вместо делаю изменить с контролем и там :
#вставка
ВызовСвоейПроцедуры();
Возврат
#конецвставки

Смысл тот же, зато при изменении процедуры тебе об этом говорят при обновлении.
user1805342; +1 – Ответить
Для отправки сообщения требуется регистрация/авторизация