Имя: Пароль:
1C
 
1С и API ЧЗ
0 ChMikle
 
07.11.25
09:46
Добрый день. Кто-нибудь не реализовывал следующую задачу. По API из ЛК ЧЗ выбирать товар с подходящим сроком годности и формировать соответствующий документ вывод из оборота, для дальнейшего его вывода ?
1 MWWRuza
 
гуру
07.11.25
11:17
Там не все так просто...
По API можно получить сроки годности, но по списку марок, вообще нет проблем. На вход этого запроса нужно передать этот список. А вот тут проблема... Где этот список взять?
ЧЗ не отдает список марок по API... Там только через "выгрузку" можно получить. Тоесть, по API мы заказываем выгрузку по нужным нам критериям, и в ответ, через какое-то время(как заблагорассудится ЧЗ), прилетает сформированный файл-выгрузка, с запрошенными данными. С ним уже можем работать, его загружать и брать из него нужные нам данные. Тоесть, это не совсем по API получается.
Но, в принципе, можно реализовать.
2 mishaPH
 
07.11.25
11:22
(1) ну список марок же должен быть известен. вы же товар откуда то получали
3 ChMikle
 
07.11.25
11:27
(1) суть в том , чтобы автоматически выводить из оборота просроченную продукцию
4 Табуретко
 
07.11.25
11:41
https://infostart.ru/1c/articles/1506206/
см. 7 комментарий
5 timurhv
 
07.11.25
12:49
(4) осталось вернуться в 2021 год, чтобы метод работал
6 timurhv
 
07.11.25
12:54
5.1.1. Метод получения информации о списке КИ по заданным фильтрам
/api/v4/true-api/cises/search

Можно передать в параметрах отбор по дате производства, GTIN и тд, но дату окончания срока годности - нет.
7 ChMikle
 
07.11.25
14:14
Печально
8 Маленький Вопросик
 
07.11.25
14:34
Товарищи подскажите, здесь какой токен можно использовать?

 &НаКлиенте
Функция СвойствоКМ(ТокенДоступа)
            
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый СертификатыУдостоверяющихЦентровОС());

    HTTPСоединение = Новый HTTPСоединение("markirovka.crpt.ru",443,,,,60,ЗащищенноеСоединение);

    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/json; charset=UTF-8");
    ЗаголовокHTTP.Вставить("Accept", "application/json");
    ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
    ЗаголовокHTTP.Вставить("Authorization",   "Bearer " + ТокенДоступа);
        
    ПараметрыURL = Новый Массив;         ///Отбор запроса
    ПараметрыURL.Добавить("pg=milk");                               ///Группа - молочная продукция
    ПараметрыURL.Добавить("cisStatus=EMITTED");               ///Статус - Эмитирован.Выпущен
    ПараметрыURL.Добавить("limit=20");                              ////Лимит списка - 20 
    
    
    ///api/v3/true-api/cises/listV2?pg=milk&cisStatus=EMITTED&limit=999
    URLЗапроса = СтрШаблон("/api/v3/true-api/cises/listV2?%1",СтрСоединить(ПараметрыURL, "&"));
    
    HTTPЗапрос  = Новый HTTPЗапрос(URLЗапроса, ЗаголовокHTTP);
        
    Ответ = HTTPСоединение.Получить(HTTPЗапрос);
    
    ИДДок = Ответ.ПолучитьТелоКакСтроку();

    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(ИДДок);
    
    РезультатРазбора = ПрочитатьJSON(Чтение, ложь);
        
    
    Возврат РезультатРазбора;
    
КонецФункции 
9 ProxyInspector
 
07.11.25
14:39
(6) Получи список марок с датой производства ранее, чем несколько месяцев, а потом по этому списку получи список марок, у которых истек срок годности. Опять же через ЧЗ
10 timurhv
 
07.11.25
14:49
(9) В больших организациях не подойдет, надо будет еще отборы накладывать, т.к. можно получить не больше 10млн марок, поэтому:
+ productGroups (отобрать группы товаров, по которым просроченным марки могут висеть)
+ status (добавить без выбывших)

Если марок очень много, то тогда только отбирать дополнительно по всем датам производства в цикле (по периодам в 1 мес, 3 мес)
2024-01-01 - 2024-01-31
...
2024-09-01 - 2024-12-31
и тд
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.