|
v7: Карлик (curl1c) и XML_DOM, вместе крашутся... | ☑ | ||
---|---|---|---|---|
0
MWWRuza
гуру
24.06.23
✎
18:13
|
Начало - тут: Работа с ЭДО через API...
Вот, тестовая обработка с комплектом тестовых файлов: https://cloud.mail.ru/public/w4qY/T2j9aLctw Токен, отправляю Джефу на мыло... |
|||
1
MWWRuza
гуру
24.06.23
✎
18:31
|
+(0) Должно быть вот так, пример заполнения данных формы:
https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-543.jpg Имя файла и ИД документа из текста мудуля подставляются автоматом, пути к файлам токена, титула и его ЭЦП надо выбрать к файлам из архива. XML тестовая - есть в комплекте, но, вообще, может быть произвольная, не принципиально, в обработке данные из нее не испольхуются, только в DOM загружаются, при установленной "галочке". Я думаю, для теста и поиска бага - самое то... |
|||
2
Garykom
гуру
24.06.23
✎
21:02
|
Когда у меня была подобная задача
То я сделал ход конем В виде сервиса прокладки на Golang, который обеспечивал весь функционал и для 1С 7.7 выдавал всегда один стабильный интерфейс |
|||
3
Garykom
гуру
24.06.23
✎
21:03
|
(2)+ Как минимум это решение лучше тем что не надо под каждый ЭДО переписывать в 1С
И не крашится и легче работать на других ЯП с разными извратами |
|||
4
Garykom
гуру
24.06.23
✎
21:04
|
(3)+ Ну и вынос на один сервер с одним токеном (ЭП)
|
|||
5
MWWRuza
гуру
24.06.23
✎
21:13
|
(2-4) А при чем тут ЭДО? ЭДО в соседней теме. Здесь проблема ВК, обертки к curl, от Джефа, в "простонародье" - "карлик"...
Совершенно не принципмально, где ее использовать - в ЭДО, в ЕГАИС, или еще в каких-то сервисах. Падает, если в MS_XML_DOM в одной процедуре/функции загружен файл XML... В ЭДО, я обошел проблему,переделав парсинг входящих файлов на v7Plus. Так, ничего не падает. А что касается ЭДО - то изначально не было цели использовать разные - интересовал только ЭДО Лайт от ЦРПТ... |
|||
6
Garykom
гуру
24.06.23
✎
22:44
|
(5) При том.
Что вместо того чтобы страдать с глюками ВК, которые ты ну никак не решишь полностью. Не проще выкинуть их нафуй и использовать внешнее решение? С которым общаться по 100% безглючным методом |
|||
7
Garykom
гуру
24.06.23
✎
22:46
|
И да.
Использовать ВК, которая вызывает cURL, которая делает запросы http - это гм Да еще и v7Plus тут сбоку Для начала почему сразу напрямую cURL не дергать? |
|||
8
Злопчинский
25.06.23
✎
00:07
|
(3) "не надо под каждый ЭДО переписывать в 1С"
..переписывать под каждый ЭДО прокладку на Golang? кто это будет делать? |
|||
9
Garykom
гуру
25.06.23
✎
01:05
|
(8) А кто будет ошибку в ВК исправлять? И других костылей?
|
|||
10
Злопчинский
25.06.23
✎
01:13
|
(9) хрен редьки не слаще.
по еврейски отвечать - западло! |
|||
11
kisobol
25.06.23
✎
07:00
|
Дайте клюшкам умереть в спокойствии
|
|||
12
Djelf
25.06.23
✎
08:43
|
У меня не крашится. W10x64 с последними обновлениями. 1с++ 3.2.4.3, formex 2.0.5.174
Так тоже не крашится: Запрос.Добавить("content2", СокрЛП(ИмяФайла), "text/xml", XMLDOM.xml); Единственное вот что: Перем Карлик; убрать, пересоздавать объект требуется всегда, потому что хидеры и вложения без этого не очищаются. |
|||
13
MWWRuza
гуру
25.06.23
✎
08:44
|
(6) Не проще выкинуть их нафуй и использовать внешнее решение?
Проще. Если Вы напишете это решение... Что, слабо, или западло? А вот Джеф написал свою ВК, с помощью которой я вполне решил проблему своего рабочего, прикладного решения... Причем, очень даже не плохо справляющегося с ПОСТАВЛЕННОЙ а не абстрактной задачей. И заметьте, плохая или хорошая ВК, но со своей задачей она вполне справляется, и распространяется автором бесплатно. Да, я выявил в ней "глюк"... Но, сумел найти пути его обхода. Автор захочет если(ну, тут вопрос цельсобразности этого, насколько это кому-то нужно, и в первую очередь самому Джефу), то исправит. А я ему в этом по мере своих сил и опыта помогу в этом. Хотя, с "прикладной" точки зрения, мне это уже как-бы и не нужно, у меня все и так работает. Что касается чего-то на GO... Ну, не все умеют на нем что-то делать. Мой опыт общения с Голандом ограничен просмотром текста одного сервиса, для прайсчекера, от его производителя, типа как пример работы с ним... Да, более-или менее все понятно. Но, ни одной строчки на нем я не напишу. Изучать надо, начиная с основ. А я пторую половину шестого десятка разменял, поздно уже с нуля новый для себя ЯП изучать. Сдохну вместе с клюшками :-) PS И, как я понимаю, эта ВК не "дергает curl", как Вы пишете, а просто использует его в своем "теле", предоставляя удобный интерфейс работы с ним, а не как со внешним приложением. На сколько я знаю(могу конечно и оштбаться, х.з.), curl распространяется с открытыми исходниками, и ВК написана используя их, как самостоятельная DLL, сам curl в нее вшит на уровне исходников, и в чистом виде, в качестве самостоятельного приложения при работе этой ВК не используется. А применять его в "чистом виде", как внешнее приложение, можно(у меня в конфе даже в одном месте есть такое), но то еще удовольствие. |
|||
14
MWWRuza
гуру
25.06.23
✎
08:47
|
(12) У меня Win-7 32 бита. Со всеми обновлениями, которые для него были.
(12) Единственное вот что: Перем Карлик; убрать, пересоздавать объект требуется всегда, потому что хидеры и вложения без этого не очищаются. Хм... А вот это интересно... Сейчас попробую. |
|||
15
Djelf
25.06.23
✎
08:50
|
Да, там все зашито внутрь, библиотека монолитная
На 11й версии libcurl 7.87.0 ssl OpenSSL/1.0.2u libz 1.2.11 На 12й libcurl/8.1.2, OpenSSL/1.1.1u, libz/1.2.11, brotli/1.0.9, libssh2/1.11.0 Ну запусти с shift`ом что-ли... Может антивирус или еще что-то чудит? |
|||
16
Djelf
25.06.23
✎
08:58
|
Тимвьювер наскольо помню вроде бы вмешивался, ну и конечно криптопро лезет везде, да так что при запуске виртуалбокса вообще в синий экран система выпадает. Но раз обходной путь найден, то и ладно...
|
|||
17
MWWRuza
гуру
25.06.23
✎
09:01
|
+(14) Ха... А вот это реально помогло:
// Перем Карлик; Перем XMLDOM; Перем ТекТокен; Функция Карлик_Создать() // ТекстОтвета=""; // Если ПустоеЗначение(Карлик) = 1 Тогда Попытка Карлик = СоздатьОбъект("Карлик"); Исключение Сообщить("Не получается создание объекта curl1c, по причине "+ОписаниеОшибки(),"!"); Возврат 0; КонецПопытки; // КонецЕсли; Возврат Карлик; КонецФункции Сначала не понял, закомментировал лишнее, но, даже без галочки перестал запрос отрабатывать, не возвращает ответ правильный... А потом, почитал лог - все ясно стало, токен "протух", 12 часов прошло просто с момента его получения :-) Заменил, и все заработало, хоть с "галочкой", хоть без. Вроде не крашится. |
|||
18
MWWRuza
гуру
25.06.23
✎
09:06
|
В рабочей, переменную уберу, но переделывать парсинг XML уже наверное не буду... Просто уберу что-то одно, или v7plus, или DOM(у меня пока с помощью него создается XML титула, скорее всего, переделаю на v7Plus, а то полный зоопарк получается) :-)
|
|||
19
Djelf
25.06.23
✎
09:07
|
У libcurl дурные коллекции, можно либо полностью очистить, либо добавлять до бесконечности, и это не хорошо.
Из-за этого вначале был добавлен метод Карлик.Инит(), но поскольку скорость создания объекта очень высока то код в Инит() был убран (он еще и подглючивал), и метод ничего не делает, но остался для совместности. |
|||
20
MWWRuza
гуру
25.06.23
✎
09:53
|
Хм... В тесте то работает, а в "боевой" почему-то нет...
Посмотрел по коду своему, и решил, что избавиться от v7Plus в пользу DOM, будет проще, чем формирование титула на v7Plus переписывать... Функции то все церы были, только в двух местах поменять их вызовы... К примеру: Функция ПолучитьЭцпДокаОтпр(ОтветКвитИзвПол) XMLDOM = ЗагрузитьDOMизФайла(ОтветКвитИзвПол); Если ПустоеЗначение(XMLDOM) = 1 Тогда Возврат 0; КонецЕсли; Если XMLDOM.parseError.errorCode <> 0 Тогда Сообщить("Невозможно прочитать XML квитанции о получении документа: " + XMLDOM.parseError.reason); Возврат 0; КонецЕсли; СведПолФайл = XMLDOM.selectSingleNode("/Файл/Документ/СведПодтв/СведОтпрФайл"); ИДДока = СведПолФайл.attributes.getNamedItem("ИмяОтпрФайла").value; ЭПОтпрФайл = СведПолФайл.selectSingleNode("./ЭПОтпрФайл"); ЭЦППрод = ЭПОтпрФайл.text; Возврат ЭЦППрод; КонецФункции Функция ПолучитьЭцпДокаОтпрV7Plus(ОтветКвитИзвПол) Анализатор = СоздатьОбъект("AddIn.XMLParser"); ФайлДанных = Анализатор.СоздатьДокумент(); ФайлДанных.Загрузить(ОтветКвитИзвПол); ВсеУзлы = ФайлДанных.ВыбратьУзлы("Файл"); Файл = ВсеУзлы.ПолучитьУзел(0); Документ = Файл.ВыбратьУзел("Документ"); СведПодтв = Документ.ВыбратьУзел("СведПодтв"); СведОтпрФайл = СведПодтв.ВыбратьУзел("СведОтпрФайл"); ЭПОтпрФайл = СведОтпрФайл.ВыбратьУзел("ЭПОтпрФайл"); ЭП = ЭПОтпрФайл.Текст; Возврат ЭП; КонецФункции Поменял вызов с ПолучитьЭцпДокаОтпрV7Plus(ОтветКвитИзвПол) на ПолучитьЭцпДокаОтпр(ОтветКвитИзвПол), и все, приехали, тут-же упало, хотя карлик пересоздается, переменная убрана. В общем, отброшу лень и перепишу все на v7Plus. Не проблема. А DOM полностью уберу из этой обработки, так проще, чем дальше с ним воевать... |
|||
21
MWWRuza
гуру
25.06.23
✎
12:59
|
+(20) В общем, отброшу лень и перепишу все на v7Plus. Не проблема. А DOM полностью уберу из этой обработки, так проще, чем дальше с ним воевать...
Сделал. Все работает. В процессе подписания, в двух местах читаются XML-ки(самого документа и информации отправителя с ЭЦП) с помощью v7Plus, и в одном месте новая(самого титула) создается. Все запросы GET не трогал, работают через XmlHttp, и только один, POST, который мультипарт, через карлика, так, как и у WinHTTP, и у XmlHttp, есть проблемы с передачей строки XML в теле запроса в кодировке windows-1251, они упорно ее перекодируют в utf-8, чего сервер ЭДО Лайт не понимает... |
|||
22
Djelf
25.06.23
✎
14:40
|
Я посмотрел внимательнее скрин крэша из твоего сообщения в прошлой теме. Это DEP, однозначно DEP.
Вот твой скрин: https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-535.jpg мелкомягкие рекомендуют наоборот, вторая опция сверху/перезагрузка и включение программы явно. libcurl в моей обертке лезть в чужую память не должен, там идет легальная копипаста из данных 1С. Крэш тесты работают без вылета. что делает 1С 7.7 с ActiveX и DOM мне не ведомо, но возможно что-то иное. Непонятно как и что чинить, надо обходить, что ты и сделал. |
|||
23
Злопчинский
25.06.23
✎
15:57
|
(11) клюшки это наш Маклауд!
|
|||
24
Arbuz
27.06.23
✎
14:13
|
(21) А зачем v7plus? У него тоже специфические проблемы. В icpp 3.2.4.x есть же XmlLite - очень быстрый, внятный и удобный https://www.1cpp.ru/forum/YaBB.pl?num=1332077808/0#0
|
|||
25
MWWRuza
гуру
27.06.23
✎
22:08
|
(24) В icpp 3.2.4.x есть же XmlLite - очень быстрый, внятный и удобный
Переделал, работает. v7Plus вырезал совсем из этой обработки. Остается еще работу с архивом переделать на 1cpp, что-бы DialMail вырезать, и все ОК будет. Нужно вменяемое описание работы 1cpp с архивами, или нормальный пример... |
|||
26
Злопчинский
27.06.23
✎
22:11
|
(25) Зимовский архивы виндявыми методами можно
|
|||
27
MWWRuza
гуру
27.06.23
✎
23:27
|
Это понятно, можно через шел скриптом...
Найти-бы пример, как это делается. А с 1cpp какая-то засада... Не нравится ему что-то в этих архивах, вроде ничего сложного, но: Функция РаботаСАрхивом() Попытка BinData = СоздатьОбъект("BinaryData"); Исключение ТекстОшибки = ОписаниеОшибки(); Сообщить("Не удалось создать объект BinaryData","!"); Сообщить("Описание ошибки: " + ТекстОшибки,"!"); Возврат 0; КонецПопытки; Попытка ФС.УстТекКаталог(СокрЛП(ТекКат)); BinData.Unzip("C:\Temp\Proba.zip C:\Temp"); BinData.Закрыть(); Исключение ТекстОшибки = ОписаниеОшибки(); Сообщить("Произошла ошибка при распаковке файла!","!"); Сообщить("Описание ошибки: " + ТекстОшибки,"!"); Возврат 0; КонецПопытки; КонецФункции Процедура Сформировать() РаботаСАрхивом(); КонецПроцедуры Выдает: Произошла ошибка при распаковке файла! Описание ошибки: Была сделана попытка загрузить программу, имеющую неверный формат. Что значит "неверный формат"-? Зип какой-то не такой? Но, винда его нормально проводником открывет, МиалМайл тоже... |
|||
28
MWWRuza
гуру
27.06.23
✎
23:30
|
||||
29
victuan1
28.06.23
✎
06:04
|
(27) 1срр не все типы архивов жует.
|
|||
30
victuan1
28.06.23
✎
06:05
|
(25) Это правильно, что от v7plus избавился.
|
|||
31
big
28.06.23
✎
06:24
|
(29) Только что попробовал создать архив и потом его же разархивировать - ошибка доступа к файлу. То ли в синтаксис не втыкаю, то ли лыжи не те ))
|
|||
32
MWWRuza
гуру
28.06.23
✎
07:43
|
Да лыжи, у нас с тобой пожоже с одного склада...
Я вчера попробовал проделать то-же самое. Архив создается, но, какой-то странный - в нем файл с полным путем: открываешь его обычным архиватором, а там "C:\". Проваливаешься в него - там каталог "C:\Temp". Заходишь в него - там сам файл. А при попытке распаковать его 1cpp, ошибка: "Описание ошибки: Системе не удается открыть указанное устройство или файл." Чего-то намудрили с архиватором в 1cpp... Работа с XML в нем очень даже адекватная мне понравилась. А вот работа с архивами, что-то ни как.. |
|||
33
vladmenleo
28.06.23
✎
07:59
|
(32) А вот пример не поможет - распаковка архива через шелл
https://vbsexpert.azurewebsites.net/Content/FS/Archiving.cshtml и вот пример батника по созданию <!-- : Begin batch script @each off set sourceFolder="c:\Drived\5" set destZip="c:\Drived\example.zip" cscript //nologo "%~f0?.wsf" //job:exewsh %sourceFolder% %destZip% exit /b GOTO:EOF ----- Begin wsf script ---> <package><job id="exewsh"><script language="VBScript"> 'Get command-line arguments. Set objArgs = WScript.Arguments InputFolder = objArgs(0) ZipFile = objArgs(1) 'Create empty ZIP file. CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) Set objShell = CreateObject("Shell.Application") Set source = objShell.NameSpace(InputFolder).Items objShell.NameSpace(ZipFile).CopyHere(source) 'Required! wScript.Sleep 2000 </script></job> </package> сразу говорю, лыжи не мои |
|||
34
MWWRuza
гуру
28.06.23
✎
08:25
|
(33) А вот пример не поможет - распаковка архива через шелл
Думаю, поможет. Буду разбираться. Спасибо! |
|||
35
vladmenleo
28.06.23
✎
08:26
|
(34) создание я пробовал - работает, а распаковку нет, дерзайте :)
|
|||
36
vladmenleo
28.06.23
✎
08:28
|
(34) вот еще вариант, вроде попроще визуально
https://stackoverflow.com/questions/291406/extract-files-from-zip-file-with-vbscript |
|||
37
MWWRuza
гуру
28.06.23
✎
10:26
|
(36) Спасибо!
Но я, по крайней мере пока, решил пойти по "старому пути" - получать ЭЦП отправителя из ИзвещенияОтправителя(DP_PDOTPR). Она там есть. И то, что они "играют" именами тегов(из-за чего я собственно, и хотел уйти на получение архива ДО и извлечение ЭЦП вход дока из него), при использовании XMLLite не критично. Там есть метод получения содержимого тега даже не зная его имени, просто сравниваешь по номеру уровня и типу - если уровень=5 и тип="text", то это то, что нужно, другого такого тега в этой XML не будет, и пофик, как тег называется -ЭЦПОтправителя, или ЭЦППолучателя, содержимое все равно будет нужное нам. Переделал "боевую", теперь архивы не используются и кодировать "p7s" в Base64 не нужно, она в готовом виде есть. Сегодня, вроде УПДшка висит, получат товар, проверю в "боевых условиях" :-) |
|||
38
MWWRuza
гуру
28.06.23
✎
10:45
|
(37) Сегодня, вроде УПДшка висит, получат товар, проверю в "боевых условиях" :-)
Да, все ОК! Только что подписали док. Все подписалось и в ГИСМТ отправилось. |
|||
39
trad
28.06.23
✎
14:18
|
(27) Zip методы BinaryData - это обертки над движковыми функциями
7.7 умеет только pkzip v1 У вас pkzip v2 |
|||
40
Garykom
гуру
28.06.23
✎
15:00
|
Смотрю на эти мучения и тихо радуюсь своему пути
ну типа https://golangify.com/create-zip-files |
|||
41
Злопчинский
28.06.23
✎
15:36
|
(40) а почему не по-русски написано?
|
|||
42
Arbuz
28.06.23
✎
16:34
|
(40) Когда кого-то радуют чьи-либо мучения, это много говорит об этом кто-то.
Так-то можно и опенсурсный 7z запускать через WSHShell.Run или ты прямо в голанг передаёшь ссылки на объекты BinaryData? Также я не понимаю принципиальной разницы между использованием внешней байды на го или написанием ВК с 7za.dll - если ты спишь с голангом, то тебе легко сделать это на нём, если ты умеешь делать ВК, то можно вкрячить 7z (универсальности и гибкости будет даже не в пример больше). |
|||
43
Garykom
гуру
28.06.23
✎
17:09
|
(42) Речь о том что надо выбирать подходящий инструмент
Но чтобы его выбрать надо о нем знать и уметь владеть Чтобы не копать совочком траншею а сразу взять экскаватор ЗЫ Который все равно потом придется нанимать )) |
|||
44
Garykom
гуру
28.06.23
✎
17:10
|
У ТС самая нулевая ошибка это что еще берется за задачи по 1С 7.7!
|
|||
45
Garykom
гуру
28.06.23
✎
17:10
|
(44)+ Ну нет там денег, нет
Какой смысл? |
|||
46
Arbuz
28.06.23
✎
17:27
|
(43) Я не нанимаю экскаватор когда мне надо посадить огурцы ))
(44)(45) >Какой смысл? ...твоего участия в это теме, тогда? Зачем ты сюда пишешь, тратишь время? |
|||
47
MWWRuza
гуру
28.06.23
✎
18:03
|
(44) Ну нет у меня ни времени, ни сил, ни здоровья(стар уже) изучать голанд, или еще какой-то современный ЯП :-(
На 7.7 у меня есть некоторое количество клиентов, которые пусть немного но более-менее исправно платят. Мне хватает, что-бы быть заинтересованным решать эти задачи. Если послушав Вас, бросить все, и кинуться в омут головой(изучение того-же голанда или любого другого ЯП), то и последние разбегутся. А тем временем, задача решена, я считаю, вполне успешно: https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-546.jpg И дальше, работа с загруженным документом и позицией номенклатуры: https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-547.jpg А теперь, представь, сколько бы МНЕ потребовалось времени, что-бы сгородить нечто подобное на голанде??? |
|||
48
Злопчинский
28.06.23
✎
18:45
|
(47) норм!
|
|||
49
MWWRuza
гуру
28.06.23
✎
18:46
|
(39) Да, я так и подумал... Форматы архивов менялись, даже при использовании штатных для них(WinZip, WinRar) архиваторов... Помню, много лет назад, был период, когда не обновив эти проги, можно было и не открыть какой-то из архивов. Тут-же, архиватор из движка 7.7, которому 100 лет в обед.
Тут-же, формат архивного файла не мы задаем - такой из ЧЗ прилетает. Ну да ладно, есть ДиалМайл, которая прекрасно с ними справляется да и виндовыми методами через скрипты можно. Но, я пока без этого обошелся. |
|||
50
Djelf
28.06.23
✎
18:52
|
(47) Голаг как бейсик, даже проще. Это как велосипед, один раз поехал и все уже освоено.
|
|||
51
Garykom
гуру
28.06.23
✎
19:00
|
(47) Мне чтобы изучить Go потребовалась неделя времени
|
|||
52
Garykom
гуру
28.06.23
✎
19:01
|
(50)+ именно
потратить немного времени чтобы освоить современный удобный инструмент которым потом намного быстрее, проще и надежней можно решать разные проблемы |
|||
53
Djelf
28.06.23
✎
19:02
|
+(50) И невероятая скорость вхождения в тему, ну не на уровень профи, но склепать веб-сервер который что-то делает, не падает и работает 24х7 это очень просто.
+(51) Мне чуток поменьше, но я видимо и меньше от него требовал. |
|||
54
Garykom
гуру
28.06.23
✎
19:08
|
(53) ну у меня задача была почти как у ТС
для МДЛП сваять прокладку полноценную под 1С 7.7 |
|||
55
Garykom
гуру
28.06.23
✎
19:10
|
(54)+ https://github.com/Garykom/mdlp
Затем нужен был прямой доступ в СУБД (PostgreSQL и MSSQL) - тоже простейше и надежнейше пашет https://github.com/Garykom/psql |
|||
56
Djelf
28.06.23
✎
19:15
|
У меня редкое извращение, у меня 1с 7.7 под wine@etersoft, про tls оно вообще не знает... Зато очень быстро, а с карликом я и с тлс справлаюсью
|
|||
57
Злопчинский
28.06.23
✎
23:34
|
(50) нахрена тогда голаг? прикрутили бы к бейсику всякие новости типа интернета работы и все...
|
|||
58
Злопчинский
28.06.23
✎
23:35
|
(51) ну так у тебя опыт с С какой. а вот скольо понадобится программеру голанга на изучение 1С?
|
|||
59
Злопчинский
28.06.23
✎
23:41
|
(54) этот гитхаб тоже какие-то недомерки писали. я обкликался мышью на пикчу папкb stunnel чтобы в папку зайти... оказывается нихера, надо по имени жмакнуть... (а еще некоторые при этом на Фар ругаются)...
|
|||
60
Злопчинский
28.06.23
✎
23:44
|
(55) а где собственно исходники этого самого mdlp на голанге.
нафига "мне" прокладка без исходников, мдлп поменяется ченить - и что делать...? |
|||
61
Злопчинский
28.06.23
✎
23:45
|
я хоть по мдлп не работаю, но "мне за державу обидно..."
|
|||
62
MWWRuza
гуру
29.06.23
✎
08:13
|
Нет, я наверое совсем отстал от жизни...
Ничего не понял... А именно, для МОЕЙ КОНКРЕТНОЙ ЗАДАЧИ, чем бы помогла какая-то прокладка-сервис??? В какое место ее засунуть, и что она там должна там делать??? (2) В виде сервиса прокладки на Golang, который обеспечивал весь функционал и для 1С 7.7 выдавал всегда один стабильный интерфейс Ну, не знаю, может для каких-то задач и так, но то, что можно сделать напрямую через WinHTTP или XmlHTTP - и так стабильно работает. Может у меня объемы не те? Ну, да, оботот от 0 до 5 документов в день, это конечно мизер. Тут уж, что есть то есть. Для этой задачи все стабильно и без всяких сервисов-прокладок. Я бы и карлика не прикручивал, но, из пяти запросов к HTTP серверу ЦРПТ, имеющимся в обработке, с одним возникли проблемы - извращения от ЦРПТ, в результате которых их сервер требует формат запроса мультипарт, в теле которого строка в кодировке windows-1251. Как выяснилось, и WinHTTP, и XmlHTTP, не умеют этого делать - портят кодировку этой части запроса при передаче до utf-8, чего сервер ЦРПТ не понимает... Карлик, как и cUrl, умеют передавать тело этого запроса "как есть", ничего не меняя "на лету". Прикрутил карлика, работает, все ОК. Остальные четыре запроса оставил под XmlXTTP, с ними нет ни каких проблем. И чем-бы мне помог в этом случае сервис-прокладка? Конвертировал бы на лету данные запроса? И все? А смысл? Ради чего сервис писать? Проще сразу их правильно отправить. А насчет стабильности... Ну, выявил я один из моментов, когда карлик не уживается с XmlDOM. Да, есть такое. Но, я обошел это, убрав из цепочки DOM(сама по себе тяжеловесная и требовательная к ресурсам приблуда, и совсем не обязательная - есть куча альтернатив). И совсем не факт, что с каким-то сервисом-прокладкой, таких проблем не возникло бы, по крайней мере по началу, пока все не отладишь. Так, что, все хорошо там, где это нужно. |
|||
63
MWWRuza
гуру
29.06.23
✎
08:51
|
+(62) но, из пяти запросов к HTTP серверу ЦРПТ, имеющимся в обработке,
Ошибся - из восьми: 1. "/api/v1/incoming-documents/unsigned-events" - получение списка неподписанных квитанций 2. "/api/v1/incoming-documents/"+ ИД + "/events/112003 - получение извещения покупателя о получении документа 3. "/api/v1/incoming-documents" + куча дополнений в URL, в зависимости от желаемого отбора - получение списка документов 4. "/api/v1/incoming-documents/" + ИД + "/content" - получение XML самого входящего документа 5. "/api/v1/incoming-documents/" + ИД + "/print" - получение печатной формы 6. "/api/v1/incoming-documents/" + ИДДока + "/events/" + ИДКвитанции + "/content" - получение XML извещения отправителя для извлечения из него строки ЭЦП отправителя. 7. "/api/v1/incoming-documents/" + ИДДока+ "/events/" + ИДКвитанции + "/signature" - подписание квитанции Все эти запросы стабильно отрабатывают через XmlHttp. И только восьмой: 8. "/api/v1/incoming-documents/xml/upd/title" - отправка подписанного титула, с ним возникли проблемы и понадобился карлик, почему - выше, в предыдущем сообщении написал. |
|||
64
Garykom
гуру
29.06.23
✎
11:04
|
(60) Исходники у заказчика ))
|
|||
65
Arbuz
29.06.23
✎
14:31
|
На самом деле тут дело даже не в изучении другого ЯП, а смена парадигмы: некую часть функционала мы выносим из 1С во внешний сервис(ы), а для этого нужны определённые ментальные усилия и выход из привычного линейного событийно-процедурного подхода, по крайней мере на уровне архитектуры - вон, на снеговике половина не может даже клиент-серверную архитектуру осилить, а в клюшках - мало заставить себя изучить прямые запросы, надо и задачи ставить исходя из поля их возможностей. А уж 1спп'эшным ООП пользуются совсем поехавшие ))
|
|||
66
Djelf
29.06.23
✎
14:41
|
(65) Я думал об этом, было бы достаточно удобно из 1с пихать данные в строннюю бд, а получение/отправкой занимался бы сервер.
Это довольно просто сделать на голанг, тыкать кнопку "обмен" не потребуется, блокировоки работы сервиса со сторонними ресурсами из 1с тоже не нужны, то да се... было бы без блокировки сеанса пользователя в клюшках. А задания сами по себе плавненько втекают/вытекают/парсятся и т.п. Но есть препятствия: лень-матушка и гнусная зеленая жаба, кто за эту работу то заплатит? |
|||
67
MWWRuza
гуру
29.06.23
✎
14:56
|
(66) кто за эту работу то заплатит?
Да никто. И 99% клиентов, даже не поймут(соответственно и не смогут оценить) :-( |
|||
68
alyuev
26.07.23
✎
11:57
|
(12) Я что-то упустил, или это таки опечатка и версия formex 2.0.5.147?
|
|||
69
Злопчинский
26.07.23
✎
12:02
|
(68) почему опечатка? и 174 есть, и 175.
я использую 175 |
|||
70
Злопчинский
26.07.23
✎
12:12
|
в 175 есть мелкий косяк, например, если задать шрифт на текстовый реквизит (надпись) и на ТЗ - то размер шрифта будет немножко отличаться.
в более раннем релизе поправлял по моей просьбе вроде, но потом снова "сломалось", а так - работает все стабильно... . 175 вроде последняя, которую можно найти... более свежих не видел |
|||
71
Злопчинский
26.07.23
✎
12:13
|
Альф, кстати, сделал фичу, что можно делатьавтомасштабирование шритфа, чтобы текст влазил в отведенную область. для ТСД, например, это очень кузяво. Надо только демо-код который он давал - подправить немного, косячит на коротких надписях...
|
|||
72
trdm
26.07.23
✎
12:21
|
> Карлик (curl1c)
Это вк-шка? а мамыльте кто-нить или ссыль дайте плз... |
|||
73
MWWRuza
гуру
26.07.23
✎
12:29
|
Да, ВК.
Лови: https://cloud.mail.ru/public/pcXL/nH2MFp1Zr |
|||
74
Злопчинский
26.07.23
✎
12:58
|
||||
75
trdm
26.07.23
✎
13:30
|
Гранд мерси, а то сам хотел писать.
|
|||
76
Злопчинский
26.07.23
✎
13:32
|
(75) "все уже украдено до нас"...
|
|||
77
Djelf
26.07.23
✎
15:24
|
(75) Собирать это довольно сложно, не сам curl1c (это просто), а библиотеки вокруг, да еще на vc6.
Что-то из библиотек собирается на icl9. Зоопарк... но работает! Вот каталог: https://cloud.mail.ru/public/1cUy/spm8Y6Jwj |
|||
78
trdm
26.07.23
✎
16:36
|
(77) Ты - мой герой. :) Я всегда страраюсь использовать самые древние сборщики, что-бы совместимость была помаксимому.
Видать не один я подобным образом думаю. Мерси! |
|||
79
trdm
26.07.23
✎
16:37
|
Да и современный софт, если рвтся интернет соединение замерзает, пока оно не восстановится.
Почему - догадываюсь. Вещь неприятная, когда ВПН врубаешь софт не запускается. И пока после перезагрузки инте не восстановится хрен чего современное запустишь... |
|||
80
Djelf
26.07.23
✎
16:43
|
+(77) Тест возми из предыдущей версии (вроде в самую последнюю не вложил, там сторонние библиотеки бустил) вроде там достаточно понятно что и как должно быть.
P.S. Предложения для буста ВК принимаются. У меня идеи с этой штукой засохли. Немного оживил работу victuan: victuan1 Чуток полезностей было добавлено (стресс тесты в обработке есть). Работает эта штука с егаис примерно с начала второго его пришествия. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |