Обновление конфигурации «1С:Управление торговлей 11», которая была значительно переписана («вдоль и поперек»), — это всегда сложный и рискованный процесс. Переход с редакции 11.3 на 11.4 является знаковым, так как он затрагивает фундаментальные механизмы учета, включая новую архитектуру взаиморасчетов и переход на ставку НДС 20%. Рассмотрим подробно, какую стратегию выбрать, как минимизировать количество ручных правок и как правильно адаптировать доработки под требования новой редакции.
Одной из главных ошибок при обновлении является попытка совершить слишком большой «прыжок» между релизами или следование некорректным рекомендациям автоматических «обновляторов». Проанализируем правильный алгоритм перехода:
cf допустимо, так как метаданные внутри подредакции обычно меняются не столь радикально.Одной из самых трудозатратных задач при обновлении переписанной УТ 11 является сравнение и объединение форм. Если изменения вносились непосредственно в типовые формы, то при каждом обновлении программисту приходится вручную переносить элементы и код. Выясним, как можно избежать этого с помощью программного изменения форм.
Вместо визуального редактирования формы в конфигураторе, мы можем изменять ее структуру и поведение в коде модуля. Это позволяет оставить типовую форму максимально «чистой». Рассмотрим пример использования метода УстановитьДействие для перехвата событий:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Вызов типовой логики (если необходимо)
// ...
// Вызов нашей переопределяемой логики
ДоработкаФормПереопределяемый.ПриСозданииНаСервере(ЭтаФорма);
КонецПроцедуры
В отдельном общем модуле мы можем программно добавить кнопки или изменить обработчики событий:
Процедура ПриСозданииНаСервере(Форма) Экспорт
// Пример программного изменения обработчика события "ПриИзменении"
ЭлементКонтрагент = Форма.Элементы.Найти("Контрагент");
Если ЭлементКонтрагент <> Неопределено Тогда
ЭлементКонтрагент.УстановитьДействие("ПриИзменении", "Подключенная_ПриИзмененииКонтрагента");
КонецЕсли;
КонецПроцедуры
Важно помнить, что в управляемых формах 1С 8.3 для реализации такого подхода обработчик Подключенная_ПриИзмененииКонтрагента должен физически присутствовать в модуле формы. Однако, чтобы не загромождать модуль формы, можно использовать механизм Расширений конфигурации. Это самый современный и правильный метод для УТ 11.4.
Проанализируем ситуацию: если в конфигурации много доработок в формах, лучшим решением будет вынос их в расширение. В расширении можно использовать аннотации &Перед, &После или &Вместо. Это позволяет:
cf файлов.Также обратим внимание на общий модуль МодификацияКонфигурацииПереопределяемый. В нем часто предусмотрены типовые «точки входа» для добавления собственной логики, которые не затираются при стандартном обновлении (если следовать методике «1С»).
Часто программисты вносят изменения в процедуру ОбработкаПроведения. В УТ 11.4 логика проведения документов часто вынесена в общие модули, такие как ПроведениеСерверУТ. Если вам нужно изменить движения, которые формируются типовым кодом, использование подписок на события ПриЗаписи регистров может быть неэффективным, так как данные могут записываться «чохом» в конце процедуры.
Рассмотрим правильный подход к модификации движений через подписки на события документа:
Движения.ИмяРегистра.Прочитать() в подписке на событие ПриЗаписи документа (с проверкой режима записи «Проведение»).Разберем пример логики в подписке на событие:
Процедура МояПодпискаПриЗаписиДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
// Читаем то, что записала типовая логика
Источник.Движения.Хозрасчетный.Прочитать();
// Вносим свои корректировки в набор записей
Для Каждого Проводка Из Источник.Движения.Хозрасчетный Цикл
// Логика изменения
КонецЦикла;
// Записываем измененный набор
Источник.Движения.Хозрасчетный.Записать();
КонецЕсли;
КонецПроцедуры
При переходе с 11.3 на 11.4 стоит учитывать, что в 11.4 внедрена система «Онлайн-взаиморасчеты». Если в вашей переписанной базе были самописные отчеты по долгам или свои регистры для контроля оплат, они могут перестать работать корректно. Типовые механизмы теперь используют другие регистры сведений для хранения оперативных остатков развернутого сальдо.
Рекомендация: После завершения технического обновления обязательно запустите обработку «Закрытие месяца». Она выполнит пересчет движений по новым правилам 11.4. Если на этом этапе возникают ошибки, значит, ваши кастомные изменения в документах конфликтуют с новой логикой формирования движений по регистрам РасчетыСКлиентами и РасчетыСПоставщиками.
Подведем итог для успешного завершения задачи:
Такой системный подход позволит не только обновить текущую базу, но и значительно упростить все последующие переходы на новые релизы 1С:Управление торговлей.