При переходе со старых редакций конфигурации 1С:Розница 2.2 на актуальные релизы 1С:Розница 2.3 разработчики и администраторы часто сталкиваются с тем, что привычные объекты метаданных бесследно исчезают. Особенно критично это становится в тех случаях, когда в базе используются сторонние расширения или кастомные доработки. Одной из таких «пропавших» констант стала ВыгружатьПродажиНемаркируемойПродукцииВЕГАИС. При попытке запустить расширение, использующее эту константу, система выдает критическую ошибку компиляции, и работа пользователей останавливается.
В этой статье мы подробно разберем, почему разработчики фирмы 1С приняли решение отказаться от этой константы, выясним, какими механизмами она была заменена в редакции 2.3, и пошагово рассмотрим, как адаптировать ваше расширение для корректной работы в новой архитектуре.
Для начала проанализируем, почему конфигурация претерпела столь серьезные изменения. В старой редакции 1С:Розница 2.2 механизмы взаимодействия с государственными системами (в частности, с ЕГАИС) писались непосредственно внутри самой конфигурации. Каждая настройка обмена зачастую хранилась в виде отдельной уникальной константы, привязанной к метаданным конфигурации.
Начиная с редакции 2.3, фирма 1С перевела Розницу на унифицированную библиотеку интеграции — БЭД (Библиотека электронного документооборота) и подсистему ГосИС (Государственные информационные системы). Точно такие же библиотеки сейчас используются во всех современных конфигурациях: 1С:Управление торговлей 11, 1С:ERP, 1С:Комплексная автоматизация и 1С:УНФ.
В рамках этой глобальной унификации разработчики полностью отказались от старых локальных констант. Константа ВыгружатьПродажиНемаркируемойПродукцииВЕГАИС была признана устаревшей и полностью удалена из структуры метаданных. Именно поэтому ваше расширение больше не может к ней обратиться.
Рассмотрим, куда переместилась логика управления выгрузкой слабоалкогольной и пивной (немаркируемой) продукции при закрытии кассовой смены:
РегистрСведений.НастройкиОбменаОбменСЕГАИС или общие параметры настроек ГосИС).Стоит отметить важный нюанс: в релизе 1С:Розница 2.3.4.33 была зарегистрирована официальная ошибка (баг под номером 00-00305175). Из-за этой ошибки флажок отключения выгрузки немаркируемой продукции мог временно пропадать из пользовательского интерфейса, вынуждая систему принудительно отправлять акты списания даже тогда, когда это не требовалось. В последующих релизах (начиная с ветки 2.3.5) эту проблему успешно исправили.
Посмотрим на практические примеры того, как можно восстановить работоспособность расширения. Выбор метода зависит от того, насколько глубоко ваше расширение завязано на логику работы с ЕГАИС.
Если ваше расширение выполняло вспомогательные функции, а сама опция отправки немаркируемой продукции вам либо вообще не нужна (вы списания делаете вручную), либо, наоборот, должна быть активна всегда, мы можем просто уйти от динамического опроса константы.
Допустим, в коде расширения (например, при закрытии смены) была следующая конструкция:
// Код в Рознице 2.2
Если Константы.ВыгружатьПродажиНемаркируемойПродукцииВЕГАИС.Получить() Тогда
// Выполнялась определенная логика расширения
ПровестиВыгрузкуДанныхВЕГАИС();
КонецЕсли;
Поскольку в 1С:Розница 2.3 этой константы больше нет, мы можем закомментировать обращение к ней и жестко прописать булево значение (Истина или Ложь) напрямую:
// Измененный код в расширении для Розницы 2.3
// Константа удалена, прописываем логику жестко:
ВыгружатьПродажи = Ложь; // Или Истина, если выгрузка нужна всегда
Если ВыгружатьПродажи Тогда
ПровестиВыгрузкуДанныхВЕГАИС();
КонецЕсли;
Такой подход не вызовет никаких негативных последствий для типовой конфигурации, поскольку сама типовая Розница 2.3 к этой константе больше не обращается и имеет собственные механизмы контроля.
Если вашему расширению крайне важно динамически определять, включена ли в данный момент интеграция и выгрузка немаркируемых товаров, необходимо переписать код под стандарты БЭД.
Проанализируем новые механизмы. Вместо обращения к константе нам необходимо вызывать функции общих модулей интеграции ЕГАИС. Для этого используем новые методы из общего модуля ИнтеграцияЕГАИС или ИнтеграцияЕГАИСПереопределяемый.
Пример обращения к настройкам обмена в новых релизах будет выглядеть следующим образом:
// Получаем настройки интеграции с ЕГАИС через новые механизмы БЭД
ПараметрыИнтеграции = ИнтеграцияЕГАИС.ПараметрыРаботыКлиентаПриЗапуске();
// Проверяем статус использования интеграции
Если ПараметрыИнтеграции.ИспользоватьИнтеграциюСЕГАИС Тогда
// Находим параметры конкретной организации или используем общие методы БЭД
ВыгружатьПродажи = ИнтеграцияЕГАИС.ПолучитьНастройкуВыгрузкиПродажНемаркируемойПродукции();
Если ВыгружатьПродажи Тогда
ПровестиВыгрузкуДанныхВЕГАИС();
КонецЕсли;
КонецЕсли;
Обратите внимание, что точные имена функций могут незначительно меняться в зависимости от конкретной версии БСП и БЭД, встроенных в ваш релиз 1С:Розница 2.3. Рекомендуется воспользоваться глобальным поиском по конфигурации по ключевым словам «Немаркируем» или «ВыгружатьПродажи» внутри общих модулей группы ИнтеграцияЕГАИС, чтобы найти точные имена экспортных функций для вашего релиза.
Переход с редакции 2.2 на 2.3 — это не просто рядовое обновление, а серьезная смена платформенных библиотек. Чтобы избежать сбоев при последующих обновлениях, придерживайтесь следующих правил:
Таким образом, мы выяснили, что пропавшая константа была упразднена разработчиками 1С ради стандартизации кода. Следуя нашим инструкциям, вы сможете быстро скорректировать работу ваших расширений и успешно запустить Розницу 2.3 в эксплуатацию.