Delphi. Подключение фискального регистратора ATOL, STRICH-M

В связи с последними событиями связанными с массовым внедрением он-лайн касс, в сети (на фрилансе в частности) появилось много запросов от программистов. У нас это сделано в lazarus, но суть от этого не меняется. Используется подключение по COM к драйверу ККМ. Синтаксис у атола и штрих-м немного отличается, ознакомиться с примерами можно в примерах для атол- C:\Program Files\ATOL\Drivers8\Samples\FprnM\JScript.

Сам код полностью не привожу, тут все бурно меняется.

//создали объект
ECR := CreateOleObject(‘AddIn.FprnM45′);
ECR.ApplicationHandle := Application.Mainform.Handle;
//заняли порт
ecr.DeviceEnabled:=1;
//пароль кассира=1
pwd_kass:=’1’;

…………………………………………………………………………

Главное — это принцип, использование COM-объекта. Также можно посмотреть этот принцип в примере для 1С 7.7. И вообще, чем писать свой софт, может лучше Tandem7pi использовать ? Ключ к одной торговой точке — 2500 р. Количество рабочих мест в одной торговой точке не ограничено.

Он-лайн розница. Плюсы и минусы.

В настоящее время мы присутствуем при рождении нового течения в автоматизации розничной торговли. Программа для выполнения торговых операций и получения отчетности в виде он-лайн сервиса.

Начнем с плюсов.

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

Очень даже весомые плюсы!

Теперь минусы.

Низкая скорость работы, обусловленная требовательностью WEB-приложений к производительности компьютера и к скорости канала связи. Обязательное наличие лицензионного антивирусного  продукта (это еще один тормоз). Невозможность быстрого восстановления работоспособности торговой точки в случае закрытия интернет-сервиса (например проверка контролирующих органов). Оплата интернет-трафика в разы выше для сотового интернета, чем при оплате за передачу чеков в ОФД. Недостаточный опыт разработчиков таких сервисов в особенностях розничной торговли. Отсутствие «горячих» клавиш. Быстрый ввод возможен только при чтении сканером штрих кода. Наличие  сервисов розничной торговли, как приложение (часто экспериментальное) к большому бухгалтерскому сервису (соответственно и такое отношение к нему внутри  фирмы). Часто невозможность подключения дополнительных устройств (экран покупателя, весы и т.п.). Ну и самое главное- полная зависимость от провайдера связи, а здесь Вам не тут, это не Германия (комментарии излишни).

Ну и рекомендации.

Сами понимаете, что за 10 р в сутки Вы не получите достойного сервиса, разве Вы выступите в роли тестера на какой то период. Потом расценки поменяются. Соответственно нужно при большом желании, пользоваться интернет сервисом солидных фирм, имеющих большой опыт в написании программ для розницы. Это должно быть дорого (не 10 р в сутки). Или использовать преимущества локальных программ в сочетании с различными сервисами удаленного доступа (TeamViewer, Supremo, Ammyy Admin и т.п.) и сервисами хранения резервных копий данных в облачных хранилищах .

О принципах и подходах

Имея громадный опыт внедрения и сопровождения чужого ПО (более 20 лет), я в 2012 году придумал свой подход к разработке проекта программы для розничной торговли. Тогда в этом была настоятельная потребность. 1С поставила крест на 1с7.7, а 1с «Розница» еще не была так популярна, как сейчас. Народ тогда пользовался дешевой 1с «Управление торговлей» и дурел от непонимания логики работы этого софта. Идея нового подхода заключалась в том, что программа рождалась непосредственно в магазине. То есть каждая новая функция была предложена продавцом, менеджером или хозяином торговой точки и через пару дней им же была протестирована в «боевом» режиме. Так примитивный tandem7l перерос в супер функциональный tandem7pi. Причем некоторые моменты в смысле удобства не сразу понятны. Например корявый шрифт вместо «причесанного» шрифта в 1С «Розница» снижает утомляемость глаз продавца (эта идея есть кстати и в разработках от Штрих-М). Или размер файла базы данных. Он критичен для резервного копирования. Он у tandem7pi вырастает за  год круглосуточной торговли продуктами питания (~18000 наименований) лишь до 100 МБ (меньше нулевой БД иных брендовых софтов). Небольшой размер формы продажи (и соответственно жирный шрифт) позволяет использовать на рабочем месте продавца маленький монитор. А также торговать без мышки и без специальной торговой клавиатуры используя несколько вариантов «горячих» клавиш обычной клавиатуры. В одном варианте можно убрать клавиатуру под прилавок на выдвижную полку и использовать самый нижний ряд клавиш, чуть выдвинув клавиатуру.

Однако суть данного текста не в перечислении достоинств программы. Просто нужно пояснить, что если наш клиент находит в работе Tandem7pi какое то неудобство, то ему дается консультация или выполняется бесплатная доработка, если еще никто на это неудобство не указал разработчику ранее. Причем это делается в максимально сжатые сроки. Мы сознательно не держим форум для поддержки пользователей, каждый клиент получает индивидуальную поддержку. При уникальной простоте интерфейса программы и ее «обкатанности» в реальной торговле, мы можем себе такое позволить.

«Фишки» Tandem7PI

Низкие требования к производительности компьютера. Чуть выше чем у «движка» 1С 7.7 (требования чуть выше в связи с изначально сетевой парадигмой программы).

Предельно простое меню программы. Все надписи (в том числе в таблицах) выполнены легко читаемым шрифтом, что не совсем эстетично, но очень практично. Торговый учет ведется в единицах измерения (в том числе в размерах, например обуви) и в денежных единицах в разрезе фирмы, контрагента, продавца и склада-магазина. Учет проведенных услуг ведется в деньгах в разрезе фирмы,клиента и мастера.

Предельно простая настройка сканера штрих кодов (точнее — обычно никакой настройки не требуется).   Никаких «танцев с бубнами» при настройке портов и установке драйверов.

Поддерживаются фасовочные весы «Масса-К»  и CAS. Электронные весы фирмы CAS  или Штрих-М подключаются по COM порту.

Программа имеет клиент-серверную конфигурацию. Ставится на все версии Windows кроме WinXP HomeEdition.

Система разработана на free pascal с применением free сервера БД FireBird, без нарушения чьих то авторских прав.

Есть возможность выгрузки табличной части приходной накладной в транспортный файл, который можно загрузить в базу данных на другом ПК в другом населенном пункте. Через этот же механизм можно загружать, подготовленные в Excel, документы поставщиков.

Можно создавать продажи по закупкам и т.п.

Операция «Продажа» осваивается продавцом за несколько минут, а если продавец запомнит назначение  3-5  «горячих» клавиш, то через час тренировки, скорость проведения продажи будет не хуже, чем при использовании спец. клавиатуры (стоимость которой больше 3000) .

Возможна печать чеков продаж  на одном принтере (или ККМ) с нескольких рабочих мест.

Очень удобный интерфейс ведения ценников. Текст наименования товара можно редактировать перед распечаткой. При учете товара в разрезе размеров (обувь например), можно распечатывать наклейки с штрих кодом, в который внесен код и размер товара. Выбор ценников для печати по приходной накладной, по группе, по размерам, по коду, по штрих коду, по наименованию.

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

При использовании общей кассы для нескольких отделов продаж, выбор отдела (склада) при продаже проходит автоматически по привязке к складу в карточке товара (справочник «Товары»).

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

Есть три  механизма распечатки этикеток с штрих кодом. На лист формата А4, на специализированном принтере и на фасовочных весах (в том числе для штучного товара).

Механизм ценообразования состоит из двух подсистем-  при закупке товара (цены изменяются одновременно с изменением остатков) и через форму «Переоценка».

Добавление товара в номенклатуру можно оперативно выполнить  при заполнении прихода товара из меню подбора.

Высокая скорость получения текущих остатков позволяет выводить эту информацию непосредственно на формы продажи и закупки.

Отчет «Движение товара» позволяет быстро разобраться в ошибках пересортицы для конкретного товара.

При торговле обувью или одеждой выводится справка об остатках в разрезе модели и ее размеров .

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

Предусмотрена простая система скидок. В том числе и с применением бонусных карточек с штрих кодами.

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

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

Предусмотрена возможность перевода интерфейса программы на любой язык. Для этого нужно включить режим «Использование альтернативного языка интерфейса» и  перевести, например с помощью интернет переводчика, текстовые файлы в папке lang программы. Причем можно перевести на туземный язык только часть форм (например форму продаж и кассовый отчет).

При добавлении нового товара в номенклатуру, можно использовать уже имеющийся товар, как прототип , изменив потом нужное, вместо набивания всех данных (наименование и т.п.)  с нуля. Пункт меню «Добавить по текущей».

Имеется настраиваемая система звукового оповещения.

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

Начальный размер файла базы данных Tandem почти в 50 раз меньше, чем у 1С 8.X. Что позволяет быстро выполнять резервное копирование на внешний носитель.

Предусмотрена возможность проведения ревизии по группам товара (без закрытия магазина на ревизию).

Есть механизм вывода изображения товара по горячей клавише (F7) и на форме продажи в режиме работы с серийными номерами товара.

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

Из контекстного меню журнала закупок можно создать новую закупку или продажу с использованием данных, выделенной в журнале, закупки.

Предусмотрена возможность торговли с использованием серийных номеров ( в том числе в виде штрих кода) товаров.

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

Загрузка данных в номенклатуру и в таблицу остатков из сторонних источников, осуществляется через файлы обмена формата csv (текстовый файл с символами-разделителями — «;», выгружаемый из Excel)

Tandem7pi работает в linux при поддержке wine. Инструкция по настройке есть на портале pi-d.ru.

Срез сильно выросшей базы данных в Tandem7pi занимает не более 20 минут (актуально при круглосуточной торговле продуктами в «бойком» месте). Есть механизм переключения между несколькими БД. При этом менеджеру доступны старая и «боевая» база данных (значки на рабочем столе), а  продавцу только «боевая». В зависимости от интенсивности торговли, срез делается раз в 1-3 года.

Можно «отложить» товар, выбранный покупателем, в виде, не проведенной по складу, но сохраненной в журнале, продажи. По такой продаже можно выписать счет на предоплату.

Параллельно изменению БД, ведется протокол, лог-файл, в котором можно найти- время, код и количество товара . Можно создать операцию по выбранным записям в протоколе (Сервис/Аудит).

Для торговли авто.запчастями предусмотрен фильтр по VIN.

Можно подключить дополнительный монитор или телевизор, как дисплей покупателя (выводятся данные по продаже).

Есть два варианта продажи «в долг».  Можно отложить продажу без проведения по складу (см.выше) или провести по складу без проведения по кассе. Выборка долгов в отчете «Задолженности».

Есть отчеты для анализа прибыли.

По клавише F1 загружается подсказка по «горячим» клавишам. При работе с «горячими» клавишами, можно прятать клавиатуру под прилавок продавца.

Программа эксплуатируется в аптеках, на СТО, в небольших (до 5 рабочих мест) торговых точках (продукты, кроме ликерки, хоз.товары, одежда, обувь и т.д.) и при предоставлении услуг (например спортзал или бассейн).

В программе есть встроенный механизм резервного копирования.

Процесс совершенствования ПО Tandem7PI идет непрерывно с 2012 года в виде бесплатных доработок по просьбам наших клиентов. Причем  новые возможности не сразу попадают в документацию (папка docs в папке программы), не успевают. Кроме того в данной папке есть рекомендации по отдельным ситуациям, косвенно связанным с нашей программой. Например, как «разруливать» сбои в работе ККМ Штрих-М.

 

Tandem7PI и Закон 54-ФЗ

В последнем релизе Tandem7PI можно на несколько ПК использовать один фискальный регистратор. Выбирается базовая машина (обычно это ПК продавца-кассира, на которой, кстати, нужно держать сервер FireBird и базу данных). Базовая машина включается первой и выключается последней. К ней подключается фискальный регистратор. На базовой машине включаем  обработку чеков из БД.     На остальных ПК в настройках Tandem7PI включаем режим сохранения чеков в БД. Таким образом решается проблема проведения по регистратору на ПК, предназначенных в основном не для продаж (ПК менеджера, хозяина или ноутбук, подключенный временно в связи с предпраздничной горячкой). На базовом ПК задаются группы товаров, которые должны учитываться в фискальном регистраторе. У данной технологии есть два некорректных момента. В таком чеке не будет правильного e-mail покупателя (будет вноситься test@test.ru) и все чеки пройдут кассой№1. Однако это проблема того, кто придумал такую глупость. А что если покупатель назовет почтовый адрес какого нить террориста? Типа пошутит? Проверить то нельзя, а шутников у нас достаточно. Ну а много касс там, где Tandem7PI не пользуются (впрочем как и 1С). И есть уникальное свойство. Что происходит в другом ПО, если кассу «заело»? Бумага застряла, просто «подвис» аппарат. Торговля останавливается. В Tandem7PI в базе данных записывается задание на последующую распечатку чека. После приведения в чувство ККМ, чеки распечатаются и эл.копии уйдут куда надо.

Переход на FireBird 3.0

Для перехода Tandem7PI на новую, 3.0, версию нужно выполнить следующее:

  1. Сохранить БД (Сервис/Резервное копирование БД).
  2. Закрыть программу Tandem7PI. Скачать комплект по ссылке
  3. Распаковать содержимое комплекта поверх, имеющихся в папке Tandem7pi_srv или Tandem7pi_client, файлов с перезаписью.
  4. Запустить с правами администратора (из меню правой кнопки мышки) файл c:\tandem7pi_srv\FireBird\bin\uninstall.bat
  5. Скачать и установить сервер FireBird 3.0 по ссылке  (32) или с другого ресурса. При установке выбрать конфигурацию classic. Установить, как службу Windows, запускаемую при загрузке. Разрешить запуск службы FireBird .
  6. Проверить наличие работающей службы FireBird (Компьютер/Управление/Службы)
  7. Запустить Tandem7PI. Не обращая внимание на сообщения об ошибках, перейти в Сервис/Система/База данных и восстановить БД, сохраненную в п.1 .

1C 7.7 -ностальгия

Прошло уже прилично времени с того момента, как фирма 1С перешла на версию 8. Однако до сих пор у моих знакомых предпринимателей неприятие к такому супер мощному софту. Все с тоской вспоминают «семерку». Однако они не пробовали в свое время поработать в конфигурации 1С 7.7 А.Величко («Конкурент»).  Вот это была наверное самая удобная конфа для розничной торговли. Представляете, создано это чудо было в прошлом тысячелетии. Предельная простота интерфейса. Я знаю людей, которые и сейчас торгуют с ее использованием. Так вот нами была использована в Tandem7PI идеология из этого релиза. При этом был поднят уровень функциональности до современных требований. Конечно, то , что в 1С 7.7 можно было легко доработать код и БД под «свои тараканы», в Tandem7PI реализовать не возможно. Однако есть свои «плюшки» для тех, кто умеет программировать и от этого еще и кормится. Начнем с того, что система здесь клиент-серверная. Это не говорит, что нужно в магазине ставить сервер в виде отдельного компа (кстати так делают те, кто «превращает» одно пользовательскую   «восьмерку» в сетевой вариант). Просто нужно быть чуть грамотнее, чем продвинутый пользователь, чтобы установить и настроить систему из нескольких компов на базе Tanden7PI (IP адресация, синхронизация времени, бэкапы и т.п.). Кроме того, можно в Delphi или в чем либо, написать дополнительный софт , который будет пользоваться БД параллельно с Tandem. Учитывая, что  себестоимость системы будет на треть ниже, чем при 1С ( Tandem очень не требователен к производительности ПК, а ключ к программе для одной торговой точки всего 2500 ру.), то хозяин может позволить себе  нанять на стартовый период грамотного спеца (которого мы проконсультируем бесплатно до распечатки ценников). Кто же экономит и на этом, то получает у нас стартовую онлайн тех.поддержку по TeamViewer (2500 ру за торговую точку). Напоследок скажу, что мы уже год, как перевели всех своих клиентов с 1С 7.7 на Tandem7PI.

Tandem7pi и ЕГАИС

Для работы с УТМ используем БЕСПЛАТНУЮ программу «Егаиска» от АЛСИОН (http://egaiska.ru). Подтверждаем накладные поставщиков пива. Из Егаиска выгружаем накладные в файл (Excel) и загружаем в таблицу сопоставления с номенклатурой в Tandem7PI. По загруженной таблице сопоставления создаем закупку и проводим ее.

В перспективе будет свой аналог «Егаиска» (как только эта программа станет платной). Прототип такой программы тестируется.

Журнал учета продаж алкоголя (пиво, сидр) ведется и выгружается в электронном виде из Tandem7pi в Excel.

Весы с печатью этикеток

Пора поделиться своим опытом по работе с весами с печатью этикеток. Как построен механизм у большинства торговых программ? Обычно берется драйвер от Атол и через него осуществляется обмен данными. Есть несколько явных параметров для настройки. Это указать имя драйвера в настройках программы и адрес доступа к весам и тип весов в самом драйвере. В то же время, изготовители весов сопровождают их продажу своим программным обеспечением (ПО). Причем отдельные производители умудряются таким ПО торговать параллельно  весам. В связи с заложенной в торговой программе идеи «объять необъятное», возникают различные проблемы. Так например в настройках весов нужно указать количество ячеек памяти, что вводит в ступор не только предпринимателя, но и меня, который  знает эту науку так сказать изнутри. По умолчанию стоит 1000, а сколько нужно? Допустим это максимальное количество PLU,  тогда так и укажите.

В Tandem7PI заложен другой принцип. Например с весами МАССА-К обмен данными производится напрямую, с использованием программ, разработанных в этой фирме.

В  штрих коде, применяемом в таких весах,  есть ограничение по величине кода товара- 99999. Поэтому собственно и введено понятие PLU. Программа может торговать по PLU и по коду. В Tandem7PI код товара и PLU идентичны. Работа с номенклатурой более 99999 единиц не предусмотрена. Что позволило максимально упростить настройку и работу с весами. Просто выгружается весь весовой товар, имеющийся в наличии и штучный, имеющийся в наличии и имеющий отметку «кг» в дополнительных свойствах.

Аналогично с весами CAS 5000j. Используется ПО изготовителя весов. В случае заказа, будет добавлена поддержка еще одного типа весов.

Как включить ведение «Журнал учета алкогольной продукции»

Для ведения журнала учета алкогольной продукции в Tandem7PI необходимо сделать соответствующие настройки:

1.В Сервис/Система/Режимы поставить отметку «Ведется журнал учета алкоголя» и нажать кнопку «Сохранить настройки». При этом сразу следует учесть, что при продаже алкогольных товаров с неправильными настройками в карточке, программа не проведет продажу и выведет сообщение об ошибки типа «alcojournal 3». Как настроить изложено ниже.

2.В карточке каждого, учитываемого в этом журнале, товара должна стоять единица измерения шт. или л. Также нужно добавить в поле «Дополнительные свойства» запись вида «= 200;» (здесь = пробел 200; — код алкоголя водка) и указать емкость бутылки в поле «Емкость тары». Для этого нужно нажать ДВА раза кнопку (1), расположенную справа от поля «Дополнительные свойства». В выпадающем списке (3) выбрать нужный код и нажать кнопку в виде «псисы» (4). Для удобства ввода, рекомендуется сначала выделить нужную группу товаров (отфильтровать). При открытии следующей карточки будет выбран предыдущий код (3), нужно только кнопку нажать (4). Список с кодами обновляется при обновлении версии. По сути это обычный текстовый файл в папке программы.

Безымянный 2

В принципе, если нужно одновременно добавлять несколько свойств, удобней набрать строчку из нескольких свойств (например = 500;-;). Скопировать ее и вставлять в это поле в карточки аналогичных алкогольных товаров.