Учим Лайку новым трюкам: заказы с предоплатами, выгрузка накладных из 1С

Публикация № 1104705

Учет и отчетность - Банковские операции

Расширение Лайка позволяет просматривать данные IIKO по заказам и предоплатам, приходным и расходным накладным, не покидая 1С. Кроме того, в последней версии добавлен функционал создания накладных на основании приобретений 1С одним нажатием.

Вместо предисловия

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

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

Компания IIKO запретила выполнение SQL-запросов и Groovy-скриптов в своих облачных решениях, чем дала повод для переосмысления ряду проектов, использовавших не классические схемы обмена. Некоторые описываемые далее приемы базируются на SQL-запросах, которым есть место в коробочных решениях.

Вступление

Мне понравилось собирать информацию по крупицам и создавать сущности IIKO прямиком в при реализации Лайки. Однако без решения реальной прикладной проблемы все это не более, чем набор полезных и удобных функций для узкоспециализированного взаимодействия. Не framework конечно, но фундамент для программиста.

Далее рассмотрим несколько успешных кейсов использования.

Детальные данные о продажах

А чем не устраивают данные стандартной выгрузки? Ну, к примеру, хотя бы отсутствием инструмента для учета предзаказов.

Прежде всего, давайте поразмышляем, чем же смена с наличием банкетных заказов отличается от смены без таковых? Как правило, если у нас нет предоплат, то сумма выручки идентична сумме реализации в рамках смены. Именно такие данные грузятся в 1С типовой выгрузкой без каких-либо вопросов. То есть в розничных продажах нет места задолженностям за пределами смены.

Наша команда неоднократно задумывалась над решением этой задачи, потому что периодически возникали подобного рода запросы от клиентов. Однако простого решения в лоб так и не нашлось. Были различные варианты с комбинированием сведений, доступные в типовых сценариях обмена, и данных, которые можно получить посредством OLAP и SQL.

В конечном счете представилась возможность для более глубокого и детального изучения структуры таблиц с данными сервера IIKO. А если ключевая доля сведений извлекается посредством SQL-запросов, то зачем плодить сущности и усложнять алгоритмы, добавляя другие способы получения данных? Именно поэтому акцент делается на извлечении данных из таблиц.

В Лайке уже присутствовали методы, явно упрощающие взаимодействие с сервером, однако этого было недостаточно и были добавлены пара объектов XDTO и унифицированная функция запроса.

Function RequestSQL(sqlRequest, sqlParameters = Undefined) Export
	
	ActiveConnection = like_ConnectionAtServer.GetActiveConnecton();
	If ActiveConnection = Undefined Then
		LogWrite(NStr("en = 'No active connection'; ru = 'Подключение неактивно'"));
		Return Undefined;
	EndIf;
	
	ConnectionFields = like_ConnectionAtServer.GetConnectionFields(ActiveConnection);
	
	ObjectFields = like_CommonAtServer.GetObjectFieldsStructure();
	ObjectFields.ConProps  	 = ConnectionFields;
	ObjectFields.Resource 	 = "/resto/service/maintance/sql.jsp";
	ObjectFields.Namespace 	 = "https://izi.cloud/iiko/read/sql";
	ObjectFields.TypeName 	 = "root";
	ObjectFields.RequestType = "GET";
	
	If sqlParameters <> Undefined Then
		For each parameter In sqlParameters Do
			sqlRequest = StrReplace(sqlRequest, "["+String(parameter.Key)+"]", parameter.Value);
		EndDo;	
	EndIf;
	Params = New Map;
	Params.Insert("sql", sqlRequest);
	ObjectFields.Parameters  = Params;
	
	ObjectFields.isGZIP	 = False;
	ObjectFields.Headers     = like_Common.GetIIKOHeaders(ConnectionFields, ObjectFields.isGZIP);
	
	IIKOObject = like_CommonAtServer.GetIIKOObject(ObjectFields);	
	If IIKOObject = Undefined Then
		LogWrite(NStr("en = 'Receiving data from IIKO server error'; ru = 'Ошибка получения данных с сервера IIKO'"));
		Return Undefined;	
	EndIf;
	
	Return IIKOObject;
	
EndFunction

Благодаря новым методам, без особого труда можно получить результат в таблицу. Прямое обращение к таблицам SQL позволяет реализовывать всевозможные неклассические схемы получения данных в многочисленных разрезах и выборках.

Создание документов 

Первые исследовательские версии обработок изобиловали прямыми вставками XML-сущностей и повторяющимися секциями однотипного кода. Передача документа требует реализации ряда вопросов: от соотнесения значений реквизитов до обработки сбоя отправки XML-пакета в случае, когда сервер IIKO "предлагает" другой номер.

По мере реализации проектов, модули становились лаконичней и более чутким отношением к повторному использованию кода, а для формирования XML-пакетов были созданы схемы и описаны основные используемые типы.

Безусловно, все технические моменты не должны усложнять работу бухгалтера.

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

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

Быстрый старт

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

 
Инструкция для пользователя

Версии программного обеспечения

Платформа - 1С:Предприятие 8.3 (8.3.13.1690). По идее подойдет и гораздо старше, начиная с появления методов для работы с HTTP, строковые функции типа СтрРазделить.

Конфигурации - Управление торговлей, редакция 11 (11.4.12.102).

IIKO - работа проверена на IIKO RMS 7.4.6020.0

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

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

Для возврата оплаты просто свяжитесь с нами.

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

Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.02.2015    104410    98    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    4381    6    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    5319    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    8233    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    269622    Evil Beaver    271    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    29503    3    CheBurator    63