Имя: Пароль:
1C
1C 7.7
v7: Подключение весов Dibal
0 kupec
 
26.04.23
18:23
Доброго всем дня. Кто-нибудь подружил данные весы с 7.7, есть ли опыт?

https://www.datakrat.ru/hardware/vesi-elektronnie/vesi-torgovie/vesi-s-pechatyu-etiketok/vesi-torgovie-s-pechatyu-etiketok-dibal-serii-500#ПО

На сайте есть пример и описание (Для восьмерки), скачал, установил, вроде как все запустилось...но при подаче команды записи PLU в весы, 1С рушится с ошибкой. Буду рад любой помощи (Кроме Переходите на восьмерку). Заранее спасибо
1 NorthWind
 
26.04.23
19:12
А для других языков нет? Может, по COM стукнуться к ним?
2 trdm
 
26.04.23
21:05
(0) >  (Кроме Переходите на восьмерку)
пф. просто сделай из v8 шлюз и все..
3 Волшебник
 
26.04.23
21:09
(2) Интересная архитектура...
4 АгентБезопасной Нацио
 
27.04.23
08:54
"ТЕЛЕКАРГА" - говорящее название...
(0) ну там же есть возможность работать как с веб-сервером - и чего тебе еще надо?
5 kupec
 
27.04.23
10:27
(4) а как им воспользоваться? Веб сервер в самих весах?
6 kupec
 
27.04.23
10:34
(1) по COM не интересно, так как весы в торговом зале будут, на витрине
7 АгентБезопасной Нацио
 
27.04.23
10:58
(4) ну написано же "встроенный веб-сервер (опция)" - если есть опция, значит пользуйся.
так еще и коммуникационный драйвер есть в комплекте, и SDK, и обработки. смотри как работают в снеговике, делай так же в клюшках. Не работает снеговиковая обработка - смотри SDK и работай через драйвер
8 kupec
 
27.04.23
11:15
Вот если бы кто поделился коммуникационным драйвером. Было бы очень полезно. Так как весы приобрели Б/У, то соответственно никакой документации и никакого ПО НЕТ.
9 Kigo_Kigo
 
27.04.23
11:20
(8) Там обработка для восьмрки, адаптиру ее под 7, в чем проблема, для начала выполни вот это
Функция СоздатьОбъектДрайвера()

    // Инициализация переменных
    ОбъектВесы            = Неопределено;
    Драйвер            = Неопределено;
    ОписаниеОшибки    = "";

    // Получение значений параметров
    ПараметрыОбъекта = Новый Структура;
    ПараметрыОбъекта.Вставить("Весы", Весы);

    Попытка
        ПрогИД = "dklink.Dibal1CDriver";
        ПодключитьВнешнююКомпоненту(ПрогИД);
        Драйвер = Новый COMОбъект(ПрогИД);
    Исключение
        ОписаниеОшибки = "Невозможно подключить внешнюю компоненту.
        | Проверьте, что внешняя компонента корректно установлена и имеет ту же версию,
        | что и требуемая обработкой обслуживания.";
    КонецПопытки;

    ОбъектВесы = Новый Структура("Параметры, Драйвер, ОписаниеОшибки",
                              ПараметрыОбъекта, Драйвер, ОписаниеОшибки);

    Возврат ОбъектВесы;

КонецФункции // СоздатьОбъектДрайвера()
10 Kigo_Kigo
 
27.04.23
11:24
точнее вот это
Функция СоздатьОбъектДрайвера()
         ПутьК_ДЛЛ = "ПутьК ДЛЛ"//если закинуть в Базу или BIN, то просто имя длл


    Попытка
        
        ПодключитьВнешнююКомпоненту(ПутьК_ДЛЛ);//Тоже не обязательно, можно и без этой строчки если ДЛЛ зарегана
        ДрайверВесов = СоздатьОбъет("dklink.Dibal1CDriver");
    Исключение
        ОписаниеОшибки = "Невозможно подключить внешнюю компоненту.
        | Проверьте, что внешняя компонента корректно установлена и имеет ту же версию,
        | что и требуемая обработкой обслуживания.";
    КонецПопытки;

    

    Возврат ДрайверВесов ;

КонецФункции // СоздатьОбъектДрайвера()
11 Kigo_Kigo
 
27.04.23
11:51
Выполнил вот это в семерке

Процедура Сформировать()
	Попытка
		ДрайверВесов = СоздатьОбъект("dklink.Dibal1CDriver"); 
		Сообщить(ДрайверВесов.ОписаниеРезультата);
	Исключение
		Сообщить("Невозможно подключить внешнюю компоненту");
	КонецПопытки;
КонецПроцедуры


Получил сообщение "Невозможно загрузить настройки весов"
Так что все работает в семерке - дерзай, там ничего сложного повыдергивать из восьметки
12 Kigo_Kigo
 
27.04.23
11:34
"Невозможно загрузить настройки весов" - это мне уже сам драйвер ответил
13 kupec
 
27.04.23
11:36
ВесыДибал=СоздатьОбъект("dklink.Dibal1CDriver");
    ВесыДибал.Действие = "M";
    ВесыДибал.НомерВесов = 0;
    ВесыДибал.ПЛУ = 1;                              
    Сообщить(ВесыДибал.ПЛУ);
    ВесыДибал.ПрямаяКнопка = 1;
    ВесыДибал.Название = "1";
    ВесыДибал.Цена = 99.99;
    ВесыДибал.Секция = 1;
    ВесыДибал.СрокГодности = 30;
    ВесыДибал.EAN = "2200001HHHHH";
    ВесыДибал.Тип = 0;
    ВесыДибал.Ингредиенты = "2";
    ВесыДибал.Цена2 = 99.99;
    ВесыДибал.Название2 = "3";
    Сообщить(1);
    ВесыДибал.SetRecord();

Вот код обработки. Вылетает на ВесыДибал.SetRecord()

Вот ошибка
Сигнатура проблемы:
  Имя события проблемы:    APPCRASH
  Имя приложения:    1cv7s.exe
  Версия приложения:    7.70.0.27
  Отметка времени приложения:    4573fcd8
  Имя модуля с ошибкой:    StackHash_d959
  Версия модуля с ошибкой:    6.1.7601.18798
  Отметка времени модуля с ошибкой:    5507b3e0
  Код исключения:    c0000374
  Смещение исключения:    000cea0b
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Дополнительные сведения 1:    d959
  Дополнительные сведения 2:    d959d9be57f44fba1621a6fd303307cf
  Дополнительные сведения 3:    eae1
  Дополнительные сведения 4:    eae1c098fc88e2bbe0027853ca725918
14 Kigo_Kigo
 
27.04.23
11:37
Функция Выгрузить(ОбъектВесы, PLU, КодТовара, Наименование, Цена)

    Результат = Истина;
    
    пКодТовара = 0;
    Если ТипЗнч(КодТовара) = Тип("Строка") Тогда
        пКодТовара = Прав(КодТовара, 5);
    Иначе
        пКодТовара = КодТовара;
    КонецЕсли;

    ОбъектВесы.Драйвер.НомерВесов                 = ОбъектВесы.Параметры.Весы;
    ОбъектВесы.Драйвер.Действие                    = "A";    // A – добавление, М – изменение, B – удаление (латинские буквы)
    ОбъектВесы.Драйвер.ПЛУ                         = PLU;
    ОбъектВесы.Драйвер.ПрямаяКнопка                = ?(PLU>999, 999, PLU);
    ОбъектВесы.Драйвер.Название                    = ?(СтрДлина(СокрЛП(Наименование)) > 20, Лев(СокрЛП(Наименование), 20), СокрЛП(Наименование));
    ОбъектВесы.Драйвер.Название2                = ?(СтрДлина(СокрЛП(Наименование)) > 20, Сред(СокрЛП(Наименование), 21, 20), "");
    ОбъектВесы.Драйвер.Тип                         = 0; // 0 – весовой, 1 – штучный
    ОбъектВесы.Драйвер.Секция                     = 50;    // (целое) – номер секции, настроенный в весах
    ОбъектВесы.Драйвер.ФорматЭтикетки             = 1; // (целое) – номер формата этикетки, который должен печататься для данного товара (настраивается в весах)
    ОбъектВесы.Драйвер.Цена                     = Формат(Цена, "ЧЦ=15; ЧДЦ=2; ЧН=0; ЧГ=0"); // (вещественное) – дополнительная цена
    ОбъектВесы.Драйвер.СрокГодности             = ""; // (строка) – значение в днях (например, 30), либо конкретная дата в формате «dd/MM/yyyy»
    ОбъектВесы.Драйвер.Тара                     = 0; // (вещественное) – вес упаковки (тары) товара
    ОбъектВесы.Драйвер.EAN                         = "2" + Формат(ПрефиксВТ, "ЧЦ=1") + Формат(Число(пКодТовара),"ЧЦ=5; ЧГ=0; ЧВН=") + "HHHHH" ; // (строка) – штрихкод товара, для весового товара символ «H» - заполнитель веса, например, «2212345HHHHH», для штучного товара – все 12 символов ШК (контрольная цифра вычисляется весами)
    ОбъектВесы.Драйвер.Ингредиенты                 = ""; // (строка) – состав товара без переносов, до 1024 символов
    
    ОбъектВесы.Драйвер.УстановитьЗапись();
    Если ПерехватОшибки(ОбъектВесы) Тогда
        ОбъектВесы.ОписаниеОшибки = ОбъектВесы.Драйвер.ОписаниеРезультата;
        Результат = Ложь;
    КонецЕсли;

    Возврат Результат;

КонецФункции // Выгрузить()
15 Kigo_Kigo
 
27.04.23
11:38
(13) Пробуй
УстановитьЗапись()
16 Kigo_Kigo
 
27.04.23
11:38
а не SetRecord();
17 Kigo_Kigo
 
27.04.23
11:38
тыж с 1с-ной компонентой работаешь
18 Kigo_Kigo
 
27.04.23
11:40
и да почему  ВесыДибал.Действие = "M";? пробуй для начала "A"латинская
19 kupec
 
27.04.23
11:42
(15) Я пробовал и то и то. Результат один и тот же
(18) Пробовал, все тоже самое
20 Kigo_Kigo
 
27.04.23
11:50
+ я надеюсь ты копоненту запустил и настроил весы, что бы они виделись?
После
ВесыДибал=СоздатьОбъект("dklink.Dibal1CDriver");

Напиши
Сообщить(ВесыДибал.ОписаниеРезультата)

Что пишет?
21 kupec
 
27.04.23
11:48
Вот код

    ВесыДибал=СоздатьОбъект("dklink.Dibal1CDriver");
    ВесыДибал.Действие = "П";
    ВесыДибал.НомерВесов = 0;
    ВесыДибал.ПЛУ = 1;                              
    ВесыДибал.ПрямаяКнопка = 1;
    ВесыДибал.Название = "1";
    ВесыДибал.Цена = 99.99;
    ВесыДибал.Секция = 1;
    ВесыДибал.СрокГодности = 30;
    ВесыДибал.EAN = "2200001HHHHH";
    ВесыДибал.Тип = 0;
    ВесыДибал.Ингредиенты = "2";
    ВесыДибал.Цена2 = 99.99;
    ВесыДибал.Название2 = "3";
    ВесыДибал.УстановитьЗапись();
    //Сообщить(ВесыДибал.Результат);
    //Сообщить(ВесыДибал.ОписаниеРезультата);Возврат;
    //ВесыДибал.SetRecord();
    //Сообщить(Результат);
    Если ВесыДибал.Результат <> 0 Тогда
        Сообщить("Код " + ВесыДибал.Результат + ". " + ВесыДибал.ОписаниеРезультата);
        Сообщить("НЕ Успех!");
    Иначе
        Сообщить("Успех!");
    КонецЕсли

Вот результат

Код 2. Указанное значение Action(Действие) ("П") недопустимо. Строка должна состоять из одного латинского символа: A, M или B
НЕ Успех!

Т.е. драйвер отработал. Именно ошибка при связи с весами с правильными параметрами. Пробую телнет на порт и адрес весов, связь проходит. В конфигурацию весы добавил.
22 Kigo_Kigo
 
27.04.23
11:50
kupec Так тебе черным по белому написано где косячиш, какое нахер действие "П" ?
ОбъектВесы.Драйвер.Действие                    = "A";    // A – добавление, М – изменение, B – удаление (латинские буквы)
23 kupec
 
27.04.23
11:55
Ты спросил, запустил ли я компоненту, я сделал не правильное действие, компонента вернула ошибку. Я нашел способ показать это. Естественно код у меня вот такой
    ВесыДибал=СоздатьОбъект("dklink.Dibal1CDriver");
    ВесыДибал.Действие = "A";
    ВесыДибал.НомерВесов = 1;
    ВесыДибал.ПЛУ = 1;                              
    ВесыДибал.ПрямаяКнопка = 1;
    ВесыДибал.Название = "1";
    ВесыДибал.Цена = 99.99;
    ВесыДибал.Секция = 1;
    ВесыДибал.СрокГодности = 30;
    ВесыДибал.EAN = "2200001HHHHH";
    ВесыДибал.Тип = 0;
    ВесыДибал.Ингредиенты = "2";
    ВесыДибал.Цена2 = 99.99;
    ВесыДибал.Название2 = "3";
    ВесыДибал.УстановитьЗапись();
    //Сообщить(ВесыДибал.Результат);
    //Сообщить(ВесыДибал.ОписаниеРезультата);Возврат;
    //ВесыДибал.SetRecord();
    //Сообщить(Результат);
    Если ВесыДибал.Результат <> 0 Тогда
        Сообщить("Код " + ВесыДибал.Результат + ". " + ВесыДибал.ОписаниеРезультата);
        Сообщить("НЕ Успех!");
    Иначе
        Сообщить("Успех!");
    КонецЕсли

Рушится на УстановитьЗапись()
24 kupec
 
27.04.23
11:57
Кстати, вчера видно поправил настройки на неправильный порт. Рушилась именно 1cv7s.exe
Сейчас поставил правильный порт. Рушится компонента дибала - Dibalscop.dll

Имя события проблемы:    BEX
  Имя приложения:    1cv7s.exe
  Версия приложения:    7.70.0.27
  Отметка времени приложения:    4573fcd8
  Имя модуля с ошибкой:    Dibalscop.dll
  Версия модуля с ошибкой:    1.0.1.8
  Отметка времени модуля с ошибкой:    50a3af7f
  Смещение исключения:    000167d4
  Код исключения:    c000000d
  Данные исключения:    00000000
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Дополнительные сведения 1:    94fc
  Дополнительные сведения 2:    94fc35ab386fed6b39274d8a27976297
  Дополнительные сведения 3:    3c41
  Дополнительные сведения 4:    3c41ca99f18e2e2b6721dfdf75350593

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
  C:\Windows\system32\ru-RU\erofflps.txt
25 Kigo_Kigo
 
27.04.23
11:58
(23) пробуй передавать не числа, а строки, многие компоненты этим грешат, не понимают числа как таковые, они их сами по идее форматят
ВесыДибал=СоздатьОбъект("dklink.Dibal1CDriver");
    ВесыДибал.Действие = "A";
    ВесыДибал.НомерВесов = "1";
    ВесыДибал.ПЛУ = "1";                              
    ВесыДибал.ПрямаяКнопка = "1";
    ВесыДибал.Название = "1";
    ВесыДибал.Цена = "99.99";
    ВесыДибал.Секция = "1";
    ВесыДибал.СрокГодности = "30";
    ВесыДибал.EAN = "2200001HHHHH";
    ВесыДибал.Тип = "0";
    ВесыДибал.Ингредиенты = "2";
    ВесыДибал.Цена2 = "99.99";
    ВесыДибал.Название2 = "3";
26 Kigo_Kigo
 
27.04.23
11:59
тут надо смотреть мануал по формату передачи значений
27 kupec
 
27.04.23
12:00
28 kupec
 
27.04.23
12:01
Инструкция
https://dropmefiles.com/ggD7Y
29 Kigo_Kigo
 
27.04.23
12:09
Давай для начала уберем лишнее, и у тебя кривой ЕАН 13, еще надо поиграться с разделителем в цене точка или запятая
    ВесыДибал.НомерВесов                 = 1;
    ВесыДибал.Действие                    = "A";    // A – добавление, М – изменение, B – удаление (латинские буквы)
    ВесыДибал.ПЛУ                         = 1;
    ВесыДибал.ПрямаяКнопка                = 1
    ВесыДибал.Название                    = "Весы 1";
    ВесыДибал.Название2                = ?"";
    ВесыДибал.Тип                         = 0; // 0 – весовой, 1 – штучный
    ВесыДибал.Секция                     = 1;    // (целое) – номер секции, настроенный в весах
    ВесыДибал.ФорматЭтикетки             = 1; // (целое) – номер формата этикетки, который должен печататься для данного товара (настраивается в весах)
    ВесыДибал.Цена                     = 99.99; // (вещественное) – дополнительная цена
    ВесыДибал.СрокГодности             = ""; // (строка) – значение в днях (например, 30), либо конкретная дата в формате «dd/MM/yyyy»
    ВесыДибал.Тара                     = 0; // (вещественное) – вес упаковки (тары) товара
    ВесыДибал.EAN                         = "4894001572750"
    ОВесыДибал.Ингредиенты                 = ""; // (строка) – состав товара без переносов, до 1024 символов
30 Kigo_Kigo
 
27.04.23
12:09
+ Название имхо должно совпадать с название ПЛУ в драйвере
31 Kigo_Kigo
 
27.04.23
12:15
ВесыДибал.Название                    = "Весы 1";
32 kupec
 
27.04.23
12:22
(31) дык это название товра

//"    ScaleNumber/НомерВесов (целое) - логический номер весов
//"    Action/Действие (строка) - A - добавление, М - изменение, B - удаление (латинские буквы)
//"    PLU/ПЛУ (целое) - уникальный номер товара в весах (от 1 до 999 999)
//"    DirectKey/ПрямаяКнопка (целое) - код клавиши для весов самообслуживания (от 1 до 999)
//"    Price/Цена (вещественное) - цена товара
//"    Name/Название (строка) - название товара (20 символов)
//"    Name2/Название2 (строка) - дополнительное название товара (20 символов)
//"    Type/Тип (целое) - тип товара, 0 - весовой, 1 - штучный
//"    Section/Секция (целое) - номер секции, настроенный в весах
//"    LabelFormat/ФорматЭтикетки (целое) - номер формата этикетки, который должен печататься для данного товара (настраивается в весах)
//"    Price2/Цена2 (вещественное) - дополнительная цена
//"    ExpiryDate/СрокГодности (строка) - значение в днях (например, 30), либо конкретная дата в формате "dd/MM/yyyy"
//"    Tare/Тара (вещественное) - вес упаковки (тары) товара
//"    EAN/EAN (строка) - штрихкод товара, для весового товара символ "H" - заполнитель веса, например, "2212345HHHHH", для штучного товара - все 12 символов ШК (контрольная цифра вычисляется весами)
//"    Ingredient/Ингредиенты (строка) - состав товара без переносов, до 1024 символов
33 Kigo_Kigo
 
27.04.23
12:23
(32) а ну хер с ним, как в (29) что то получилось?
34 kupec
 
27.04.23
12:28
ВесыДибал=СоздатьОбъект("dklink.Dibal1CDriver");
    ВесыДибал.Действие = "A";
    ВесыДибал.НомерВесов = 1;
    ВесыДибал.ПЛУ = 1;                              
    ВесыДибал.УстановитьЗапись();
    Если ВесыДибал.Результат <> 0 Тогда
        Сообщить("Код " + ВесыДибал.Результат + ". " + ВесыДибал.ОписаниеРезультата);
        Сообщить("НЕ Успех!");
    Иначе
        Сообщить("Успех!");
    КонецЕсли

Оставил вот так, все равно вылет
35 MWWRuza
 
27.04.23
14:05
Ну, если так сложно с обменом с весами непосредственно из 1с77(все может быть, хотя...), то может пойти "другим путем" - ?
Вы говорите, есть родное ПО: 1. DFS (Dibal Friendly Software)
А в нем нет случаем импорта базы товаров из какого-то "нормального" формата? Ну, типа, txt, csv, xls, xlsx, dbf, xml - ?
Практически во всех утилитах, всех производителей, так или иначе, такое предусмотрено(Ваши конкретные - не видел ни разу, х.з... Но, должно что-то быть).
Можно, как минимум на первое время, пока с драйвером не разрулите, создавать файл импорта из 1с, загружать его в родной софт, и уже с помощью него грузить в весы?
В некоторых утилитах, бывает даже предусмотрен режим "автоматического загрузчика" - появился файл в каталоге обмена, прога его увидела, загрузила в весы и удалила...
36 kupec
 
27.04.23
14:27
(35) Согласен, но вот где достать этот софт. Написал в датакрат, они молчат, на сайте не скачивается, или может я просто не нашел, как это делается
37 NorthWind
 
27.04.23
14:35
(36) на олегоне в обменнике не смотрели? Там у них много добра, и на довольно редкие вещи встречается.
38 NorthWind
 
27.04.23
14:38
39 kupec
 
27.04.23
14:38
40 kupec
 
27.04.23
14:39
Ну тоже самое ))) вчера там лазил, нашел только мануал, саму программу не нашел
41 NorthWind
 
27.04.23
14:43
а в корне вот эта самая DFS лежит, про которую выше писали, рар-архив на 400 метров?
И SDK там же?
42 kupec
 
27.04.23
14:50
может там интересно и Коммуникационный драйвер для Windows. Но что то не могу найти
43 NorthWind
 
27.04.23
14:54
(42) После папок 4-й файл сверху это SDK, 3-й это DFS.
DFS помимо себя ставит кучу хлама - дрова для доступа к базам Access 2007, MySQL и еще что-то. На вид штука дико громоздкая, поэтому я бы начал с SDK
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn