Выгрузку данных в АИТС мы сделали, но там куча вопросов по работе с системой.
Я написал разработчикам письмо такого плана, жду ответа:
Сейчас рассматриваем выгрузку информации по сырью.
1. Если мы выгружаем данные через веб-сервисы, мы указываем номер GUIN для идентификации партий. Если данные о партии заполняет оператор вручную, то система требует "номер партии", что правильно указывать в этих двух случаях? Есть ли связь между заполненными партиями вручную и выгруженными через веб-сервисы (информация попадает в одну и туже таблицу)? В реестре партий не видна информация выгруженная через веб-сервисы.
2. Как правильно обновлять данные о лабораторных исследованиях, или любых других показателях, полностью перевыгружаем всю информацию о сырье?
4. Почему в реестре загрузки не видны показатели указанные для текущей партии? Почему не виден поставщик? Мы указывали "Физический вес:6250", а видим количество "1".
5. Есть ли список с обязательными показателями для заполнения по сырью, по готовому продукту, по использованным партиям (видимо он важен для синхронизации с Меркурием)?
6. Есть ли возможность удалить тестовые данные, выгруженные нами на тестовый портал?
7. Есть ли форум, для обсуждения насущных проблем с системой?
8. Почему выгрузка данных осуществляется по протоколу http с указанием логина и пароля в строке соединения, на сколько это безопасно?
Почему-то информация по системе доступна после авторизации http://corp.ids.by:81/ что очень странно
И там написано следующее: "Для регистрации на сайте ИС AITS прослеживаемость необходимо прислать заявку (http://airc.by/vp5.html )"
Добрый день. Тоже занимаюсь этим вопросом (делаем для двух мясокомбинатов сейчас).
Могу ответить на некоторые вопросы:
2. Да, надо полностью перегружать информацию по сырью (по конкретному GUIN). Сейчас это можно делать и задним числом. В будущем сделают так, чтобы можно было вносить и обновлять только в течение дня.
5. Списка обязательных показателей нет. Как мне ответил разработчик на вопрос "зачем они вообще нужны и кому?" - ответ "Пока никому". Поэтому список показателей вносится на свое усмотрение.
7. Пока не встречал :) Вопросов уйма просто.
(7)
В показателях скорее всего должен быть указан белок, жир и т.д. для входящего сырья, и скорее всего лабораторные исследования (на что проверяли и какие результаты )
Ещё должна быть связь между партиями сырья, которое нам отгрузили и то что мы у себя приходуем.. всякие там туши должен поставщик заполнять..
1.- Если сырье заполнять вручную Guin можно узнать для последующей автоматической выгрузки сырья в готовой продукции?
- guin узнать нельзя) недавно такой же вопрос был, и я уточнял у начальства вот его ответ: пусть внимательно изучают документацию о системе интерактив и описание вебсервисов. Или всё вводить вручную или через вебсервисы, симбиозов быть не может
2. - Мы сейчас сами заполняем сырье, а будет ли какой-то вариант заполнения когда нам полутуши отправляет производитель и он вносит данные в систему? Отразится ли это у нас?
- Нет. Его это будет продукция например у вас это сырье, вы свое сырье сами должны вносить
- Ясно, сквозной прослеживаемости нет. Спасибо, немного прояснилось.
3.- А нет у Вас желания форум где-то поднять по вопросам внедрения и нюансов заполнения? Как-то документация не самая полная.
- по форуму...если я правильно понял, недавно наш один программист начальную версию выкинул его находиться в любом реестре (сырья, продукции или отгрузок) в правом верхем углу
4.- Почему выгрузка данных осуществляется по протоколу http с указанием логина и пароля в строке соединения, на сколько это безопасно?
- Когда будет сайт боевой будет только использоваться https. Счас если вы хотите с ним работать то: https://corp.ids.by:4433/trace/Sent порт другой для работы с https в тестовом режиме)
Интересует, можно ли получить от сайта отчет (файл, запрос) с информацией, что удалось загрузить, что не загрузилось. Пока программист центра ответил лишь, что можно через requestguid реестра загрузки данных через web-сервисы.
(15) Максим, у меня та же ситуация. Вручную на сайт закачивается XML-файл, а через веб-сервис - никак. Я отправил разработчикам этот баг в четверг, но пока ответ не получил. Они же формат XML-файлов поменяли 3-го мая, в курсе?
(20)Да,в курсе,спасибо. Моя ошибка была в неверном формате даты. Сейчас xml вручную грузится. Теперь. воюю с веб-сервисом, авторизацию прохожу, а дальше не получается. Может кто подскажет.
Процедура АИТС()
oADOStream = СоздатьОбъект("ADODB.Stream");
oADOStream.Type = 1;
oADOStream.Open();
oADOStream.LoadFromFile(ПутьФайл);
Соединение = СоздатьОБъект("WinHttp.WinHttpRequest.5.1");
Соединение.Option(2,"utf-8");
Соединение.Open("get", "http://corp.ids.by:81/trace/services/Auth.svc/auth?login=Bels_mol_kalin&pwd=26102017B", 0);
Соединение.Send();
Авториз=Соединение.ResponseText();
// Сообщить(Авториз);
Если Лев(Авториз,23)<>"{""Status"":""OK"",""Code"":0" Тогда
Предупреждение("Авторизация не пройдена, загрузка осуществляться не будет");
Возврат;
КонецЕсли;
// Сообщить(Авториз);
Токен=Сред(Авториз,33);
Токен=Лев(Токен,СтрДлина(Токен)-1);
// Сообщить(Токен);
Путь="http://corp.ids.by:81/trace/services/TraceabilityPr.svc/insertTraceabilitySyr?action=1&requestGuid="+СокрЛП(Инфо.СоздатьGUID())+"&isinsert=1";
// Сообщить(Путь);
Соединение.Open("post", Путь, 0);
Соединение.SetRequestHeader("AuthToken",Токен);
Соединение.Send(oADOStream);
Если Соединение.Status = 200 Тогда
Сообщить(Соединение.ResponseText);
Иначе
Сообщить("HTTP " + Соединение.Status + " " + Соединение.StatusText);
Возврат;
КонецЕсли;
КонецПроцедуры
(21) Не поверите, та же ошибка была, с форматом даты :) Плохо, что никак, кроме как тщательным сравнением с примером из документации, подобные ошибки не выявить. По приемке файла сервером - те же проблемы. Жду от разработчиков ответ, как получу - отпишусь здесь.
(23)Спасибо, то же веду переписку с разработчиком. Получил тот же ответ. Теперь новая проблема
Прохожу авторизацию, получаю токен авторизации, отправляю пост запрос, приходит ответ, что токен авторизации неверный. Отправил еще письмецо разработчику))).
(25)Добрый вечер, Максим. Пишу сейчас. Регистрация партий сырья через веб-клиент работает. А вы какие уже пакеты данных реализовали? (сырье, продукция, связка партий сырья-продукции, отгрузки?)
(26)Добрый Через веб-клиент пока только поступление сырья. В планах регистрация гот.прод. и отгрузка (пока частично в силу специфики производства). Связку сырья-продукции через веб-клиент пока не делаю. xml-файл у меня формируется, один раз в сутки технолог и в ручную загрузит
Добрый день. Подскажите пожалуйста, может быть кто-то столкнулся. Платформа 8.2. отравляю реестр сырья через метод ОтправитьДляОбработки http-соединения. Попробовала оба варианта отправки и через http-запрос и через файл. Попробовала даже вариант выше для 7.7, поменяв "СоздатьОбъект" на Новый COMОбъект. Все равно постоянно одна и та же ошибка Внутр. ошибка 7. В заголовок добавляю ""Content-Type", "text/xml"". Какие еще могут быть причины? Вручную на портале файл отправляется. Не актуально, решение нашлось.
//Работа с JSON
&НаКлиенте
Функция jsonПрочитатьПлатформой(Значение)
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Значение);
Результат = Неопределено;
СформироватьДерево(ЧтениеJSON, Результат);
ЧтениеJSON.Закрыть();
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура СформироватьДерево(ЧтениеJSON, Дерево)
ИмяСвойства = Неопределено;
Пока ЧтениеJSON.Прочитать() Цикл
TипJSON = ЧтениеJSON.ТипТекущегоЗначения;
Если TипJSON = ТипЗначенияJSON.НачалоОбъекта
ИЛИ TипJSON = ТипЗначенияJSON.НачалоМассива Тогда
НовыйОбъект = ?(TипJSON = ТипЗначенияJSON.НачалоОбъекта, Новый Соответствие, Новый Массив);
Если ТипЗнч(Дерево) = Тип("Массив") Тогда
Дерево.Добавить(НовыйОбъект);
ИначеЕсли ТипЗнч(Дерево) = Тип("Соответствие") И ЗначениеЗаполнено(ИмяСвойства) Тогда
Дерево.Вставить(ИмяСвойства, НовыйОбъект);
КонецЕсли;
СформироватьДерево(ЧтениеJSON, НовыйОбъект);
Если Дерево = Неопределено Тогда
Дерево = НовыйОбъект;
КонецЕсли;
ИначеЕсли TипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
ИначеЕсли TипJSON = ТипЗначенияJSON.Число
ИЛИ TипJSON = ТипЗначенияJSON.Строка
ИЛИ TипJSON = ТипЗначенияJSON.Булево
ИЛИ TипJSON = ТипЗначенияJSON.Null Тогда
Если ТипЗнч(Дерево) = Тип("Массив") Тогда
Дерево.Добавить(ЧтениеJSON.ТекущееЗначение);
ИначеЕсли ТипЗнч(Дерево) = Тип("Соответствие") Тогда
Дерево.Вставить(ИмяСвойства, ЧтениеJSON.ТекущееЗначение);
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Процедуры и фунции работы с web-сервисом
Функция ОтправитьHTTPЗапрос(Хост, Ресурс) Экспорт
Соединение = Новый HTTPСоединение(Хост);
Заголовки = Новый Соответствие;
Заголовки.Вставить("host", Хост);
Запрос = Новый HTTPЗапрос(Ресурс, Заголовки);
Ответ = Неопределено;
Попытка
Ответ = Соединение.Получить(Запрос);
Исключение
Сообщить(ОписаниеОшибки(), Статуссообщения.ОченьВажное);
КонецПопытки;
Возврат Ответ;
КонецФункции
Процедура ВыполнитьАвторизацию() Экспорт
Если СтруктураНастроек = Неопределено Тогда
Сообщить("Настройки заданы не верно!", СтатусСообщения.Внимание);
Возврат;
КонецЕсли;
Если НЕ ПустаяСтрока(Токен) Тогда
Сообщить("Авторизация уже пройдена!", Статуссообщения.Информация);
Возврат;
КонецЕсли;
Порт = СтруктураНастроек.ПортСервера;
Хост = СтруктураНастроек.АдресСервера + ":" + Порт;
Логин = СтруктураНастроек.Логин;
Пароль = СтруктураНастроек.Пароль;
Ресурс = "/trace/services/Auth.svc/auth?login=" + Логин + "&pwd=" + Пароль;
Ответ = ОтправитьHTTPЗапрос(Хост, Ресурс);
Если Ответ <> Неопределено Тогда
СтруктурированныйОтвет = jsonПрочитатьПлатформой(Ответ.ПолучитьТелоКакСтроку());
ПредставлениеОтвета = СтруктурированныйОтвет.Получить("Status");
КодОтвета = СтруктурированныйОтвет.Получить("Code");
Токен = СтруктурированныйОтвет.Получить("Data");
Если ПредставлениеОтвета = "OK" Тогда
Сообщить("Авторизация пройдена успешно", СтатусСообщения.Информация)
Иначе
Сообщить ("Авторизация не пройдена, " + "Код ошибки: " + КодОтвета, Статуссообщения.Внимание);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
На 8-ке тоже все заработало, спасибо Максиму.
Поменял 2 строчки:
oADOStream = Новый COMОбъект("ADODB.Stream");
Соединение = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
Иногда вываливается на ошибке: Некорректный AuthToken, но с раза 3-го проходит
подскажите пожалуйста!
Где можно получить документацию (если она есть) по работе с сервисом (получение-отправка)?
На сайте corp.ids.by информации не нашел...
(34) Да там, по правде говоря, много что хромает. Недавно поймал ошибку сервера насчет неверной длины поля. Банальная вещь, которую предусмотрел бы, если бы она была описана в документации. И статусы эти - зачем введены статусы, если в статусе с кодом 0 (ОК) поле Data может содержать текст ошибки? В общем, жесть.
благодарю, с токеном попробую, еще основной вопрос по этой системе а где взять guin партии если предприятие посредник и у поставщиков с этими данными сложно? насколько понимаю без guin партии по вебсервису не пропускает загрузку отгрузок?
(39) Может это и не совсем корректно, но можно поступление от поставщика зарегистрировать как реестр сырья с номером партии поставщика. Затем этот же товар в реестре продукции, присвоив ему guin и свой номер партии или тот же что у поставщика. выгрузить данные сырье на продукцию со связкой один к одному. И потом реестр отгрузок со своим guin-ом.
(40) спасибо за мысль, только наверное просто партию продукции зарегестрировать т.к. с сырьем еще сложнее там тип животного, номер паспорта животного нужен и т.д. а зарегистрировать партию под предприятием посредником по данным вроде как можно другое дело насколько оно корректно
в общем по моему вопросу все норм, оказывается в системе есть еще не задокументированный функционал и если ГУИН партии неизвестен то вместо него нужно добавлять тег ГЛН производителя и поиск идет по дате и номеру партии, разработчики этот момент обещали вскорости в документацию добавить
Доброе время суток, много уважаемые!
Начинаю разрабатывать обмен данными между AITS и 1С, может кто может поделится процедурами выгрузки и загрузки данных в и из AITS.
Буду очень благодарен!
Кто знает, с разработчиками вообще реально связаться? Пробовал писать им на электронную почту - полный игнор. Или уже только через официальный запрос всё делать нужно?
(51)Если не секрет, куда (на чьё имя) нужно писать? Пробовали через форму электронных обращений на airc, но она сломана и чинить, похоже, никто не собирается. Районные представители AITS ничего не знают и не хотят заморачиваться, но и контактов вышестоящих не дают, поскольку всё должно проходить через них.
(53) Заходите к ним на портал в раздел https://trace.by/Download/Index Качаете файл:
"ОПИСАНИЕ ВЕБСЕРВИСОВ ПЕРЕДАЧИ ДАННЫХ О ПРОДУКЦИИ В ИС AITS Прослеживаемость 20_01_2020.docx"
На последней странице есть их данные:
контактная информация специалистов ГП ЦСИ
Здравствуйте. Интересует обмен данными 1С77 и AITS. Можете помочь с доработкой программы или может есть готовые обработки. Готов рассмотреть различные варианты сотрудничества. 6942812*tut.by
(57)У меня тоже, например создали 20 ТТН, к ним создается 20 файлов по отгрузке продукции в формате xml, которые потом каждый вручную загружается на портале в АИТС. Вот как их загрузить по примеру ЭСЧФ, через обработку?
(60)
1. делаете guid отправки под каждый файл, сохраняете где-то
2. отправляете все файлы
3.проверяете по ранее сохраненным guid статус файла на портале.
4. если есть ошибки, исправляете и начинаете с пункта 1.
Всем доброго дня.
Кто сталкивался с "<Status>Некорректный AuthToken</Status>", хотя PwTyDq7hPBd4ZjELaXfZFwWdgCvF3ySX5lwz\/r3BGME генерированный и получен.
{"Status":"OK","Code":0,"Data":"c4ehw7pu3rrZnJDGNf\/R2Qet15GEUG17vvlob45smRE="}, в качестве токена, нужно использовать "c4ehw7pu3rrZnJDGNf\/R2Qet15GEUG17vvlob45smRE", так ведь?
(69)= видимо тоже. У меня все привыкли отправлять до тех пор пока не отправится.
Попробуйте прописать в полученном токене замену текста "\/" на "/"
СтрЗаменить(ТекстТокена,"\/","/")
Это проверяли? Я не помню добавил ли себе этот код...
Я пробовал, токен генерируется каждый раз, при нажатии, так или иначе, не работает. Я связывался с тех поддержкой AITS, по планам проверить могут в понедельник. Но я подумал мало ли, кто то сталкивался с такой же проблемой.
1. Да, символ "=" должен быть.
2. СтрЗаменить(ТекстТокена,"\/","/") должно быть
И новая ошибка, <Status>Некорректные входные данные: Идентификатор запроса 'RequestGuid' не является уникальным</Status>, хотя в параметрах указано что это обновление.
Для ы=1 По 10 Цикл
Если ы>1 Тогда
Пауза(2000);
КонецЕсли;
Протокол=ПолучитьПротокол(Уник);
Если Протокол=1 Тогда
УспешноОтправлено=1;
//****тут я помечаю документ как успешно отправленный и прочие полезные действия
Прервать;
ИначеЕсли Протокол=-1 Тогда //***это если известная мне ошибка
Прервать;
КонецЕсли;
КонецЦикла;
//****как-то так отправляю файл
Функция Послать(АдресСайта)
ТекстИзФайла=ПрочитатьФайл(ФайлВыгрузки);
//Сообщить(АдресСайта);
//WinHttp=СоздатьОбъект("MSXML2.ServerXMLHTTP");
//WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1");
Если AuthToken="" Тогда
WinHttp.Open("GET", Портал+"services/Auth.svc/auth?login="+СокрЛП(Login)+"&pwd="+СокрЛП(Password), 0);
WinHttp.Send();
Если WinHttp.Status = 200 Тогда
Зн=WinHttp.ResponseText;
//позДата=Найти(Зн,"Data")+7;
//AuthToken=сред(Зн,позДата,СтрДлина(Зн)-позДата-1);
СписJSON=глРазборJSON(Зн);
Статус=СписJSON.Получить("Status");
КодОшибки=Число(СписJSON.Получить("Code"));
AuthToken=СписJSON.Получить("Data");
Если КодОшибки<>0 Тогда
Сообщить(Отступ+"AuthToken:Ошибка-"+КодОшибки+"; Status-"+Статус,"!");
Возврат -1;
КонецЕсли;
//Сообщить(Зн);
//Сообщить("AuthToken:"+AuthToken);
Иначе
Сообщить(Отступ+"Ошибка получения AuthToken","!");
Сообщить(Отступ+"HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
Возврат -1;
КонецЕсли;
КонецЕсли;
//Может надо выждать паузу, иногда отвечает что AuthToken не верный..
Пауза(1000);
//WinHttp.Option(2,"UTF-8");
WinHttp.Open("POST", АдресСайта, 0);
WinHttp.setRequestHeader("Content-Type", "text/xml");
WinHttp.SetRequestHeader("AuthToken", AuthToken);
WinHttp.SetRequestHeader("isinsert", 0);
WinHttp.Send(ТекстИзФайла);
//Сообщить("StatusText:"+WinHttp.StatusText);
//Сообщить("Status:"+WinHttp.Status);
Зн=WinHttp.ResponseText;
ОтветОтСервиса=Зн;
//Зн=ПреобразоватьСтрокуИзУТФ8(Зн);
//ВвестиЗначение(Зн,,"Строка");
//пытаемся получить статус из сообщения
зн=ПолучитьОтвет(Зн);
//Некорректный AuthToken
//Некорректные входные данные: Идентификатор запроса 'RequestGuid' не является уникальным
ЛегкоеСообщение(Отступ+Зн+" отправка xml");
ФайлВыгрузкиAnswer=Лев(ФайлВыгрузки,СтрДлина(ФайлВыгрузки)-3)+"Answer";
Текст=СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(Зн); //Обработанный ответ
Текст.ДобавитьСтроку(ОтветОтСервиса); //Ответ исходный
Текст.Записать(ФайлВыгрузкиAnswer); //***кодировка возможно левая..
Если WinHttp.Status = 200 Тогда
Если СокрЛП(Зн)<>"OK" Тогда
Сообщить(Отступ+WinHttp.ResponseText);
Возврат 0;
КонецЕсли;
КонецЕсли;
Возврат 1;
КонецФункции
Был косяк с нашей стороны, я думал что requestGuid, должен быть таким же как и исходном файле, а по факту, он генерируется, при каждой выгрузке. Всё работает, проверял.
Boris_1c, Спасибо за обратную связь.
СокрЛП(Соединение.StatusText) = "Method Not Allowed", но я так понимаю, что мы не верный мето используем для отправки текста запроса, по статусу ответ 405
Добрый день. Подскажите насколько корректно на текущий момент работает программа AITS? Все выгрузки через веб сервис у нас настроены и достаточно большой период времени все работало без нареканий. Последнее время начало лагать. Не залетают файлы на портал. Причем характер "не залетов" не определен. Может день работать нормально. А может застрять и хоть ты тресни. С процедурой авторизации разбирались. Без нареканий. Птицы и символы все заменены. Работаем в 1С 77. Загоняем пакет накладных на водителя в форму и делаем загрузку всех файлов .xml на портал.
Первоначально говорили что "мол посмотри параметры INSERT и UPDATE. Если ТТН уже прогружена то UPDATE, иначе INSERT". Исправил. Какое то время работало без проблем. Сегодня опять проблемы. Такое подозрение что сервера у них просто не выдерживают огромный поток информации (ведь для 1 ТТН создается файл сырья,партии,связки между ними и отгрузка). Также информации у кого есть отправка через 1С они не дают. Говорят мол " у всех работает...". Еще был прикол как то. Звонили на организацию с вопросом как у вас работает данная система. Говорят отлично работает. Хорошо хоть присутствовал при разговоре - спросил как отправляют. Говорят - вручную на портале набираем))))))). Вот и работа системы.
Подскажите у кого как организована отправка файлов на АИТС. Очень интересно, т.к. косяков в этой системе похоже еще хватает.
(84)Добрый день.
Я отправляю по одной накладной за 3 условных этапа.
1. Проверяю все что произвели, смотрю исходное сырье. Если из сырья что-то не выгрузили, выгружаю его и помечаю в базе как отправленное, проверяю на каждую накладную поступления ответ от портала.
2. Оправляю пакетом все что произвели и какое сырье использовано. Проверяю ответ на каждый документ производства и списания сырья (вывожу в виде таблички дабы люди проверили, обычно ошибки мне приходится анализировать но это редко).
3. Отправляю накладную и проверяю ответ от портала.
Проверяйте после каждой отправки сообщения по guid отправки