Загрузка заказов по API в Logsis

13.09.18

Учетные задачи - Оптовая торговля

Каркасная обработка для загрузки заказов по API в Логсис. Предназначена для магазинов, которым нужна курьерская доставка по городу Москва.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Загрузка заказов по API в Logsis:
.zip 9,21Kb ver:1.0.0.1
3
3 Скачать (10 SM) Купить за 4 550 руб.

Для работы обработки нужен шлюз для передачи параметров через PHP скрипт
Следующего содержания в папке logsys/index.php:

<?php
//phpinfo();
$str_input = file_get_contents('php://input'); // Получить строку из отправленных данных
//echo $str_input; // Вывод в браузер
$arr_input = json_decode($str_input,true); // Преобразуем в массив
//print_r($arr_input); // Вывод в браузер
$post_array = array();
foreach($arr_input as $key=>$val) {
  if ($key=='goods') {
    foreach($val as $key2=>$val2) {
      foreach($val2 as $key3=>$val3) {
        $post_array['goods['.$key2.']['.$key3.']']=$val3;
      }
    }
  } else {
    $post_array[$key] = $val;
  }
}
//print_r($post_array);
// set post fields
$ch = curl_init('http://cab.logsis.ru/apiv2/createorder');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array);
// execute!
$response = curl_exec($ch);
// close the connection, release resources used
curl_close($ch);
// do anything you want with your response
echo $response;

 

И еще один скрипт в папке logsys2/index.php:

<?php
//phpinfo();
$str_input = file_get_contents('php://input'); // Получить строку из отправленных данных
//echo $str_input; // Вывод в браузер
$arr_input = json_decode($str_input,true); // Преобразуем в массив
//print_r($arr_input); // Вывод в браузер
$post_array = array();
foreach($arr_input as $key=>$val) {
  $post_array[$key] = $val;
}
//print_r($post_array);
// set post fields
$ch = curl_init('http://cab.logsis.ru/apiv2/confirmorder');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array);
// execute!
$response = curl_exec($ch);
// close the connection, release resources used
curl_close($ch);
// do anything you want with your response
echo $response;

 

Поднимаем Apache + PHP или Nginx + PHP на локальной машине и пробуем отправить заказы:

Функция ПодтвердитьЗаказВЛОГСИС(НомерДокументаЗаказа,НомерЗаказаЛогсис) Экспорт
	СтруктураПараметровЗаказа = Новый Структура;
	СтруктураПараметровЗаказа.Вставить("key",ПолучитьПараметрыИдентификации());
	СтруктураПараметровЗаказа.Вставить("inner_n",СокрЛП(НомерДокументаЗаказа)); // Внутренний номер отправителя
	СтруктураПараметровЗаказа.Вставить("order_id",СокрЛП(НомерЗаказаЛогсис)); // Внутренний номер отправителя
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(,Символы.Таб));
	ЗаписатьJSON(ЗаписьJSON,СтруктураПараметровЗаказа);
	СтрокаJSON = ЗаписьJSON.Закрыть();
	//СтрокаВозврат = 
	Сообщить(СтрокаJSON);
	
	HTTPСоединение = Новый HTTPСоединение("127.0.0.1");
	HTTPЗапрос = Новый HTTPЗапрос("/logsys2/"); 
	HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
	HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

	Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	ОтветСтрока = Ответ.ПолучитьТелоКакСтроку("UTF-8");

	Сообщить("Код результата: " + Ответ.КодСостояния);
	Сообщить("Ответ: " + ОтветСтрока);
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ОтветСтрока);
	ИмяСвойства = "";
	НетОшибкаЧтенияJSON = Ложь;
	
	Пока ЧтениеJSON.Прочитать() Цикл
		ТипJSON = ЧтениеJSON.ТипТекущегоЗначения;
		Если ТипJSON = ТипЗначенияJSON.Строка Тогда
			Значение = ЧтениеJSON.ТекущееЗначение;
			Если ИмяСвойства = "status" Тогда
				Сообщить("status "+СокрЛП(Значение));
				Если СокрЛП(Значение) = "400" Тогда
					НетОшибкаЧтенияJSON = Истина;
				ИначеЕсли СокрЛП(Значение) = "200" Тогда
					НетОшибкаЧтенияJSON = Истина;
				КонецЕсли;
			КонецЕсли;
		ИначеЕсли ТипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
			ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
		КонецЕсли;
	КонецЦикла;
	Возврат НетОшибкаЧтенияJSON;
	
КонецФункции

Функция ОтправитьЗаказыВLogsys(ДокументЗаказа,НомерЗаказаЛогсис = "") Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
	               |	Заказ.Номер КАК НомерЗаказа,
	               |	Заказ.Дата КАК ДатаЗаказа,
	               |	Заказ.Адрес КАК АдресДоставки,
	               |	Заказ.Вес КАК ВесЗаказа,
	               |	Заказ.ГабаритВысота,
	               |	Заказ.ГабаритДлина,
	               |	Заказ.ГабаритШирина,
	               |	Заказ.ФИОКонтактногоЛица КАК Получатель,
	               |	Заказ.Телефон КАК НомерТелефона,
	               |	Заказ.ПолучитьСКлиента КАК СуммаКПолучению,
	               |	Заказ.ЭлектроннаяПочта КАК EMailПолучателя,
	               |	Заказ.СтраховаяСумма КАК СтраховаяСумма,
	               |	Заказ.КоличествоМест,
	               |	Заказ.Ссылка КАК Док,
	               |	Заказ.НомерСкладской
	               |ИЗ
	               |	Документ.Заказ КАК Заказ
	               |ГДЕ
	               |	Заказ.Ссылка = &ДокументОтгрузки";
	
	Запрос.УстановитьПараметр("ДокументОтгрузки", ДокументЗаказа);
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Возврат Ложь;
	КонецЕсли;
	
	ВыборкаЗаказы					= Результат.Выбрать();
	СтруктураПараметровЗаказа = Новый Структура;
	СтруктураПараметровЗаказа.Вставить("key",ПолучитьПараметрыИдентификации());
	Пока ВыборкаЗаказы.Следующий() Цикл
		СтруктураПараметровЗаказа.Вставить("inner_n",СокрЛП(ВыборкаЗаказы.НомерЗаказа)); // Внутренний номер отправителя
		СтруктураПараметровЗаказа.Вставить("delivery_date",Формат(ВыборкаЗаказы.ДатаЗаказа,"ДФ=yyyy-MM-dd"));  // Дата доставки (YYYY-mm-dd)
		СтруктураПараметровЗаказа.Вставить("delivery_time1",Формат(ВыборкаЗаказы.ДатаЗаказа,"ДФ=hh:mm"));  // Начальное время интервала доставки (min 10:00 )
		СтруктураПараметровЗаказа.Вставить("delivery_time2","22:00");  // Конечное время интервала доставки( max 22:00 )
		СтруктураПараметровЗаказа.Вставить("target_name",СокрЛП(ВыборкаЗаказы.Получатель));  // Получатель
		СтруктураПараметровЗаказа.Вставить("target_contacts",ПреобразоватьСтрокуВЧисло(ВыборкаЗаказы.НомерТелефона));  // Телефон получателя 7хххххххххх
		СтруктураПараметровЗаказа.Вставить("os",Формат(ВыборкаЗаказы.СтраховаяСумма,"ЧДЦ=2; ЧРД=.; ЧГ="));  // Оценочная стоимость заказа
		СтруктураПараметровЗаказа.Вставить("np","0");  // Услуга 'Прием наложенного платежа' (1 - да, иначе - 0)
		СтруктураПараметровЗаказа.Вставить("price_client","0");  // Величина наложенного платежа, руб
		СтруктураПараметровЗаказа.Вставить("price_client_delivery",Формат(ВыборкаЗаказы.СуммаКПолучению,"ЧДЦ=2; ЧРД=.; ЧГ=")); // Стоимость доставки для конечного получателя
		СтруктураПараметровЗаказа.Вставить("order_weight",Формат(ВыборкаЗаказы.ВесЗаказа,"ЧРД=.; ЧГ=")); // Вес отправления, кг
		СтруктураПараметровЗаказа.Вставить("places_count",Формат(ВыборкаЗаказы.КоличествоМест,"ЧРД=.; ЧГ=")); // Количество мест в заказе.
		СтруктураПараметровЗаказа.Вставить("dimension_side1",Формат(ВыборкаЗаказы.ГабаритВысота*100,"ЧРД=.; ЧГ=")); // Габарит заказа 1, см
		СтруктураПараметровЗаказа.Вставить("dimension_side2",Формат(ВыборкаЗаказы.ГабаритДлина*100,"ЧРД=.; ЧГ=")); // Габарит заказа 2, см
		СтруктураПараметровЗаказа.Вставить("dimension_side3",Формат(ВыборкаЗаказы.ГабаритШирина*100,"ЧРД=.; ЧГ=")); // Габарит заказа 3, см
		СтруктураПараметровЗаказа.Вставить("addr",СокрЛП(ВыборкаЗаказы.АдресДоставки)); // Адрес доставки
		СтруктураПараметровЗаказа.Вставить("sms","0"); // Признак услуги sms-информирования. Значения: 0 - нет, 1 - да
		СтруктураПараметровЗаказа.Вставить("open_option","3"); // Признак возможности вскрытия заказа. Возможные значения: 1 - Вскрытие разрешено, 2 - Разрешено вскрытие только внешней упаковки, 3 - Вскрытие запрещено
		СтруктураПараметровЗаказа.Вставить("call_option","0"); // Дополнительный (тарифицируемый) звонок клиенту. Значения: 0 - нет, 1 - да
		СтруктураПараметровЗаказа.Вставить("docs_option","0"); // Возврат накладных / документов, вложенных в заказ (опция тарифицируется). Значения: 0 - нет, 1 - да
		СтруктураПараметровЗаказа.Вставить("partial_option","1"); // Признак возможности частичного выкупа заказа клиентом (не тарифицируется). Значения: 0 - нет, 1 - да
		СтруктураПараметровЗаказа.Вставить("dress_fitting_option","0"); // Признак возможности примерки товаров (тарифицируется согласно договору). Значения: 0 - нет, 1 - да
		СтруктураПараметровЗаказа.Вставить("lifting_option","0"); // Занос / подъем КГТ заказов (более 25 кг) до квартиры (тарифицируется согласно договору). Значения: 0 - нет, 1 - да
		СтруктураПараметровЗаказа.Вставить("city","Москва");
		СтруктураПараметровЗаказа.Вставить("shk",СокрЛП(ВыборкаЗаказы.НомерСкладской));
		МассивТоваров = Новый Массив;
		ЗаказДокО = ВыборкаЗаказы.Док.ПолучитьОбъект();
		Для Каждого СтрТовары Из ЗаказДокО.Товары Цикл
			СтруктураСтрокиЗаказа = Новый Структура;
			Если СтрТовары.Товар.Пустая() Тогда
				Продолжить;
			КонецЕсли;
			
			СтруктураСтрокиЗаказа.Вставить("articul",СокрЛП(СтрТовары.Товар.АртикулПартнера));// Артикул товарной позиции / услуги
			СтруктураСтрокиЗаказа.Вставить("artname",СокрЛП(СтрТовары.Товар.Наименование));// Название товарной позиции / услуги
			СтруктураСтрокиЗаказа.Вставить("count",Формат(СтрТовары.Количество,"ЧРД=.; ЧГ="));// Название товарной позиции / услуги
			СтруктураСтрокиЗаказа.Вставить("weight",Формат(СтрТовары.ВесТовара,"ЧРД=.; ЧГ="));// Вес единицы товара, кг
			СтруктураСтрокиЗаказа.Вставить("price",Формат(СтрТовары.Цена,"ЧДЦ=2; ЧРД=.; ЧГ="));// Цена единицы товара, руб
			СтруктураСтрокиЗаказа.Вставить("nds",ПолучитьКодСтавкиНДС(СтрТовары.Товар.СтавкаНДС));// Вид налога на товар/услугу (передавать Int): 1 - HДС 18%, 2 - Без HДС, 3 - HДС 10%, 4 - HДС 18/118, 5 - HДС 10/110, 6 - НДС 0%
			МассивТоваров.Добавить(СтруктураСтрокиЗаказа);
			
		КонецЦикла;
		СтруктураПараметровЗаказа.Вставить("goods",МассивТоваров);
		
	КонецЦикла;
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(,Символы.Таб));
	ЗаписатьJSON(ЗаписьJSON,СтруктураПараметровЗаказа);
	СтрокаJSON = ЗаписьJSON.Закрыть();
	Сообщить(СтрокаJSON);
	
	HTTPСоединение = Новый HTTPСоединение("127.0.0.1");
	HTTPЗапрос = Новый HTTPЗапрос("/logsys/"); 
	HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
	HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

	Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	ОтветСтрока = Ответ.ПолучитьТелоКакСтроку("UTF-8");

	Сообщить("Код результата: " + Ответ.КодСостояния);
	Сообщить("Ответ: " + ОтветСтрока);
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ОтветСтрока);
	ИмяСвойства = "";
	НетОшибкаЧтенияJSON = Ложь;
	
	Пока ЧтениеJSON.Прочитать() Цикл
		ТипJSON = ЧтениеJSON.ТипТекущегоЗначения;
		Если ТипJSON = ТипЗначенияJSON.Строка Тогда
			Значение = ЧтениеJSON.ТекущееЗначение;
			Если ИмяСвойства = "status" Тогда
				НетОшибкаЧтенияJSON = Истина;
			ИначеЕсли ИмяСвойства = "order_id" Тогда
				НомерЗаказаЛогсис = Значение;
			КонецЕсли;
		ИначеЕсли ТипJSON = ТипЗначенияJSON.ИмяСвойства Тогда
			ИмяСвойства = ЧтениеJSON.ТекущееЗначение;
		КонецЕсли;
	КонецЦикла;
	Возврат НетОшибкаЧтенияJSON;
КонецФункции

Тестировалось на платформе: 1С:Предприятие 8.3 (8.3.10.2561) Конфигурация самописная

обработка обмен данными API

См. также

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1, ФФД 1.2). Подключайте любую онлайн кассу к практически любой конфигурации. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Поддерживает разрешительный режим и маркировку. Поддерживает локальный модуль честного знака для офлайн проверки. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows

6000 руб.

27.02.2017    812072    5187    9770    

2940

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Автоматизация учета ЕГАИС в 1С для оптовой торговли, производства и импорта. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

828 руб.

15.12.2015    172622    864    370    

407

Оптовая торговля Производство готовой продукции (работ, услуг) Обмен с ГосИС Программист Бухгалтер Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Пищевая промышленность Россия Бухгалтерский учет Платные (руб)

Автоматический обмен данными с системой ФГИС Меркурий из 1С через ВетИС API: загрузка данных по хозяйствующим субъектам, предприятиям; типов, групп, видов, наименований продукции, сопоставление данных и запись их в базу данных; создание на основании расходных документов транспортных партий, отправка на сервер, печать полученных ветеринарных свидетельств, запрос остатков складского журнала, проведение инвентаризаций, оформление производственных партий.

11500 руб.

08.12.2017    105975    291    110    

147

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих, Вики Принт и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки и разрешительного режима. Поддержка пробития чеков с новыми ставками НДС 5% и НДС 7%.

7900 руб.

25.05.2015    341642    2030    3120    

1068

SALE! 15%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 1C:Бухгалтерия 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

6000 руб.

09.11.2016    241988    1114    908    

1044

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    22900    24    49    

39
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Константин С. 675 13.09.18 19:00 Сейчас в теме
Поднимаем Apache + PHP или Nginx + PHP на локальной машине и пробуем отправить заказы:

воо заморочки, как-то не клиентооринтировано чтобы настроить обмен.
2. astracrypt 75 14.09.18 04:48 Сейчас в теме
(1) Лекгий путь - это не наш метод. :))
Оставьте свое сообщение