Переход со старых редакций конфигураций на новые — это всегда ответственный и технологически сложный процесс. При обновлении «1С:Розница» (а также отраслевых решений на ее основе, таких как «1С-Рарус: Аптека») с редакции 2.1 на 2.2 многие специалисты сталкиваются с неприятной ситуацией: отчет «Продажи» перестает выводить данные. Сам отчет присутствует в интерфейсе, открывается, но при попытке формирования выдает пустой результат, несмотря на наличие документов в базе данных.
В этой статье мы подробно разберем, почему возникает эта техническая проблема, проанализируем внутренние механизмы платформы и метаданных конфигурации, а также выработаем пошаговый алгоритм для восстановления корректной работы отчетов.
Переход с версии 2.1 на 2.2 в семействе решений «1С:Розница» сопровождался глобальной переработкой архитектуры конфигурации, структуры регистров накопления и механизмов работы с торговым оборудованием. Это было вызвано адаптацией программы под требования законодательства (54-ФЗ, маркировка лекарственных средств и т.д.). В результате кардинально изменились механизмы компоновки данных для отчетов. Выделим основные технические причины сбоя:
2.2.5.26 или 2.2.6.30) можно легко натолкнуться на промежуточные версии, содержащие критические ошибки в коде СКД (Схемы компоновки данных) или механизмах проведения документов. Только в более поздних и стабильных сборках (например, 2.2.11.16) эти нестыковки были окончательно устранены разработчиками.Давайте первым делом выясним, завершился ли процесс реструктуризации данных в фоновом режиме. Для этого перейдем в раздел Администрирование — Обслуживание — Результаты обновления программы.
Если мы видим предупреждения или незавершенные процедуры, необходимо запустить их принудительно. Для отладки и ручного запуска процедур обновления в режиме «1С:Предприятие» мы можем использовать следующую команду в консоли кода:
// Принудительный запуск отложенных обработчиков обновления данных
ВыборкаПроцедур = РегистрыСведений.ПотокиОбновленияИнформационнойБазы.Выбрать();
Пока ВыборкаПроцедур.Следующий() Цикл
Если ВыборкаПроцедур.Статус = Перечисления.СтатусыПотоковОбновления.Ошибка Тогда
ЗаписатьЗаписьРегистра = РегистрыСведений.ПотокиОбновленияИнформационнойБазы.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(ЗаписатьЗаписьРегистра, ВыборкаПроцедур);
ЗаписатьЗаписьРегистра.Статус = Перечисления.СтатусыПотоковОбновления.НеЗапускалась;
ЗаписатьЗаписьРегистра.Записать();
КонецЕсли;
КонецЦикла;
После сброса статусов ошибок запустим регламентные задания фонового обновления данных. Только убедившись, что все процедуры завершены на 100%, переходим к анализу данных.
Давайте проверим, присутствуют ли физические записи в целевых регистрах, которые служат источником для отчета «Продажи». С помощью «Консоли запросов» или через стандартные функции «Все функции — Регистры накопления» проанализируем записи регистра ВыручкаИСебестоимостьПродаж или регистра Продажи за проблемный период.
Если документы (например, «Отчет о розничных продажах») проведены, но движений по регистрам нет, нам потребуется выполнить групповое перепроведение документов за этот период. Для этого воспользуемся обработкой «Групповое перепроведение документов» в разделе Администрирование.
Очень часто простое нажатие кнопки «Установить стандартные настройки» в форме отчета не решает проблему, поскольку настройки хранятся в системных таблицах платформы под конкретным пользователем. Давайте выполним полную очистку кэша настроек отчетов.
Для этого выполним следующие действия:
%userprofile%\AppData\Local\1C\1Cv8 и %userprofile%\AppData\Roaming\1C\1Cv8.Если вышеописанные действия не привели к результату, и база данных тестируется на промежуточном релизе (например, 2.2.6.30), то велика вероятность программной ошибки в коде самой конфигурации. В этой ситуации лучшим решением будет продолжить обновление до стабильной версии.
Рекомендуется использовать следующую схему обновления:
.dt или копируем файл 1Cv8.1CD для файловой версии).2.2.11.16 (или более поздней стабильной версии ветки 2.2). Именно в этих релизах разработчики устранили большинство внутренних багов интеграции отраслевых регистров серийного учета лекарств с типовыми механизмами СКД Розницы.Для проверки того, что данные в регистрах корректно связываются с сериями лекарств (специфика «Рарус: Аптека»), мы можем выполнить проверочный запрос в консоли:
ВЫБРАТЬ РАЗЛИЧНЫЕ
Продажи.Номенклатура КАК Номенклатура,
Продажи.Серия КАК СерияПрепарата,
Продажи.Количество КАК Количество
ИЗ
РегистрНакопления.Продажи КАК Продажи
ГДЕ
Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
Если запрос возвращает строки с заполненными сериями и количеством, значит, метаданные и регистры в актуальном релизе работают исправно, а проблема с пустым отчетом крылась исключительно в ошибках интерфейса или устаревшем кэше платформы.
Также не стоит забывать, что при переходе на редакцию 2.2 часто ломаются встроенные обмены данными с управляющими системами (например, «1С:Управление торговлей 11» или «1С:Бухгалтерия предприятия 3.0»). Это связано с изменением структуры передаваемых документов и видов оплат (включая СБП и новые типы электронных платежей по ФФД).
Поэтому после успешного обновления «1С-Рарус: Аптека» до версии 2.2 крайне важно актуализировать правила регистрации и правила обмена данными (в формате .xml) в узлах планов обмена, чтобы избежать дублирования или очистки документов продаж при последующих сеансах синхронизации.