Обновление типовых конфигураций, в которые были внесены доработки, — это одна из самых ресурсоемких задач для любого 1С-разработчика. С каждым новым релизом объем изменений увеличивается, а процесс объединения конфигураций становится все более болезненным. Давайте разберем, какие методики помогут нам оптимизировать этот процесс и сохранить работоспособность системы при минимальных временных затратах.
Основная причина долгих обновлений — наличие изменений непосредственно в объектах конфигурации. Когда мы снимаем объекты с «замка», при каждом обновлении система вынуждена сравнивать наши изменения с кодом поставщика. Чтобы этого избежать, мы должны стремиться к тому, чтобы основная конфигурация оставалась типовой.
Стратегия переноса логики:
Расширения конфигурации.Хотя в ранних версиях платформы существовали ограничения, современные релизы 1С:Предприятие 8.3 (начиная с 17-й и 18-й версий) позволяют использовать подписки на события даже внутри расширений. Если ваша конфигурация поддерживает необходимый уровень режима совместимости, смело переносите обработчики событий в расширения.
Одной из самых трудоемких задач является внесение правок в формы документов или справочников. Многие разработчики привыкли затягивать форму в расширение и менять ее структуру вручную. Это приводит к тому, что при изменении типовой формы в очередном релизе 1С наше расширение «ломается».
Рассмотрим, как можно модифицировать форму программно в событии ПриСозданииНаСервере:
&НаСервере
Процедура МойРасширяющийМодуль_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Добавляем вычисляемую колонку программно
ЭлементКолонки = Элементы.Добавить(\"МояКолонка\", Тип(\"ПолеФормы\"), Элементы.Список);
ЭлементКолонки.Вид = ВидПоляФормы.ПолеНадписи;
ЭлементКолонки.ПутьКДанным = \"Список.МояКолонка\";
// Динамически меняем запрос списка
Список.Запрос.Текст = СтрЗаменить(Список.Запрос.Текст, \"ГДЕ\", \", ПолеТаблицы.Значение КАК МояКолонка ГДЕ\");
КонецПроцедуры
Такой подход позволяет оставить типовую форму нетронутой. В случае обновления релиза от 1С, конфигурация обновится автоматически, а наше расширение просто выполнит свой код, не вступая в конфликт с новой структурой элементов управления.
Если над проектом работает не один специалист, или база обновляется в нескольких филиалах, необходимо использовать Хранилище конфигурации. При грамотной организации работы мы можем создать «типовую с изменениями». В этой конфигурации все изменения будут выделены в отдельные объекты или расширения, что позволит накатывать типовое обновление один раз для эталонной базы, а затем транслировать изменения в рабочие базы.
Ключевые рекомендации по оптимизации:
Библиотеку Стандартных Подсистем (БСП) для добавления новых функций. Это позволит добавлять отчеты, обработки и даже справочники как внешние подключаемые модули, которые не требуют изменения основной конфигурации.Если обновление все равно проходит медленно, стоит обратить внимание на техническую сторону. Сравнение и объединение конфигураций — это операция, критичная к производительности дисковой подсистемы и объему оперативной памяти.
Проверьте следующие параметры:
SSD ускоряет процесс в разы по сравнению с обычными HDD.Подводя итог: основной путь к безболезненным обновлениям — это принцип «оставляй типовое типовым». Чем меньше объектов мы меняем в основной конфигурации, тем быстрее проходит процесс обновления и тем меньше риск возникновения ошибок после внедрения нового релиза.