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

14.12.20

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

 

доработка

См. также

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

27900 руб.

01.04.2020    145981    645    358    

235

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

Те кто объединял конфигурации находящиеся на поддержке, обновлял подсистемы БСП прекрасно помнят упражнение «10000 тысяч кликов мышкой» или, непонятное словесное заклинание, после которого конфигурация снимается с поддержки целиком.

1 стартмани

26.09.2024    380    1    milkers    2    

7

Обновление 1С Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Россия Бесплатно (free)

Вышел новый релиз для УТ11 5.19.63. На копии базы было выполнено обновление и вылезли проблемы с номенклатурой, подлежащей маркировке. В публикации описаны проблемы, обнаруженные в копии базы конкретной организации.

24.09.2024    532    gull22    1    

8

Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

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

17.09.2024    3982    vatkir    14    

9

Обновление 1С Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Упрощенное обновление конфигураций 1С (предпочтительно самописных) с помощью батника и Яндекс Диска (по публичной ссылке)

1 стартмани

22.08.2024    453    0    user1694357    0    

3

Обновление 1С Системный администратор Россия Абонемент ($m)

На ИТС есть статья, в которой поверхностно описан процесс автоматического обновления тонких клиентов. В качестве примера, что логично, представлены методы конфигурации 1С. Но, в отличие от того же управления списками баз, для обновления не требуется хранить информацию, потому я решил переписать код на php, чтобы можно было отвязаться от 1С. Не работает для файловых баз, подключенных как File="ПутьКПапкеБазы"; (а жаль), для опубликованных файловых - работает.

1 стартмани

20.08.2024    507    MikeSh    10    

1

Обновление 1С Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Бесплатно (free)

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

05.08.2024    646    NikiforovVA    0    

1

Обновление 1С Программист Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Бесплатно (free)

По нашему опыту, есть 2 ситуации, когда хочется отдать обновление нетиповой 1С кому-то другому. А) Если конфигурация и её доработки отлично знакомы, но не хочется заниматься рутиной. Б) Когда обновление длительно откладывалось, накопился «снежный ком» изменений, а команда, которая их делала, давно и неоднократно менялась.

26.06.2024    1140    1c-izh    4    

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

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

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

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