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