Как настроить выгрузку номенклатуры из 1С:Общепит 3.0 в Frontol?

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

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

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

Анализ проблемы: почему нет прямой выгрузки «из коробки»

Давайте разберемся в архитектуре решений. Разработчик «1С:Общепит» (компания «1С-Рарус») ориентирует пользователей на использование собственных фронт-офисных продуктов — 1С:Ресторан, 1С:Фастфуд или РестАрт. Для этих систем в конфигурации реализован полноценный двусторонний обмен через так называемые Кассовые узлы.

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

Тем не менее, решить эту задачу можно несколькими путями. Рассмотрим их подробно.

Способ 1. Настройка обмена через Библиотеку подключаемого оборудования (БПО)

Поскольку «1С:Общепит 3.0» построен на базе типовой «1С:Бухгалтерии предприятия», в нем присутствует стандартный механизм платформы 1С для работы с ККМ Offline. Мы можем использовать его для связи с Frontol.

Давайте разберем этот процесс по шагам:

  1. Перейдем в раздел «Администрирование» — «Подключаемое оборудование» и включим флаг «Использовать подключаемое оборудование».
  2. В справочнике подключаемого оборудования создадим новое устройство с типом оборудования «ККМ Offline».
  3. В качестве драйвера выберем стандартный драйвер «АТОЛ:ККМ Offline».
  4. В параметрах настройки устройства укажем необходимый формат обмена (например, Frontol 5 или Frontol 6), а также настроим пути к каталогу обмена:
    • Путь к файлу базы товаров (обычно goods.txt).
    • Путь к файлу флага выгрузки.
    • Путь к файлу отчетов о продажах.
  5. Перейдем в раздел «Продажи» — «Правила обмена с подключаемым оборудованием». Здесь мы должны создать правило, указав, какая именно номенклатура (из каких групп справочника) и по какому типу цен должна выгружаться на кассу.
  6. Для выполнения самой выгрузки используется обработка «Обмен с подключаемым оборудованием».

Казалось бы, решение найдено. Но на этом этапе большинство разработчиков и администраторов сталкиваются с серьезной технической проблемой.

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

Когда мы пытаемся выгрузить файл goods.txt через стандартную БПО, кассовое ПО Frontol при попытке загрузить этот файл выдает ошибку: «В строке №... неверные данные — недопустимое значение в поле 1».

Выясним причину этой ошибки. По умолчанию «1С:Общепит» использует текстовые коды номенклатуры, которые часто содержат префиксы информационной базы и ведущие нули (например, 00-0000015 или СП0000234). Frontol в своем классическом режиме работы ожидает, что в поле «Код товара» (первое поле в строке файла обмена) будет передано строго целое число (числовой идентификатор PLU).

Существует два пути решения этой проблемы.

Вариант А. Перевод Frontol в режим строковых кодов

Это самый простой способ обхода проблемы, не требующий программирования в 1С. Как отмечали участники обсуждения, мы можем настроить сам Frontol на работу с алфавитно-цифровыми кодами.

В настройках Frontol необходимо переключить режим идентификации товаров с числового на строковый. В этом случае Frontol без проблем примет коды вида 00-0000015 в качестве уникальных идентификаторов. При считывании штрихкода или выборе товара на кассе Frontol будет оперировать этими строковыми значениями, и при обратной загрузке отчета о продажах в 1С коллизий не возникнет.

Вариант Б. Программная очистка кодов в 1С (Доработка обмена)

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

Нам потребуется написать функцию, которая перед записью данных в файл обмена будет очищать код номенклатуры от префиксов и ведущих нулей, преобразуя его в число.

Рассмотрим пример реализации такой функции на языке 1С:


Функция ПолучитьЧисловойКодДляФронтол(ИсходныйКод) Экспорт
    
    ОчищенныйКод = ИсходныйКод;
    
    // 1. Удаляем префикс базы и тире, если они есть (например, "СП-0000125" -> "0000125")
    ПозицияТире = Найти(ОчищенныйКод, "-");
    Если ПозицияТире > 0 Тогда
        ОчищенныйКод = Сред(ОчищенныйКод, ПозицияТире + 1);
    КонецЕсли;
    
    // 2. Очищаем от буквенных символов, если префикс был без тире
    // (для этого можно использовать регулярные выражения или посимвольный перебор)
    
    // 3. Удаляем ведущие нули
    Пока Лев(ОчищенныйКод, 1) = "0" И ДлинаСтроки(ОчищенныйКод) > 1 Цикл
        ОчищенныйКод = Сред(ОчищенныйКод, 2);
    КонецЦикла;
    
    Возврат ОчищенныйКод;
    
КонецФункции

При использовании этого подхода важно помнить о двух моментах:

Способ 2. Использование механизма «Кассовых узлов» для выгрузки меню

Если мы проанализируем архитектуру «1С:Общепит», то увидим, что в разделе «Продажи» присутствует блок работы с кассовым меню. Мы можем сформировать меню для кассы стандартным документом Установка меню кухни/бара.

Чтобы выгрузить данные, выполним следующие шаги:

  1. Создадим элемент в справочнике Кассовые узлы.
  2. Заполним для него созданное меню.
  3. Через команду «Еще» — «Выгрузка начального образа» или через специализированные обработки «1С-Рарус» выполним формирование файлов выгрузки.

Обратите внимание, что этот механизм ориентирован на XML-форматы обмена решений «Рарус». Чтобы подружить его с Frontol, программисту потребуется написать небольшую внешнюю обработку-конвертер, которая будет перехватывать выгруженный XML-файл меню и преобразовывать его в стандартный текстовый формат Frontol.

Готовые альтернативные варианты

Если вы не хотите тратить время на написание собственного кода и доработку конфигурации, рассмотрите альтернативные варианты:

Подведем итоги. Настроить обмен между «1С:Общепит 3.0» и Frontol возможно. Простейший путь без программирования — использовать стандартную БПО (ККМ Offline) совместно с переключением Frontol в режим строковых кодов. Если же кассовая дисциплина и оборудование требуют жестких числовых ID, лучшим решением будет создание небольшого расширения 1С для нормализации кодов номенклатуры при обмене.

← На главную