Имя: Пароль:
1C
1C 7.7
v7: Не могу загрузить внешнюю компоненту в 1с7.7
,
0 victuan1
 
18.07.16
15:23
При попытке загрузить внешнюю компоненту DKViki_1C8.dll из 1С 7.7 как COM-объект появляется ошибка:
<Неизвестная компонента> (отсутствует CLSID)

Зарегистрировать компоненту через regsr32 также не получается:
точка входа DllRegisterServer не найдена.

Техподдержка по данной ВК отвечает:
Мы не тестировали его работу в 7.7 и не заявляем его совместимость с ней. Но вы можете попробовать его работу с ней. Если компоненту получится у вас в вашу 1С загрузить, то значит и работать с ней сможете.
Драйвер и dll выполнены по формату 1С Совместимо, все методы есть в документации к 1С - http://its.1c.ru/db/metod8dev/content/4829/hdoc/_top/1с%20совместимо
81 DrZombi
 
гуру
19.07.16
08:00
(79) Слово COM, это COM-порт :)
82 DrZombi
 
гуру
19.07.16
08:01
Если только написать свой Ком объект с помощью ".net" :)
83 victuan1
 
19.07.16
08:03
(81) В заголовке упоминаются именно COM-объекты - "Интеграция с Viki Print через COM-объекты"
84 DrZombi
 
гуру
19.07.16
08:04
Как написать COM-объект для 1С на Visual Studio C# 2008
http://catalog.mista.ru/public/151246/

Пишется просто, по сути ".net" это текстовый файл, так что любой ".net" можно декомпилировать. Код у них открытый.

И да, единственная сложность было зарегестрировать ".net" библиотеку. Т.к. эдя этого нужна программка

Вот её придется поискать
https://msdn.microsoft.com/ru-ru/library/tzat5yw6(v=vs.110).aspx
85 DrZombi
 
гуру
19.07.16
08:04
(83) А по содержимому страницы, все об совсем другом :)
86 DrZombi
 
гуру
19.07.16
08:05
+(84) Она содержится в пакете установок.
Вопрос, только в каком :)
87 DrZombi
 
гуру
19.07.16
08:06
+(84) Visual Studio C# 2008
Мастер почти все за тебя сам напишет.
Но можно реально взять готовый пример на просторах сети
88 victuan1
 
19.07.16
08:15
Кому интересно глянуть - выложил ВК сюда https://yadi.sk/d/3bkHdzwMtR7oA
(80) пропустил через DLL Export Viewer, получил кучу "exported function" и не одной "COM type libraries"
Что делать дальше?
89 DrZombi
 
гуру
19.07.16
08:16
(88) Да нет там ком объекта :)
Порыщи на их ресурсе другую библиотеку, может будет.
90 victuan1
 
19.07.16
08:19
(89) Т.е. эту ВК никоим образом в 1С 7.7 запустить невозможно?
Другой библиотеки для моих задач (печать QR-кода) там нет.
Есть еще эта http://help.dreamkas.ru/hc/ru/articles/207531879-Ручная-регистрация-компоненты-dll-для-старых-1С-УТ-10-3-Розница-1-0-и-т-д-
но она не подходит, т.к. не печатает QR-код
91 DrZombi
 
гуру
19.07.16
08:20
+ Офегительные инструкции по программированию :)
Еще раз их прочитал.

Остается только одно, есть и написать свою ВК :)
92 DrZombi
 
гуру
19.07.16
08:21
(90) Ты созвонился с продавцами?
Может они чего знаю по поводу подключения библиотеки к примеру к Delphi?
93 victuan1
 
19.07.16
08:22
(92) Они ничего не знают. Наверное, им по заказу сделали эту длл, а связи с ее разработчиками нет.
94 Serginio1
 
19.07.16
08:25
(93) Попроси пример на 8 ке
95 DrZombi
 
гуру
19.07.16
08:26
96 DrZombi
 
гуру
19.07.16
08:27
+(95) Для толстого клиента :)
97 DrZombi
 
гуру
19.07.16
08:27
+ Драйвер лежит в макете.
98 victuan1
 
19.07.16
08:27
(95) Толку от этого примера нет в 1С7.7, т.к. она использует не эту технологию внешних компонент http://its.1c.ru/db/metod8dev/content/4829/hdoc/_top/1с%20совместимо
99 DrZombi
 
гуру
19.07.16
08:31
(98) Есть повод перейти на 8.х
100 DrZombi
 
гуру
19.07.16
08:32
Напиши свою ВК ;)
Инструкции расшифровки ком-а прописаны :)
101 DrZombi
 
гуру
19.07.16
08:34
Только если уповать на то что подойдет Драйвер в обработке для УТ 10

http://help.dreamkas.ru/hc/ru/articles/207129575-1С-Viki-Print-новые-1С-на-управляемых-формах-например-УТ-11-Розница-2-
102 Смотрящий
 
19.07.16
09:08
(52) Не ребутался значит
103 victuan1
 
19.07.16
09:15
Так каков диагноз?
Данную длл нельзя загрузить в 1С 7.7 никоим образом (COM/OLE/Java/Scripts)?
Только писать другую ВК или переходить на 1С8?
104 victuan1
 
19.07.16
09:17
(101) Я проверил старый драйвер, он не подходит, т.к. в нем нет поддержки печати QR-кода.
105 DrZombi
 
гуру
19.07.16
09:20
(104) Есть
106 DrZombi
 
гуру
19.07.16
09:21
(103) Купить новое оборудование с нормальной тех поддержкрй
107 victuan1
 
19.07.16
09:23
(106) Было уже приобретено 26 аппаратов, они фискализированы и в настоящий момент работают в 1С 7.7 со старым драйвером, в котором нет поддержки печати QR-кода.
108 victuan1
 
19.07.16
09:25
(105) Расшифруй свое "Есть". Мне техподдержка ответила следующее по поводу старого драйвера:
Данная компонента не поддерживает печать QR-кода. Это старый драйвер. Для 7.7 мы драйвер не актуализировали, но сделали его для конфигураций на 8.2 (Розница 1.0, УТ10.3). Драйвер во вложении, он не требует dll. Может его вы сможете адаптировать для вашей базы. Возможно, потребуется платформа 8.3.
Он разработан в соответствии с методикой разработки компонент для торгового оборудования.
109 DrZombi
 
гуру
19.07.16
09:30
(108) В УТ 10 есть такой момент. Подумал и в 7.7 должен быть.
110 victuan1
 
19.07.16
09:38
(109) Старый драйвер ни в 7.7 ни в УТ 10 печатать QR-код не будет.
Я правильно понял, поскольку в DKViki_1C8.dll нет ком-объектов, то его нельзя подключить в 1С 7.7 даже через OLE, джава и прочие извращения? Вообще никак нельзя, только если использовать 1С8 в качестве оле-сервера для управления драйвером?
111 victuan1
 
19.07.16
09:41
или писать драйвер для отправки команд на COM-порт.
112 DrZombi
 
гуру
19.07.16
09:48
(111) Через ".net" особо не усердствуй. Чет он медленно робит :)
113 DrZombi
 
гуру
19.07.16
09:49
(110) Это к гуру лучше обратиться :)
Я все время только слышал, но ни разу не удалось подружить компонету 8.х с 7.7 :)
114 DrZombi
 
гуру
19.07.16
09:49
+(112)  Но вдруг у тебя зашустрит, либо скорости хватит.
115 DrZombi
 
гуру
19.07.16
09:51
+ Держи

Работа с последовательным (COM, RS-232) портом из 1С:Предприятие 7.7 и 8.0
Книга знаний: Работа с последовательным (COM, RS-232) портом из 1С:Предприятие 7.7 и 8.0
116 victuan1
 
19.07.16
09:51
(114) Для работы с ФР скорость не важна.
Я так понял ты предлагаешь мне написать новую ВК для работы в 1С 7.7?
Меня пока интересуют способы за "5 минут" ))
117 DrZombi
 
гуру
19.07.16
09:52
(116) Смотри в (115) и в самый низ. Там ссылки на Ромикса
118 DrZombi
 
гуру
19.07.16
09:53
Порыщи на его ресурсе, может чет еще полезного найдешь.
119 DrZombi
 
гуру
19.07.16
09:53
+(116) 5 минут? Увольняйся. Этот проект не поддается 5-ти минутам.
Мин. недельку.
120 Serginio1
 
19.07.16
10:08
(112) Не знаю у кого чего там медленно, но работает там где другие не работают
Использование классов .Net в 1С для новичков
121 victuan1
 
19.07.16
10:20
(119) Откуда увольняться-то ;)))
122 NikVars
 
20.07.16
11:20
(120) И как это все использовать для целей ТС?!
123 Это_mike
 
20.07.16
11:23
(122) обертка?
124 NikVars
 
20.07.16
11:26
(123) Ты код приведи. ТС его проверит.
125 Это_mike
 
20.07.16
11:28
(124) он не оплатит...
126 DrZombi
 
гуру
20.07.16
11:30
(122) Через .net можно просто накидать обработчик к Ком порту. И использовать это в качестве обертки :)
127 NikVars
 
20.07.16
11:32
(126) Угу. Можно. Один уже накидал... Да объяснить не может...
128 DrZombi
 
гуру
20.07.16
11:33
(124) Жадный один-есник. Ему 5 минут надо... А это где то = 166,6666667 рублей от 5-ти минут. С учетом, что его ставка 2000 час :)
129 DrZombi
 
гуру
20.07.16
11:37
(127) Чего там объяснять? Пишется там все на С#.
Используется для этого халява от "Visual Studio C# 2008"

При этом знать С# особо не понадобится, если на просторах инета найти уже написанную библиотеку.
Брать тут...
http://catalog.mista.ru/public/161814/

Декомпелировать сею библиотеку и поправит. Она кривовато робит :)
130 Serginio1
 
20.07.16
11:39
(127) Там есть обработки генерирующие текст модуля. Вводишь полное имя класса и если нужно путь к DLL

Например для 7 ки вводим System.IO.Ports.SerialPort

и получаем



Перем врап,ОберткаСобытий;

           Функция СоздатьОбертку(ОбертываемыйОбъект)
            ПодключитьВнешнююКомпоненту("AddIn.GlobalContext1C");
            объект = СоздатьОбъект("AddIn.GlobalContext1C");
            ГлобальныйКонтекст = объект.ГлобальныйКонтекст;

            ОберткаСобытий = врап.СоздатьОберткуДляСобытий77(ОбертываемыйОбъект,ГлобальныйКонтекст);
           КонецФункции // СоздатьОбертку



// Свойства ОберткаСобытий.ПоследняяОшибка
//Событие:String Имя События в котором произошло исключение
//Данные:object Параметры события
//ИсключениеСобытия:Exception Ошибка произошедшая при вызове события
Функция ОшибкаСобытия()
    ПоследняяОшибка=ОберткаСобытий.ПоследняяОшибка;
    Сообщить("Не обработано событие "+ПоследняяОшибка.Событие);
    Сообщить(Врап.ВСтроку(Шаблон("[ОберткаСобытий." + ПоследняяОшибка.Событие + "]")));
    Сообщить("Ошибка");
    Сообщить(врап.ВСтроку(ПоследняяОшибка.Исключение))
КонецФункции  
//  Свойства ОберткаСобытий.ErrorReceived
// sender:System.Object
// e:System.IO.Ports.SerialErrorReceivedEventArgs

            Функция ErrorReceived()
               Сообщить("ErrorReceived "+Врап.ВСтроку(ОберткаСобытий.ErrorReceived));
            КонецФункции

//  Свойства ОберткаСобытий.PinChanged
// sender:System.Object
// e:System.IO.Ports.SerialPinChangedEventArgs

            Функция PinChanged()
               Сообщить("PinChanged "+Врап.ВСтроку(ОберткаСобытий.PinChanged));
            КонецФункции

//  Свойства ОберткаСобытий.DataReceived
// sender:System.Object
// e:System.IO.Ports.SerialDataReceivedEventArgs

            Функция DataReceived()
               Сообщить("DataReceived "+Врап.ВСтроку(ОберткаСобытий.DataReceived));
            КонецФункции

//  Свойства ОберткаСобытий.Disposed
// sender:System.Object
// e:System.EventArgs

            Функция Disposed()
               Сообщить("Disposed "+Врап.ВСтроку(ОберткаСобытий.Disposed));
            КонецФункции




Процедура ПриОткрытии()
    врап=СоздатьОбъект("NetObjectToIDispatch45");

КонецПроцедуры // ПриОткрытии
               //======================================================================
Процедура ОбработкаВнешнегоСобытия(Источник, ИмяСобытия, Данные)
             Если Источник = "System_IO_Ports_SerialPort" Тогда

                  Шаблон("[" + ИмяСобытия + "()]");
            КонецЕсли;
            КонецПроцедуры // ОбработкаВнешнегоСобытия
131 Serginio1
 
20.07.16
11:42
Ну а получить объект

Аналогично как и на 8 ке только там из-за разницы используемых типов нужно добавить

врап=СоздатьОбъект("NetObjectToIDispatch45");
    врап.УстЭтоСемерка();

Все примеры есть Использование классов .Net в 1С для новичков
132 DrZombi
 
гуру
20.07.16
11:42
(130) А "ОбработкаВнешнегоСобытия", как заставить робить в ".net"?
133 NikVars
 
20.07.16
11:44
(131) Имеем DKViki_1C8.dll которая прекрасно работает в 8-ке. Как ее прекрасную работу увидеть в 7-ке?
134 DrZombi
 
гуру
20.07.16
11:44
(131) Да ты гений!

вот как событие добавлять :)
http://catalog.mista.ru/public/417830/
135 Serginio1
 
20.07.16
11:45
(132) Я пример привел.
Динамическая компиляция для использования .Net событий в 1С

Там динамически компилируется обертка.
Функция СоздатьОбертку(ОбертываемыйОбъект)
            ПодключитьВнешнююКомпоненту("AddIn.GlobalContext1C");
            объект = СоздатьОбъект("AddIn.GlobalContext1C");
            ГлобальныйКонтекст = объект.ГлобальныйКонтекст;

            ОберткаСобытий = врап.СоздатьОберткуДляСобытий77(ОбертываемыйОбъект,ГлобальныйКонтекст);
           КонецФункции// СоздатьОбертку
136 Serginio1
 
20.07.16
11:49
(133) Если это Native BK то нужно писать обертку. Ничего сложного, но время. Но если там только работа с COM портом то используй 130. В примерах есть пример работы с COM пором для 8 ки. Можешь посмотреть как он работает.
137 DrZombi
 
гуру
20.07.16
11:51
(136) А как обертку навоять?
У тебя есть примерчики, подсмотреть?
Или статьи ? :)
138 NikVars
 
20.07.16
11:51
(136) Я так понял, что это даже для тебя не 5 минут.
139 DrZombi
 
гуру
20.07.16
11:52
(138) 5 или 10, у Автора вообще хоть неделю пиши.
Либо контора платит отдельную денежку и большую.
Либо автор сам разбирается и пишет свой блек-джек :)
140 DrZombi
 
гуру
20.07.16
11:53
+(138) Альтернативы нет :)
141 NikVars
 
20.07.16
11:54
(136) Ты методу дай. Простую и надежную, как автомат Калашникова.
(139) Не-е-е-е-е, Serginio1 сказал, что любой это сделает и засыпет Инфостарт своими .Нетовскими поделками.
142 DrZombi
 
гуру
20.07.16
11:55
(141) Не спугни. Человек хоть мне поможет :)
143 Serginio1
 
20.07.16
11:55
(138) Писать обертку над Native BK не пять минут.
А обертку над System.IO.Ports.SerialPort я написал.
Только

врап=СоздатьОбъект("NetObjectToIDispatch45");
    врап.УстЭтоСемерка();

sp= Врап.СоздатьОбъект("System.IO.Ports.SerialPort","COM" + НомерПорта);
     ПИ="System.IO.Ports.";
     sp.BaudRate= Врап.ToInt(9600);
     sp.Parity= Врап.ПолучитьТип(ПИ+"Parity").None;
     sp.StopBits= Врап.ПолучитьТип(ПИ+"StopBits").One;
     sp.DataBits= Врап.ToInt(8);
     sp.Handshake= Врап.ПолучитьТип(ПИ+"Handshake").None;

     СоздатьОбертку(sp);
     sp.Open();
144 Serginio1
 
20.07.16
11:57
(141) Ты для начала скажи, что тебе не понятно? И для какой версии 1С 7 ки или 8 ки?
145 DrZombi
 
гуру
20.07.16
11:58
(143) >>> Писать обертку над Native BK не пять минут.

У меня есть недели :)
Подскажи, хоть куда смотреть?
146 DrZombi
 
гуру
20.07.16
11:58
(144) Да ему нечего не надо. Он тебя троллит :)

Как написать обертку для Native BK, работающу под 1С 7.7? :)
147 NikVars
 
20.07.16
11:59
(143) Ты сначала очерти круг компетенции, которым полезны твои изыски.
Имеем такой круг незнания: C (чуток), 1С наше все (но кишка слаба для сертификов), с трудом регим длл, путам теплое с мягким, но имеем желание разбираться. В остальном слышал слова, видел код и все...
Теперь глянь свои навороты и скажи, как описанный мной перец поймет откуда там у тебя ноги растут и куда ты смотришь.
148 DrZombi
 
гуру
20.07.16
12:00
(147) Быстрое ваяние Ком приложения для работы с теми же Весами, как в (134). Для работодателей халява тоже нужна.
149 NikVars
 
20.07.16
12:01
(148) Мне нужна метода! Тут методы нет. Есть частный подход.
150 DrZombi
 
гуру
20.07.16
12:01
При этом, если в (129) добавить код из (134)...
Тогда драйвера в (129) будут куда полезней :)
151 Serginio1
 
20.07.16
12:02
(147) Что тебе непонятно в 130 и 147?
(146) Создаешь ВК на COM с реализацией ILangugeExtender а вот из неё уже вызываешь методы нативной ВК
152 DrZombi
 
гуру
20.07.16
12:02
(149) Мне нужен просто частный код. Заставить работать то, что стоит неплохих денег у других разработчиков. :)
153 Serginio1
 
20.07.16
12:02
(149) Читай статьи.
154 NikVars
 
20.07.16
12:05
(153) Вот ты и слился. Пришел в аудиторию, которая ждет комиксов, сверкнул кодом и сказал "Читай статьи"...
155 Serginio1
 
20.07.16
12:06
(147) Я начал с того, что мне нужно было обратиться к сайту неподдерживаемым 1С. А там сотня классов и десятки методов.
На COM вручную замучаешься писать COM обертки. Поэтому сделал эту компоненту которая оборачивает объекты .Net через COM.

Где это применять полно примеров. Там где из 1С нельзя выпольнить на чистом языке, но можно использовать библиотеки .Net или свои
156 Serginio1
 
20.07.16
12:07
(154) А для чего я их пишу, что бы здесь всё повторять?
157 Serginio1
 
20.07.16
12:08
>> Я начал с того, что мне нужно было обратиться к сайту неподдерживаемым 1С.

Я начал с того, что мне нужно было обратиться к Вэб сервису неподдерживаемым 1С.
158 DrZombi
 
гуру
20.07.16
12:18
Вызов native кода из C#. Маршалинг структур / Хабрахабр
https://habrahabr.ru/post/105232/
159 DrZombi
 
гуру
20.07.16
12:18
(154) Я не жду :)
160 NikVars
 
20.07.16
12:20
(155) Ок. Понятно. На практике получается, что затраченные усилия по решению разовой задачи не стоят этих усилий.
161 DrZombi
 
гуру
20.07.16
12:26
Использование C++ классов из native DLL в .NET C#
http://www.hardforum.ru/t71729/

Использование C++ классов из native DLL в .NET C#
162 Serginio1
 
20.07.16
12:26
(160) На практике получилось, что таких задач куча. Особенно на 7 ке. И на 8 ке их тоже не мало.
Например
1C Messenger для отправки сообщений, файлов и обмена данными между пользователям
.Net в 1С. Парсинг сайтов, multipart/form-data, gzip итд
http://catalog.mista.ru/public/434345/
163 DrZombi
 
гуру
20.07.16
12:26
164 Serginio1
 
20.07.16
12:30
165 DrZombi
 
гуру
20.07.16
12:31
How to: Call Native DLLs from Managed Code Using PInvoke

https://msdn.microsoft.com/en-us/library/55d3thsc.aspx

Что же. даже не плохо...
Остается изучить в C# не весь я зык, а только ряд фукнций :)
166 DrZombi
 
гуру
20.07.16
12:32
(164) Может быть. Но 7.7 меня интересует в последнюю очередь :)
Так, просто было любопытно, до какой степени вообще возможно :)
167 NikVars
 
20.07.16
12:32
(162) Мессенджер, парсинг сайтов... Ты думаешь бухгалтер догадается все это использовать в 7.7 при сдаче отчетности?!
Нет. Это твоя попытка найти жизнь своим умениям и навыкам.
168 Serginio1
 
20.07.16
12:33
(165) Только зачем тебе C# и натив?
Кроссплатформенное использование классов .Net в 1С через Native ВК.
Я писал для использования .Net классов для линукса.

А для решения задачи
.Native API для 1С 7.7 достаточно С++
169 NikVars
 
20.07.16
12:34
(162) Напиши универсальную проверку контрольных соотношений для всех деклараций с чтением данных из доступных источников.
Это да, полезно.
170 Serginio1
 
20.07.16
12:36
(167) Бухгалтеру много чего нужно поверь. Я использую на полную катушку.
(169) Если тебе полезно так возьми и  напиши. Я даю инструмент. А вот использовать его это твоё личное дело.
171 DrZombi
 
гуру
20.07.16
12:36
(168) И С++ или С#, для меня только зависит от возможности "Visual Studio C# 2008" и работы с .NET ;)
172 Serginio1
 
20.07.16
12:52
(171) Зачем тебе C# 2008 сейчас 2015 апдейт 3
Скачать можешь как бесплатно, так и
173 DrZombi
 
гуру
20.07.16
13:03
(172) Да я так к примеру. для ТС писал. :)
174 DrZombi
 
гуру
20.07.16
13:12
(172) Кстати, вроде в какой-то версии нет компилятора для .NET.   Я когда занимался этим, очень намучился в поисках сего приложения :)
175 Serginio1
 
20.07.16
14:14
(174) Компилятор то есть во всех. Есть различие в используемых .Net Framework языке (C# 6).
http://metanit.com/sharp/tutorial/
Сейчас актуальная 4.6.1 под неё сделана и моя компонента.
176 DrZombi
 
гуру
20.07.16
14:32
(175) Вернее я про программку для регистрации DLL для .NET
177 DrZombi
 
гуру
20.07.16
14:34
+ Regasm.exe (средство регистрации сборок)
178 Serginio1
 
20.07.16
15:35
(175) У меня с компонентой идет РегистрацияКомСервера.exe
А для регстрации NetObjetToIDispatch45.dll идет RegAsm.bat
179 victuan1
 
04.08.16
08:52
(0) Получил ответ от техподдержки по данной ВК:
"Эта dll является native api, как написано на сайте 1С.
Эта библиотека не требует регистрации через regsvr32.
К сожалению, мы пока драйвер для 7.7 не актуализировали и у меня нет информации, произойдет ли это."
180 NikVars
 
04.08.16
09:25
(179) Перевожу их ответ: "Доработок в будущем по 7.7 не будет. Это нам не интересно."