Примеры работы с API в Честный знак (обувь)

Публикация № 1236219 15.05.20

Учет и отчетность - Розничная торговля

Честный знак API ЧЗ 1C

К сожалению, документация API честного знака полна пробелов и неточностей. В данной статье описан мой опыт отгрузки маркированных товаров с одного юр. лица на другое.

Для начала вы должны быть зарегистрированы в Честном знаке(https://shoes.crpt.ru/) и иметь сертификат для входа. Честный знак нам предлагает воспользоватся инструкцией по ссылке https://shoes.crpt.ru/docs/API_Track_and_Trace_Government_Information_System_v18_en.pdf она вам поможет, но обращайте внимание, что там довольно много неточностей и устаревших данных.

Начнем с того что нам нужно получить токен для работы с API честного знака. Для этого нам нужно сделать GET запрос в ответ на который мы получим поля GUID(Уникальный идентификатор) и DATA(Данные).

GET Запрос из 1с выглядит следующим образом: 

    сайт = "ismp.crpt.ru";
	хСоединение =    Новый HTTPСоединение(Сайт,443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Запрос = новый HTTPЗапрос("/api/v3/auth/cert/key");
	хОтвет = хСоединение.ВызватьHTTPМетод("GET",Запрос);
	
	Если хОтвет.КодСостояния <> 200 Тогда
		
		Сообщить("Ошибка. Код ответа " + хОтвет.КодСостояния);
		
		Возврат;
	КонецЕсли;
	Сообщение = хОтвет.ПолучитьТелоКакСтроку("UTF-8"); 
	
	//десериализуем данные о клиенте из JSON 
	ЧтениеJSON = Новый ЧтениеJSON; 
	ЧтениеJSON.УстановитьСтроку(Сообщение); 
	ОборудованиеJSON = ПрочитатьJSON(ЧтениеJSON); 
	ЧтениеJSON.Закрыть();
	УИД = ОборудованиеJSON.uuid;
	Данные = ОборудованиеJSON.data;
	Файл = Новый ЗаписьТекста("C:\1\test.txt");
	Файл.ЗаписатьСтроку(Данные);
	Файл.Закрыть();	

Данные нам необходимо подписать нашей электронной подписью и прислать в ответ ЧЗ. Для того что бы подписать данные воспользуемся сайтом КриптоПРО https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html Там нам нужно выбрать наш сертификат, а  в поле "Данные для подписи" вставить полученные данные(в моем случае текст из файла test.txt). 

Сформированную подпись копируем в текстовый файл и с помощью Notepad избавляемся от пробелов и переносов строки. Выделяем весь текст жмем Ctrl+H в поле поиска пишем \n затем \r поле замены оставляем пустым. Жмем заменить все.

GUID и текст из получившегося файла нам нужно отправить POST запросом в ЧЗ.

Процедура ПолучитьТокенНаСервере()
	Текст = Новый ТекстовыйДокумент;
	ПолноеИмяФайла = "C:\1\out.txt";
	Текст.Прочитать(ПолноеИмяФайла);
	КоличествоСтрок = Текст.КоличествоСтрок();
	Данные = "";
	Для Счетчик = 1 по КоличествоСтрок Цикл
		ТекСтрока = Текст.ПолучитьСтроку(Счетчик);
		Данные = Данные + ТекСтрока;
	КонецЦикла;
	Соединение = Новый HTTPСоединение("ismp.crpt.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Заголовки = Новый Соответствие;
	
	Заголовки.Вставить("Content-Type", "application/json; charset=UTF-8");
	Заголовки.Вставить("Accept", "application/json");
	
	Запрос = Новый HTTPЗапрос("/api/v3/auth/cert/",Заголовки);
	ЗаписьJOIN = Новый ЗаписьJSON;
	ЗаписьJOIN.УстановитьСтроку();
	ДанныеДляЗапроса = Новый Структура;
	ДанныеДляЗапроса.Вставить("uuid",УИД);
	ДанныеДляЗапроса.Вставить("data",Данные);	
	ЗаписатьJSON(ЗаписьJOIN,ДанныеДляЗапроса);
	СтрокаДляЗапроса = ЗаписьJOIN.Закрыть();
	
	//Формируем ответ клиенту
	Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса,КодировкаТекста.UTF8,
	ИспользованиеByteOrderMark.НеИспользовать);
	
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
	Если Ответ.КодСостояния <> 200 Тогда
		
		Сообщить("Ошибка. Код ответа " + Ответ.КодСостояния);
		ЧтениеJSON = Новый ЧтениеJSON;
		Сообщение = Ответ.ПолучитьТелоКакСтроку("UTF-8");
		ЧтениеJSON.УстановитьСтроку(Сообщение); 
		СообщениеJSON = ПрочитатьJSON(ЧтениеJSON); 
		ЧтениеJSON.Закрыть();
		Сообщить(СообщениеJSON.error_message);
		
		Возврат;
	КонецЕсли;
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
	
	Токен = ПрочитатьJSON(ЧтениеJSON, Ложь).token;				
	
КонецПроцедуры

В ответ мы получим токен который нужно будет использовать в любых дальнейших запросах.

После получения токена можно использовать любые методы работы с документами и маркировками описанными в документации. Вот мой пример получения маркировок находящихся в обороте. 

сайт = "ismp.crpt.ru";
	хСоединение =    Новый HTTPСоединение(Сайт,443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Запрос = новый HTTPЗапрос("/api/v3/facade/identifytools/listV2?cisStatus=INTRODUCED&limit=10000");
	запрос.Заголовки.Вставить("Authorization","Bearer "+Токен);
	хОтвет = хСоединение.ВызватьHTTPМетод("GET",Запрос);	
	Если хОтвет.КодСостояния <> 200 Тогда
		
		Сообщить("Ошибка. Код ответа " + хОтвет.КодСостояния);
		ЧтениеJSON = Новый ЧтениеJSON;
		Сообщение = хОтвет.ПолучитьТелоКакСтроку("UTF-8");
		ЧтениеJSON.УстановитьСтроку(Сообщение); 
		СообщениеJSON = ПрочитатьJSON(ЧтениеJSON); 
		ЧтениеJSON.Закрыть();
		Сообщить(СообщениеJSON.error_message);
		Возврат;
	КонецЕсли;
	Сообщение = хОтвет.ПолучитьТелоКакСтроку("UTF-8"); 
	
	//десериализуем данные о клиенте из JSON 
	ЧтениеJSON = Новый ЧтениеJSON; 
	ЧтениеJSON.УстановитьСтроку(Сообщение); 
	ОборудованиеJSON = ПрочитатьJSON(ЧтениеJSON); 
	ЧтениеJSON.Закрыть();
	Результат = ОборудованиеJSON.results;
	Для Каждого Строка Из Результат Цикл
		НоваяСтрока = ТаблицаВыбывших.Добавить();
		НоваяСтрока.Маркировка = Строка.cis;		
	КонецЦикла;

Теперь нам необходимо отгрузить маркировки другому юр.лицу. Изначально я пытался создать документ с помощью API в формате JSON, но постоянные ошибки заставили меня сделать это через XML. Выглядело это следующим образом. Сначала я создаю JSON документ 

	РеквизитыДокумента = Новый Структура;	
	РеквизитыДокумента.Вставить("trade_participant_inn_sender",ИННСобственника);   //ИНН собственника
	РеквизитыДокумента.Вставить("trade_participant_inn_receiver",ИННПолучателя); //ИНН получателя
	РеквизитыДокумента.Вставить("trade_participant_inn_owner",ИННСобственника);   //ИНН собственника
	РеквизитыДокумента.Вставить("transfer_date",Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy")); //Дата передачи маркированных товаров
	РеквизитыДокумента.Вставить("move_document_number",НомерДокумента); //Номер первичного документа	
	РеквизитыДокумента.Вставить("move_document_date",Формат(ДатаДокумента,"ДФ=dd.MM.yyyy")); //Дата первичного документа
	РеквизитыДокумента.Вставить("turnover_type","SELLING");   //Код типа отгрузки		                  	
	Товары = Новый Массив;
	Для Каждого Строка ИЗ ТаблицаМаркировок Цикл
		Отбор = Новый Структура;
		Отбор.Вставить("Маркировка",Строка.Маркировка);	
		Если ТаблицаВыбывших.НайтиСтроки(Отбор).Количество() > 0 Тогда
			СтруктураТоваров = Новый Структура;
			СтруктураТоваров.Вставить("ki","<![CDATA["+Строка.Маркировка+"]]>"); //Уникальный идентификатор товара
			СтруктураТоваров.Вставить("cost",Строка.Цена); 
			СтруктураТоваров.Вставить("vat_value",Строка.НДС); 	
			Товары.Добавить(СтруктураТоваров);
		КонецЕсли;	
	КонецЦикла;
	РеквизитыДокумента.Вставить("product",Товары);   //ИНН собственника
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.ОткрытьФайл("C:\1\pills.json");
	ЗаписатьJSON(ЗаписьJSON,РеквизитыДокумента);
	ЗаписьJSON.Закрыть();	

На структуру полей можно ориентироваться с помощью документации и данного шаблона XML

<?xml version="1.0" encoding="UTF-8"?>
<shipment version="4" action_id="10">
    <trade_participant_inn_sender>6317136467</trade_participant_inn_sender>
    <trade_participant_inn_receiver>7721546864</trade_participant_inn_receiver>
    <trade_participant_inn_owner>6317136467</trade_participant_inn_owner>
    <transfer_date>05.12.2019</transfer_date>
    <move_document_number>123</move_document_number>
    <move_document_date>05.12.2019</move_document_date> <!-- Комментарий -->
    <turnover_type>SELLING</turnover_type>
    <products_list>
        <product>
            <ki><![CDATA[0147012334793726213D6uKeCK7LtuO]]></ki>
            <cost>33030.5</cost>
            <vat_value>270.85</vat_value>
        </product>
    </products_list>
</shipment>

Полученный JSON файл мы загружаем в конвентер JSON-XML. Я использовал этот https://www.convertjson.com/json-to-xml.htm Он немного криво конвентирует поэтому после конвертации приводим вид файла по шаблону. 

Полученный xml файл нам остается загрузить в честный знак. Для этого заходим в список документов в ЧЗ. Внизу нажимаем кнопку загрузить, выбираем пункт отгрузка и загружаем наш XML файл. После успешной загрузки без единой ошибки другое юр. лицо может принят себе отгруженные маркировки с помощью создания документа приемки.

Обработка тестировалась на платформе: 8.3.11.3034.

Скачать файлы

Наименование Файл Версия Размер
Пример выгрузки маркировок в ЧЗ

.epf 9,66Kb
41
.epf 9,66Kb 41 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. SeTIrk 29.06.20 09:09 Сейчас в теме
Извините, а разве отгрузка и приемка не через ЭДО идет?
Я считал что в ЭДО подписанный документ с двух сторон отправляется в Честный Знак силами ЭДО. Важно в ЭСФ передать в полях ДопСведТов.НомСредИдентТов.НомУпак или КИЗ
3. stas8359 20 30.06.20 15:11 Сейчас в теме
(1)Все правильно. Но есть ситуации, когда нужно получить или выгрузить данные через Api ЧЗ.
11. EdBush 20.07.20 10:10 Сейчас в теме
Функция ПодписатьЭЦПЧерезСОМОбъекты(СтрокаДляПодписи, СтрокаВBase64 = Истина, Открепл) Экспорт
    
    Попытка
        comStore = Новый COMОбъект("CAdESCOM.Store");
        comCPSigner = Новый COMОбъект("CAdESCOM.CPSigner"); // Аналог "CAPICOM.Signer".
        comSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
    Исключение
        Сообщить("Не установлен КриптоПро!");
        Возврат "";
    КонецПопытки;
    
    comStore.Open(
        2, // StoreLocation - CAPICOM_CURRENT_USER_STORE.
        "MY", // StoreName
        ); // OpenMode - CAPICOM_STORE_OPEN_READ_ONLY.
    comCertificates = comStore.Certificates;
    comStore.Close();
    comStore = Неопределено;
    КоличествоСертификатов = comCertificates.Count;
    
    Если КоличествоСертификатов > 0 Тогда
        // Убрать "сертификаты, в которых отсутствует закрытый ключ".
        comCertificates = comCertificates.Find(6, 2); // (CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY, CAPICOM_PROPID_KEY_PROV_INFO)
        КоличествоСертификатов = comCertificates.Count;
    КонецЕсли;
    Если КоличествоСертификатов > 0 Тогда
        // Оставить "только сертификаты, действительные в настоящее время".
        comCertificates = comCertificates.Find(9, ); // (CAPICOM_CERTIFICATE_FIND_TIME_VALID, "the current time is assumed")
        КоличествоСертификатов = comCertificates.Count;
    КонецЕсли;
    
    Если КоличествоСертификатов = 1 Тогда
        comСертификат = comCertificates.Item(1); // Выбрать единственный.
        
    ИначеЕсли КоличествоСертификатов = 0 Тогда
        comCertificates = Неопределено;
        comCPSigner = Неопределено;
        comSignedData = Неопределено;
        Сообщить("Не найдены актуальные ключи ЭЦП для подписи данных!");
        Возврат "";
        
    Иначе
        СертификатыДляВыбора = Новый СписокЗначений;
		флНашли = Ложь;
		Для i = 1 По КоличествоСертификатов Цикл 
			СертификатыДляВыбора.Добавить(i, comCertificates.Item(i).SubjectName);
			comСертификат = comCertificates.Item(i);
			Если (Найти(comСертификат.SubjectName,"ИНН="+Док.Фирма.ИНН)>0) ИЛИ
				(Найти(comСертификат.SubjectName,"ИНН=00"+Док.Фирма.ИНН)>0) Тогда
				флНашли = Истина;
				Прервать;
			КонецЕсли;
            
        КонецЦикла;
		Если НЕ флНашли Тогда
			i = СертификатыДляВыбора.ВыбратьЭлемент();
			Если i = Неопределено Тогда
				comCertificates = Неопределено;
				comCPSigner = Неопределено;
				comSignedData = Неопределено;
				Сообщить("Не выбран ключ ЭЦП!");
				Возврат "";
				
			Иначе
				comСертификат = comCertificates.Item(i.Значение); // Выбрать указанный пользователем.
				
			КонецЕсли;
		КонецЕсли;
        
    КонецЕсли;
    comCertificates = Неопределено;
    
    comCPSigner.Certificate = comСертификат;
    // + Что-то из этого может быть нужным.
//    comCPSigner.TSAAddress = "http://cryptopro.ru/tsp/";
//    comCPSigner.Options = 0; // CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT. Ещё есть CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN и CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY.
    // -
    comСертификат = Неопределено;
    
    Если СтрокаВBase64 Тогда // Очень важно!
        comSignedData.ContentEncoding = 1; // CADESCOM_BASE64_TO_BINARY
    //Иначе // Так и остаётся 0 - CADESCOM_ENCODE_BINARY
    КонецЕсли;
    comSignedData.Content = СтрокаДляПодписи;
    ПодписанныеДанные = comSignedData.SignCades(
        comCPSigner, // Signer
        1, // CadesType, CADESCOM_CADES_BES.
        Открепл, // bDetached - "флаг открепленной подписи (исходное сообщение не включается в итоговый CMS-контейнер)".
        ); // EncodingType - по умолчанию CAPICOM_ENCODE_BASE64.
    
    comCPSigner = Неопределено;
    comSignedData = Неопределено;
    Возврат УбратьСимволы1013(ПодписанныеДанные);
    
КонецФункции
Показать
user1049861; clev; +2 Ответить
2. serko8547 99 29.06.20 14:32 Сейчас в теме
а есть пример запроса API по сигаретам?
maksa2005; +1 Ответить
4. stas8359 20 30.06.20 15:12 Сейчас в теме
(2)Нет, работал только с обувью.
5. user1430516 01.07.20 19:05 Сейчас в теме
Каждый раз нужно возится с сертификатом, или можно как то автоматически подписать данные? Токен, как я понял, живет только 10 часов.
maksa2005; +1 Ответить
6. yursa26 11.07.20 11:39 Сейчас в теме
А есть вариант отправки документа отгрузки запросом ч/з АПИ, а не руками на сайте?
8. maksa2005 355 15.07.20 10:43 Сейчас в теме
7. maksa2005 355 15.07.20 10:32 Сейчас в теме
Спасибо за развернутую документацию
10. EdBush 20.07.20 10:09 Сейчас в теме
ТелоЗапроса = Новый Структура;
	ТелоЗапроса.Вставить("document_num",   СокрЛП(Док.Номер));
	ТелоЗапроса.Вставить("document_date",    ДатаUTC(Док.Дата));//"2019-11-14T00:00:00.000Z");
	ТелоЗапроса.Вставить("transfer_date", ДатаUTC(ТекущаяДата()));//(Док.Дата));
	ТелоЗапроса.Вставить("receiver_inn", СокрЛП(Док.Контрагент.ИНН));
	ТелоЗапроса.Вставить("sender_inn", СокрЛП(Док.Фирма.ИНН));
	ТелоЗапроса.Вставить("turnover_type", "SELLING");
	ТелоЗапроса.Вставить("to_not_participant", "false");
	
	ТелоЗапроса.Вставить("products", Новый Массив);
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	ОтгрузкаСоСкладаТоварыШК.ШК,
	                      |	ОтгрузкаСоСкладаТоварыШК.Номенклатура
	                      |ИЗ
	                      |	Документ.ОтгрузкаСоСклада.ТоварыШК КАК ОтгрузкаСоСкладаТоварыШК
	                      |ГДЕ
	                      |	ОтгрузкаСоСкладаТоварыШК.Ссылка.Основание = &Основание");
	Запрос.Параметры.Вставить("Основание", Док);
	Выб = Запрос.Выполнить().Выбрать();
	Пока Выб.Следующий() Цикл
		СтрокаТЧ = Новый Структура;
		СтрокаТЧ.Вставить("uit_code", СокрЛП(Выб.ШК));
		СтрокаТЧ.Вставить("product_description", СокрЛП(Выб.Номенклатура.Наименование));
		ТелоЗапроса.products.Добавить(СтрокаТЧ);
	КонецЦикла;
	ЗаписьJSON = Новый ЗаписьJSON();
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, "");
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	
	ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
	
	ТекстJSON = ЗаписьJSON.Закрыть();
	
	
	ТекстXML64 = ШтрихкодВBase64(ТекстJSON);
	ПодписанныеДанные = ПодписатьЭЦПЧерезСОМОбъекты(ТекстXML64, Истина, Истина);
	HTTP = Новый HTTPСоединение("ismp.crpt.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL);
	//URLЗапроса = "/api/v3/lk/documents/shipment/create";
	URLЗапроса = "/api/v3/lk/documents/create";
	HTTPЗапрос = Новый HTTPЗапрос(URLЗапроса);
	HTTPЗапрос.Заголовки.Вставить("Content-Type",   "application/json");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Bearer "+СокрЛП(Док.Фирма.ТокенЧЗ));
	
	ТелоЗапроса = Новый Структура;
	ТелоЗапроса.Вставить("product_document", ТекстXML64);
	ТелоЗапроса.Вставить("document_format",  "MANUAL");
	ТелоЗапроса.Вставить("product_group",  "shoes");
	ТелоЗапроса.Вставить("type",  "LP_SHIP_GOODS");
	ТелоЗапроса.Вставить("signature",        ПодписанныеДанные);
	ЗаписьJSON = Новый ЗаписьJSON();
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, "");
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
	
	ТекстJSON = ЗаписьJSON.Закрыть();
	HTTPЗапрос.УстановитьТелоИзСтроки(ТекстJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	Ответ = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
	ИДДок = Ответ.ПолучитьТелоКакСтроку();
	Сообщить(ИДДок);
	ДокОб = Док.ПолучитьОбъект();
	ДокОб.ИдентификаторЧЗ=ИДДок;
	ДокОб.СтатусЧЗ="";
	ДокОб.ОшибкаЧЗ="";
	ДокОб.ДействиеЧЗ="";
	Попытка
		ДокОб.Записать(РежимЗаписиДокумента.Запись);
	Исключение
	КонецПопытки;
Показать
MKozzlik; clev; +2 Ответить
18. MKozzlik 25.09.20 11:46 Сейчас в теме
(10) А если ИДДок получен и код ответа -201, то есть успешно создан документ, где его можно найти в честном знаке? в документах ничего нет, пока тренируюсь на тестовом сервере, то есть demo.lp.crpt.tech
20. Mx00 234 15.10.20 17:16 Сейчас в теме
12. _Enot_ 9 23.07.20 20:40 Сейчас в теме
а в поле "Данные для подписи" вставить полученные данные
А какие данные нам именно нужно скопировать? Возвращает ошибку 500. Подпись не валидна
13. _Enot_ 9 24.07.20 07:41 Сейчас в теме
Разобрался. То что вы получили в файл test. txt нужно скопировать и подписать на сайте крипто про, потом \n и \r заменить все и скопировать получившиеся в out. txt. После этого получаем токен. Автор пожалуйста, в статье укажите конкретнее про это пункт. А так все норм, спасибо, лайк)))
d4rkmesa; +1 Ответить
15. user1075117 02.09.20 21:46 Сейчас в теме
(13) А не можете подсказать, что именно вы добавляете на сайте крипто-про, так как пробовал и из первого кода ОборудованиеJSON.uuid ОборудованиеJSON.data; Возвращает всегда подпись не валидна
16. _Enot_ 9 03.09.20 07:28 Сейчас в теме
(15)То,что получаю в файл test.txt .
14. elephant_x 61 27.08.20 17:28 Сейчас в теме
Было у кого-то такое?
В честный знак захожу без проблем, а при получении токена вот такая ошибка:

Ошибка. Код ответа 400
Организация не зарегистрирована
17. elephant_x 61 10.09.20 13:23 Сейчас в теме
(14) Обращайте внимание тестовый сервер или продуктивный, у меня была в этом проблема)
19. Mx00 234 15.10.20 17:12 Сейчас в теме
в типовых 1С 8 всё есть (и в июне 2020 тоже было), зачем такие сложности?
21. carapuzzz 07.11.20 12:44 Сейчас в теме
(19)
согласен взять любую конфу от 1с за день разобраться не составит труда.
но есть сам апи честного знака это УГ часть функций не работают как нужно, за два месяца работы с ними они уже сменили 2 версии причем функции постоянно устаревают. нужна была функция для получения информации по марке.
непонятно зачем делать несколько функций для одного и того же но, одна функция возвращает данные по марке, другая нет, причем по другой марке все с точностью до наоборот, техподдержка ни разу не ответила.
Выкладываю их описание, написано коряво но разобраться можно.
Прикрепленные файлы:
Описание_API_ГИС_МТ.pdf
22. Mx00 234 07.11.20 15:04 Сейчас в теме
(21) у меня есть описание API :-)
я всё сделал для 1С 7.7 и это несколько сложнее чем для 1С 8.3 т.к. не было примеров
но даже то, что ты тут "наваял" вообще полная хрень - зачем использовать конвентер JSON-XML ?
проще сразу XML формировать !
а уж подпись обрабатывать через блокнот вообще хрень полная...
подумай тем ли ты занимаешься? может пора сменить профессию?!?
23. carapuzzz 07.11.20 16:27 Сейчас в теме
(22)ничего не ваял статья не моя, см кто автор, пост не только для тебя а всем кто хочет докопаться до истины, выложил свежее описание. согласился лишь с тем, что все есть в типовых конфигурациях.
24. Mx00 234 08.11.20 19:06 Сейчас в теме
(23) тогда я не понял зачем мне ответил... да и прикреплять описание смысла нет, т.к. оно есть на сайте ЧЗ
извини за наезд ;-)
27. user112345 17.03.21 12:21 Сейчас в теме
(24) Хм, а можно вопросик любителю типовой, в которой "всё есть"? Допустим, база на облачном арендуемом сервере, доступ в инет закрыт вообще (и не откроют, и даже если попросить, и даже если очень-очень попросить), доступ к установке криптопровайдера на сервере закрыт, доступ к установке сертификатов на сервере закрыт.
Как там с типовой 1С, где всё есть, всё ещё никаких сложностей?
28. Mx00 234 17.03.21 12:59 Сейчас в теме
(27) Хм, не понял сути вопроса. В публикации автор (не я) написал про подключение к ЦРПТ из 1С, а вы меня троллите гипотетической ситуацией "инет закрыт вообще" - у вас весеннее обострение? :-)
29. SnorkL1 17.03.21 14:19 Сейчас в теме
(28) Я не тролю, просто практически в каждой онторе, где мне случалось пересекаться с типовым механизмом ЭДО в конфах 1С, "всё есть" никогда нормально не работало, поэтому коммент типа вашего самого первого под этой статьёй, вызывают у меня слегка негативные эмоции. Их я вам и изложил (частично), можете расценивать это как крик души :)
30. Mx00 234 17.03.21 14:52 Сейчас в теме
(29) а ты кто такой? от куда тут взялся ещё один тролль ? ;-)
31. SnorkL1 17.03.21 18:44 Сейчас в теме
(30) по "всё есть в типовой" сказать было нечего, поэтому сразу перешёл на личности? ;)
32. Mx00 234 17.03.21 19:55 Сейчас в теме
(31) ну честно ответь какое отношение ты имеешь к user112345 ?
а что касается "всё есть в типовой" - то действительно есть, маркировка там есть, а если ты не отличаешь ЭДО от маркировки, то это твои личные трудности. Если ты напишешь чего нет в типовой по маркировке в контексте темы автора, то я ещё смогу что-то ответить, а так считаю тебя троллем с весенним обострением :-)
33. SnorkL1 1 18.03.21 11:58 Сейчас в теме
(32) что за странный вопрос, какое я отношение имею к своему нику, который выбрал совершенно произвольно. Раз система мне дала под ним зарегиться - значит наверное имею, это мой ник теперь на инфостарте, разве нет? А, вижу, кто-то его уже в моем профиле поменял на адрес почты, забавное отношение у администраторов сайта к хранению персональных данным пользователей.

В контексте темы автора, лично к автору я вообще ни одной претензии не предъявил, он как раз молодец, очень подробно написал. Я ответил на твой первый коммент. Может, ЧСВ у тебя плохо влияет на память, так я напомню. Ты спросил у автора, зачем он вообще заморачивался с АПИ Честного знака, если "в типовой всё есть". Любые инструкции по интеграции типовых с Честным знаком первым пунктом включают настройку ЭДО. Это по поводу того. что я "не отличаю ЭДО от маркировки". Я пока только разбираюсь с реализацией функционала маркировок Честный знак (в УТ11.4), поэтому и ищу по форумам ответы на появляющиеся вопросы. Вот, на Мисте нашёл что в принципе маркировки можно не через ЭДО загружать, а вносить вручную. Пока тестирую...
34. Mx00 234 18.03.21 13:33 Сейчас в теме
(33) я вижу, что сообщение 27 написано пользователем user112345, а сообщение 29 написано SnorkL1 и это разные пользователи
Прикрепленные файлы:
36. SnorkL1 1 18.03.21 14:06 Сейчас в теме
(34) писал с одного компа, ничего не менял. С утра вместо user у меня в никнейме отображался адрес электронной почты, поэтому я в профиле его поменял на SnorkL1
35. Mx00 234 18.03.21 13:51 Сейчас в теме
(33) теперь про маркировку:
хорошо, что ты написал про "Я пока только разбираюсь с реализацией функционала маркировок", теперь хоть мне понятен твой уровень претензии :-)
ты не понял вообще сути того, что я написал автору. Автор изобретал собственный велосипед вместо того чтобы разобраться с нормальной реализацией API в типовых и при этом он дал ссылку на документацию на английском языке... видимо он был на той же стадии что и ты сейчас и таких как ты запутает вместо того чтобы помогать ;-)
И тебе советую найти правильные места где брать информацию, а то будешь на мисте узнавать то, что есть на сайте честного знака.
Болтать с тобой я больше не буду, просто очень разный уровень понимания маркировки: то, что для тебя "вау открытие", для меня "блин, так делать нельзя - это не правильно"
37. SnorkL1 1 18.03.21 14:08 Сейчас в теме
(35) ай молодец, почесал своё ЧСВ лишний раз. Пробежался по твоим комментам и публикациям - ну, твой уровень мне тоже понятен, согласен, что дальнейший разговор бессмысленен.
40. yudinvs 2 30.06.21 09:42 Сейчас в теме
(35) Аж противно читать. До чего скатились "программисты". Зачем что то читать, зачем разбираться с документацией - возьми да стащи с типовой и все.... Кстати в 2019 году, когда началась маркировка в типовой вообще ничего не было, а маркировка уже была обязательной для производителя и первого получателя от производителя сигарет. Да и на момент публикации статьи, если я не ошибаюсь в типовой тоже было немного, более менее стабильный релиз вышел уже в июне 20.
Героически написали что то для семерки. Это много проще чем для 8, промеров работы с json и веб запросами для 7.7 в интернете много было задолго до, искать надо правильно. Автор молодец хотя бы в том что разобрался и смог получить результат. Сейчас наверняка уже допилил и взаимодействует с API без необходимости монстров в виде типовых модулей.
41. Mx00 234 30.06.21 10:50 Сейчас в теме
(40) Полностью с тобой согласен - нужно читать документацию, но на родном языке, а не на том на котором ничего не понимаешь :-)
пост автора был написан 15 мая 2020, а не 2019-м году и уже было где посмотреть...
Пост автора про обувь, а не про сигареты, поэтому не знаю зачем ты тут про них написал
Если думаешь, что в 7.7 работать с json и подписью проще, чем в 8.3, то это далеко не так, но ты всё равно останешься при своём мнении :-)
даже здесь на инфостарте если написать поиск "api/v3/auth/cert/", то найдём публикацию
https://infostart.ru/public/1214183/ от 22.03.2020, соответственно в типовых уже был механизм взаимодействия с API с Честный знак о чём я и написал

и ещё раз - мне не понравился ОЧЕНЬ КРИВОЙ подход автора и поэтому я написал, что нет смысла изобретать свой велосипед...
42. yudinvs 2 30.06.21 14:28 Сейчас в теме
(41)Мы с вами на брудершафт не пили, так что не надо мне тыкать.
Я делал и для 7.7 и для 8. В 7.7 получилось быстрее, меньше заморочек. Помню что в 8 были заморочки с битовостью платформы, а так же некоторые релизы не работали нормально с json, В 7 было проще она одна, одной версии.
Про 19 год я говорю не в том смысле когда автор сделал, а в том смысле что 1С с типовыми решениями не успевает вовремя и работать по принципу выйдет в типовой - оттуда вырежу - это подход не верный.
Если вы не помните, то маркировка обуви началась сильно раньше марта 2020 года. с 01.03.20 она должна уже была быть обязательной, но утром 1 марта перенесли,а нужно было быть уже готовыми. Стабильный релиз появился только к июню. При чем тут сигареты? Вы не знали что там один оператор и по сути один API, только местами методы отличаются.
У автора вполне себе нормальный подход, просто он не знал как подписать data. Потом ему подсказали и он исправил. И кому то наверное помог.
43. Mx00 234 30.06.21 15:00 Сейчас в теме
(42) Куда катится мир?!?
почему-то меня в который раз пытаются убедить, что работая в 1С нужно убирать переносы строк в блокноте, а xml получать из json
вы точно про 1С тут со мной общаетесь или это ветка для студентов "как сдать лабораторную работу по информатике" ???
такое можно делать когда сам разбираешься, но выкладывать как публикацию, чтобы все думали "вау как круто!" - это уже слишком :-)
46. yudinvs 2 01.07.21 08:44 Сейчас в теме
(43) А где написано что чел выложил чтобы все думали что круто? По моему это только вы так подумали. Человек не выкладывал готовое решение, просто выложил то что смог сам разобраться, ему тут же подсказали как подписать DATA. Успокойтесь, вашу крутость никто не переплюнет, правда не потому что вы самый крутой, а потому что никому это не нужно.
48. Mx00 234 01.07.21 11:38 Сейчас в теме
(46) "выложил то что смог сам разобраться" - я про это и написал: зачем читать документацию на английском языке и разбираться с тем, что уже есть в типовых?
при этом разбираться "с помощью Notepad"...
44. Mx00 234 30.06.21 15:12 Сейчас в теме
(42) а теперь по делу: у меня в 7.7 есть накладные на ~7000 КИ и при попытке разобрать json в котором ещё есть xml от поставщика все парсеры которые я пробовал зависали, в итоге перед парсингом я вырезаю content в формате xml и только потом разбираю json.
Вопрос: как Вы разбираете json в 7.7 и пробовали ли разбирать большие документы?
45. yudinvs 2 01.07.21 08:42 Сейчас в теме
(44)7000 КИ - это всего 14 коробов. В фуре 700 коробов. Это 350 тысяч КИ. Не смешите. Документы большие.... Разбираем как то...
47. Mx00 234 01.07.21 10:47 Сейчас в теме
(45) Какой парсер используется используете?, хотя я так понимаю, что у ваc в накладной будет всего 700 записей КИТУ, а значит с большими документами вы не работаете и любой парсер сможет разобрать такой json
49. yudinvs 2 01.07.21 15:06 Сейчас в теме
(47) Вот жеж выводы.... Парсер json newtonsoft. Вам, конечно, виднее работали мы с большими документами или не работали, но я 7 тысяч марок большим количество не считаю. Самый большой документ на память это примерно 650 тысяч КИЗов + 65 тысяч групповых + 1300 транспортных.
Средняя поставка это 350 тысяч кизов. И да, все надо парсить и проверять.
Если парсер сходу не может проглотить весь набор данных, никто же не мешает кормить его порциями, зачем вы из мелкой проблемы раздуваете такие трудности. Тем более что структура то статическая. Вы реально считаете чем то серьезным разделить json и xml и обработать отдельно? По мне так рядовая задача...
Если мы говорим о накладных, то какой смысл туда пихать 7 тысяч кизов, если в обуви агрегация доступна не только для производителей а для любого УОТ? Я делал агрегацию коробок обуви в паллеты и накладные получались маленькие и удобные. Можно вообще агрегировать всю поставку в один код.

Что касается накладных, то передача кодов между УОТ в табаке только посредством ЭДО, накладные действительно небольшие, это уже ограничения операторов ЭДО.

В общем тема закрыта, дальнейшее обсуждение совершенно не касается публикации. Каждый при своем. Я считаю что автор статьи дал старт многим. Если бы я прочел такую статью в 2019 году, наверняка бы мне помогло. И это было бы быстрее чем, разобраться с тем как это сделали в типовой.
50. Mx00 234 01.07.21 16:09 Сейчас в теме
(49) "Вы реально считаете чем то серьезным разделить json и xml и обработать отдельно" - я это сделал, но продолжаю искать более красивый вариант :-)
"то какой смысл туда пихать 7 тысяч кизов" - не я их пихаю, я их разбираю :-)
"Если бы я прочел такую статью в 2019 году" - согласен, только вот статья от мая 2020-го и только по этому поводу мой комментарий ;-)
51. Mx00 234 01.07.21 16:31 Сейчас в теме
(49) и ещё один вопрос по делу :-)
для работы по API нужна цифровая подпись, но ставить её всем менеджерам "не хорошо", у меня 1С на терминальном сервере и сейчас сделано подписание запуском командного файла с утилитой RunAsUser.exe, т.е. сертификат подписи установлен в реестр windows для специального пользователя, а у обычных пользователей доступа к сертификату нет.
Ищу вариант вообще убрать сертификат подписи с сервера и обрабатывать запросы на рабочей станции в которую воткнут ключ.
Если есть такой опыт, то прошу рекомендаций :-)
52. yudinvs 2 02.07.21 10:14 Сейчас в теме
(51) А вот тут все просто. Я написал веб сервис, который транслирует запросы. (я его тут выкладывал, но качать не советую отсюда, если надо так отдам, так как тут он старый, а так как никому он не интересен не обновлял) На рабочей станции с ключом живет этот веб сервис, слушает запросы, отсылает в црпт, возвращает результат. Это решает не только проблему ключа но работу с https в wiinxp/2003, так как доступ к веб сервису идет по http, а сам он уже обращается к ЦРПТ по https. Если проблем с https в терминале нет, то можно в веб сервисе только токен брать, а работу с апи уже в теримнале. Это будет быстрее. Ну или совсем просто - запустить одну инстанцию 1С по сети на машинке с ключом, получать токен раз в несколько часов, хранить его в константе. Клиенты в терминале ничего не подписывают, берут токен из константы и работают с апи по токену. Токен не привязан к машине откуда он был получен.
53. Mx00 234 02.07.21 11:48 Сейчас в теме
(52) "веб сервис" - хочу ;-)
токен у меня и так хранится в справочнике, точнее два токена для СУЗ и ГИС МТ
но менеджеры отправляют и принимают документы, поэтому нужна подпись произвольных данных, думаю, что именно это и делает веб сервис
54. yudinvs 2 02.07.21 18:15 Сейчас в теме
(53)Я не делал подпись произвольных данных, но не думаю что это проблема.
Вот эти куски помогут - сам веб и работа с сертами.


listener = new HttpListener();
 t = new Thread(Listen);
t.Start();

 public void Listen()
         {
             //return;
             string url = "http://*";
             string port = ""+portnum;
             string prefix = String.Format("{0}:{1}/", url, port);
             try
             {
                 listener.Stop();
             }
             catch
             { };
             
             listener.Prefixes.Add(prefix);
             try
             {
                 listener.Start();
             }
             catch (Exception E)
             {
                 SetText("!!!"+E.Message);
                 SetText(@"Запустите программу от имени администратора вот такую команду:netsh http add urlacl url=""http://*:9999/"" user=%username%",true);
                 return;
             }

             while (true)
             {
                 if (closing) return;

                 
                 //Ожидание входящего запроса
                 HttpListenerContext context;
                 try
                 {
                     context = listener.GetContext();
                     
                 }
                 catch
                 { break; }


                 
                 var thread = new Thread(SendReply);
                 thread.Start(context);

             }
         }


  public void SendReply(object parameter)
         {
             try
             {

                 var context = (HttpListenerContext)parameter;


                 //Объект запроса
                 HttpListenerRequest request = context.Request;

                 //Объект ответа
                 HttpListenerResponse response = context.Response;

                 //Создаем ответ
                 string requestBody;
                 Stream inputStream = request.InputStream;
                 Encoding encoding = request.ContentEncoding;
                 StreamReader reader = new StreamReader(inputStream, encoding);
                 requestBody = reader.ReadToEnd();






                 //this.textBox1.Text += "" + request.HttpMethod + " request was caught: " + request.Url;


                 string qry;

                 try
                 {
                     qry = "" + Uri.UnescapeDataString(request.Url.OriginalString);
                 }
                 catch
                 {
                     return;
                 }
                 if (qry.Contains("favicon.ico"))
                 {
                     return;
                 }



                 //SetText(" request was caught: " + qry);

                 qry = qry.Replace("http://", "");

                 try
                 {

                     string res;
                     res = "Error";

                     string rr = qry.Split('/')[0];

                     bool error = false;
                     if (qry.Contains("кусочек урла - команда")) 
                     {
Вот тут берем содержимео запроса (requestBody ), подписываем и отправляем в чз, читаем ответ, присваем его res, отдаем клиенту.

                       }



 response.StatusCode = (int)HttpStatusCode.OK;
 byte[] buffer = Encoding.UTF8.GetBytes(res);

                         response.ContentLength64 = buffer.Length;
                         Stream output = response.OutputStream;
                         output.Write(buffer, 0, buffer.Length);

}





//Работа с сертификатами


public byte[] SignMe(byte[] msg, X509Certificate2 signerCert, bool detached = true)
        {
            ContentInfo contentInfo = new ContentInfo(msg);
            SignedCms signedCms = new SignedCms(contentInfo, detached);            
            CmsSigner cmsSigner = new CmsSigner(signerCert);
            cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;            
            signedCms.ComputeSignature(cmsSigner);                                    
            
            
            return signedCms.Encode();
        }

//Список сертификатов
 private void GetCerList(string certid)
        {


            X509Store store = new X509Store(StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly);
            X509CertificateCollection certCollection = store.Certificates;
            

            foreach (X509Certificate2 c in certCollection)
            {
                
                this.comboBox1.Items.Add(c.Subject);
                if (c.GetSerialNumberString() == certid)
                {
                    this.comboBox1.SelectedIndex = this.comboBox1.Items.Count - 1;
                }
                
            }

            store.Close();


        }

Показать
25. user1512717 22.12.20 13:03 Сейчас в теме
Добрый день!

Мы новички в этой сфере. Можете посоветовать у кого можно получить "платную консультацию" по работе с этим API?
Возможно с Вами можем пообщаться.

Будем благодарны за любую помощь.

Спасибо!

Вероника
jasperss; +1 Ответить
26. user635667 128 16.03.21 06:13 Сейчас в теме
А можно при помощи этой штуки скачать все товары и ШК от них?
На сайте ЧЗ в разделе Табак в разделе Коды маркировки есть столбик Товар. Я бы экспортировал в Эксельку, но там постранично, а как пропарсить я не знаю.
Прикрепленные файлы:
38. oskarsan 01.06.21 10:49 Сейчас в теме
Подскажите, пожалуйста: делаю get запрос, получаю уид и данные, данные подписываю через сайт криптопро. отправляю уид и подписанные данные для получения токена, возвращается ошибка "Ошибка. Код ответа 500
UUID не найден в хранилище ключей. UUID = ". В чем может быть проблема?
и этот токен будет действовать только 10часов или до окончания сертификата?
39. oskarsan 06.06.21 14:26 Сейчас в теме
(38) Подписал через 1C - заработало, так и не понял в чем проблема была.
Оставьте свое сообщение

См. также

Заказ Кодов Маркировок с помощью Api Честный знак (Молочная продукция)

WEB v8 Россия Абонемент ($m)

Небольшой пример взаимодействия с системой "Честный знак", для получения Кодов Маркировок с помощью Api (Молочная продукция).

2 стартмани

18.06.2021    2103    6    user5300    22    

Расширение конфигурации для Web-доступа к 1С (1С в роли back-end)

WEB v8 1cv8.cf Россия Абонемент ($m)

Для реализации того, чтобы 1С формировала и отдавала страницу, которую можно было бы открыть через браузер было написано расширение, которое позволяет публиковать из 1С произвольные ресурсы, будь то API, сайт или изображения / прочие файлы.

1 стартмани

01.04.2021    8077    11    SaschaG    4    

Модуль обмена с QIWI Промо

Банковские операции WEB v8 1cv8.cf УУ Абонемент ($m)

Компании, которые используют систему моментальных платежей QIWI, ценят ее за удобство по скорости выплат и для платежей по запросу. Но такие переводы сложны для учета, а при большом объеме проводимых операций отнимают много времени и превращаются в дополнительную головную боль. Мы сотрудничали с компаниями, которые отправляют большое количество платеже на QIWI, и часто слышали боль бухгалтеров о том, как им сложно работать с такими переводами. Поэтому мы автоматизировали выплаты через QIWI в 1С и создали модуль интеграции 1С c API QIWI Wallet и QIWI TopUp.

5 стартмани

25.05.2020    7482    0    Neti    10    

Работа с картами в 1С на примере бесплатной библиотеки Leaflet

Практика программирования Универсальные обработки WEB v8 1cv8.cf Абонемент ($m)

Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.

1 стартмани

31.03.2021    9425    27    Parsec1C    11    

[Расширение] Временное отключение онлайн-эквайринга в РМК (УТ 11.4, Розница 2.3)

Розничная торговля Рабочее место Эквайринг v8 v8::ОУ УТ11 Розничная и сетевая торговля (FMCG) УУ Абонемент ($m)

Расширение предназначено для исправления исключительных ситуаций, когда оплата по эквайринговому терминалу с подключением оборудования прошла успешно, но чек на ККТ не был фискализирован. Расширение позволит временно отключить онлайн-эквайринг непосредственно из формы РМК.

1 стартмани

14.12.2020    9689    43    RocKeR_13    13    

BIM: взаимодействие с платформой Autodesk Forge

WEB v8 1cv8.cf Строительство Абонемент ($m)

Предлагаемый пример демонстрирует широкие возможности для взаимодействия «1С:Предприятие» с платформой Autodesk Forge и позволяет вам получить базовые представления о применения технологий информационного моделирования в строительстве. Поддерживаются все версии платформы от 8.3.12 и выше до 8.3.18.

1 стартмани

25.11.2020    34111    11    kandr    2    

Односторонний файловый обмен с сайтом по ftp (1C 2 Web) Промо

Обмен данными 1С Файловые протоколы обмена, FTP WEB v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

Подходит под любую конфигурацию на управляемом интерфейсе на базе БСП 2.4.4 и выше. Позволяет гибко настроить выгрузку, практически любых, данных по расписанию на сервер ftp вашего ресурса. Ведение лога процесса выгрузки также предусмотрено.

3 стартмани

09.12.2019    11686    14    LamerSoft    0    

Чатбот WhatsApp

WEB v8 1cv8.cf Абонемент ($m)

Внешняя обработка для написания чат-бота WhatsApp

1 стартмани

21.10.2020    10235    24    ripreal1    30    

Учимся создавать http сервис (часть третья). Передача нескольких параметров в http сервис

WEB Практика программирования v8 1cv8.cf Абонемент ($m)

Пошаговое руководство по созданию http сервиса (часть третья). Передача нескольких параметров в http сервис, a также формирование сложных JSON строк.

1 стартмани

02.10.2020    13703    5    hpi    16    

Обмен через API с Честный знак (Система маркировки товаров)

Оптовая торговля WEB v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия Абонемент ($m)

Рассмотрен пример обмена через API с Честным знаком с использованием электронной подписи.

1 стартмани

10.08.2020    22383    93    vasilievil    25    

Обмен данными между УТ 10.3 и Розницей 2.2 (правила обмена данными между "Управлением торговлей" ред. 10.3. и "Розницей" ред. 2.2) Промо

Обмен через XML Перенос данных из 1C8 в 1C8 Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 УТ10 Розница УУ Абонемент ($m)

Данные правила предназначены для обмена в формате XML данных из программы «Управление торговлей» ред. 10.3. и "Розница" ред. 2.2 по основным группам документов и основных справочников. Загрузка данных осуществляется через встроенную обработку «Универсальный обмен данными XML». Основная цель обработки – корректировка типовых правил на выявленные ошибки и расширение выгрузки для корректной выгрузки данных по ЕГАИС и продажам в целом. Протестировано до УТ 10.3.47.х и Розница 2.2.11.х

3 стартмани

16.09.2016    57058    6    SEOAngels    65    

HTTP сервисы по OpenAPI спецификациям

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

Начинаем путь разработки HTTP сервисов с создания спецификаций OpenAPI. Автодокументация сервисов формата Swagger UI без зависимостей. Настройка сервисов в режиме предприятия.

1 стартмани

29.06.2020    15239    15    shmalevoz    22    

Загрузка из XML файла ЭДО в документ поступления для конфигураций 1С: Розница 2.2/2.3, Управление торговлей 10.3/11.4

Розничная торговля Обработка документов Документооборот и делопроизводство Обмен через XML v8 УТ10 Розница Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Внешние обработки загрузки данных из XML файлов формата ON_NSCHFDOPPRMARK ЭДО в документы поступления 1С Розница версия 2.2.10.19 и выше, Управление торговлей 10.3.52.2 и выше, Управление торговлей 11.4.5.63 и выше

1 стартмани

04.06.2020    27103    292    independ    130    

Пример работы с Trello из 1С

WEB v8 1cv8.cf Россия УУ Абонемент ($m)

Небольшая конфигурация содержит примеры обмена с онлайн-сервисом Trello.

1 стартмани

15.02.2020    17583    53    terrorion    14    

Загрузка весового товара в весы Масса-К ВПМ-Ф (1С Предприятие, УТ 11.2-11.4 управляемые формы) Промо

Весы Розничная торговля Розничная торговля v8 v8::ОУ v8::УФ УТ10 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Данная обработка загружает весовой товар из базы в весы. Данная обработка тестировалась только на версии УТ 11.2-11.4 (1С Предприятие 8.3) и весах ВПМ-Ф.

2 стартмани

21.07.2016    24316    55    user594264_e.sitnik    5    

"Учет штрафов ГИБДД" с возможной загрузкой из открытых источников в интернет Расширение конфигурации 1С: Предприятие 8.3

Обработка документов WEB v8 v8::УФ 1cv8.cf Россия БУ УУ Абонемент ($m)

Расширение конфигурации Бухгалтерия предприятия, редакция 3.0 (при минимальных изменениях любой типовой конфигурации), позволяющее вести историю данных по штрафам ГИБДД для справочника транспортных средств компании. Бонусом поставляется внешняя обработка, способная загружать эти данные из открытых источников в интернет.

4 стартмани

30.12.2019    19493    26    capitan    11    

Google drive - менеджер файлов

WEB Внешние источники данных v8 1cv8.cf Россия Абонемент ($m)

Синхронизация с гугл диском легко и просто!

10 стартмани

05.12.2019    22985    36    zykov_vitaliy    26    

Работа с Яндекс-картами в 1С (вывод меток, прокладка маршрута, отображение балуна, вывод меток в кластеры) (обычное и управляемое приложение)

WEB v8 v8::УФ 1cv8.cf Абонемент ($m)

Работа с Яндекс-картами в 1С (управляемое приложение). Обработка показывает, как можно найти адреса на карте Яндекс, проложить маршрут.

2 стартмани

20.11.2019    20374    148    Denr83    0    

Внешняя компонента для работы по Web-socket протоколу x32 x64 Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

2 стартмани

30.03.2018    36118    66    Ditron    103    

Рекомендательный сервис на основе коллаборативной фильтрации на 1С. Расширение формы подбора для УТ 11.4

Оптовая торговля Розничная торговля Практика программирования Математика и алгоритмы v8 ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

В данной разработке реализован механизм рекомендаций товаров по принципу схожести товаров в корзине на основе алгоритма Item-to-Item от Amazon. Разобран алгоритм с демо базой и сделано расширение для УТ11.4 которое добавляет в форму подбора таблицу рекомендаций. Протестировано на 8.3.13.1865 на Управление торговлей, редакция 11 (11.4.8.63)

3 стартмани

25.09.2019    16869    14    informa1555    24    

Telegram бот на 1С

WEB v8 1cv8.cf Абонемент ($m)

Telegram бот на 1С в виде внешней обработки, встраиваемой в типовые 1С 8.3.

1 стартмани

24.09.2019    25037    49    budidich    19    

Аналоги номенклатуры для УТ 11.4, КА 2.4, ERP 2.4, Розница 2.2, Розница 8. Магазин автозапчастей. Расширение

Рабочее место Оптовая торговля Розничная торговля Управление торговлей Оптовая торговля Розничная торговля v8 Розница ERP2 УТ11 КА2 Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

Расширение для работы с аналогами номенклатуры. Отлично подходит для работы с кроссами запчастей и товаров с аналогичными свойствами. Поддерживаемые конфигурации: УТ 11.4, КА 2.4, ERP 2.4, Розница 2.2, Розница 8. Магазин автозапчастей. Лёгкое подключение, без изменения конфигурации.

1 стартмани

30.08.2019    30479    61    AleSSandre    34    

Автоматическая рассылка прайс-листов Промо

Ценообразование, прайсы Email Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 УТ10 Абонемент ($m)

Устали от утомительной рассылки прайс-листов своим клиентам? Тогда эта обработка как раз для вас, она сделает полностью все сама! Сформирует прайс с нужными настройками и отправит его по электронной почте, как, куда и когда надо.

1 стартмани

24.03.2014    47977    24    skyadmin    20    

Работа с релизами 1С и договорами ИТС

WEB БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    20881    60    RocKeR_13    37    

Путеводитель по истории релизов

WEB v8 1cv8.cf Абонемент ($m)

Отчет по истории выпуска релизов и анализа информации по обновлениям.

5 стартмани

13.08.2019    19154    13    YPermitin    18    

Шаблон http-сервиса для вашего проекта

Внешние источники данных WEB Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

3 стартмани

04.05.2019    26348    88    MarkoSokolov    48    

Обработки для 1С: Розница по работе с ЕГАИС

Розничная торговля Обработка документов Обработка справочников Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Россия БУ Абонемент ($m)

Несколько простых и нужных обработок для упрощения работы с ЕГАИС в 1С Розница версий 2.2.10.ХХХ и выше.

1 стартмани

25.02.2019    25748    55    independ    15    

1С и WebKit. Вариант взаимодействия

WEB v8 1cv8.cf Абонемент ($m)

В результате перехода на WebKit тип свойства Документ у поля, имеющего вид ПолеHTMLДокумента, изменился с COMОбъект на ВнешнийОбъект. Также изменилась DOM модель документа, доступная через это свойство.

2 стартмани

23.02.2019    40546    88    mi1man    59    

Строим маршруты на картах в 1С с помощью OpenStreetMap, OSRM и Leaflet

WEB v8 1cv8.cf Транспорт, автопарки, такси Абонемент ($m)

Краткая статья о том как вывести на карту (в 1С) маршруты с помощью OpenStreetMap, OSRM и Leaflet. По данной системе очень мало примеров, но так как OpenStreetMap является бесплатным сервисом и не требует никаких ключей и регистраций, и является довольно мощным механизмом, решил написать небольшую статью "как это сделать?". В первую очередь скажу, все намного проще, если вы используете последнюю версию платформы (8.3.14), где есть поддержка практически всех браузеров (IE 11, EDGE, Mozilla), но что делать если у нас не самая свежая платформа, где поддержка только IE 9?

2 стартмани

12.02.2019    37015    122    Ditron    118    

1С: Розница/УТ 10.3. ЕГАИС, загрузка акцизных марок в справочник Штрихкоды и Упаковки, регистр Акцизные марки из XML-сообщений входящих ТТН ЕГАИС + Печать акцизных марок

Розничная торговля Обработка справочников Обмен через XML Ценники Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Пакетная загрузка/обновление списка акцизных марок ЕГАИС из входящих ТТН ЕГАИС. Для 1С Розница 2.2.9.ХХХ/2.2.10.ХХХ//2.2.11.ХХХ/2.2.12.ХХХ/Управление торговлей 10.3.49.ХХХХ и выше с возможностью печати

1 стартмани

31.01.2019    33973    222    independ    140    

Яндекс карты 2.1. Построение маршрута. Передача длины маршрута в реквизит формы

WEB v8 1cv8.cf Абонемент ($m)

Пригодится как пример использования Яндекс карты 2.1 для построения маршрута.

1 стартмани

24.01.2019    19674    94    John_d    33    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    61698    266    informa1555    234    

Проверка VAT номеров

WEB v8 1cv8.cf Абонемент ($m)

Обработка для вызова сервиса проверка VAT номера.

1 стартмани

26.11.2018    18114    3    wtlz    1    

Загрузка чека онлайн-касс (загрузка товаров из чека)

Внешние источники данных WEB Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 1cv8.cf Абонемент ($m)

Обработка-пример, позволяет любому и из любой конфигурации загрузить информацию о товарах из чека(и не только) из почтового сообщения, отправленного из приложения ФНС проверка чеков.

2 стартмани

08.10.2018    29081    42    echo77    73    

Расширение "Интерфейс Плюс"

Розничная торговля Рабочее место Розничная торговля v8 v8::ОУ Розница УТ11 Россия УУ Абонемент ($m)

Расширение для 1С:Розница 2.2/2.3 и 1С:Управление Торговлей 11, которое позволит повысить удобство работы!

1 стартмани

22.09.2018    35787    176    RocKeR_13    136    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    28769    14    RocKeR_13    16    

Помощник корректировки остатков ЕГАИС в небольшом магазине. Розница 2.2

Розничная торговля Обработка документов Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Россия УУ Абонемент ($m)

Данная обработка упрощает корректировку остатков алкогольной продукции небольшого магазина, где предполагается передача всей продукции в торговый зал сразу после приемки.

5 стартмани

08.09.2018    44401    84    asdfgcom    47    

SOAP для чайников

Обмен через XML WEB v8 1cv8.cf Абонемент ($m)

Немножко про SOAP сервис. И пример работы с подключением и получением данных по SOAP за 5 минут.

1 стартмани

05.09.2018    78826    58    dusha0020    24    

Класс-обработка “Работа с картами Яндекс”

Разработка внешних компонент WEB v8 Абонемент ($m)

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    34221    244    RSConsulting    17    

Пример использования REST API Яндекс Диска

WEB v8 1cv8.cf Абонемент ($m)

Пример использования REST API Яндекс Диска: чтение диска, добавление каталога, загрузка файла, скачивание файлов или каталогов, удаление файлов или каталогов.

1 стартмани

26.06.2018    33906    54    MKFreeUser    15