Diff&Merge - менеджер генерации кода модулей расширений 1С: &ИзменениеИКонтроль, #Вставка #Удаление, перенос доработок в расширение

24.07.26

Разработка - Инструментарий разработчика

Автоматический генератор кода для расширений 1С. Инструмент берет на себя всю рутину по переносу доработок: отслеживает удаленные, измененные и новые методы, автоматически навешивает префиксы, формирует корректные директивы #Удаление/#Вставка и фильтрует закомментированный код. Никаких кривых блоков и пустых строк внутри директив — только чистый, готовый к вставке в конфигуратор код. Скачайте и попробуйте на своих модулях! Внутри публикации — подробный разбор алгоритма и примеры работы.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Diff&Merge - генератор кода модулей расширений 1С: авто-префиксы &ИзменениеИКонтроль
.epf 18,11Kb
16 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

Генератор расширений 1С: Умный Diff-перенос кода без мусора и ручной работы

Генератор расширений 1С: Умный Diff-перенос кода без мусора и ручной работы

🎯 Как быстро перенести изменения из основной конфигурации 1С в расширение?
Стандартное сравнение и объединение файлов cf и cfe в 1С не позволяет автоматически генерировать чистый код расширения. Инструмент автоматически выполняет diff и merge модулей, выявляет измененные участки кода основной конфигурации и генерирует готовый текст модуля для расширения с использованием правильных директив (#Вставка, #Удаление, &ИзменениеИКонтроль). В основе лежит точный алгоритм Patience Diff, отсекающий ложные срабатывания и визуальный мусор.

Кому и зачем это нужно? (Сценарии использования)

Инструмент создан для разработчиков 1С:Предприятие 8.3, которые сталкиваются со следующими проблемами:

  • Перевод кастомной конфигурации на поддержку: Полный вынос старых доработок из модулей объектов, модулей менеджеров и модулей форм в расширения для упрощения будущих обновлений типовой конфигурации.
  • Сравнение изменений (Diff): Анализ доработанного старого кода конфигурации относительно чистого релиза поставщика с фокусом только на измененных строках.
  • Чистый Merge без мусора: Автоматическая сборка результирующего модуля расширения без ручного оборачивания кода тегами #Вставка и #Удаление.
  • Исключение ложных срабатываний: Стандартный движок сравнения 1С часто сопоставляет сдвиги табуляции, пробелы и пустые строки некорректно. Алгоритм Patience Diff решает эту проблему, опираясь на уникальные якоря.

Главные фишки обработки

1. Алгоритм Patience Diff вместо топорного сравнения
Забудьте о "рваном" сравнении строк. В основе лежит алгоритм Patience Diff (тот же, что использует Git при разрешении конфликтов слияния). Он находит уникальные якоря (неповторяющиеся строки) и строит по ним логическую структуру изменений. Результат — осмысленные блоки вставок и удалений, а не хаотичные куски кода.

2. Умная работа с директивами и пустыми строками
Стандартные средства сравнения часто засовывают пустые строки в #Удаление или #Вставка. Это визуальный мусор! Обработка:

  • Не удаляет пустые строки (они не несут смысла в #Удаление, засоряя код расширения).
  • Вытаскивает пустые строки за пределы директив, сохраняя "вентиляцию" и отступы в теле процедуры такими, как вы их задумали.

3. Интеллектуальная фильтрация закомментированного кода
Часто при доработках старый код не удаляют, а комментируют //. Обработка распознает это! Если строка в #Вставке — это просто закомментированная строка из #Удаления, инструмент не будет плодить бессмысленные блоки, он элегантно обработает такую ситуацию.

4. Автоматическое навешивание префиксов
Забыли добавить префикс Расш1_ к новому методу? Теперь это не ваша проблема. Инструмент автоматически:

  • Добавляет префикс ко всем новым процедурам и функциям.
  • Добавляет префикс в сигнатуры измененных методов (для аннотации &ИзменениеИКонтроль).

5. Корректная работа с многострочными сигнатурами
Парсер умеет читать процедуры и функции BSL, параметры которых разбиты на несколько строк. Он правильно определит шапку, тело и расставит директивы именно там, где нужно.

Логика генерации кода

Алгоритм прост и безотказен:

  1. Метод удален? → Генерируется метод с аннотацией &Вместо с пустым телом и префиксом.
  2. Метод изменен? → Генерируется метод &ИзменениеИКонтроль, внутри которого оригинальный код оборачивается в #Удаление, а ваш новый — в #Вставка.
  3. Метод добавлен? → Генерируется полная копия метода с автоматическим добавлением префикса в имя.

Пошаговый сценарий: Как перенести доработки в расширение за 4 шага

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

Шаг 1. Подготовка исходных текстов модулей
Откройте Конфигуратор 1С. Скопируйте текст типового модуля из чистой конфигурации поставщика (базовый вариант). Скопируйте текст этого же модуля из вашей доработанной основной конфигурации.

Шаг 2. Загрузка данных в обработку
Откройте обработку в режиме «1С:Предприятие». Вставьте скопированный текст модуля поставщика в левое окно («Исходный текст»). Вставьте скопированный текст доработанного модуля в правое окно («Измененный текст»). Укажите префикс расширения (по умолчанию Расш1_).

Шаг 3. Запуск Diff-анализа по алгоритму Patience
Нажмите кнопку сравнения. Встроенный движок сопоставит строки кода. Обработка автоматически отсечет сдвиги табуляции, пробелы и пустые строки, выделив только реальные смысловые изменения (добавленные функции, измененные процедуры, удаленные блоки).

Шаг 4. Генерация готового кода для расширения (Merge)
Обработка выдаст готовый структурированный текст модуля, автоматически обернутый в правильные директивы компиляции. Скопируйте полученный результат одной кнопкой и вставьте его в модуль вашего расширения в Конфигураторе. Процесс ручного переноса и ручной расстановки тегов исключен.

Пример использования (До и После)

Исходный текст поставщика:

#Область ПрограммныйИнтерфейс

Процедура ПодготовитьДанныеДляПечати(ПараметрыПечати) Экспорт
    
    ПараметрыПечати.ДатаНачала = НачалоМесяца(ТекущаяДата());
    ПараметрыПечати.ДатаОкончания = КонецМесяца(ТекущаяДата());
    ПараметрыПечати.Организация = ПолучитьОрганизациюПоУмолчанию();
    ПараметрыПечати.Ответственный = ПолучитьТекущегоПользователя();
    
КонецПроцедуры

Функция ПолучитьСуммуДокумента(ДокументСсылка) Экспорт
    
    Сумма = ДокументСсылка.СуммаДокумента;
    Возврат Сумма;
    
КонецФункции

Процедура УдалитьСтарыеДанные() Экспорт
    
    УдалитьВременныеФайлы();
    ОчиститьКэшПользователя();
    
КонецПроцедуры

#КонецОбласти

Измененный код

#Область ПрограммныйИнтерфейс

Процедура ПодготовитьДанныеДляПечати(ПараметрыПечати) Экспорт
    
    ПараметрыПечати.ДатаНачала = НачалоМесяца(ТекущаяДата());
    //ПараметрыПечати.ДатаОкончания = КонецМесяца(ТекущаяДата()); Убрали конец месяца
    ПараметрыПечати.ДатаОкончания = КонецГода(ТекущаяДата()); // Теперь до конца года
    ПараметрыПечати.Организация = ПолучитьОрганизациюПоУмолчанию();
    ПараметрыПечати.Ответственный = ПолучитьТекущегоПользователя();
    ПараметрыПечати.Подразделение = ПолучитьТекущееПодразделение(); // Добавили строку
    
КонецПроцедуры

Функция ПолучитьСуммуДокумента(ДокументСсылка) Экспорт
    
    Сумма = ДокументСсылка.СуммаДокумента;
    
    // Добавили вентиляцию и новый расчет
    Сумма = Сумма * 1.2; // НДС
    
    Возврат Сумма;
    
КонецФункции

// Процедуру УдалитьСтарыеДанные() полностью удалили

Процедура НоваяПроцедураДляРасширения() Экспорт
    Сообщить("Привет из расширения!");
КонецПроцедуры

#КонецОбласти

 

Результат обработки (Готовый код для расширения):

&Вместо("УдалитьСтарыеДанные")
Процедура Расш1_УдалитьСтарыеДанные()
    // Метод удален в расширении
КонецПроцедуры

&ИзменениеИКонтроль("ПолучитьСуммуДокумента")
Функция Расш1_ПолучитьСуммуДокумента(ДокументСсылка) Экспорт

    Сумма = ДокументСсылка.СуммаДокумента;

#Вставка
    // Добавили вентиляцию и новый расчет
    Сумма = Сумма * 1.2; // НДС
#КонецВставки

    Возврат Сумма;

КонецФункции

&ИзменениеИКонтроль("ПодготовитьДанныеДляПечати")
Процедура Расш1_ПодготовитьДанныеДляПечати(ПараметрыПечати) Экспорт

    ПараметрыПечати.ДатаНачала = НачалоМесяца(ТекущаяДата());
#Удаление
    ПараметрыПечати.ДатаОкончания = КонецМесяца(ТекущаяДата());
#КонецУдаления
#Вставка
    ПараметрыПечати.ДатаОкончания = КонецГода(ТекущаяДата()); // Теперь до конца года
#КонецВставки
    ПараметрыПечати.Организация = ПолучитьОрганизациюПоУмолчанию();
    ПараметрыПечати.Ответственный = ПолучитьТекущегоПользователя();
#Вставка
    ПараметрыПечати.Подразделение = ПолучитьТекущееПодразделение(); // Добавили строку
#КонецВставки

КонецПроцедуры

Процедура Расш1_НоваяПроцедураДляРасширения() Экспорт
    Сообщить("Привет из расширения!");
КонецПроцедуры

 

 Экосистема инструментов: Полный арсенал внедренца и админстратора 1С

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

 

 

Часто задаваемые вопросы по переносу доработок в расширения 1С

В: Можно ли стандартно сравнить/объединить основную конфигурацию (.cf) и расширение (.cfe)?
О: Нет, платформа 1С позволяет выполнять сравнение только между одинаковыми типами метаданных (cf с cf, cfe с cfe). Для переноса кода модулей требуется промежуточный инструмент анализа diff/merge.

В: Как обработка понимает, что именно переносить в расширение?
О: Вы загружаете текст исходного модуля (поставщика) и текст вашего измененного модуля. Обработка через Patience Diff вычисляет дельту изменений и формирует готовый листинг для вставки в модуль расширения.

В: Поддерживаются ли аннотации и директивы автоматизации?
О: Да, инструмент генерирует код, готовый к развертыванию в расширении, автоматически расставляя аннотации &Вместо, &ИзменениеИКонтроль и директивы #Вставка / #Удаление, минимизируя ручную рутину.

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.12.218
  • Управление торговлей, редакция 11, релизы 11.5.27.45

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

Расширение перенос доработок Diff Patience Diff сравнение кода &ИзменениеИКонтроль &Вместо #Вставка #Удаление генератор кода автоматизация разработки мерж парсер модулей префикс расширения рефакторинг обработка 1С

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    75625    383    170    

326

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    269475    1497    422    

1180

Инструментарий разработчика Нейросети Платные (руб)

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

15250 руб.

25.08.2025    64485    132    36    

140

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    40420    115    54    

128

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    9257    40    58    

54

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    26591    98    46    

104

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

9500 руб.

17.05.2024    54968    188    63    

220

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    5016    17    1    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. untru 71 15.06.26 14:09 Сейчас в теме
Как же мне это было нужно 2 года назад)....
2. MissionOnly 27 16.06.26 16:12 Сейчас в теме
Как ИИ понял, что добавили НДС? Сейчас НДС 22%, а не 20%.
3. war41k 864 16.06.26 16:27 Сейчас в теме
(2) Это пример измененных функций и генерации кода модуля обработки причем тут ИИ? :)
4. MissionOnly 27 16.06.26 16:52 Сейчас в теме
(3) Возможно я устарел, но раньше была разница между генерацией кода модуля и отслеживанием синтаксиса кода (синтаксис помощником).
Для отправки сообщения требуется регистрация/авторизация