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

01.08.19

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Лайка - back-office IIKO на 1С
.cfe 63,30Kb ver:0.1
9
9 Скачать (5 SM) Купить за 3 050 руб.

Вступление

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

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

См. также

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

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

120000 руб.

19.08.2020    26664    26    1    

28

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1347    1    0    

3

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

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

13200 руб.

19.12.2016    48781    99    106    

70

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

Представлена обработка для импорта документов из розничной программы учета товара в торговых точках и аптеках, необходимых для ведения бухгалтерского и налогового учёта, в Бухгалтерию 3.0. При загрузке данных в бухгалтерию переносятся документы поступлений, реализации, возвратов и перемещений в торговых точках и формируются все бухгалтерские и налоговые отчеты с учетом этих документов для любой системы налогообложения. Обработка позволяет загрузить данные из ПО ТрейдФарм. Имеются варианты для других розничных программ (ПО Manuscript Solution, Е-Фарма и S-Market).

18000 руб.

09.04.2020    18726    13    8    

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