При построении розничной сети часто используется классическая связка программных продуктов: 1С:Управление торговлей (ред. 11) в качестве управляющей системы в центральном офисе (ЦУ) и несколько баз 1С:Розница (ред. 2.0) на розничных точках (магазинах). В процессе эксплуатации такой архитектуры специалисты часто сталкиваются с техническими трудностями. Наиболее распространенные среди них — отсутствие списания складских остатков в УТ после синхронизации отчетов о продажах, а также невозможность оперативно видеть остатки товаров других магазинов в локальных базах.
В этой статье мы подробно разберем причины возникновения данных проблем и пошагово рассмотрим методы их решения, включая ручную корректировку правил обмена и использование штатных механизмов платформы.
Рассмотрим стандартный сценарий: на розничной точке закрывается кассовая смена, формируется документ Отчет о розничных продажах (ОРП). После выполнения обмена данными этот документ успешно переносится в центральную базу УТ 11. Однако при формировании отчета «Остатки товаров на складах» в УТ мы обнаруживаем, что проданный товар по-прежнему числится на складе розничного магазина. При этом в отчете «Остатки товаров организаций» количество уменьшилось.
Проанализируем техническую причину этого явления. В конфигурации Управление торговлей 11 проведение документа ОтчетОРозничныхПродажах и выполнение им движений по регистру накопления ТоварыНаСкладах напрямую зависят от связанного с ним документа КассоваяСмена. Списание остатков по складу происходит только в том случае, если реквизит СтатусСмены документа КассоваяСмена имеет значение Закрыта (чеки заархивированы).
В конфигурации Розница 2.0 у кассовых смен предусмотрены только два основных статуса: «Открыта» и «Закрыта». Статус «Закрыта (чеки заархивированы)» там отсутствует. При стандартном обмене через старый формат правил конвертации (на базе «Конвертации данных 2.1») документ кассовой смены либо не переносится вовсе, либо переносится без нужного для УТ статуса. В результате ОРП в УТ проводится, но не делает движений по регистру складского учета.
Чтобы заставить УТ 11 списывать остатки по регистру ТоварыНаСкладах после загрузки продаж из Розницы, необходимо доработать правила обмена. Нам нужно добиться того, чтобы при загрузке документа Отчет о розничных продажах в УТ автоматически создавался или обновлялся связанный документ Кассовая смена с требуемым статусом.
Выполним следующие шаги для изменения правил в конфигурации «Конвертация данных 2.1»:
ОтчетОРозничныхПродажах.ПослеЗагрузки для ОРП добавим код, который будет находить или программно создавать документ КассоваяСмена в базе УТ, связывать его с загружаемым отчетом и принудительно устанавливать статус архивации чеков.Рассмотрим пример программного кода, который решает эту задачу при загрузке в УТ:
// Алгоритм в обработчике "После загрузки" документа ОтчетОРозничныхПродажах в УТ
СсылкаНаКассовуюСмену = Объект.КассоваяСмена;
Если Не ЗначениеЗаполнено(СсылкаНаКассовуюСмену) Тогда
// Попытаемся найти существующую смену по коду/номеру и кассе ККМ
КассоваяСменаОбъект = Документы.КассоваяСмена.СоздатьДокумент();
КассоваяСменаОбъект.Дата = Объект.Дата;
КассоваяСменаОбъект.КассаККМ = Объект.КассаККМ;
КассоваяСменаОбъект.Кассир = Объект.Ответственный;
КассоваяСменаОбъект.СтатусСмены = Перечисления.СтатусыКассовыхСмен.ЗакрытаЧекиЗаархивированы;
КассоваяСменаОбъект.Записать(РежимЗаписиДокумента.Проведение);
Объект.КассоваяСмена = КассоваяСменаОбъект.Ссылка;
Иначе
// Если смена уже перенесена, принудительно меняем статус на нужный
КассоваяСменаОбъект = СсылкаНаКассовуюСмену.ПолучитьОбъект();
Если КассоваяСменаОбъект.СтатусСмены <> Перечисления.СтатусыКассовыхСмен.ЗакрытаЧекиЗаархивированы Тогда
КассоваяСменаОбъект.СтатусСмены = Перечисления.СтатусыКассовыхСмен.ЗакрытаЧекиЗаархивированы;
КассоваяСменаОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЕсли;
После применения этих правил конвертации при следующей синхронизации документы ОРП в УТ будут ссылаться на закрытую и заархивированную кассовую смену. Это инициирует корректное проведение по регистру ТоварыНаСкладах, и остатки в центральной базе УТ станут актуальными.
Допустим, нам также требуется передавать документы продажи (например, Реализация товаров и услуг или внутренние перемещения), созданные непосредственно в центральном офисе УТ, в базы розничных магазинов. По умолчанию в плане обмена ОбменУправлениеТорговлейРозница расходные документы со стороны УТ заблокированы для выгрузки. Разработчики предполагают, что розничные продажи должны осуществляться только в Рознице.
Если специфика вашего бизнеса требует обратной выгрузки документов списания или реализации из УТ в Розницу, выполним доработку плана обмена по шагам:
1С:Управление торговлей.Общие -> Планы обмена -> ОбменУправлениеТорговлейРозница.РеализацияТоваровУслуг (или другой необходимый вам документ).Разрешить.Теперь при создании нового документа реализации в УТ он будет регистрироваться к обмену и при следующей синхронизации перенесется в Розницу, где создаст движения по локальному регистру остатков на складе розничной точки.
Если вы используете более современные версии конфигураций (УТ 11.4 / 11.5 и Розница 2.3 / 3.0), настоятельно рекомендуется отказаться от старых правил конвертации и настроить синхронизацию через универсальный формат EnterpriseData.
При использовании EnterpriseData логика проведения документов ОРП в УТ была пересмотрена разработчиками 1С. В новых версиях проведение документа и списание товаров больше не зависят от жесткой привязки к документу кассовой смены старого образца. Обмен на базе EnterpriseData автоматически обеспечивает корректное списание остатков «из коробки» без необходимости ручной модификации метаданных или правил обмена в Конвертации данных.
Часто пользователи пытаются настроить обмен так, чтобы документы продаж из магазина Р1 выгружались в УТ, а затем из УТ выгружались в базу магазина Р2. Это делается ради одной цели: чтобы кассир в магазине Р2 видел остатки товаров в магазине Р1 и мог проконсультировать покупателя.
Рассмотрим, почему этот подход ошибочен. Перенос документов ОРП и чеков между периферийными базами розницы лавинообразно увеличивает объем баз данных и нагрузку на каналы связи. База каждого магазина засоряется чужими документами продаж, которые кассирам абсолютно не нужны для локальной работы.
Для решения этой задачи в экосистеме 1С предусмотрен штатный инструмент — Механизм информативных остатков. Проанализируем, как его правильно настроить:
1С:Розница предусмотрен специальный регистр сведений ИнформативныеОстаткиТоваровПоМагазинам. Он предназначен исключительно для хранения информации о том, сколько товара лежит на складах других розничных точек.1С:Управление торговлей в правилах отправки данных необходимо включить опцию «Выгружать информативные остатки» (или «Выгружать остатки по всем складам»).ОбновлениеРегистраСведенийИнформативныеОстаткиПоМагазинам с удобным для вас расписанием (например, раз в час или раз в день).После выполнения этих настроек кассиры в своем Рабочем месте кассира (РМК) или при стандартном подборе товаров в Рознице увидят специальную кнопку «Остатки в других магазинах». Это позволит оперативно информировать покупателей о наличии товаров по всей сети без перегрузки баз лишним документооборотом.
В завершение разберем вопрос, который часто поднимают начинающие предприниматели (см. сообщение 43): можно ли сэкономить и построить обмен розничной сети на базовых версиях программных продуктов «УТ Базовая» и «Розница Базовая»?
Рассмотрим критические ограничения базовых версий, которые сделают автоматизацию розничной сети неэффективной или технически невозможной:
Таким образом, для создания стабильно работающей розничной сети крайне важно использовать версии линейки ПРОФ. Это сбережет ресурсы на этапе масштабирования бизнеса и позволит гибко настраивать обмен под любые требования торгового учета.