
С чего всё началось
Во многих розничных сетях обмен с внешними системами годами строился вокруг Frontol.
Учетная система выгружает товары, цены и остатки. Касса продаёт. Потом обратно уходят отчёты по сменам и чекам. Всё давно настроено, внешние системы знают формат, люди знают регламент, бизнес не хочет трогать то, что работает.
Проблемы начинаются, когда кассовый контур надо обновлять: маркировка, разрешительный режим, новые требования, новые версии, дополнительные модули, подписки. И тут выясняется, что сам обмен менять никто не готов. Переписывать интеграции только потому, что меняется кассовое ПО, дорого и рискованно.
Идея была простая: поставить в качестве кассового решения 1С:Розницу, но оставить внешний обмен в привычном формате Frontol. Чтобы внешняя система продолжала отправлять те же файлы и получать те же отчёты, а внутри работал типовой учёт Розницы.
Так появилось расширение FrontMost

Что делает FrontMost
FrontMost - это расширение для 1С:Розницы 3.0, которое поддерживает файловый обмен, обмен через email в формате Frontol.
Важно
Это не попытка полностью эмулировать все команды обмена Frontol, речь идет именно о частичной совместимости на уровне основных команд обмена
Сохраняется совместимость для:
- структура файлов;
- команды загрузки товаров (остатки, цены);
- порядок полей в файле выгрузки/загрузки;
- флаг-файлы;
- обмен с помощью архивов;
- обмен через каталог;
- обмен через email;
- выгрузка кассовых транзакций, при закрытии смены.
Внешняя система продолжает работать с привычным форматом обмена FRONTOL и продолжает "думать", что магазинах также работает Frontol. При загрузке в 1С:Розницу данные попадают в типовые объекты Розницы.
Настройка правил обмена:


Загрузка товаров, цен и остатков
На входе расширение принимает стандартные команды Frontol.
Поддержаны основные команды по остаткам:
| Команда | Что делает |
|---|---|
| ADDQUANTITY | прибавляет количество к текущему остатку |
| REPLACEQUANTITY | устанавливает целевой остаток через расчёт дельты |
| REPLACEQUANTITYWITHOUTSALE | обрабатывается как REPLACEQUANTITY |
| DELETEALLWARES | обнуляет остатки |
Остатки ведутся в разрезе:
Склад / магазин + номенклатура + характеристика.
В текущей реализации единица измерения считается как шт.
Цены обрабатываются в том же пакете. Сначала применяется цена, потом остаток. Это важно, потому что во внешнем файле товар может прийти сразу с новой ценой и новым количеством.
По ценам логика такая:
- пустая цена не меняет текущую цену;
- цена 0 по умолчанию не применяется;
- цена записывается только если отличается от текущей.
НДС заполняется через отдельное сопоставление кодов Frontol со ставками НДС 1С. Это нужно настроить один раз, иначе в карточке товара ставка сама по себе не появится.
Номенклатура и штрихкоды
При загрузке расширение создаёт или обновляет номенклатуру, характеристики и штрихкоды.
Отдельное внимание пришлось уделить реквизитам карточки товара. В Рознице есть свои обязательные и важные поля: категория, способ списания, ставка НДС, единица измерения, признаки маркированного товара. Их нельзя просто проигнорировать, иначе товар вроде бы загрузится, но дальше начнутся проблемы в РМК, остатках или учёте.
Поэтому часть значений вынесена в настройки правила обмена, а часть берётся из файла.

Каналы обмена
Поддержаны два основных канала:
- каталог;
- email.


Для каталога реализованы обычные файлы, архивы и флаг-файлы. Поведение сделано таким же, как в старом рабочем обмене: если включен режим загрузки из архива, обычный txt-файл не должен внезапно загрузиться. Если задан флаг загрузки, файл не должен обрабатываться без этого флага.
Для email используется POP3/SMTP. Здесь тоже важны детали. Письмо не должно удаляться просто потому, что оно попало в ящик. Оно должно подходить под параметры обмена и быть успешно обработано. Иначе можно потерять входящий файл.
Автообмен
Есть ручной обмен и автоматический обмен по регламентному заданию.
В настройке правила обмена можно включить автообмен и задать расписание. Регламентное задание запускает тот же механизм обмена, что и ручная форма. Это удобно: сначала можно отладить всё руками, а потом включить расписание.
РМК и кассовые транзакции
Для обратной выгрузки нужны кассовые события:
- открытие смены;
- продажа;
- X-отчёт;
- закрытие смены.
Эти события пишутся в регистр FrontMost_КассовыеТранзакции. Потом по этому регистру формируется файл выгрузки в формате Frontol.
Выгрузка
Выгрузка может запускаться:
- вручную;
- по регламентному заданию;
- при закрытии смены.
Если в настройке включена выгрузка при закрытии смены, после закрытия смены формируется файл отчёта и отправляется по выбранному каналу. Если включен email, файл уходит через SMTP. Если каталог - записывается в каталог обмена и при необходимости создаётся флаг выгрузки.
Перед выгрузкой могут быть добавлены недостающие служебные транзакции, чтобы итоговый файл соответствовал ожидаемой структуре. Это нужно для совместимости со старым контуром.
Зачем это всё
Главная польза такого подхода - можно заменить кассовую часть, не переписывая весь внешний контур.
Внешние системы продолжают работать с тем же форматом.
Розница ведёт учёт типовыми документами и регистрами.
Обмен остаётся привычным для инфраструктуры, которая уже существует.
Это особенно актуально, когда внешний контур большой: склад, заказы, отчёты, аналитика, самописные загрузчики. Часто дешевле и безопаснее адаптировать кассовую часть под старый протокол, чем менять всё вокруг.
Что получилось
В итоге FrontMost стал адаптером между 1С:Розницей и внешними системами, которые исторически работают с Frontol-форматом.
Снаружи остаётся старый файловый обмен.
Внутри работает 1С:Розница.
Товары, цены, остатки, чеки и смены проходят через типовые механизмы.
Для проектов, где уже есть внешний контур под Frontol, это даёт понятный путь миграции: можно заменить кассовое решение, не начиная интеграцию с нуля.
Проверено на следующих конфигурациях и релизах:
- Розница, редакция 3.0, релизы 3.0.9.105
Вступайте в нашу телеграмм-группу Инфостарт