Помог с подключением ФР Атол к 77
Ко мне обратился клиент с просьбой помочь в подключении ФР Атол к 77. Увидел мою статью, подумал, что я справлюсь.
Я, конечно, давно не брал в руки 77. Но кое-что еще помню, как оказалось.
Набросал тестовую обработку по подключению к кассе (USB и COM вариант):

Там было странное — можно было создать объект FR10 и при этом везде использовать префикс LIBFR.
Но так сработало только один раз, потом этот объект перестал создаваться. А вот объект FPTR10 создавался нормально, при этом везде нужно использовать префикс LIBFPTR. В типовых обработках-прокладках (с названием Wrap) тоже используется FPTR.
В чем разница, я не понял, но перешел на FPTR. 77 — 32-разрядное приложение, поэтому драйвера Атол я тоже использовал 32-разрядные.
Важно — убрал создание COM-объекта через ЗагрузитьВнешнююКомпоненту. Потому что не нашел, где эта внешняя компонента. Оставил только код создания по ProgID, потому что COM-объект для доступа к драйверу кассы есть всегда. 77 умеет его использовать в СоздатьОбъект.
В самой обработке-прокладке была какая-то путаница. В параметры команды передавался объект драйвера FR, но он зачем-то сохранялся в глобальной переменной. Это я поправил, вот тут видно, что ПодключениеККМ вызывается без FR, т.е. ориентируется на глобальную переменную FR.

Кстати, весь этот код выполнялся вплоть до закрытия чека, каждая функция выдавала ошибку, но выполнение шло дальше и только в конце выдавало ошибку, что чек не пробит.
В поисках причины посмотрел в табло, а там «Соединение не установлено», забавно:

Нагуглил описание драйвера Атол, использовал данные из него.
Проверил экспериментально, что метод isOpen работает у драйвера, выдает Истину, если касса открыта.
Если два раза подряд вызвать Open, то тоже нормально откроет.
Еще нюанс был с возвратами. Драйвер возвращает 0 если все успешно, иначе возвращает код ошибки.
А в 1С нет булево, например функция isOpen возвращает -1 как True и 0 как False. С этим тоже была небольшая путаница. Касса открывалась успешно, а мы думали, что нет, потому что получали 0, а ожидали возврат -1 у метода Open. Но в итоге разобрались.
Весьма полезны оказались функции получения кода последней ошибки и описания последней ошибки.
Также клиент хотел, чтобы разные кассы подключались с разных рабочих мест. Посоветовал прописать вариант подключения через USB в обоих случаях. А чтобы сильно не менять код, то в случае выбранного COM256 просто срабатывал бы код подключения через USB.
Среда: Нетленка 77. Объем: 2 час.

Ни для кого не секрет, что методы выполняющие действия (Open) возвращают код ошибки (0 — ошибок нет). А методы проверяющие состояния (IsOpen) — значения состояния, которые интерпретируются согласно ласно возможностям среды/языка. Это база
ага, если с этим работать, то база.
А если вникать, то как-то необычно.
тем более в 77, где нет булевых переменных.
Эта общая культура программирования, безотносительно частностей. А почему ты всё время оправдываешься? Причем так нелепо
а я оправдываюсь? Насколько нелепо, в сравнении с чем?