Как получить остатки по заказам клиентов после обновления КА 2.5.22 или ERP 2.5.18?

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

При обновлении конфигураций «1С:Комплексная автоматизация» до версии 2.5.22 (и выше) или «1С:ERP Управление предприятием» до версии 2.5.18 (и выше) многие специалисты сталкиваются с серьезным изменением архитектуры: привычный регистр накопления ЗаказыКлиентов (вид «Остатки») больше не используется. Вместо него внедрен оборотный регистр РаспоряженияНаОтгрузку (позже переименованный в РаспоряженияНаОтгрузкуИВозврат). Рассмотрим подробнее, зачем это было сделано и как теперь строить отчеты по неотгруженным заказам.

Анализируем причину изменений: почему 1С убрала остатки?

Переход от регистра остатков к оборотному регистру — это не прихоть разработчиков, а мера по оптимизации производительности. Разберем основные причины: для дополнительного повышения скорости работы в крупных базах предназначена многопоточная свёртка накопленных данных для 1С:ERP.

  1. Блокировки таблиц итогов: Регистры остатков при проведении документов блокируют таблицы итогов. В крупных базах с сотнями менеджеров это создавало «бутылочное горлышко» при массовых отгрузках.
  2. Оптимизация RLS: Механизм ограничения прав доступа на уровне записей (RLS) работает значительно быстрее с оборотными таблицами.
  3. Логика «актуальности»: Согласно методике 1С, хранение остатков неотгруженных товаров за прошлые периоды не имеет большого смысла для оперативного учета — факт отгрузки в прошлом либо состоялся, либо нет. Важны только текущие остатки «к выполнению».

Способ 1. Получение текущего среза «К отгрузке»

Если ваша задача — увидеть, что нужно отгрузить прямо сейчас (аналог текущего остатка), проанализируем новый вспомогательный объект. Вместо таблицы остатков регистра накопления теперь используется регистр сведений РаспоряженияНаОтгрузкуКВыполнению. Он хранит актуальное состояние заказов, которые еще не исполнены. Как только заказ отгружается полностью, запись из этого регистра удаляется.

Важный нюанс: В этом регистре нет истории. Вы не сможете посмотреть через него, какой остаток был на конец прошлого месяца.

Способ 2. Расчет остатков по оборотам за прошлые периоды

Для восстановления управленческой логики (например, для воронки продаж или KPI менеджеров) нам часто требуется знать остаток на конкретную дату в прошлом. Теперь этот показатель является расчетным. Выясним, как составить запрос к новому регистру РаспоряженияНаОтгрузку.

Посмотрим на пример логики запроса:


ВЫБРАТЬ
    Т.ЗаказКлиента КАК Заказ,
    Т.Номенклатура КАК Номенклатура,
    СУММА(Т.КоличествоПриход - Т.КоличествоРасход) КАК ОстатокНаДату
ИЗ
    РегистрНакопления.РаспоряженияНаОтгрузку.Обороты(&НачалоВремен, &ДатаКонца, Период, ) КАК Т
СГРУППИРОВАТЬ ПО
    Т.ЗаказКлиента,
    Т.Номенклатура
ХАВИНГ
    СУММА(Т.КоличествоПриход - Т.КоличествоРасход) > 0

В данном случае мы используем виртуальную таблицу Обороты, вычисляя разницу между приходом (заказано) и расходом (отгружено) с момента начала ведения учета до интересующей нас даты. Помните, что такой запрос будет выполняться медленнее, чем прямое обращение к таблице остатков в старых версиях.

Способ 3. Использование регистра «Товары к отгрузке»

Если в вашем отчете достаточно данных только по количеству (без суммовых показателей), рассмотрим использование регистра накопления ТоварыКОтгрузке. Этот регистр остался регистром остатков. Он фиксирует количество товара, которое необходимо собрать и отгрузить со склада. Однако стоит учитывать, что он больше ориентирован на складской учет, чем на финансовые взаимоотношения с клиентом по заказу.

Способ 4. Сохранение инвестиций в доработки через расширение

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

  1. Создаем в расширении свой регистр накопления (вид «Остатки»), например, инд_ЗаказыКлиентов.
  2. Подписываемся на события проведения документов ЗаказКлиента и РеализацияТоваровУслуг.
  3. Дублируем логику движений, которая была в типовой конфигурации до обновления. Чтобы упростить техническое обслуживание базы при таких изменениях, можно использовать программу для автоматического обновления и архивирования 1С.
  4. Перенаправляем существующие отчеты на этот новый регистр. Для автоматического поиска расхождений между старой и новой схемой учета пригодится инструмент для автоматической сверки проводок и движений в 1С.

Внимание: Этот метод увеличит нагрузку на систему и размер базы данных, так как данные будут дублироваться. Используйте его только в крайнем случае, если расчет остатков по оборотам (Способ 2) не подходит по производительности.

Как работать с историческими данными после обновления?

При обновлении на версию 2.5.22 система не удаляет данные старого регистра ЗаказыКлиентов бесследно. Он переименовывается в УдалитьЗаказыКлиентов. Вы можете использовать его в режиме «только чтение» для анализа данных, накопленных до момента перехода на новую версию. Но учтите, что новые документы (созданные после обновления) в этот регистр движения делать не будут. Для поиска обращений к устаревшим метаданным после обновления пригодится инструмент для поиска битых запросов.

Рекомендации по адаптации KPI и мотивации

Для отчетов по эффективности менеджеров, где важно видеть просроченные заказы, мы рекомендуем использовать типовой отчет «Контроль отгрузки». В новых релизах он был полностью переработан под оборотную схему. Если же вам нужны суммы в разрезе периодов, которых нет в складских регистрах, единственным верным путем будет использование регистра РаспоряженияНаОтгрузкуИВозврат с обязательным учетом измерений Заказ, Номенклатура и Склад.

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

← На главную