Как выгрузить справочник товаров из Frontol 6 в читаемом формате?

Системный администратор Торговля и дистрибуция
← На главную

При работе с кассовым программным обеспечением Frontol 6 часто возникает необходимость получить актуальный список товаров непосредственно из кассовой базы. Это требуется в случаях, когда данные на кассе разошлись с товароучетной системой, или когда нужно быстро проверить цены и штрихкоды без доступа к бэк-офису. Стандартный отчет report.txt часто не содержит полной информации (например, наименований), поэтому рассмотрим более глубокие и эффективные способы решения этой задачи.

Способ 1. Использование встроенного экспорта в Frontol Администратор

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

  1. Запустим приложение Frontol Администратор.
  2. Перейдем в раздел Справочники -> Товары.
  3. В верхней панели инструментов выберем функцию экспорта. Система позволяет настроить формат выгрузки (например, CSV или Excel).
  4. Настроим список выгружаемых полей. Обязательно выберем Наименование, Код, Штрихкод и Цена.

Этот метод хорош своей простотой, однако он требует ручных действий и последующей правки данных (здесь поможет набор инструментов Коррекция 1С для Excel), и не подходит для автоматизации процесса «в один клик».

Способ 2. Извлечение данных с помощью SQL-запросов к базе Firebird

База данных Frontol 6 работает на СУБД Firebird (обычно файл MAIN.GDB). Мы можем выполнить прямой SQL-запрос для получения всех необходимых данных. Рассмотрим структуру таблиц: основные данные хранятся в SPRT (справочник), штрихкоды в BARCODE, а цены в связке таблиц REMAIN и PRICEDATA.

Проанализируем пример сложного запроса, который объединяет все эти данные в одну таблицу. Мы создадим представление (VIEW), которое удобно использовать для последующих выгрузок:


CREATE VIEW MyWares AS 
SELECT 
    sprt.id, 
    sprt.code, 
    sprt.name, 
    sprt.isware, 
    REMAIN.ID as remainid, 
    barcode.BARCODE 
FROM SPRT 
LEFT JOIN BARCODE ON SPRT.ID = BARCODE.WAREID 
LEFT JOIN REMAIN ON SPRT.ID = REMAIN.WAREID;

SELECT 
    mw.code, 
    mw.name, 
    mw.barcode, 
    pd.PRICE 
FROM MyWares mw
LEFT JOIN PRICEDATA pd ON mw.remainid = pd.REMAINID
WHERE mw.isware = 1;

В этом запросе мы используем LEFT JOIN, чтобы не потерять товары, у которых, например, временно отсутствует штрихкод или цена. Условие isware = 1 позволяет отфильтровать только товары, исключая группы (папки).

Способ 3. Автоматизация выгрузки через командную строку (isql.exe)

Для реализации решения «в один клик» для конечного пользователя, нам понадобится утилита isql.exe, которая входит в комплект Firebird. Мы подготовим скрипт, который будет выгружать таблицы в текстовые файлы, а затем их можно будет обработать.

Создадим текстовый файл export_script.sql со следующим содержанием:


CONNECT "localhost:C:\ProgramData\Atol\Frontol6\database\MAIN.GDB" USER "SYSDBA" PASSWORD "masterkey";
SET HEADING OFF;
OUTPUT C:\export\goods_names.txt;
SELECT ID, ';', CODE, ';', NAME FROM "SPRT" WHERE ISWARE = 1;
OUTPUT C:\export\barcodes.txt;
SELECT WAREID, ';', BARCODE FROM "BARCODE";
OUTPUT C:\export\prices.txt;
SELECT r.WAREID, ';', p.PRICE FROM "REMAIN" r JOIN "PRICEDATA" p ON r.ID = p.REMAINID;
QUIT;

Запуск этого скрипта осуществляется командой: isql.exe -i export_script.sql. Это позволит мгновенно получить «сырые» данные для дальнейшей обработки.

Способ 4. Обработка данных с помощью OneScript

Если нам нужно представить данные в красивом виде (например, в формате HTML для открытия в браузере или Excel), удобно использовать OneScript. Рассмотрим алгоритм, который читает выгруженные текстовые файлы и собирает их в единый отчет.

Проанализируем пример кода на OneScript, который формирует HTML-таблицу:


ПутьКДанным = "C:\export\";
ФайлHTML = "C:\export\report.html";
ТекстHTML = Новый ТекстовыйДокумент;

// Читаем цены в соответствие (Ключ - ИД товара, Значение - Цена)
Цены = Новый Соответствие;
ТекстЦены = Новый ТекстовыйДокумент;
ТекстЦены.Прочитать(ПутьКДанным + "prices.txt");
Для НомерСтроки = 1 По ТекстЦены.КоличествоСтрок() Цикл
    Стр = СтрРазделить(ТекстЦены.ПолучитьСтроку(НомерСтроки), ";");
    Если Стр.Количество() > 1 Тогда
        Цены.Вставить(СокрЛП(Стр[0]), СокрЛП(Стр[1]));
    КонецЕсли;
КонецЦикла;

// Формируем шапку HTML
МассивСтрок = Новый Массив;
МассивСтрок.Добавить("<table border='1'><tr><th>Код</th><th>Наименование</th><th>Цена</th></tr>");

// Читаем справочник и сопоставляем с ценами
ТекстТовары = Новый ТекстовыйДокумент;
ТекстТовары.Прочитать(ПутьКДанным + "goods_names.txt");
Для НомерСтроки = 1 По ТекстТовары.КоличествоСтрок() Цикл
    Стр = СтрРазделить(ТекстТовары.ПолучитьСтроку(НомерСтроки), ";");
    Если Стр.Количество() > 2 Тогда
        ИД = СокрЛП(Стр[0]);
        Код = СокрЛП(Стр[1]);
        Имя = СокрЛП(Стр[2]);
        ЦенаТовара = Цены.Получить(ИД);
        
        МассивСтрок.Добавить("<tr><td>" + Код + "</td><td>" + Имя + "</td><td>" + ЦенаТовара + "</td></tr>");
    КонецЕсли;
КонецЦикла;

МассивСтрок.Добавить("</table>");
ТекстHTML.УстановитьТекст(СтрСоединить(МассивСтрок, Символы.ПС));
ТекстHTML.Записать(ФайлHTML);
ЗапуститьПриложение(ФайлHTML);

Этот скрипт выполняет роль «соединителя» данных. Мы используем объект Соответствие для быстрого поиска цены по идентификатору товара, что критично при больших объемах справочника (десятки тысяч позиций).

Дополнительные рекомендации

Разберем еще несколько важных моментов при работе с выгрузкой из Frontol 6:

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

← На главную