Как правильно обновить сильно доработанную 1С:Управление торговлей 11 с версии 11.3 на 11.4?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Обновление конфигурации «1С:Управление торговлей 11», которая была значительно переписана («вдоль и поперек»), — это всегда сложный и рискованный процесс. Переход с редакции 11.3 на 11.4 является знаковым, так как он затрагивает фундаментальные механизмы учета, включая новую архитектуру взаиморасчетов и переход на ставку НДС 20%. Рассмотрим подробно, какую стратегию выбрать, как минимизировать количество ручных правок и как правильно адаптировать доработки под требования новой редакции.

Оптимальная стратегия последовательности обновлений

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

  1. Обновление до финального релиза 11.3: Не стоит пытаться перейти на 11.4 с промежуточных версий 11.3.3.х или 11.3.4.х. Рекомендуется сначала довести конфигурацию до последнего актуального релиза ветки 11.3 (например, 11.3.4.197). Это необходимо, так как именно в финальных релизах ветки 11.3 содержатся критически важные обработчики обновления, которые подготавливают данные к трансформации в формат 11.4.
  2. Переход на 11.4 в один «прыжок»: После того как база приведена к актуальному состоянию в рамках ветки 11.3, можно переходить сразу на один из последних стабильных релизов 11.4. Внутри одной подредакции (например, с 11.4.3 сразу на 11.4.13) обновляться через файл cf допустимо, так как метаданные внутри подредакции обычно меняются не столь радикально.
  3. Контроль обработчиков обновления: После каждого этапа необходимо запускать информационную базу в режиме «1С:Предприятие» и дожидаться завершения всех процедур обновления (в том числе отложенных). В УТ 11.4 механизм отложенного обновления может затрагивать миллионы объектов (регистры сведений, расчеты), и прерывать его нельзя.

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

Одной из самых трудозатратных задач при обновлении переписанной УТ 11 является сравнение и объединение форм. Если изменения вносились непосредственно в типовые формы, то при каждом обновлении программисту приходится вручную переносить элементы и код. Выясним, как можно избежать этого с помощью программного изменения форм.

Вместо визуального редактирования формы в конфигураторе, мы можем изменять ее структуру и поведение в коде модуля. Это позволяет оставить типовую форму максимально «чистой». Рассмотрим пример использования метода УстановитьДействие для перехвата событий:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Вызов типовой логики (если необходимо)
    // ...
    
    // Вызов нашей переопределяемой логики
    ДоработкаФормПереопределяемый.ПриСозданииНаСервере(ЭтаФорма);
КонецПроцедуры

В отдельном общем модуле мы можем программно добавить кнопки или изменить обработчики событий:


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

Важно помнить, что в управляемых формах 1С 8.3 для реализации такого подхода обработчик Подключенная_ПриИзмененииКонтрагента должен физически присутствовать в модуле формы. Однако, чтобы не загромождать модуль формы, можно использовать механизм Расширений конфигурации. Это самый современный и правильный метод для УТ 11.4.

Использование расширений и переопределяемых модулей

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

  1. Сохранить типовую конфигурацию на полной поддержке.
  2. Минимизировать конфликты при сравнении cf файлов.
  3. Легко отключать доработки для диагностики ошибок.

Также обратим внимание на общий модуль МодификацияКонфигурацииПереопределяемый. В нем часто предусмотрены типовые «точки входа» для добавления собственной логики, которые не затираются при стандартном обновлении (если следовать методике «1С»).

Как обрабатывать изменения в движениях документов

Часто программисты вносят изменения в процедуру ОбработкаПроведения. В УТ 11.4 логика проведения документов часто вынесена в общие модули, такие как ПроведениеСерверУТ. Если вам нужно изменить движения, которые формируются типовым кодом, использование подписок на события ПриЗаписи регистров может быть неэффективным, так как данные могут записываться «чохом» в конце процедуры.

Рассмотрим правильный подход к модификации движений через подписки на события документа:

  1. Подписка на «ОбработкаПроведения»: Позволяет добавить свои движения в наборы записей.
  2. Чтение существующих движений: Если вам нужно скорректировать то, что уже сформировала типовая логика, используйте метод Движения.ИмяРегистра.Прочитать() в подписке на событие ПриЗаписи документа (с проверкой режима записи «Проведение»).

Разберем пример логики в подписке на событие:


Процедура МояПодпискаПриЗаписиДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
        // Читаем то, что записала типовая логика
        Источник.Движения.Хозрасчетный.Прочитать();
        
        // Вносим свои корректировки в набор записей
        Для Каждого Проводка Из Источник.Движения.Хозрасчетный Цикл
            // Логика изменения
        КонецЦикла;
        
        // Записываем измененный набор
        Источник.Движения.Хозрасчетный.Записать();
    КонецЕсли;
КонецПроцедуры

Сложные моменты перехода: Взаиморасчеты и НДС

При переходе с 11.3 на 11.4 стоит учитывать, что в 11.4 внедрена система «Онлайн-взаиморасчеты». Если в вашей переписанной базе были самописные отчеты по долгам или свои регистры для контроля оплат, они могут перестать работать корректно. Типовые механизмы теперь используют другие регистры сведений для хранения оперативных остатков развернутого сальдо.

Рекомендация: После завершения технического обновления обязательно запустите обработку «Закрытие месяца». Она выполнит пересчет движений по новым правилам 11.4. Если на этом этапе возникают ошибки, значит, ваши кастомные изменения в документах конфликтуют с новой логикой формирования движений по регистрам РасчетыСКлиентами и РасчетыСПоставщиками.

Резюме по этапам обновления

Подведем итог для успешного завершения задачи:

  1. Откат (при необходимости): Если вы уже обнаружили критические ошибки в данных после «случайного» перехода на ранний релиз 11.4, лучше откатиться к копии 11.3 и выполнить обновление последовательно до финальной 11.3.4.х.
  2. Минимизация ручного кода: Старайтесь переносить изменения из модулей объектов в Подписки на события, а изменения форм — в Расширения.
  3. Тестирование: Обновление считается успешным только после того, как в режиме «1С:Предприятие» в журнале регистрации отсутствуют ошибки выполнения фоновых заданий обновления, а отчет «Остатки товаров» и «Ведомость по расчетам» совпадают с данными до обновления.

Такой системный подход позволит не только обновить текущую базу, но и значительно упростить все последующие переходы на новые релизы 1С:Управление торговлей.

← На главную