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

13.09.18

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Загрузка заказов по API в Logsis:
.zip 9,21Kb
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С:Бухгалтерия автономного учреждения 1С:CRM ПРОФ, КОРП Россия Платные (руб)

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

6000 руб.

27.02.2017    791240    4794    9512    

2834

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

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

15.11.2022    19033    17    SQV0    49    

37

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

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

8970 руб.

15.12.2015    169693    868    364    

396

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Пользователь Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 руб.

21.04.2017    94969    125    40    

213

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

45650 руб.

24.04.2015    193804    147    242    

278

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

84000 руб.

19.08.2020    24071    22    1    

24

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 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 или интернет. Поддержка маркировки и разрешительного режима.

5400 руб.

25.05.2015    332651    1917    3042    

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

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