Лайка - расширение 1С с хранением справочников IIKO вместо SQL-запросов

01.08.19

Интеграция - Внешние источники данных

Продолжаем исследовать возможности взаимодействия 1С с IIKO (Айко)

Файлы

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

Наименование Скачано Купить файл
Лайка - back-office IIKO на 1С
.cfe 63,30Kb ver:0.1
11 4 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вступление

Здравствуйте.

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

В частности, на счету нашей организации уже имеются проекты как по доработке типовой выгрузки (к примеру с получением недостающей информации из OLAP-отчета), так и разработка решения "с нуля" под задачи конкретного клиента.

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

Одним из таких вопросов было использование механизма SQL-запросов при получении справочных сведений IIKO (Наблюдение 3 из статьи //infostart.ru/public/839723/)

Настройка типовой выгрузки из IIKO в 1С

Минусы запросов

Итак, чем же плох способ получения данных SQL-запросами?

  • Для каждого типа СУБД нужно писать свой запрос (на данный момент их два: MSSQL Server и PostgreSQL). В качестве частичного решения данного вопроса нашей командой разработана "прослойка" из набора функций, позволяющих абстрагироваться от версии СУБД. Однако с изменением состава поддерживаемых систем потребуется также переработка такого решения;
  • У пользователя может не быть прав на исполнение служебных скриптов, в том числе sql.jsp;
  • Восстановление иерархии из "плоского списка" при выгрузке номенклатуры;
  • Долгое выполнение и значительная нагрузка на сервер при запросах с фильтром по полю, содержащемуся в XML (да-да, практически все типозависимые данные справочника хранятся в поле ntext в экранированном XML. При отборе по таким полям сервер сначала преобразуем XML для всех полей и уже потом происходит отбор);
  • Запрос по XML полю раз от раза будет оставаться "тяжелым";
  • Низкоуровневое решение, которое может прийти в неработоспособное состояние при обновлении версии ПО

Что предлагается взамен?

А взамен предлагается вновь воспроизвести работу BackOffice - получать обновления справочных сведений, обращаясь к сервису Update сервера IIKO.

Лайка, что это за зверь такой?

Лайка - расширение для интеграции с конфигурациями на управляемых формах с режимом совместимости 8.3.12. В расширении отражен концепт получения и обработки справочной информации из IIKO и занесение в справочники 1С: Номенклатура (like_products), Поставщики (like_users) и Склады (like_stores). Справочники имеют упрощенную структуру, но содержат необходимый минимум для обмена.

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

К примеру, процедура получения данных с сервера IIKO выглядит следующим образом:

Procedure Update(Parameters, ResultLink, Interactive = False) Export
	
	ActiveConnection = like_ConnectionAtServer.GetActiveConnecton();
	If ActiveConnection = Undefined Then
		Return;
	EndIf;
	
	ConnectionObject = ActiveConnection.GetObject();
	If Not (Interactive Or ConnectionObject.backgroundUpdate) Then
		Return;
	EndIf;
	
	XMLPackage = getXMLEntitiesUpdate(ActiveConnection);	
	ConnectionFields = like_ConnectionAtServer.GetConnectionFields(ActiveConnection);
	
	ObjectFields = like_CommonServer.GetObjectFieldsStructure();
	ObjectFields.ConProps  	 = ConnectionFields;
	ObjectFields.Resource 	 = "/resto/services/update";
	ObjectFields.Namespace 	 = "https://izi.cloud/iiko/reading/entitiesUpdateResponse";
	ObjectFields.TypeName 	 = "result";
	ObjectFields.RequestType = "POST";
	Params = New Map;
	Params.Insert("methodName", "waitEntitiesUpdate");
	ObjectFields.Parameters  = Params;
	ObjectFields.Headers     = like_Common.getIIKOHeaders(ConnectionFields);
	ObjectFields.Body		 = XMLPackage;
	ObjectFields.isGZIP		 = True;
	
	IIKOObject = like_CommonServer.GetIIKOObject(ObjectFields);	
	If IIKOObject.success Then
		iiko_items = IIKOObject.entitiesUpdate.items.i;
		For each item In iiko_items Do  
			ExeItem(ActiveConnection, item);
		EndDo;
		FillParents();
		SetEntititesVersion(ActiveConnection, IIKOObject.entitiesUpdate.revision);
	EndIf;	
EndProcedure

Фоновое выполнение достигается путем вызова данной процедуры функцией ВыполнитьВФоне модуля ДлительныеОперации БСП.

Как стартануть?

  1. Скачать и установить расширение через раздел "Администрирование" (БСП) или "Все функции";
  2. Отключить у расширения "Безопасный режим" (необходимо для отправки HTTP-запросов);
  3. Перезапустить конфигурацию;
  4. В панели разделов появится Лайка
  5. Далее создаем новое подключение ("Обновлять в фоне" означает, что метод выгрузки обновлений будет происходит с периодичностью  в отдельном процессе) или сразу идем в обработку "Активирование подключения", откуда также можно его создать.
  6. Выбираем созданное подключение и жмем "Подключиться".
  7. Далее данные подгружаются автоматически (если у подключения установлена опция "Обновлять в фоне"), либо это можно сделать вручную, нажав "Обновить объекты".
  8. После загрузки сведений с сервера IIKO в справочниках должны появится соответствующие данные.
  9. Данные в справочниках фильтруются при отображении в зависимости от активного подключения.
  10. Первая загрузка может быть довольно длительной (при объемных справочниках Номенклатура сотни мегабайт в XML-представлении), но последующие (дельты) грузятся весьма быстро.
  11. Функция "Очистить данные IIKO" позволяет пометить на удаление все данные справочников, очистить служебный регистр сведений и сбросить активное подключение. Справочник "Подключения" остается невредимым.

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

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

Конфигурации - Бухгалтерия предприятия, редакция 3.0 (3.0.70.50), Управление нашей фирмой, редакция 1.6 (1.6.16.178), Управление торговлей, редакция 11 (11.4.6.166). По идее взлетит на любой конфигурации со свежей БСП с режимом совместимости 8.3.12.

IIKO - работа проверена на версиях, начиная с 5.5.4014 по 6.2.4011 (как Chain, так и RMS).

Вступайте в нашу телеграмм-группу Инфостарт

обмен данными IIKO Айко XML справочники HTTP расширение

См. также

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

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

28500 руб.

15.11.2022    30517    42    49    

46

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

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

122000 руб.

19.08.2020    29202    27    3    

28

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (Базовая, ПРОФ, КОРП, ФРЕШ (тонкий клиент)).

17080 руб.

19.12.2016    53535    121    107    

83

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

84000 руб.

05.10.2022    13111    14    8    

16

Внешние источники данных Программист Бизнес-аналитик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Обработка для выгрузки данных из подготовленных СКД в фоновом режиме в базу ClickHouseDB, PostgreSQL, MySQL, в шину данных с поддержкой REST API (CSV, JSON. SQL), в локальные файлы (CSV, JSON, XLS, XLSX) или в Google Sheets. Это дополнительная подключаемая обработка.

18000 руб.

21.08.2024    8328    21    4    

18

Внешние источники данных Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Платные (руб)

Быстро и легко. Выгрузка всех элементов и групп номенклатуры (с их иерархией), кроме помеченных на удаление. Без использования COM-объектов.

4880 руб.

16.08.2023    3747    7    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Chrizt 272 21.06.19 20:30 Сейчас в теме
На КДПВ же хаски 🙈
2. oyti 68 21.06.19 20:42 Сейчас в теме
(1) "Сибирская лайка или хаски – выходец из восточного района Сибири", не?
3. Chrizt 272 09.07.19 15:30 Сейчас в теме
(2) Ну, по сути, все они оттуда.
Но лайки, при ближайшем рассмотрении разительно отличаются от хаски.
В инете вы найдёте очень много противоречивой инфы, поэтому я думаю, что это мог бы быть довольно стрёмный спор.
Просто собака на картинке традиционно узнаётся, скорее, как хаски, нежели лайка.
6. oyti 68 12.07.19 14:49 Сейчас в теме
(3) Не разбираюсь в породах собак. Надеюсь, что теперь более лайковая лайка
4. vshershun 09.07.19 16:53 Сейчас в теме
Соединение с базой установил, написал что ОК, но при попытке обновления данных, выпадает везде где проверяет :

IIKOObject = like_CommonServer.GetIIKOObject(ObjectFields);
>>If IIKOObject.success Then

Тут выпадает с ошибкой свойства:

Лайка ОбщийМодуль.like_EntitiesAtServer.Модуль(174)}: Значение не является значением объектного типа (success)
If IIKOObject.success Then
5. oyti 68 11.07.19 17:20 Сейчас в теме
(4) Да, судя по всему IIKOObject = Undefined и по всей видимости из-за
If IIKOResponse.StatusCode <> 200 Then
		Return Undefined;
	EndIf;

Смотрите, какой HTTP-код возвращается
7. musa1981 01.12.19 02:49 Сейчас в теме
День добрый. Бух. хочет получать данные из Iiko для сдачи отчетности в Налоговые органы и Рос алкоголь регулирование. Достаточно будет этой обработки?
8. oyti 68 03.12.19 10:03 Сейчас в теме
(7) Здравствуйте. Для сдачи отчетности в контролирующие органы, как правило, достаточно типовой выгрузки. Детали уточняйте у обслуживающей организации
9. BigWig 06.12.19 13:47 Сейчас в теме
Добрый день,
у нас айко <version>6.4.3013.0</version>.

при подключении получаю ответ 200 с телом
<serverName>ХХХХХХХХХХХХХХХ</serverName><edition>default</ed­ition><version>6.4.3013.0</version><computerName>ХХХХХХХХХХХХХ</computerName><server­State>STARTED_SUCCESSFULLY</serverState><protocol null="1"></protocol><serverAddr null="1"></serverAddr><serverSubUrl null="1"></serverSubUrl><port>0</port><isPresent>false</isPr­esent>

но при запуске "Обновить объекты"
получаю ответ: код=403, WRONG_EDITION

версия расширения 0.1. Возможно есть новее версия Лайки ???
или какой-то другой способ заставить работать с нашей айко ??
спасибо
10. oyti 68 07.12.19 00:13 Сейчас в теме
(9) Здравствуйте.
Да, существует более свежая версия Лайки, но она распространяется на других условиях.
В вашей версии можно исправить процедуру InitServerInfo() в модуле like_ConnectionAtServer:
Заменить строку:
connectionObject.edition = "IIKO_"+Upper(XDTOResponse.edition);

на строки:
upCaseEdition = Upper(XDTOResponse.edition);
connectionObject.edition = "IIKO_"+?(upCaseEdition = "DEFAULT", "RMS", upCaseEdition);
11. BigWig 07.12.19 14:28 Сейчас в теме
(10) Здравствуйте,
спасибо за реакцию, но уже вчера сам разобрался.
помимо корректировок в коде, необходимо увеличить еще и длину соответствущего
поля edition справочника Подключения (даже значение "IIKO_DEFAULT" не всмещалось).

А где можно почитать/посмотреть функционал, реализованный в новой версии ?
и условия распространения ?

спасибо
12. oyti 68 10.12.19 06:09 Сейчас в теме
(11) В следующем посте опубликована версия 0.2 с просмотром накладных. Текущая версия 0.3.5, но она не распространяется через Infostart
13. klig2022 20.07.22 13:58 Сейчас в теме
(12) Здравствуйте. У нас айко версии 7.6.7. Скачал расширение, но при попытке обновить данные - падает с ошибкой: Неожиданная ошибка в работе архиватора: body.json. Подскажите что это может быть?

{Лайка ОбщийМодуль.like_Common.Модуль(100)}: File.Extract(File.Items[0], TempFilesDir, ZIPRestoreFilePathsMode.DontRestore);
{Лайка ОбщийМодуль.like_CommonServer.Модуль(60)}: XMLResponse = ?(ObjectFields.isGZIP, like_Common.DecompressGZIP(IIKOResponse.GetBodyAsBinaryData()), IIKOResponse.GetBodyAsString());
{Лайка ОбщийМодуль.like_EntitiesAtServer.Модуль(173)}: IIKOObject = like_CommonServer.GetIIKOObject(ObjectFields);
{Лайка Обработка.like_entititesUpdate.Форма.Form.Форма(10)}: like_EntitiesAtServer.Update(,,True);
l1nn1kk1nn1l; +1 Ответить
14. oyti 68 28.07.22 23:47 Сейчас в теме
(13) Здравствуйте. Поддержка устаревших версий не осуществляется
15. klig2022 22.08.22 13:06 Сейчас в теме
(14)
(14) А какая сейчас версия используется?
Для отправки сообщения требуется регистрация/авторизация