Имя: Пароль:
1C
1С v8
Проблема с подключением к ККМ
,
0 Григорополисец
 
29.01.24
18:44
Здравствуйте, уважаемые форумчане!

Пытаюсь подключиться к ККМ «Штрих ON-LINE».
Для этого прописываю следующий код.

Если ЗначениеЗаполнено(ЭтаФорма.СтрокаДляПечати) Тогда

	Попытка
		Аппарат = Новый COMОбъект("AddIn.Drvfr");
		Аппарат.StringForPrinting = ЭтаФорма.СтрокаДляПечати;
		Аппарат.PrintString();
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;

КонецЕсли;


При исполнении метода .PrintString() ничего не происходит: ККМ не отзывается. Хотя из утилиты «Тест драйвера ФР» эту же операцию можно выполнить. Получается, что утилита ККМ видит. А в 1С вроде бы попытка обратиться к драйверу ККМ успешная, но к самому устройству команды не идут.

Ещё в отладчике при просмотре переменной «Аппарат» видно, что COM объект создан, свойства у него все отображаются.
Но напротив таких свойств, как ResultCodeDescription, ModelParamCount, JournalRowCount и т.д., высвечивается «Произошла исключительная ситуация (Addin.DrvFR): СOM порт недоступен».

Я думаю, проблема тут. Но как с этим бороться, не могу и представить. Системные администраторы сказали, что ККМ подключен правильно. Да я и сам это вижу, ведь тестовая утилита прекрасно обменивается с ККМ информацией и командами.
Сам ККМ физически подключен к ПК через USB-порт, но по системе rndis. Это со слов айтишников.

Может, кому известна такая проблема? Хотя бы понимать, куда копать.

Благодарю всех за уже уделённое время!

P.S. Платформа у нас не новая. Но вполне рабочая: 8.3.10.2667. Конфигурация тоже древняя, но вполне рабочая: Розница, редакция 1.0 (1.0.10.4).
1 Григорополисец
 
29.01.24
18:50
Полагаю, в коде надо как-то дополнительно прописать адресацию. Но, читая подобные статьи на форумах, везде начинают алгоритмы с Новый COMОбъект("...");
2 Garykom
 
гуру
29.01.24
19:37
Аппарат = Новый COMОбъект("Addin.DRvFR");
Аппарат.Password = "30";
Если Аппарат.Connect() <> 0 Тогда
   Возврат;
КонецЕсли;
Аппарат.StringForPrinting = ЭтаФорма.СтрокаДляПечати;
Аппарат.PrintString();
Аппарат.Disconnect();
3 Волшебник
 
29.01.24
19:53
(2) Ого! Что-то новенькое? А... Нет... Опять Новый COMОбъект
4 Галахад
 
гуру
30.01.24
09:15
Попробуй руками установить номер порта:

Аппарат.ComNumber = Номбер;
5 Григорополисец
 
30.01.24
11:52
(2) Нет, Аппарат.Connect() возвращает -2.
6 Григорополисец
 
30.01.24
11:55
(4) Я сейчас просмотрел способ подключения. ККМ подключена не локально, а методом, как на картинке по ссылке ниже.
https://disk.yandex.ru/i/eeIuKyqqtmbf3Q
Вот отсюда все проблемы, полагаю...
7 Garykom
 
гуру
30.01.24
12:01
(5) Ну раз не коннект то открывай мануал (скачать на сайте штрих-м, да придется поискать там)
и ищи как твои настройки (6) задать
раз он дефолтные из теста не цепляет
8 Григорополисец
 
30.01.24
12:02
(4) перебили на локальное соединение. Заработало. Благодарю!
Но проблема в том, что у нас в разных местах стоят одинаковые ККМ с разными способами настройки: где-то локально, где-то через TCP-сокет. В моём примере изначально был TCP-сокет.
На всех форумах упор делается на создание COM Объекта. А вот как прописать правильные параметры соединения, чтобы обращаться к устройству именно через TCP, ума не приложу
9 Григорополисец
 
30.01.24
12:05
(7) Благодарю! Читаю и смотрю их примеры. У них есть код для 1С, но там тоже через COM Объект. А вот подробностей никаких особенно. Смотрю в руководстве программиста.
10 Garykom
 
гуру
30.01.24
12:07
(8) Какие еще форумы?
Прочтите наконец инструкцию руководство программиста
https://www.shtrih-m.ru/support/download/?section_id=all&product_id=all&type_id=all&searchDownloads=%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80+%D0%9A%D0%9A%D0%A2
11 Garykom
 
гуру
30.01.24
12:11
В описании Connect все есть
12 Галахад
 
гуру
30.01.24
12:30
Аппарат.UseIPAddress = True;
Аппарат.IPAddress = Адрес;
Аппарат.TCPPort = Порт;
13 Garykom
 
гуру
30.01.24
12:52
(12) ConnectionType забыл

0 Локально
1 Сервер ККМ (TCP)
2 Сервер ККМ (DCOM)
3 ESCAPE
4 Не используется
5 Эмулятор
6 Подключение через ТСР-сокет
14 Григорополисец
 
01.02.24
11:17
(10) Здравствуйте!
Прочитал. Алгоритм, конечно, у ПО фискального регистратора для меня оказалось не сразу понятным: исполнение метода передаёт результат не во внутреннюю переменную выполняемой процедуры 1С, а записывает её в свойство COM-объекта. И вот оттуда уже надо считывать в переменную. Красиво придумано!)
15 Григорополисец
 
01.02.24
11:19
(12) Да, благодарю Вас! Помогло. Собственно, как отметили Ваши коллеги выше, в руководстве всё написано. Хотя для новичка было немного сложновато.
16 Григорополисец
 
01.02.24
11:19
(13) Это тоже учёл. Благодарю!!!
17 Григорополисец
 
01.02.24
11:20
В целом задача решена! Спасибо за помощь всем!!!!!!!!!!!!!!!!!!!!!!!!!