Описание работы с несколькими ФРами

Предисловие. Техническое:

Все нижесказанное справедливо для "Общего драйвера ККМ" . C этим драйвером работают Феликсы, Триумфы, Штрихи (2-ой версии). С другими ФРами не работал, как устроен их драйвер - не знаю. Все примеры исходного кода приведены для 1С 7.7, от компоненты не зависят. Все упомянутое в статье оборудование куплено в Атоле.

Предисловие. Организационное:

Предположим, что у вас есть большой магазин и возникла необходимость поделить его на мелкие части, которыми, формально, будут командовать совершенно разные фирмы (предприниматели). Необходимость в этом возникла еще в начале 2003 года в связи с изменением налогового законодательства. Но учет вы собираетесь продолжать вести в одной ИБ, т.к. все эти фирмы реально относятся к одному холдингу. Самый простой вариант решения возникшей проблемы - поставить в магазине столько компов, сколько Фров. Но такой вариант неудобен организационно (много денежных ящиков, кассиров, необходима охрана,:) и дорог (каждый лишний комп - это примерно $500). Поэтому и возникает желание поставить 1-2-3 компа и к ним подключить все Фры.

Физическое подключение оборудование

Предположим, что у вас есть 1 комп и 5 Фров. Первая неприятность - отсутствие необходимых COM-портов. В большинстве современных компов такой порт всего один. В лучшем случае их будет два, но точно не больше. Событие неприятное, но решаемое. Достаточно посмотреть по сторонам и найти платы расширения с COM-портами. Можно попробовать использовать мультикарты от старых компов, но у них есть несколько недостатков. Их уже трудно найти, они часто нестабильно работают, их часто некуда воткнуть, т.к. ISA в современных компах встречается редко. Приходится покупать PCI платы. Их вполне реально купить и они стабильно работают, только дорогие :(. Но делать нечего, покупаем PCI-2COM или PCI-4COM, одну или несколько, чтобы получить необходимое количество портов, к которым осталось только привинтить оборудование. При покупке плат расширения надо обязательно помнить, что остальные устройства (сканеры ШК, ридеры магнитных карт и т.п.) также требуют для подключения COM-порт!

Логическое подключение оборудования.

Все Фры подключены, все новые COM-порты в системе видны, можно начинать работать. Первое, что надо сделать - создать логические устройства для всех подключеных Фров. Для этого надо запустить тестовую утилиту из комплекта или запустить 1С, которая должна загружать драйвер. В любом случае надо зайти в "Поиск оборудования" и запустить сканирование всех портов на всех скоростях. Для ускорения процесса можно оставить только скорость 115200, т.к. именно на ней по умолчанию работают Фры. Поиск прошел, нашлись Фры, необходимо нажать кнопку "Создать все", что приведет к созданию логического устройства для каждого обнаруженного Фра. То же самое можно проделать и руками, только существенно дольше: надо создать логическое устройство, прописать его параметры, проверить, исправить и т.д.

Загрузка драйвера

Чтобы работать с Фрами, необходимо загрузить драйвер. Для этого надо создать глобальную переменную, в которой будет храниться ссылка на драйвер, назовем ее Elves. В процедуру ПриНачалеРаботыСистемы() надо вставить вот такой кусок:

  Если ЗагрузитьВнешнююКомпоненту("FPRNM1C.dll")<>0  Тогда  	Elves = СоздатьОбъект("AddIn.FprnM45");  Иначе  	Предупреждение("Не загружен драйвер фискального регистратора.", 1);  КонецЕсли;  

Выбор нужного Фра.

В любой момент какой-то один ФР является текущим устройством. Если просто в тексте дать команду напечатать строку, зарегистрировать продажу, снять отчет, то эти команды будут отправлены текущему логическому устройству. Изменение текущего устройства производится изменением свойства CurrentDeviceIndex. Общее количество логических устройств можно получить вот так: Elves.DeviceCount. В дальнейшем перед выполнением каких-либо команд надо предварительно указывать: Elves.CurrentDeviceIndex=1; , где вместо 1 может быть любое число от 0 до Elves.DeviceCount-1. И дальше все команды отправляются на выбранный ФР.

Определение нужного Фра.

Самая интересная часть - выбрать из всего множества устройств то единственное, на котором надо пробить именно этот чек :). Это во многом зависит от того, как именно поделили магазин между юр.лицами. Самое простое и очевидное деление - по товарам. Каждому юр.лицу выделяем свою группу товаров, которой он и торгует. В этом случае необходимо в каждый товар прописать ссылку на Фирму, которая им торгует. (Предполагается, что в 1С существует справочник своих юридических лиц, называемый "Фирмы"). Продаваемый товар мы знаем, от чьего имени надо пробить чек - тоже знаем. А как выяснить, какой ФР на кого зарегистрирован? Явных способов определить владельца Фра не существует, от него мы можем получить только его серийный номер. Следовательно, заранее необходимо создать справочник "ККМ", в котором будет храниться соответствие номеров и юр.лиц. Заполнить его придется руками, т.к. только мы точно знаем, какой ФР кому принадлежит. И теперь осталось запустить перебор всех логических устройств. У каждого запрашиваем серийный номер, находим по нему владельца, сравниваем с нужным. Если владелец уже тот, которого ищем - бьем чек. Если пока не тот - проверяем следующее логическое устройство. Если устройства кончились -отправляем покупателя к другому компу, к которому подключены Фры других владельцев. Этот способ совсем не самый быстрый, но самый стабильный, возможны и другие варианты.