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

14.12.20

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// ТИПОВОЙ КОД
	// ....
	
	// начала фрагмента 13.12.2020
	// мой программный код
	// конец фрагмента 13.12.2020
	
КонецПроцедуры

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// ТИПОВОЙ КОД НОВОЙ ВЕРСИИ КОНФИГУРАЦИИ
	// ....
	
	// начала фрагмента 13.12.2020
	// мой программный код
	// конец фрагмента 13.12.2020
	
КонецПроцедуры

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

В своей практике для подмены типовых процедур и функций в модулях управляемых форм я использую подмену типовых обработчиков через функцию УстановитьДействие()

Это позволяет разделить модуль управляемой формы на 2 блока:

  • типовой программный код,
  • новый программный код.

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

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

// ТИПОВОЙ ПРОГРАММНЫЙ КОД
// ...


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// ...
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	// ...
КонецПроцедуры

&НаСервере
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	// ...
КонецПроцедуры

// НОВЫЙ ПРОГРАММНЫЙ КОД

// процедура переопределение типового обработчика события "ПриСозданииНаСервере" формы
&НаСервере
Процедура нов_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// программный код ПОСЛЕ типовой функции
	// ...
КонецПроцедуры

// процедура переопределение типового обработчика события "ПослеЗаписиНаСервере" формы
&НаСервере
Процедура нов_ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	// программный код ПЕРЕД типовой функцией
	// ...
	
	ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры

&НаСервере
Процедура нов_ПередЗаписью(Отказ, ПараметрыЗаписи)
	// типовой обработчик не вызываем
	//ПередЗаписью(Отказ, ПараметрыЗаписи)
КонецПроцедуры

// процедура переопределяет типовые обработчики формы
&НаСервере
Процедура нов_УстановитьНовыеОбработчикиФормы()

	Если Не ЭтаФорма.Параметры.Свойство("ДополнительныеПараметры") Тогда
		Возврат;
	КонецЕсли;
	
	ОбработчикиФормы = Новый Массив;
	ОбработчикиФормы.Добавить("ПриСозданииНаСервере");
	ОбработчикиФормы.Добавить("ПослеЗаписиНаСервере");
	ОбработчикиФормы.Добавить("ПередЗаписью");
	
	Для каждого ОбработчикФормы Из ОбработчикиФормы Цикл
		УстановитьДействие(ОбработчикФормы, "нов_" + ОбработчикФормы);
	КонецЦикла;
	
КонецПроцедуры

// переопределение типовых обработчиков формы
нов_УстановитьНовыеОбработчикиФормы();

 

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

доработка

См. также

Инструменты администратора БД Групповая разработка (Git, хранилище) Обновление 1С Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 2.х 1С:Библиотека стандартных подсистем Абонемент ($m)

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

4 стартмани

17.11.2025    685    1    KovrovtsevAS    0    

7

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

Обновление конфигураций с расширениями конфигураций.

13.11.2025    1103    vasilev2015    15    

6

Обновление 1С Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Обработка, загружающая по расписанию пакет правил обмена в случае их изменения из установленного в настройках каталога.

2 стартмани

27.10.2025    566    2    cheiser1982    2    

1

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

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

24.10.2025    2023    1c-izh    6    

6

Обновление 1С Рефакторинг и качество кода Механизмы платформы 1С 1С:Предприятие 8 Отраслевые 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 1С:Документооборот Абонемент ($m)

Анализ конфигураций - позволяет проверять любые конфигурации и расширения на наличие ошибок, связанных с вызовом экспортных функций и процедур общих модулей и модулей менеджеров объектов. Проверяются ошибки: 1) Метод объекта не обнаружен 2) Недостаточно фактических параметров. 3) Слишком много фактических параметров. Рекомендуется выполнять при подготовке обновлений. Анализ расширений - позволяет выводить подробный количественный состав расширений по объектам, определить случаи пересечения одного и того же функционала в разных расширения, выявить использование в модулях аннотации "вместо".

10 стартмани

17.10.2025    4739    21    Suker86    13    

19

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

При обновлении конфигураций ЕРП/КА/УТ типовыми обновлениями можно получить ошибку  Превышен максимальный расход памяти сервера за один вызов". С чем это связано? Рассмотрим исправление этой ошибки.

18.08.2025    4253    iolko    10    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. zqzq 25 14.12.20 10:43 Сейчас в теме
Тоже подобный метод пытался применять, но в итоге пришёл просто к комментированию по месту и добавлению своего. Фишка -- в использовании kdiff3 при обновлении (через штатные настройки 1С 8.3) -- решает автоматизировано 99% проблем.

Проблема с подходом в статье -- полностью заменили типовой обработчик ПередЗаписью, а в следующей стандартной версии туда добавили новый важный функционал.
ubnkfl; capitan; +2 Ответить
2. baturo 38 14.12.20 12:25 Сейчас в теме
(1)

Проблема с подходом в статье -- полностью заменили типовой обработчик ПередЗаписью, а в следующей стандартной версии туда добавили новый важный функционал.

Отключение обработчика ПередЗаписью сделано для примера, чтобы показать возможность полностью переопределить стандартный обработчик без изменения программного кода типовой процедуры.
3. capitan 2544 14.12.20 12:29 Сейчас в теме
(1)Так наверняка по фен-шую, но делаю как пишет автор и в 99% все взлетает.
Новый важный функционал добавляют не так уж и часто, скорее просто перестает работать обработчик в расширении из-за переименования функций
7. sergpn 18.12.20 08:32 Сейчас в теме
(1) Это удобно иногда, я делаю так, на форме делаешь новую процедуру обработки события, в не вызываешь типовую как у автора. Сам можешь либо до этой процедуры либо после добавить свой обработчик. А вот само переопределение типового обработчика делаю в модуле МодификацияКонфигурацииПереопределяемый. Так на Упр форма все что хочешь можно налепить
4. bulpi 217 14.12.20 13:45 Сейчас в теме
Ээээ... Никто не заметил, что это просто примитивный механизм расширения, сделанный самостоятельно? И он обладает тем же недостатком, что и настоящий механизм расширений.
nekit_rdx; WellMaster; DrAku1a; user847517; MishaD; zhuravlev_as; retr0; +7 Ответить
5. retr0 14.12.20 14:54 Сейчас в теме
6. TrinitronOTV 16 15.12.20 06:38 Сейчас в теме
8. uaz.dba 04.02.21 13:46 Сейчас в теме
Для конфигураций, у которых установлен режим совместимости - использование расширений может быть или не возможно в принципе, или урезано.
Плюс при использовании расширений - после обновления они могут отвалиться из-за какой-то мелочи в форме.
Для отправки сообщения требуется регистрация/авторизация