Автоматизация ресторанного бизнеса часто строится на связке двух систем: iiko для оперативного и управленческого учета и 1С:Предприятие для ведения регламентированного учета и сдачи отчетности. Проблема заключается в том, что стандартные механизмы обмена, предлагаемые разработчиками iiko, не всегда корректно работают с локализованными конфигурациями, такими как «Бухгалтерия для Казахстана» (БК). Рассмотрим детально, как выстроить процесс выгрузки данных, какие «подводные камни» нас ждут и стоит ли писать собственную обработку с нуля.
Разработчики iiko предлагают бесплатную обработку для загрузки данных в 1С, которая работает с промежуточными файлами формата .csv. На первый взгляд, это кажется простым решением, но при более глубоком анализе мы можем столкнуться с рядом проблем. Проанализируем техническую реализацию этого модуля. Как отмечают специалисты, внутренняя структура кода штатной обработки часто бывает далека от идеала. Переменные с нечитаемыми именами типа тз1, Тз12 или сокращения вроде АРаз сильно затрудняют отладку и адаптацию кода под нужды конкретного предприятия.
Более того, штатная обработка часто не учитывает специфику законодательства РК, например, корректное отражение НДС или работу с виртуальными складами. Разберем основные причины, почему стандартный файл .csv может потребовать ручного вмешательства или написания собственного загрузчика:
Если мы решили написать загрузку самостоятельно, первым делом нам необходимо получить тестовые файлы выгрузки из iiko. Проанализируем структуру типичного файла. Несмотря на утверждения, что данных об организации там нет, чаще всего наименование организации присутствует в одной из колонок. Однако для надежности в 1С лучше создать регистр сведений или простую таблицу сопоставления.
Рассмотрим алгоритм создания обработки загрузки. Нам потребуется использовать объект ТекстовыйДокумент или ЧтениеТекста для разбора CSV. Пример кода для инициализации чтения файла:
Текст = Новый ЧтениеТекста;
Текст.Открыть(ПутьКФайлу, КодировкаТекста.UTF8);
СтрокаТекста = Текст.ПрочитатьСтроку();
Пока СтрокаТекста <> Неопределено Цикл
МассивКолонок = СтрРазделить(СтрокаТекста, ";");
// Обработка данных массива
СтрокаТекста = Текст.ПрочитатьСтроку();
КонецЦикла;
Важный момент: при работе с конфигурацией для Казахстана (БК), нам обязательно нужно учитывать БИН/ИИН при поиске контрагентов. В стандартных российских обработках поиск идет по ИНН/КПП, что в условиях Казахстана работать не будет.
При загрузке данных в «Бухгалтерию для Казахстана» мы сталкиваемся с необходимостью работы с Виртуальным складом. iiko ничего не знает о специфике СНТ (Сопроводительных накладных на товары), поэтому при загрузке поступлений товаров в 1С нам придется «дообогащать» данные. Выясним, какие шаги для этого необходимы:
Склады или отдельный регистр соответствий.GUID.Одна из главных проблем интеграции — это модификаторы блюд (добавки к пицце, сиропы в кофе). В iiko модификаторы могут входить в состав блюда или идти отдельными строками. Разберем, как правильно переносить их в 1С. Если модификатор имеет цену, он должен попадать в Отчет о розничных продажах как отдельная позиция номенклатуры. Если это просто уточнение без цены, в бухгалтерском учете его можно игнорировать, но учитывать при списании ингредиентов.
Для корректного сопоставления номенклатуры рекомендуем использовать следующий подход в коде:
Функция НайтиНоменклатуруПоДаннымIiko(ИдентификаторIiko, НаименованиеИзФайла)
// Сначала ищем по уникальному ID из системы iiko
Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("ID_iiko", ИдентификаторIiko);
Если Ссылка.Пустая() Тогда
// Если не нашли, пробуем по наименованию (менее надежно)
Ссылка = Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеИзФайла);
КонецЕсли;
Возврат Ссылка;
КонецФункции
Если обмен через CSV кажется слишком архаичным и нестабильным, рассмотрим использование iikoExchange API. Это позволяет 1С напрямую обращаться к базе iiko. Проанализируем преимущества этого метода:
Однако для реализации обмена через API потребуются навыки работы с HTTPСоединение и разбора JSON. Это более трудозатратный процесс на этапе разработки, но он окупается стабильностью работы системы в будущем.
Подводя итог, можно сказать, что для стандартной «Бухгалтерии для Казахстана» использование «родной» обработки от iiko часто превращается в бесконечный процесс исправления ошибок. Оптимальным решением для программиста будет создание собственного модуля загрузки, использующего CSV как транспорт данных, но с полностью переписанной логикой поиска и создания документов 1С.
Основные советы для успешной интеграции:
Рассмотренные подходы позволят создать надежную систему обмена данными, которая обеспечит прозрачность учета и минимизирует ручной труд бухгалтера.