|
ЕГАИС отправка чека | ☑ | ||
---|---|---|---|---|
0
Stepinrn
26.08.19
✎
16:44
|
Коллеги, добрый день. Помогите, пожалуйста, решить проблему, уже неделю бьюсь.
Формирую XML-файл для отправки данных в УТМ ЕГАИС данных о пробитом чеке (розничная торговля алкоголем). Файл формирую "по аналогии с типовыми", вот такой --55dd23378b854781be82060fdfc0e3c3 Content-Disposition: form-data; name="xml_file"; filename="Cheque.xml" Content-Type: text/xml; charset=utf-8 ?<?xml version="1.0" encoding="UTF-8"?> <Cheque inn="5190028811" kpp="519045005" address="АдресОрганизации" name="НаименованиеОрганизации" kassa="00106705372702" shift="1" number="6332" datetime="2608191629"> <Bottle barcode="22N00001CK39CGUCTEP3SZK805100270150340W5J3CU70BV916DP06QNR68DNRTKSQF" ean="8437004024145" price="550.00" volume="0.75"/> </Cheque> --55dd23378b854781be82060fdfc0e3c3-- В заголовках HTTP-запроса пишу так Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary) УТМ мне возвращает ошибку <tc:Comments>org.xml.sax.SAXParseException; cvc-elt.1.a: Cannot find the declaration of element 'Cheque'.</tc:Comments> В чем еще может быть ошибка в XML-файле? Или может быть запрос нужно по-другому составить |
|||
1
Garykom
гуру
26.08.19
✎
16:46
|
Проверь свой XML на валидность
|
|||
2
Garykom
гуру
26.08.19
✎
16:47
|
Или ошибка в отправке кривой
|
|||
3
Stepinrn
26.08.19
✎
16:55
|
А как проверить на валидность?
|
|||
4
Stepinrn
26.08.19
✎
16:56
|
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
ИмяФайлаДляЗагрузки = ПолучитьИмяВременногоФайла("xml"); ИмяФайлаОтвета = ПолучитьИмяВременногоФайла("xml"); ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt"); ЗаписьФайл = Новый ЗаписьXML(); ЗаписьФайл.ОткрытьФайл(ИмяФайлаДляЗагрузки); ЗаписьФайл.ЗаписатьОбъявлениеXML(); ЗаписьФайл.ЗаписатьНачалоЭлемента("Cheque"); ЗаписьФайл.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema"); ЗаписьФайл.ЗаписатьАтрибут("inn" , Пользователи.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация", ПараметрыСеанса.ТекущийПользователь).ИНН); ЗаписьФайл.ЗаписатьАтрибут("kpp" , КассаККМ.УзелРозничногоМагазина.КПП); ЗаписьФайл.ЗаписатьАтрибут("address" , КассаККМ.УзелРозничногоМагазина.АдресТТ); ЗаписьФайл.ЗаписатьАтрибут("name" , КассаККМ.УзелРозничногоМагазина.НаименованиеМагазина); ЗаписьФайл.ЗаписатьАтрибут("kassa" , КассаККМ.УзелРозничногоМагазина.ЗаводскойНомерККМ); ЗаписьФайл.ЗаписатьАтрибут("shift" , XMLСтрока(1)); ЗаписьФайл.ЗаписатьАтрибут("number" , НомерДокумента); ЗаписьФайл.ЗаписатьАтрибут("datetime", Формат(ТекущаяДата(),"ДФ=ddMMyyHHmm")); Для Каждого Стр Из ТаблицаКрепкийАлкоголь Цикл ЗаписьФайл.ЗаписатьНачалоЭлемента("Bottle"); ЗаписьФайл.ЗаписатьАтрибут("barcode", Стр.АкцизнаяМарка); ЗаписьФайл.ЗаписатьАтрибут("ean" , Стр.Штрихкод); ЗаписьФайл.ЗаписатьАтрибут("price" , Формат(Стр.Цена,"ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0")); ЗаписьФайл.ЗаписатьАтрибут("volume" , XMLСтрока(Стр.Объем)); ЗаписьФайл.ЗаписатьКонецЭлемента(); КонецЦикла; ЗаписьФайл.ЗаписатьКонецЭлемента(); ЗаписьФайл.Закрыть(); МассивФайловДляОбъединения = Новый Массив; //Формируем начальный фрагмент файла POST-запроса ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt"); ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.ANSI, Символы.ПС, Ложь); ФайлОтправкиНачало.ЗаписатьСтроку("--" + Boundary); ФайлОтправкиНачало.ЗаписатьСтроку("Content-Disposition: form-data; name=""xml_file""; filename=""" + "Cheque.xml" + """"); ФайлОтправкиНачало.ЗаписатьСтроку("Content-Type: text/xml; charset=utf-8"); ФайлОтправкиНачало.ЗаписатьСтроку(""); ФайлОтправкиНачало.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало); МассивФайловДляОбъединения.Добавить(ИмяФайлаДляЗагрузки); ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt"); ФайлОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.ANSI, Символы.ПС, Ложь); ФайлОтправкиКонец.ЗаписатьСтроку(Символы.ПС); ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary + "--"); ФайлОтправкиКонец.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary); Соединение = Новый HTTPСоединение(ПараметрыОбмена.АдресСервера, ПараметрыОбмена.ПортСервера); ЗапросHTTP = Новый HTTPЗапрос("opt/in/" + "Cheque", ЗаголовокHTTP); ЗапросHTTP.УстановитьИмяФайлаТела(ИмяФайлаОтправки); ОтветHTTP = Соединение.ОтправитьДляОбработки(ЗапросHTTP, ИмяФайлаОтвета); Результат = ОтветHTTP.ПолучитьИмяФайлаТела(); |
|||
5
Stepinrn
26.08.19
✎
16:56
|
Вот выше сообщением скинул полный код, с отправкой
|
|||
6
Ёпрст
26.08.19
✎
17:06
|
ну так хотя бы:
ЗаписьФайл.ЗаписатьНачалоЭлемента("Cheque"); ЗаписьФайл.ЗаписатьАтрибут("xmlns:xs","http://www.w3.org/2001/XMLSchema"); ЗаписьФайл.ЗаписатьАтрибут("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance"); |
|||
7
Stepinrn
26.08.19
✎
17:42
|
<?xml version="1.0" encoding="UTF-8"?>
<Cheque inn="5190028811" datetime="2608191716" kpp="519045005" kassa="00106705372702" address="Адрес" name="Юность" number="6332" shift="1"> <Bottle barcode="22N00001CK39CGUCTEP3SZK805100270150340W5J3CU70BV916DP06QNR68DNRTKSQF" ean="8437004024145" price="550.00" volume="0.75"/> </Cheque> |
|||
8
Stepinrn
26.08.19
✎
17:43
|
Подскажите, ну вот где тут ошибка? Валидатор тоже говорит что ошибка "Не найдено описание для элемента "Cheque". Возможно неверно указан корневой элемент."
|
|||
9
Stepinrn
26.08.19
✎
17:43
|
Но в инструкции к УТМ именно такой формат
|
|||
10
Ёпрст
26.08.19
✎
18:00
|
(7) всё просто, у тебя в </Cheque> одна из букв русская.
|
|||
11
Ёпрст
26.08.19
✎
18:00
|
а не..норм, ну укажи как в (6) да проверь curl-ом
|
|||
12
Garykom
гуру
26.08.19
✎
18:13
|
(7) Нет ошибки это валидатор от яндекса кривой.
И поэтому и УТМ упал и не принимает который на его основе вероятно сделан )) |
|||
13
Garykom
гуру
26.08.19
✎
18:14
|
УТМ обнови
|
|||
14
Stepinrn
26.08.19
✎
18:18
|
А как проверить curl-ом? Я делаю батник
C:\curl64\curl64.exe curl -F "xml_file=@C:\Mistral\cheque.xml" http://172.30.10.155:8080 И выдает "Could not resolve host curl" |
|||
15
Stepinrn
26.08.19
✎
18:18
|
(13) у меня версия 3.0.8, по-моему выше пока некуда обновлять )
|
|||
16
Garykom
гуру
26.08.19
✎
18:22
|
(15) Значит откатить наоборот попробуй.
|
|||
17
Djelf
26.08.19
✎
18:34
|
(14) Что вот это такое? "curl64.exe curl"
А в документацию заглянуть пробовал? Там чуток по другому написано: > Пример команды отправки чека (check.xml) в транспортный модуль: > curl -F "[email protected]" http://localhost:8080/xml |
|||
18
Stepinrn
26.08.19
✎
18:38
|
(17) curl64.exe это пусть до самого curl
|
|||
19
Djelf
26.08.19
✎
18:42
|
(18) А "curl64.exe curl" это отправка запроса на сервер "curl".
|
|||
20
Stepinrn
26.08.19
✎
18:44
|
(19) подскажи как в итоге правильно? отправлять нужно именно с машины, где установлен УТМ? Или можно указать IP?
|
|||
21
Djelf
26.08.19
✎
19:04
|
(20) В цитате из руководства (17) указано правильно.
Разве что "curl" нужно заменить на "curl.exe" У curl такая фишка: первый кто попался не после ключа будет хостом для совершения операции. |
|||
22
Сияющий в темноте
26.08.19
✎
23:11
|
у тебя в xml в начале BOM стоит,и он все портит.
и потом,пространства имен где? |
|||
23
Stepinrn
27.08.19
✎
09:53
|
(22) Пространство имен я устанавливал, но ошибка та же. Какое должно быть пространство в данном случае? Я нашел только http://fsrar.ru/WEGAIS/Cheque
|
|||
24
Ёпрст
27.08.19
✎
10:53
|
(20) откуда угодно, просто прописываешь путь
|
|||
25
Stepinrn
27.08.19
✎
14:00
|
Да, curl`ом отправляет. Всем спасибо за помощь
|
|||
26
Ёпрст
27.08.19
✎
14:10
|
ну, если курлом отправляет, то и 1с-ина отправит
|
|||
27
Ёпрст
27.08.19
✎
14:11
|
код выгрузки взять с любой типовой(розница/ут/утап/катап/далион и т.д)
|
|||
28
Stepinrn
27.08.19
✎
16:50
|
(27) с типовой не могу взять, там черт ногу сломит. А у меня самописная конфигурация
|
|||
29
Ёпрст
27.08.19
✎
17:30
|
(28) на вот, пробуй:
|
|||
30
Stepinrn
28.08.19
✎
09:53
|
(29) Спасибо, попробую
|
|||
31
Stepinrn
29.08.19
✎
16:05
|
(29) Тоже не работает. УТМ возвращает Missing initial multi part boundary
|
|||
32
Ёпрст
29.08.19
✎
16:09
|
(31) та ладно ? это кусок с рабочей конфы, тока запрос другой.
|
|||
33
Stepinrn
29.08.19
✎
16:14
|
(32) Мне кажется проблема именно в том что "запрос другой". С любыми другими документами (ТТН, акты расхождений и пр.) все работает по этой схеме. А чек уходить не хочет. И документации нигде нормальной нет.
Причем самое интересное, что на egais.ru тупо нет xsd-схемы для чека ) Похоже придется костыли делать и отправлять через curl, запуская командную строку из 1С |
|||
34
Ёпрст
29.08.19
✎
16:42
|
(33) да есть она везде, и в документации и в xsd схеме на дом странице
|
|||
35
Stepinrn
29.08.19
✎
16:47
|
(34) на дом.странице в XML-схемах есть, а в лк егаис в zip-файле с xsd-схемами нет
|
|||
36
Ёпрст
29.08.19
✎
16:50
|
(35) лк егаис есть документация - там все примеры, в том числе, отправка через курл
|
|||
37
Ёпрст
29.08.19
✎
17:01
|
в логах утм, чего хоть при отправке запроса ?
Марку, какую отправляешь на продажу, старую/новую ? |
|||
38
Ёпрст
29.08.19
✎
17:01
|
Полностью свой код отправки выложи
|
|||
39
Ёпрст
29.08.19
✎
17:02
|
проверил код из (29) - работает и на чеке
|
|||
40
Stepinrn
29.08.19
✎
17:14
|
(37) новую
|
|||
41
Stepinrn
29.08.19
✎
17:15
|
(37) в логах УТМ вообще ничего, в ответе от УТМ пишет Missing initial part boundary
|
|||
42
Stepinrn
29.08.19
✎
17:15
|
АдресРесурса = "opt/in/Cheque";
ПараметрыОбмена = ПланыОбмена.Универсальный.ПолучитьПараметрыОбменаЕГАИС(КассаККМ.УзелРозничногоМагазина); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ЗаписатьНачалоЭлемента("Cheque"); ЗаписьXML.ЗаписатьАтрибут("inn" , Пользователи.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация", ПараметрыСеанса.ТекущийПользователь).ИНН); ЗаписьXML.ЗаписатьАтрибут("kpp" , КассаККМ.УзелРозничногоМагазина.КПП); ЗаписьXML.ЗаписатьАтрибут("address" , КассаККМ.УзелРозничногоМагазина.АдресТТ); ЗаписьXML.ЗаписатьАтрибут("name" , КассаККМ.УзелРозничногоМагазина.НаименованиеМагазина); ЗаписьXML.ЗаписатьАтрибут("kassa" , КассаККМ.УзелРозничногоМагазина.ЗаводскойНомерККМ); ЗаписьXML.ЗаписатьАтрибут("shift" , XMLСтрока(1)); ЗаписьXML.ЗаписатьАтрибут("number" , НомерДокумента); ЗаписьXML.ЗаписатьАтрибут("datetime", Формат(ТекущаяДата(),"ДФ=ddMMyyHHmm")); Для Каждого Стр Из ТаблицаКрепкийАлкоголь Цикл ЗаписьXML.ЗаписатьНачалоЭлемента("Bottle"); ЗаписьXML.ЗаписатьАтрибут("barcode", Стр.АкцизнаяМарка); ЗаписьXML.ЗаписатьАтрибут("ean" , Стр.Штрихкод); ЗаписьXML.ЗаписатьАтрибут("price" , Формат(Стр.Цена,"ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0")); ЗаписьXML.ЗаписатьАтрибут("volume" , XMLСтрока(Стр.Объем)); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); ТекстЗапроса = ЗаписьXML.Закрыть(); ВремГраница = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); ТелоЗапроса = Новый ТекстовыйДокумент(); ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница); ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""xml_file"""); ТелоЗапроса.ДобавитьСтроку("Content-Type: text/xml; charset=utf-8"); ТелоЗапроса.ДобавитьСтроку(""); ТелоЗапроса.ДобавитьСтроку(ТекстЗапроса); ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--"); ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст(); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса); HTTPЗапрос.Заголовки["Content-Type"] = "multipart/form-data; boundary=" + ВремГраница; HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8); Соединение = Новый HTTPСоединение(ПараметрыОбмена.АдресСервера, ПараметрыОбмена.ПортСервера); HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос); ОтветМодуляЕГАИС = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); МассивМарок= Новый Массив; Если HTTPОтвет.КодСостояния = 200 Тогда ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ОтветМодуляЕГАИС); ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); Если ОбъектXDTO.Свойства().Получить("url") <> Неопределено Тогда ИдентификаторЗапроса = ОбъектXDTO.url; ИначеЕсли ОбъектXDTO.Свойства().Получить("error") <> Неопределено Тогда Сообщить(ОбъектXDTO.error); Отказ = Истина; КонецЕсли; ЧтениеXML.Закрыть(); РегистрАдресаСсылок = РегистрыСведений.АдресаСсылокЕГАИСПоЧекамРозничнойТорговли.СоздатьМенеджерЗаписи(); РегистрАдресаСсылок.Период = Дата; РегистрАдресаСсылок.Узел = КассаККМ.УзелРозничногоМагазина; РегистрАдресаСсылок.Чек = Ссылка; РегистрАдресаСсылок.АдресСсылки = ИдентификаторЗапроса; РегистрАдресаСсылок.Записать(Ложь); ОтправитьПисьмоРазработчику(ТаблицаКрепкийАлкоголь); Иначе Сообщить("Не удалось прочитать ответ от сервера ЕГАИС"); КонецЕсли; |
|||
43
Ёпрст
29.08.19
✎
17:22
|
(42)
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); |
|||
44
Stepinrn
29.08.19
✎
17:32
|
(43) При добавлении ИспользованиеByteOrderMark.НеИспользовать у меня сегодня ошибка вылетела. На платформе 8.3.8
|
|||
45
Ёпрст
29.08.19
✎
17:39
|
(44) обнови до 13 хотя бы.
|
|||
46
Ёпрст
29.08.19
✎
17:41
|
Или так лепи:
|
|||
47
Ёпрст
29.08.19
✎
17:43
|
||||
48
Ёпрст
29.08.19
✎
17:44
|
там есть идля совсем древних релизов, 8.1, например
|
|||
49
Stepinrn
29.08.19
✎
17:54
|
(48) к сожалению ветка "404 not found"
|
|||
50
Stepinrn
29.08.19
✎
17:55
|
(48) нет, извиняюсь, не так скопировалась просто
|
|||
51
Ёпрст
29.08.19
✎
17:57
|
||||
52
Stepinrn
29.08.19
✎
18:35
|
(46) Получаю ошибку Cannot find the declaration of element 'Cheque'
|
|||
53
MWWRuza
гуру
29.08.19
✎
20:18
|
А вот это разве правильно: ЗапросHTTP = Новый HTTPЗапрос("opt/in/" + "Cheque", ЗаголовокHTTP); - ???
Я у себя корректировочные чеки из 1С 7.7 Вот так отправляю: RESULT_XML_DOM = ВыгрузитьDOM(XML_DOM, УТМ_URL + "xml"); "ВыгрузитьDOM" - Функция в ГМ, но, это в данном случае не важно, тут кто чем может, тем и отправляет, НО!!! Обратите внимание на адрес: "УТМ_URL + "xml""... Вы же пытаетесь отправлять в папку оптовых документов, в исходящие: "opt/in/" + "Cheque"... Для чеков, вроде другой путь нужен, как у меня... По крайней мере, так работает, корректировочные чеки уходят(чеки продажи формирует и отправляет у меня другая программа, фронт-офиса, мне как-то пофиг, что она и как там делает, я только с корректирующими заморачивался, из 1С). |
|||
54
MWWRuza
гуру
29.08.19
✎
20:23
|
+(53) Вот в отладчике как путь отправки выглядит, при условии, что УТМ на ЛокалХост: "http://localhost:8080/xml"
|
|||
55
Stepinrn
29.08.19
✎
20:39
|
(53) А какой путь в вашем случае?
|
|||
56
MWWRuza
гуру
29.08.19
✎
22:42
|
(55)В смысле какой? в (54) же написано, в случае, если УТМ лежит на том-же компе, где программа, которая чеки пытается отправить...
В случае, если на другом будет, то соответственно: "http://IP-адресКомпьютера_сУТМ:8080/xml"... Я имел в виду, что окончание адреса должно быть не "opt/in/Cheque", а "xml"... Да, кстати, вот скопировал из PDF-описания к УТМ: Отправить xml-файл чека АП в УТМ командой: curl -F "[email protected]" http://localhost:8080/xml (4.1.2) Откуда Вы свое: "opt/in/Cheque" взяли, вообще не понятно... Потому у Вас и все документы кроме чеков работают, что их действительно туда надо отправлять, а чеки - в "xml"... |
|||
57
Ёпрст
30.08.19
✎
08:46
|
(52) см 505 пост в той ветке, там поправка
(53) да правильно |
|||
58
Stepinrn
30.08.19
✎
12:21
|
(56) Спасибо большое. Вне изменения согласно Вашему замечанию. Продажи по розничной точке у нас нечастые, проверю когда будет следующая продажа )
|
|||
59
Ёпрст
30.08.19
✎
12:28
|
(56) точняк, xml :)) посмотрел в жуклолве
|
|||
60
Ёпрст
30.08.19
✎
12:29
|
(58) нафига ждать ? Запишите тестовый ключ rsa, поставьте тестовый УТМ, копию базы и проверяйте все запросы.
|
|||
61
Stepinrn
30.08.19
✎
12:35
|
(60) У меня не получилось сделать тестовый ключ. При попытке поставить тестовый ключ на ту же машину, на которой стоит реальный, реальный перестал работать
|
|||
62
Ёпрст
30.08.19
✎
12:36
|
(61):)))
если хочешь 2 ключа одновременно, то тут только ставить виртуалки под каждый ключ - это самое простое решение. |
|||
63
Ёпрст
30.08.19
✎
12:37
|
подымаешь 2 виртуалки, в одной будет тестовый ключ и тестовый утм, во второй - реальный ключ и рабочий утм. Всё собственна
|
|||
64
MWWRuza
гуру
30.08.19
✎
13:00
|
(59) - "жуклолве" - чёйт такое, просвети???
(61) Да в чем проблема... У Вас есть ключ(я так понимаю, Рутокен ЭФП 2.0), на котором УЦ записан ГОСТ сертификат. Отлично. Заходите в его утилиту, и удаляете сертификат PKI(не обязательно, можно этого и не делать, но так лучше), только не перепутайте, а то на пару косарей попадете, если случайно ГОСТ удалите. Далее, заходите в ЛК ЕГАИС, и записываете на ключ тестовый сертификат. Базу УТМ сохраняете, сносите его, ставите тестовый. Далее, играетесь, столько, сколько Вам нужно. Когда наиграетесь - все точно так-же, только записываете "боевой" сертификат, и ставите "боевой" УТМ, сохраненную базу возвращаете на место. Так можно делать любое количество раз, и в любое время, учитывая, что "Продажи по розничной точке у нас нечастые"... Тем, у кого розничный магазин, с этим сложнее, торговлю маркируемым алкоголем придется приостановить на время "экспериментов". Весь остальной документооборот, скорее всего, может и подождать часок, ничего не случится :-))) PS Только учтите, на "пустом" тестовом контуре Вы сможете протестировать только продажи "старых" марок(они спокойно продаются в минус), с новыми так не прокатит - надо, что-бы марки числились на регистре 1(и 3 соответственно), иначе при попытке продажи, УТМ будет возвращать ошибку "Продукция не поступала в организацию по помарочному учету"... Но, для Вашей задачи, это на самом деле все равно - даже если вернется такая ошибка, уже будет понятно, что отправка чека в УТМ работает :-) |
|||
65
MWWRuza
гуру
30.08.19
✎
13:02
|
+(64)Ааааа туплю... "жуклолве", это баголовка, отладчик??? Сразу и не понял.
Вообще, это в документации на УТМ написано... |
|||
66
MWWRuza
гуру
30.08.19
✎
13:04
|
+(65) "это", имеется в виду путь для отправки файлов чеков...
|
|||
67
Stepinrn
30.08.19
✎
14:23
|
(64) Спасибо, наверное попробую )
|
|||
68
Stepinrn
02.09.19
✎
20:40
|
(56) Помогите, пожалуйста. еще по этому же вопросу. Вот по Вашему совету поменял адрес и получаю ошибка следующего вида
<p>Problem accessing /http://172.30.10.155:8080/xml. Reason: <pre> Not Found</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.3.5.v20151012</a><hr/> IP и порт 100% доступны. Curl по тому же адресу отправляет без проблем. Куда еще можно порыть? Спасибо |
|||
69
MWWRuza
гуру
02.09.19
✎
22:12
|
Тут не помогу... Восьмерошников трясите, я "застарелый клюшечник", а тут, отправка внутренними методами 8.Х...
По любому, раз curl отправляет, значит адрес правильный. Я из 7.7 другими методами отправляю, с помощью VBScript... Если хотите - могу процедуры отправки выложить, но, Вам это вряд-ли поможет... |
|||
70
Stepinrn
03.09.19
✎
15:32
|
(69) Выложите, плиз, или пришлите на email. А вдруг. Переделать код 7.7 на 8.3 не так сложно
|
|||
71
MWWRuza
гуру
03.09.19
✎
16:01
|
Ну... Не знаю...
Из того места, откуда отправляю: RESULT_XML_DOM = ВыгрузитьDOM(XML_DOM, УТМ_URL + "xml"); XML_DOM - Сформированый XML Dom. Сама функция выгрузки, в глобальном модуле, потому, что много откуда вызывается: Функция ВыгрузитьDOM(XML_DOM, URL) Экспорт // СохранитьВРезервноеХранилище(XML_DOM, URL, "in", "in"); Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; Это=Скрипт.Eval("this"); BOUNDARY = "BOUNDRYxXxXxEGAISxXxXxBOUNDARY"; POST_STRING = "--"+BOUNDARY+РазделительСтрок; POST_STRING = POST_STRING + "Content-Disposition: form-data; name=""xml_file""; filename=""select.xml""" + РазделительСтрок; POST_STRING = POST_STRING + "Content-Type: text/xml; charset=utf-8" + РазделительСтрок + РазделительСтрок; POST_STRING = POST_STRING + XML_DOM.xml + РазделительСтрок + РазделительСтрок; POST_STRING = POST_STRING + "--" + BOUNDARY + "--" + РазделительСтрок; WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); Скрипт.AddObject("WinHttp",WinHttp); WinHttp.Open("POST", URL, 0); WinHttp.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); WinHttp.SetRequestHeader("Content-Length", СтрДлина(POST_STRING)); WinHttp.Send(POST_STRING); Если WinHTTP.Status<>200 Тогда Предупреждение("Не удалось выгрузить документ. Возможно служба УТМ не запущена."); Возврат ""; КонецЕсли; Стрим = СоздатьОбъект("ADODB.Stream"); Стрим.Mode = 3; Стрим.Type = 1; Стрим.Open(); Скрипт.AddObject("Stream",Стрим); Скрипт.Eval("Stream.Write(WinHttp.responseBody)"); Стрим.Position = 0; Стрим.Type = 2; Стрим.Charset = "utf-8"; Ответ = Стрим.ReadText(); Стрим.Close(); // СохранитьВРезервноеХранилище(XML_DOM, URL, "in", "in"); XML_DOM=CreateObject("MSXML2.DOMDocument.6.0"); XML_DOM.LoadXML(Ответ); СохранитьВРезервноеХранилище(XML_DOM, URL, "in", "answer"); Возврат XML_DOM; КонецФункции Как-то так... Но, это все потому, что 7.7 не умеет этого делать, приходится средствами Windows... Вы же это делаете встроенными средствами восьмерки... Посмотрите в типовой "Рознице", как это сделано, Вам это больше поможет. Тем более, Вы пишете, что другие документы отправляются нормально. Чеки тоже должны, никакой принципиальной разницы, кроме адреса отправки я не вижу... PS А.... Нет, вру :-( У чеков нет "заголовка" типа того(взято из первого попавшегося документа): <ns:Documents xmlns:tc="http://fsrar.ru/WEGAIS/Ticket" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0"> где объявляются пространства имен в XML. <?xml version="1.0" encoding="UTF-8"?> Вот XML чека, рабочая, только звездочками забиты настоящие данные: -<Cheque datetime="2908191952" number="1" shift="1" name="ООО "ШарашМонтаж"" address="Московская обл., *****************,, лит. А, этаж 1, помещ. 5, на плане № 2, 3, магазин." kassa="1234567891234" kpp="507501001" inn="**********"> <Bottle volume="0.1000" price="100.00" ean="4620006996396" barcode="133200084658031018001NQFJXW55EZ7MGNBE5NB4LHBIOYVGDG4IDFE4DWOMKBLUXMPXICGDOFDKALEDZXSLC4YCT6WZ7CRV7WBG3JG3LUURP4G4QEIAU2JO56WGQXQZZ4JKXEQYTVVWXLQWHHSKQ"/> </Cheque> |
|||
72
Ёпрст
03.09.19
✎
21:57
|
172.30.10.155 ...да уж, так делать низззя.
|
|||
73
Ёпрст
03.09.19
✎
21:58
|
хотя бы проксей прикрыть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |