Использование внешних программных средств при обновлении конфигураций 1С

30.03.22

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

В статье приведены некоторые навыки по обновлению нетиповых конфигураций, а также рассмотрены инструменты трехстороннего сравнения/объединения программного кода.

Введение

Одна из важнейших задач, с которой встречаются программисты 1С - обновление конфигураций. Во многих фирмах-франчах знакомство начинающего разработчика/консультанта/сервис-инженера с 1С начинается с обновления программных продуктов. Как правило, новичкам дают задачи по обновлению типовых конфигураций, либо платформ 1С. Обычно, обновление типовых решений не доставляет много хлопот - скачал апдейтник, прокликал несколько раз "далее" - "далее" - "ок" и все готово. Практически тоже самое можно сказать и про обновление платформы - скачал актуальную версию, установил и готово - можно работать. Бывают, конечно, особенности, связанные с нелицензионным ПО, старым железом, однако это все решается на уровне системного администратора, либо сервис-инженера.

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

Итак, в текущей заметке будет продемонстрировано несколько навыков и инструментов по обновлению нетиповых конфигураций.

Всё описанное тестировалось на платформе 8.3.18.1289 и более поздних версиях.

 

Доработка типовых конфигураций

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

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

Очевидно, что самый сложный этап в обновлении конфигурации - сравнение программных модулей и анализ произведенных доработок. Поэтому использование расширений очевидно - необходимо по максимуму перенести программный код из основной конфигурации в конфигурацию расширений. Для этого существует несколько аннотаций: &Перед, &После, &Вместо и &Вместо (с контролем). В рамках нашей концепции рекомендуется использовать лишь две из них: &Перед и &После. Переносимый в расширения код должен компилироваться и правильно отрабатывать после каждого обновления. Код прописанный До или После типового метода обычно не подвергается критическим ошибкам - он носит, по большей части, дополняющий характер. Например, это может быть добавление своих реквизитов на форму в процедуре "ПриСозданииНаСервере" (Рисунок 1)

 

Рисунок 1 - Программное добавление реквизитов и элементов на форму

 

Таким образом возможно максимально разгрузить доработанные модули в основной конфигурации. Использование аннотаций "&Вместо" считается не сильно эффективным, так как при малейшем изменении модуля поставщиком, расширение придется переписывать из-за несоответствия расширяемой процедуры. Инъекции кода и программное переопределение типовой логики лучше производить в основной конфигурации - далее мы увидим, почему так удобнее.

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

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

 

Встроенные средства сравнения/объединения

Обзорно пройдемся по основным этапам сравнения/объединения платформы 1С 8.3. При возникновении окна сравнения, мы должны проанализировать объекты, подвергшиеся изменениям. Устанавливаем фильтр "Показывать только дважды измененные свойства" для понимания, в какие фрагменты кода были внесены изменения нами (сторонними разработчиками) и поставщиком. Далее, можем воспользоваться настройкой объединения модулей, кликнув по шестерёнке (Рисунок 2)

 

Рисунок 2 - Окно сравнения конфигураций

 

Перейдя к настройке объединения модулей, видим окно двустороннего сравнения модулей (Рисунок 3)

 

Рисунок 3 - Штатное двустороннее сравнение модулей

 

В целом, инструмент помогает произвести анализ выполненных доработок, переходя к каждому измененному методу данного модуля. Слева мы видим дорабатываемую нами конфигурацию (Основная конфигурация), справа - конфигурацию поставщика (новый релиз). Если наша база не сильно доработана, и все программные изменения находятся в расширениях, то такой возможности сравнения будет достаточно для обновления почти типовой конфигурации. 

Но давайте рассмотрим недостатки штатного механизма сравнения. Первое - ручное исправление коллизий. Инструмент не может автоматически анализировать доработки. Даже добавленный "сбоку" код должен обрабатываться программистом. Конечно, есть возможность выбора режима обновления - "Объединить с приоритетом основной конфигурации", либо "с приоритетом новой конфигурации поставщика", однако данная возможность не совсем удобна в использовании, к тому же, оставляет лишние комментарии только сбивающие с толку в дальнейшем (хотя, возможно, это дело привычки). Второе - необходимо переключаться на новую процедуру(функцию) после каждой обработки текущей. Отнимает много времени анализ больших и длинных методов, особенно, когда правки в них были не критические. Третье, и самое важное - отсутствие трехстороннего сравнения/объединения. Часто бывает просто необходимо посмотреть на старую конфигурацию поставщика. Необходимо проанализировать типовую старую логику работы метода, сравнить ее с текущей (доработанной), либо сравнить старую типовую логику работы механизма с новой логикой (появившейся в новом релизе). Такая возможность отсутствует в штатных средствах сравнения.

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

 

Perforce P4Merge

Одна из сторонних программ сравнения/объединения, которую считаю дольно удачной, при обновлении нетиповой конфигурации - Perforce P4Merge. Вообще, как можно заметить, платформа предлагает некоторые сторонние программы (Сервис -> Параметры -> Сравнение/Объединение) (Рисунок 4)

 

Рисунок 4 - Выбор внешней программы

 

Из всех указанных утилит, больше всего мне приглянулась Perforce P4Merge. Её достоинства заключаются в следующем:

  • Удобный и наглядный интерфейс
  • Возможность автоматического поиска коллизий 
  • Трехстороннее сравнение

 Для начала покажу, как добавить внешний инструмент сравнения. Скачиваем и устанавливаем Perforce P4Merge (Гуглится довольно быстро). В окне выбора внешней программы позиционируемся на Perforce P4Merge и нажимаем "Изменить" (Рисунок 4). Далее выбираем исполняемый файл с соответствующим названием (Рисунок 5)

 

Рисунок 5 - Выбор p4merge

 

Теперь остается в окне "Режим объединения и порядок подчиненных объектов" выбрать Perforce P4Merge и применить настройки.

Далее, в окне сравнения/объединения у нас появится возможность "Объединить с помощью внешней программы" (Рисунок 6)

 

Рисунок 6 - Объединение с помощью внешней программы

 

Кратко покажу работу с Perforce P4Merge. После того, как мы нажмем на "шестерёнку" - откроется окно трехстороннего сравнения (Рисунок 7)

 

Рисунок 7 - Интерфейс объединения "Perforce P4Merge"

 

В целом интерфейс интуитивно понятен. Первое окно - Основная конфигурация, второе - Старая конфигурация поставщика(до обновления), и третье - Новая конфигурация поставщика (накатываемый релиз). Программа выделяет красной рамкой только те части кода, которые различаются во всех трёх окнах. Так, например, в старой конфигурации в запросе присутствовал фрагмент внутреннего соединения с таблицей "ВТСотрудникиПериодДанных" по двум условиям. В основной конфигурации видно, что второе условие было закомментировано. В новой же конфигурации поставщика вообще отсутствует данное соединение, поэтому конфликт и выделен - решение по объединению должен принимать разработчик. Все остальные моменты практически обрабатываются на автомате. Если изменения есть только в новой конфигурации поставщика, то они и будут применены. Если изменения есть только в основной конфигурации (инъекции кода), то они будут учтены системой. И если фрагмент кода будет изменен в основной конфе, старая и новая конфигурации поставщика совпадают, то будут вынесены правки из основной конфигурации. Вверху, по красным стрелочкам, удобно обходить все конфликты и обрабатывать их используя соответствующие пиктограммы (Квадрат, Сектор, Круг). Кликая по пиктограммам удобно выбирать фрагмент вставки изменения - из основной, из старой, из новой, либо сразу из всех конфигураций (все три фигуры подсвечены).

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

 

Kdiff3

Помимо Perforce P4Merge существует ещё ряд внешних программ, имеющих удобный интерфейс трёхстороннего сравнения/объединения, например, Kdiff3. Данный инструмент скачивается и подключается аналогично вышеописанному.  Кратко разберем интерфейс Kdiff3.

При открытии окна сравнения конфигураций, выбираем пункт объединения с помощью внешней программы. Интерфейс в целом схож с  Perforce P4Merge, однако есть ряд своих особенностей (Рисунок 8)

 

Рисунок 8 - Интерфейс объединения "Kdiff3"

 

Слева находится старая конфигурация поставщика, затем основная конфигурация и справа - новая конфигурация поставщика. Разумеется, порядок следования окон можно изменить, на рисунке представлен вид по умолчанию. Программа позволяет перемещаться в модулях по проблемным фрагментам кода - по частям, измененным в основной конфигурации и в новой конфигурации поставщика. Для выбора объединения вверху окна используются кнопки "A" "B" и "C". На этом принципиальные отличия Kdiff3 от Perforce P4Merge по большей части заканчиваются. По своему опыту могу сказать, что удобнее и нагляднее работать с Perforce P4Merge, однако тут уж дело вкуса.

 

Заключение

В текущей публикации были рассмотрены некоторые этапы по доработке обновляемых конфигураций, а также показаны внешние инструменты трехстороннего сравнения/объединения. Существует множество других программ, позволяющих корректно сравнивать модули при обновлении, но здесь я решил рассмотреть две наиболее часто используемых. Удобство описанных приложений объясняется в простоте их установки и применения - наглядном анализе доработок, используя трехстороннее сравнение. На компьютер, где находится база возможно установить сразу несколько внешних программ и использовать их поочередно, переключаясь по шестерёнке в окне объединения конфигураций (Рисунок 6).

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

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

Обновление нетиповые P4Merge Kdiff3 Расширения

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

  • 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    2210    1c-izh    19    

19

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

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

26.06.2026    779    1c-izh    3    

5

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

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

25.06.2026    1079    125    akeeela    8    

17

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

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

24.06.2026    529    NikolayMaerov    2    

2

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

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

18.06.2026    1623    Angoleiro    2    

5

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

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

10.06.2026    756    NikolayMaerov    0    

2

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

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

05.06.2026    5270    wonderboy    6    

26

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

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

10 стартмани

04.06.2026    1918    41    andrew.ab    53    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kauksi 217 06.04.22 16:09 Сейчас в теме
Perforce закрыли по ходу доступ с российских ip. Ну и ладно Kdiff еще и легче
adhocprog; Alav; Denis211990; +3 Ответить
2. Dimbayyyy 208 06.04.22 16:59 Сейчас в теме
(1) Действительно, сайт не работает. На момент создания публикации проблем не было.
3. kauksi 217 06.04.22 17:27 Сейчас в теме
прямая ссылка на дистр https://cdist2.perforce.com/perforce/r22.1/bin.ntx64/p4vinst64.exe, ну либо пользуйтесь западными прокси
adhocprog; HolyRadiance; alsan; Orlando Skibraves; sergkushkov; Dimbayyyy; +6 Ответить
4. Dmitryi_KK 12 12.09.22 14:58 Сейчас в теме
Добрый день. Подскажите пожалуйста, строку настройки для объединения 2-х файлов для Р4, а то в публикации именно эта часть и закрыта :)
VKuzmin76; +1 Ответить
5. adapter 463 23.11.22 10:54 Сейчас в теме
Теперь остается в окне "Режим объединения и порядок подчиненных объектов" выбрать Perforce P4Merge и применить настройки.

Далее, в окне сравнения/объединения у нас появится возможность "Объединить с помощью внешней программы" (Рисунок 6)


А где это окно "в окне "Режим объединения и порядок подчиненных объектов" выбрать Perforce P4Merge"?
Путь к внешней программе указал. Но у меня при обновлении через поддержку нет пункта "Объединить с помощью внешней программы"
Платформа 8.3.18.1363
6. FoxMara 10 28.12.22 07:50 Сейчас в теме
(5)
в окне сравнения/объединения у нас появится возможность "Объединить с помощью внешней программы" (Рисунок 6)

когда вы изменения в модуле очередном настроили - шестеренку жамкните, там и будет выбор
7. SagittariusA 16.02.23 19:07 Сейчас в теме
Кто-нибудь настраивал "Araxis"?
16. frkbvfnjh 822 17.04.25 13:48 Сейчас в теме
8. gamletspb 125 08.09.23 09:07 Сейчас в теме
у меня при использовании P4Merge при объединении почему-то обрезает целые куски кода, никто не сталкивался с таким безобразием?
Прикрепленные файлы:
10. alexbur 34 16.11.23 05:51 Сейчас в теме
(8), сталкивался. Использовал только для восстановления соответствий методов в расширении с ключом ИзменениеИКонтроль, если исходные методы изменились.

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

Вам удалось победить проблему?
adhocprog; d4rkmesa; +2 Ответить
11. gamletspb 125 16.11.23 11:41 Сейчас в теме
(10) не стал заморачиваться, вернулся на kdiff3. Благо проблема с зависаниями решилась: https://v8.1c.ru/lawmonitor/2089e82b-0453-11ee-8cbc-005056bea45e.htm
12. Гипервизор 29.12.23 12:04 Сейчас в теме
(11) А где по ссылке про kdiff3?
13. gamletspb 125 09.01.24 08:42 Сейчас в теме
(12) извиняюсь, не ту ссылку скопипастил, вот правильная: https://telegra.ph/kdiff-bug-12-27
18. karakymi4 11 18.03.26 12:25 Сейчас в теме
(13) Ссылка не работает(
Последняя версия kiff3 на официальном сайте - 2014 года, так что проблема с зависаниями не устранена получается.
19. vvh74 23.06.26 12:08 Сейчас в теме
(18) Простите за некропостинг, но вдруг кому-то поможет :)
Проблема с зависаниями не решена, но найдена её причина:
При использовании внешней программы KDiff3 при сравнении/объединении конфигураций происходит зависание конфигуратора, если в буфер обмена помещены данные (текст модуля, объект метаданных и т.д.) из конфигуратора.
Способ обхода
Не использовать буфер обмена.
https://bugboard.1c.ru?state=prj-plt8gen-er-60024832


Или, проще говоря - перед запуском kdiff убедитесь, что в буфере нет данных из 1С (например, скопируйте что-то из любой другой программы).
9. Восьмой 99 08.11.23 11:34 Сейчас в теме
Настройки для examdiff
Прикрепленные файлы:
14. d4rkmesa 06.06.24 11:26 Сейчас в теме
Для p4merge, при обновлении методов в расширении с &ИзменениеИКонтроль имеет смысл comparison method выбрать Ignore Line Ending and White Space length Differences - так меньше значимых различий и конфликтов будет показывать.
15. pridecom 750 18.07.24 13:35 Сейчас в теме
Как сделать раскраску кода в Perforce P4Merge ?
17. chrnv 15.05.25 11:32 Сейчас в теме
а можно как-то настроить KDiff так что бы от пробелы и таб-ы перед текстом не считал за отклонения?
А то 1С любят криво выравнивать свои тексты модулей....
Для отправки сообщения требуется регистрация/авторизация