Коварство &Вместо: почему «тихое» копирование процедур — это бомба замедленного действия при обновлении 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 1С:Комплексная автоматизация 2.х Абонемент ($m)

Я при обновлениях ноу хау никогда не использовал, всегда действовал вручную несколько часов, сливая новый код вендора со старыми изменениями. Почитал тут статью "Использование нейросети для обновления расширений 1С: GPT, Git и анализ эффективности на 33 реальных проектах", ну и времени всегда мало, приходится искать варианты, как сделать, чтобы его было достаточно. Мое мнение в том, что методы 1С по тысячам строк, которые приходится лопатить, сначала дорабатывать а потом обновлять, плохо влияют на здоровье, интерес к различным средствам автоматизации процесса обновлений у меня очень высок. Делюсь своими потугами после первого применения. Вывод - ИИ оказался полезным. Простые случаи выгоднее обновлять ручным слиянием традиционно так как ИИ как такси, на обновлениях жрет очень много контекста. Для сложных, которые жрут не меньше, но убивают больше нервов, нашаманил скилл. Описываю процесс, подробно обо всем понемногу. Возможно, у Вас получится лучше, я торопился.

1 стартмани

24.08.2026    839    ksnik    4    

3

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

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

05.08.2026    1330    1c-izh    4    

4

Рефакторинг и качество кода Обновление 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    5998    1c-izh    21    

22

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

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

26.06.2026    2774    1c-izh    3    

6

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

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

25.06.2026    1929    161    akeeela    8    

18

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

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

18.06.2026    4000    Angoleiro    2    

7

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

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

05.06.2026    8515    wonderboy    6    

29

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

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

10 стартмани

04.06.2026    4286    70    andrew.ab    178    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. unknown181538 166 27.05.26 20:06 Сейчас в теме
Думаю, что это достаточно очевидная проблема. Если конфигурация на замке, то, на мой взгляд, если процедура длинная и потенциально изменяемая поставщиком с большой вероятностью, то лучше сделать комментированное изменение прямо в конфигурации, нежели потратить несколько часов, на поиск "бомбы".
zqzq; papche; Yashazz; Трактор; +4 Ответить
3. Dragonim 158 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 158 29.05.26 06:27 Сейчас в теме
(7) Когда у меня появляется желание имеющуюся функцию/процедуру изменить до неузнаваемости, я бью себя по рукам и ищу другую точку входа, которая не будет так сильно калечить имеющуюся логику программы.
YannikAlx; ixijixi; +2 Ответить
9. unknown181538 166 29.05.26 20:24 Сейчас в теме
(8) я тоже так делаю. Но иногда не нахожу.
5. Dach 437 28.05.26 13:38 Сейчас в теме
(3) например, у обработчиков элементов форм нет этой директивы
unknown181538; +1 Ответить
6. unknown181538 166 28.05.26 15:42 Сейчас в теме
(3) В некоторых случаях устраивает, я иногда ее использую. Однако, опять же, переносить код при обновлении в конфигурации проще, чем восстанавливать корректность ИзменениеИКонтроль. К тому же, последняя до сих пор нередко глючит.
2. o.nikolaev 217 27.05.26 22:16 Сейчас в теме
Не реклама, но - просто отдайте накатку обновлений типовых мастерам из ИжТиСи и спите спокойно.
user592289_chel; pscorp; 1c-izh; user1805342; +4 1 Ответить
10. Suker86 86 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 Ответить
Для отправки сообщения требуется регистрация/авторизация