При обновлении конфигураций «1С:Комплексная автоматизация» до версии 2.5.22 (и выше) или «1С:ERP Управление предприятием» до версии 2.5.18 (и выше) многие специалисты сталкиваются с серьезным изменением архитектуры: привычный регистр накопления ЗаказыКлиентов (вид «Остатки») больше не используется. Вместо него внедрен оборотный регистр РаспоряженияНаОтгрузку (позже переименованный в РаспоряженияНаОтгрузкуИВозврат). Рассмотрим подробнее, зачем это было сделано и как теперь строить отчеты по неотгруженным заказам.
Переход от регистра остатков к оборотному регистру — это не прихоть разработчиков, а мера по оптимизации производительности. Разберем основные причины: для дополнительного повышения скорости работы в крупных базах предназначена многопоточная свёртка накопленных данных для 1С:ERP.
Если ваша задача — увидеть, что нужно отгрузить прямо сейчас (аналог текущего остатка), проанализируем новый вспомогательный объект. Вместо таблицы остатков регистра накопления теперь используется регистр сведений РаспоряженияНаОтгрузкуКВыполнению. Он хранит актуальное состояние заказов, которые еще не исполнены. Как только заказ отгружается полностью, запись из этого регистра удаляется.
Важный нюанс: В этом регистре нет истории. Вы не сможете посмотреть через него, какой остаток был на конец прошлого месяца.
Для восстановления управленческой логики (например, для воронки продаж или KPI менеджеров) нам часто требуется знать остаток на конкретную дату в прошлом. Теперь этот показатель является расчетным. Выясним, как составить запрос к новому регистру РаспоряженияНаОтгрузку.
Посмотрим на пример логики запроса:
ВЫБРАТЬ
Т.ЗаказКлиента КАК Заказ,
Т.Номенклатура КАК Номенклатура,
СУММА(Т.КоличествоПриход - Т.КоличествоРасход) КАК ОстатокНаДату
ИЗ
РегистрНакопления.РаспоряженияНаОтгрузку.Обороты(&НачалоВремен, &ДатаКонца, Период, ) КАК Т
СГРУППИРОВАТЬ ПО
Т.ЗаказКлиента,
Т.Номенклатура
ХАВИНГ
СУММА(Т.КоличествоПриход - Т.КоличествоРасход) > 0
В данном случае мы используем виртуальную таблицу Обороты, вычисляя разницу между приходом (заказано) и расходом (отгружено) с момента начала ведения учета до интересующей нас даты. Помните, что такой запрос будет выполняться медленнее, чем прямое обращение к таблице остатков в старых версиях.
Если в вашем отчете достаточно данных только по количеству (без суммовых показателей), рассмотрим использование регистра накопления ТоварыКОтгрузке. Этот регистр остался регистром остатков. Он фиксирует количество товара, которое необходимо собрать и отгрузить со склада. Однако стоит учитывать, что он больше ориентирован на складской учет, чем на финансовые взаимоотношения с клиентом по заказу.
Если у вас реализовано огромное количество кастомных отчетов и алгоритмов, завязанных на структуру старого регистра ЗаказыКлиентов, переписывание всего функционала может быть слишком дорогим. Проанализируем путь создания собственного регистра в расширении:
инд_ЗаказыКлиентов.ЗаказКлиента и РеализацияТоваровУслуг.Внимание: Этот метод увеличит нагрузку на систему и размер базы данных, так как данные будут дублироваться. Используйте его только в крайнем случае, если расчет остатков по оборотам (Способ 2) не подходит по производительности.
При обновлении на версию 2.5.22 система не удаляет данные старого регистра ЗаказыКлиентов бесследно. Он переименовывается в УдалитьЗаказыКлиентов. Вы можете использовать его в режиме «только чтение» для анализа данных, накопленных до момента перехода на новую версию. Но учтите, что новые документы (созданные после обновления) в этот регистр движения делать не будут. Для поиска обращений к устаревшим метаданным после обновления пригодится инструмент для поиска битых запросов.
Для отчетов по эффективности менеджеров, где важно видеть просроченные заказы, мы рекомендуем использовать типовой отчет «Контроль отгрузки». В новых релизах он был полностью переработан под оборотную схему. Если же вам нужны суммы в разрезе периодов, которых нет в складских регистрах, единственным верным путем будет использование регистра РаспоряженияНаОтгрузкуИВозврат с обязательным учетом измерений Заказ, Номенклатура и Склад.
Таким образом, архитектурная реформа 1С требует от программиста перехода от простых запросов к таблице Остатки() к более сложным вычислениям на основе оборотов или использования новых регистров сведений, хранящих текущее состояние задач на отгрузку.