Вступление
Здравствуйте, друзья. Меня зовут Тян Семен. В Лемме я отвечаю отвечал за обмен между IIKO и 1С. За плечами нашего коллектива не только отточенный типовой обмен из Айко в 1С:Бухгалтерию, но и несколько успешно реализованных проектов по интеграции учетных систем: от загрузки документа "Учет рабочего времени" (не участвует в типовом обмене) в 1С:Зарплата и управление персоналом до регламентного фонового двустороннего обмена с доработанной для производства Бухгалтерией предприятия.
В цикле публикаций, посвященному консолидации IIKO и 1С, рассматриваются альтернативные варианты обмена данными между учетными системами с целью решить вопросы, которые выходят за рамки типового решения.
В прошлых публикациях были рассмотрены нетиповые варианты обмена между учетными системами, а также создание номенклатуры из 1С в IIKO.
Постановка вопроса
Необходимо создать приходную накладную в IIKO на основании перемещения товаров из 1С:Управление торговлей. Цены формируем по последнему поступлению. Сопоставление справочных сведений производится в явном виде через специальные редактор, сопоставления сохраняются и восстанавливаются при последующих запусках.
Реализация и подводные камни
Первый неочевидный момент, с которым пришлось столкнуться в ходе реализации, это необходимость сопоставления нескольких номенклатурных позиций 1С с одной номенклатурной позицией Айко. Так происходит потому, что в Айко в разрезе технологических карт нецелесообразно вести несколько позиций составляющих (к примеру 3 вида сахара или 5 наименований сметаны). В то время, как в 1С вполне естественно у нас присутствуют различные номенклатурные позиции от разных поставщиков и с разными ценами, объединенные одним типом (мука, масло, сахар и т. п.).
Вторая сложность, с которой мы столкнулись, это пустой ответ на запрос по описанной ранее схеме (см. IIKO (Айко). Обмениваемся накладными с 1С). Первая мысль - в свежей версии сервера IIKO отсутствовал необходимый функционал. Однако в ходе попыток установить корень проблемы выяснилось, что виновником был PostgreSQL. Точнее тот факт, что данную СУБД не так часто используют при развертывании IIKO (в основном это MS SQL). С учетом того, что сервер для разработки крутится на MS SQL, а боевой на PostgreSQL, данный факт сулил определенные неудобства. Решение пришло само собой - определять СУБД "на лету" при первом же запросе, а в последствии формировать запрос соответствующий типу.
Третий вопрос, который необходимо было решить в ходе реализации, это преобразование различных единиц измерения - как в случае, к примеру, сопоставления 3х различных номенклатурных позиций в штуках (пачки по 500, 750 и 800 грамм) преобразовывать в граммы IIKO. В решении данного вопроса в значительной степени помог типовой функционал УТ: возможность указания мер длин, весов, площади для номенклатурной позиции. Таким образом, при расхождении единиц измерения мы всегда можем динамически рассчитать коэффициент на основе данных справочника.
Сценарий использования
Решение реализовано в виде внешней обработки, что предоставляет известную гибкость в использовании и сопровождении. При запуске загружаются справочные сведения из IIKO для последующего сопоставления.
В основном окне пользователем осуществляется подбор перемещений для выгрузки. По окончанию подбора пробуем передать документы. Если перед отправкой были найдены несопоставленные значения номенклатуры или складов, то автоматически происходит переключение на соответствующую вкладку.На вкладке "Номенклатура" помимо сопоставления с уже имеющейся позицией в IIKO можно создать новую не покидая 1С. Если наименование номенклатуры в обеих системах совпадает с точностью до символа, то можно сопоставить такие строки автоматически.
Выводы
Описанный механизм взаимодействия позволяет решать самые различные задачи автоматизации. Не так давно в разговоре с коллегами обсуждали одно из неудобств IIKO в сравнении с 1С - нет ряда служебных механизмов по групповой обработке данных. "А почему бы и нет?". И правда, современные возможности платформы 1С и разработанная методика интеграции систем позволяют решать не только повседневные учетные задачи, но и вопросы корректировки, внедрения и сопровождения.
Спасибо за внимание. Буду рад ответить в комментариях на возникшие вопросы.
Версии программного обеспечения
Платформа - 1С:Предприятие 8.3 (8.3.11.2867). По идее подойдет и гораздо старше, начиная с появления методов для работы с HTTP, строковые функции типа СтрРазделить. Требования к РасшифроватьGZIP имеются на странице публикации.
Конфигурация - Управление торговлей, редакция 11 (11.4.5.63).
IIKO - работа проверена на версиях, начиная с 4.5.4038 по 6.0.3011 (как Chain, так и RMS)