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

14.12.20

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

 

доработка

См. также

Обновление 1С Программист Платформа 1С v8.3 1С:ERP. Управление холдингом Абонемент ($m)

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

10 стартмани

18.02.2025    692    PetrovAnton    6    

5

Обновление 1С Программист Платформа 1С v8.3 Абонемент ($m)

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

10 стартмани

18.02.2025    597    3    kalyaka    0    

7

Обновление 1С Программист Платформа 1С v8.3 Абонемент ($m)

При длительном обновлении из конфигуратора следим за процентом загрузки ПК и отправляем письмо на почту при завершении.

1 стартмани

17.02.2025    281    0    slavik27    0    

3

Обновление 1С Запросы Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

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

2 стартмани

06.02.2025    1835    14    XilDen    26    

35

Групповая разработка (Git, хранилище) Обновление 1С Программист Платформа 1С v8.3 Россия Бесплатно (free)

Внедряем проверку новых версий прямо в расширение. Оповещайте о новых версиях и показывайте пользователям список изменений. Для разработчиков, которые хотят сэкономить время и повысить лояльность клиентов!

05.02.2025    1755    Nonik    10    

17

Обновление 1С Программист Бухгалтер Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Бухгалтерский учет НДС Абонемент ($m)

Обновление для конфигурации Управление торговлей 10.3.88.3 добавляет поддержку ставок НДС 5% и 7%, обеспечивает корректную печать этих ставок на актуальных моделях торгового оборудования (АТОЛ, ШТРИХ, ревизия 4004), содержит актуальные правила обмена с конфигурацией "Бухгалтерия предприятия 3.0" для передачи новых ставок. Новые ставки НДС поддерживается в печатных формах УПД, ТТН и т.д. В состав дистрибутива включены обработки для обслуживания торгового оборудования ККТ нового формата (Штрих-М и АТОЛ)

5 стартмани

31.01.2025    2260    39    karpik666    45    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 2610 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 Сейчас в теме
Для конфигураций, у которых установлен режим совместимости - использование расширений может быть или не возможно в принципе, или урезано.
Плюс при использовании расширений - после обновления они могут отвалиться из-за какой-то мелочи в форме.
Оставьте свое сообщение