Как организовать продажи с двух разных складов через одну кассу в 1С 7.7 и Frontol?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

В розничной торговле часто возникает ситуация, когда торговая точка имеет доступ к остаткам нескольких физических складов (например, торговый зал и близлежащий склад-ангар). Если используется кассовое ПО, работающее в режиме оффлайн (например, Frontol 5), стандартная схема обмена с 1С:Торговля и Склад 7.7 может стать ограничением, так как она обычно рассчитана на связку «одна касса — один склад». Рассмотрим подробные варианты решения этой задачи, которые позволят корректно учитывать остатки и не замедлять работу кассира.

Вариант 1. Использование механизма «Разрезов» во Frontol

Проанализируем самый технически правильный способ со стороны кассового программного обеспечения. Во Frontol 5 существует функционал «Разрезов». Обычно их используют для характеристик (цвет, размер), но ничто не мешает нам использовать их для идентификации склада. Это позволит кассиру при выборе товара сразу указывать, с какого склада он его выдает.

Рассмотрим шаги по реализации этого метода:

  1. Настройка Frontol: В справочнике «Схемы разрезов» создадим новую схему под названием «Склады». Внутри создадим два значения: «Склад 1» и «Склад 2». Каждому разрезу присваивается уникальный код.
  2. Изменение обработки выгрузки в 1С: Нам необходимо модифицировать процедуру выгрузки товаров (обычно это atol.ert). Вместо того чтобы выгружать одну строку с общим остатком, мы будем выгружать товар в разрезе складов. В файле обмена goods.txt это будет выглядеть как дополнительные строки или параметры разреза.
  3. Процесс продажи: При регистрации товара касса увидит, что для него настроен разрез «Склады», и предложит кассиру выбрать конкретный склад. Это гарантирует, что в чеке будет зафиксировано реальное место списания.
  4. Загрузка отчета: При импорте файла report.txt в 1С 7.7 программа должна считывать код разреза и подставлять соответствующий склад в документ «Отчет о розничных продажах».

Этот метод хорош тем, что обеспечивает максимальную точность учета, но он требует от кассира внимательности и лишнего действия при каждом пробитии позиции.

Вариант 2. Метод «Виртуального склада» и автоматическое перемещение

Если мы не хотим обременять кассира выбором склада, разберем более гибкий вариант на стороне 1С. Мы можем создать в справочнике Склады виртуальную единицу, например, «Склад Касса». На этот склад в кассу будут выгружаться суммарные остатки со всех реальных складов.

Проанализируем алгоритм работы:

Во время выгрузки данных на кассу нам нужно пересчитать остатки. Вместо стандартного получения остатка по одному складу, используем запрос по списку складов. Пример кода на языке 1С 7.7 для сбора остатков:


СписокСкладов = СоздатьОбъект("СписокЗначений");
СписокСкладов.ДобавитьЗначение(СкладОсновной);
СписокСкладов.ДобавитьЗначение(СкладДополнительный);

Рег = СоздатьОбъект("Регистр.ОстаткиТМЦ");
Рег.УстановитьФильтр(Номенклатура, ); // фильтр по товару
СуммарныйОстаток = 0;

СписокСкладов.ВыбратьЗначения();
Пока СписокСкладов.ВыбратьЗначение(ТекСклад) = 1 Цикл
    СуммарныйОстаток = СуммарныйОстаток + Рег.СводныйОстаток(ТекСклад, Номенклатура, , , "Количество");
КонецЦикла;

После того как продажи совершены, в 1С загружается отчет. Главная проблема здесь — с какого склада списать проданный товар? Мы можем применить алгоритм FIFO для складов или задать приоритетность складов. Рассмотрим логику обработки продаж:

  1. Система считывает проданное количество товара из отчета кассы.
  2. Проверяет наличие товара на «Складе 1». Если его достаточно, создается документ ПеремещениеТМЦ со «Склада 1» на «Виртуальный склад» текущей датой.
  3. Если на «Складе 1» товара не хватает, система забирает остаток и переходит ко «Складу 2», создавая еще одно перемещение.
  4. После того как все перемещения проведены и остатки на «Виртуальном складе» появились, проводится основной ОтчетОРозничныхПродажах.

Преимущество: Кассир работает быстро, не отвлекаясь на логистические нюансы. Недостаток: Если на одном из складов возникнет пересортица, «подгонка» перемещений может запутать реальную картину остатков до проведения инвентаризации.

Вариант 3. Разделение по отделам (секциям)

Выясним причину, по которой иногда удобно использовать механизм отделов. Если товары на двух складах практически не пересекаются (например, на Складе 1 — инструменты, на Складе 2 — расходные материалы), можно закрепить каждый склад за конкретным «Отделом» во Frontol.

В настройках оборудования 1С можно прописать соответствие: Секция 1 = Склад 1, Секция 2 = Склад 2. При загрузке товаров в кассу в поле «Номер отдела» передается соответствующий индекс. Когда касса возвращает отчет, 1С анализирует номер секции в каждой строке и автоматически распределяет продажи по разным документам или разным складам внутри одного документа (если конфигурация позволяет мультискладские документы).

Вариант 4. Работа через предварительные заказы

Рассмотрим ситуацию, когда покупатель сначала обходит склады, менеджеры выписывают ему «мягкие чеки» или накладные, а оплата происходит в одной центральной кассе. В этом случае Frontol может работать в режиме оплаты счетов.

В 1С 7.7 менеджер создает документ ЗаявкаПокупателя, где указывает конкретный склад отгрузки для каждой позиции. Эта заявка выгружается в кассу. Кассиру достаточно найти заявку по номеру или штрихкоду, принять деньги и пробить фискальный чек. При загрузке данных в 1С на основании оплаченной заявки создается РеализацияТМЦ, которая списывает товар именно с тех складов, которые указал менеджер.

Технические рекомендации по доработке 1С 7.7

Поскольку мы работаем с 1С 7.7, важно помнить о производительности. При формировании файла goods.txt для Frontol избегайте циклов внутри циклов. Лучше один раз выгрузить все остатки во временную таблицу (индексированную таблицу) и уже из нее формировать данные для кассы.

Также обратите внимание на настройку обмена в обработке atol.ert. Найдите функцию, отвечающую за загрузку отчета (обычно это ЗагрузитьОтчет()), и убедитесь, что она корректно обрабатывает ситуацию, когда товара на складе меньше, чем в отчете. Для этого стоит использовать конструкцию:


Если КонтрольОстатков = 1 Тогда
    // Временно отключаем контроль для проведения отчета
    // Или автоматически вызываем процедуру перемещения со второго склада
КонецЕсли;

Подведем итог: выбор метода зависит от того, насколько часто ассортимент складов пересекается и готовы ли вы к доработке логики проведения документов в 1С. Если пересечений мало — используйте отделы. Если пересечений много и важна скорость — используйте автоматические перемещения на виртуальный склад. Если важна идеальная точность «здесь и сейчас» — используйте разрезы Frontol.

← На главную