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

01.08.19

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

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

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

Наименование Файл Версия Размер
Лайка - back-office IIKO на 1С
.cfe 63,30Kb
9
.cfe 0.1 63,30Kb 9 Скачать

Вступление

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

Организации, сопровождающие решения 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 расширение

См. также

Перенос данных из Парус 8 в ЗГУ 3

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

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

84000 руб.

19.08.2020    22450    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9208    9    8    

10

Перенос данных из Парус 7.хх в ЗГУ ред.3

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

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

24000 руб.

24.04.2017    48705    97    163    

86

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81570    128    123    

147

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

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

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

24000 руб.

16.11.2018    30003    20    31    

21

Загрузка спецификаций в УНФ из системы Базис-мебельщик

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

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

7200 руб.

24.06.2021    19128    52    50    

29
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Chrizt 264 21.06.19 20:30 Сейчас в теме
2. oyti 55 21.06.19 20:42 Сейчас в теме
(1) "Сибирская лайка или хаски – выходец из восточного района Сибири", не?
3. Chrizt 264 09.07.19 15:30 Сейчас в теме
(2) Ну, по сути, все они оттуда.
Но лайки, при ближайшем рассмотрении разительно отличаются от хаски.
В инете вы найдёте очень много противоречивой инфы, поэтому я думаю, что это мог бы быть довольно стрёмный спор.
Просто собака на картинке традиционно узнаётся, скорее, как хаски, нежели лайка.
6. oyti 55 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 55 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 55 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 55 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 55 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 55 28.07.22 23:47 Сейчас в теме
(13) Здравствуйте. Поддержка устаревших версий не осуществляется
15. klig2022 22.08.22 13:06 Сейчас в теме
(14)
(14) А какая сейчас версия используется?
Оставьте свое сообщение