Как перенести накладные, продажи и номенклатуру из iiko в 1С
Содержание
Выгрузка данных из Айко (iiko) в 1С делается одним из трёх способов: файлами Excel или XML с загрузкой в документы 1С, готовым модулем обмена или собственной обработкой через API iikoServer. Для ресторана с одной точкой обычно хватает файлов раз в неделю. Для сети с ежедневными поставками без автоматического обмена не обойтись.
Главная боль у всех одна: в iiko товар называется «Сыр моцарелла 1 кг», а в 1С — «Моцарелла, кг», склады и контрагенты тоже не совпадают. Пока справочники не сопоставлены, любой способ даст дубли и пересортицу. Поэтому начинаем с подготовки, а потом разбираем каждый способ с примерами.
Что сделать до первой выгрузки из Айко
Подготовка занимает больше времени, чем сама выгрузка. Зато потом обмен идёт без ручных правок.
- Решите, какая система главная по справочникам. Обычно номенклатуру и контрагентов ведут в iiko, а 1С только принимает данные. Если заводить товары в обеих программах, они разойдутся через месяц.
- Сверьте склады. Каждому складу iiko (кухня, бар, основной склад) должен соответствовать склад в 1С. Тип склада в 1С влияет на то, каким документом отражать выручку.
- Сверьте единицы измерения. iiko часто хранит сырьё в килограммах и литрах, а поставщик продаёт в упаковках. Определитесь, в каких единицах товар живёт в 1С.
- Проверьте поставщиков по ИНН. ИНН — единственный надёжный ключ для сопоставления контрагентов. Название «ООО Ромашка» и «Ромашка ООО» программа сочтёт разными.
- Зафиксируйте дату начала обмена. Всё, что раньше этой даты, вводится остатками, а не документами.
- Определитесь с себестоимостью. iiko списывает продукты по технологическим картам. В 1С можно взять готовое списание из iiko или считать выпуск через спецификации. Выбирайте одно, иначе себестоимость задвоится.
Перед первой загрузкой в рабочую базу сделайте резервную копию 1С. Пробный прогон лучше выполнить в копии базы: так видно, сколько дублей номенклатуры создастся.
Какие документы iiko во что превращаются в 1С
Прежде чем выбирать способ, полезно понять, что именно переносить. Ниже соответствие для 1С:Бухгалтерии 3.0.
| Документ iiko | Документ в 1С:Бухгалтерии 3.0 | Что важно |
|---|---|---|
| Приходная накладная | Поступление (акты, накладные, УПД) | Поставщик по ИНН, номер и дата входящего документа, НДС |
| Продажи за смену (кассовая смена) | Отчёт о розничных продажах | Наличные и безналичные оплаты разделяются |
| Списание по техкартам | Требование-накладная или Отчёт производства за смену | Зависит от выбранной схемы себестоимости |
| Акт списания (порча, бой) | Списание товаров | Причина списания для налогового учёта |
| Внутреннее перемещение | Перемещение товаров | Склады должны быть сопоставлены |
| Инвентаризация | Инвентаризация товаров | После неё — оприходование или списание разницы |
| Возврат поставщику | Возврат товаров поставщику | Ссылка на исходное поступление |
💡 Для бухгалтерии не обязательно тащить каждый чек. Сводная выручка за смену или за день по каждой точке даёт ту же картину и в десятки раз меньше документов.
Способ 1. Выгрузка данных из Айко через файлы Excel и XML
Подходит, если документов немного: одна-две точки, десяток поставок в неделю. Ничего не нужно покупать и настраивать.
Выгрузка из iikoOffice
- Откройте в iikoOffice журнал нужных документов или отчёт (например, OLAP-отчёт по продажам за период).
- Отфильтруйте период и склад.
- Выгрузите таблицу в Excel командой экспорта, которая есть у таблиц и отчётов iikoOffice.
- В Excel оставьте только нужные колонки: артикул или код, наименование, единица, количество, цена, сумма, ставка НДС.
- Сохраните файл в формате
.xlsxбез объединённых ячеек и итоговых строк.
Загрузка в 1С
В 1С:Бухгалтерии 3.0 табличную часть документа можно заполнить из файла:
- Создайте документ, например
Покупки → Поступление (акты, накладные, УПД) → Товары (накладная, УПД). - Заполните шапку: поставщик, склад, номер и дата входящей накладной.
- На закладке «Товары» нажмите кнопку загрузки из файла и выберите подготовленный Excel.
- Укажите соответствие колонок, проверьте, какие строки 1С не узнала.
- Для неузнанных строк выберите существующую номенклатуру или создайте новую.
Номенклатуру можно завести заранее и целиком: в списке Справочники → Номенклатура тоже есть загрузка из файла. Если её нет в вашем релизе, используйте универсальную обработку загрузки данных из табличного документа.
Сопоставление колонок удобно сразу записать себе, чтобы каждый раз не вспоминать:
XML-выгрузку из iiko используют, когда пишут свою обработку загрузки: XML стабильнее Excel, в нём не съезжают колонки и форматы чисел.
Способ 2. Автоматический обмен через CommerceML и EnterpriseData
Этот раздел часто описывают неточно, поэтому по порядку.
CommerceML — формат 1С для обмена с интернет-магазинами: каталог товаров, цены, остатки, заказы. Сам iiko в этом формате с бухгалтерией не обменивается. CommerceML встречается только тогда, когда между iiko и 1С стоит сторонний коннектор или сайт доставки, который уже умеет отдавать заказы в формате CommerceML.
EnterpriseData — универсальный формат обмена между типовыми конфигурациями 1С. Готовые модули интеграции iiko с 1С от партнёров часто формируют документы именно в нём. Тогда 1С загружает пакет через стандартный механизм синхронизации, как будто данные пришли из другой базы 1С.
Как выглядит такой обмен на практике:
- На стороне iiko или на промежуточном сервере работает коннектор, который забирает документы.
- Коннектор складывает пакет в каталог, на FTP или отдаёт по HTTP.
- В 1С настроена синхронизация
Администрирование → Синхронизация данных, которая забирает пакет по расписанию. - При первом обмене 1С показывает форму сопоставления справочников: здесь вы один раз связываете товары, склады и контрагентов.
Сопоставление при первом обмене проверяйте вручную, особенно номенклатуру. Автоматическое сопоставление по наименованию на ресторанных справочниках ошибается часто: «Лук» и «Лук зелёный» легко склеиваются.
Способ 3. Загрузка из Айко в 1С через API iikoServer
Для тех, у кого есть программист 1С. iikoServer (бэк-офис) имеет HTTP API: по нему можно получить номенклатуру, склады, накладные и отчёты. Программа в 1С сама забирает данные и создаёт документы.
Схема работы:
- 🔑 авторизация: запрос
/resto/api/authс логином и SHA1-хешем пароля, в ответ приходит ключ сессии; - 📦 запросы данных с параметром
key, например выгрузка приходных накладных за период; - 🚪 выход
/resto/api/logout— обязательно.
Каждая открытая сессия API занимает лицензию iiko. Если обработка не вызывает выход, лицензии кончаются, и iikoOffice у сотрудников перестаёт подключаться. Выход ставьте и в обработку ошибок.
Заведите в iiko отдельного пользователя для обмена с правами только на чтение нужных данных. Адрес и порт сервера возьмите из настроек подключения iikoOffice.
Пример: получить приходные накладные за период и сохранить XML в файл. Код рассчитан на платформу 8.3 с номером не ниже 8.3.9.
Функция ВыгрузитьНакладныеIiko(Сервер, Порт, Логин, Пароль, НачалоПериода, КонецПериода, ИмяФайла) Экспорт
Хеш = Новый ХешированиеДанных(ХешФункция.SHA1);
Хеш.Добавить(Пароль);
ХешПароля = НРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеш.ХешСумма));
Соединение = Новый HTTPСоединение(Сервер, Порт, , , , 60, Новый ЗащищенноеСоединениеOpenSSL);
ЗапросАвторизации = Новый HTTPЗапрос("/resto/api/auth?login=" + Логин + "&pass=" + ХешПароля);
Ответ = Соединение.Получить(ЗапросАвторизации);
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение "Ошибка авторизации iiko: " + Ответ.ПолучитьТелоКакСтроку();
КонецЕсли;
Ключ = СокрЛП(Ответ.ПолучитьТелоКакСтроку());
Попытка
Адрес = СтрШаблон("/resto/api/documents/export/incomingInvoice?key=%1&from=%2&to=%3",
Ключ,
Формат(НачалоПериода, "ДФ=yyyy-MM-dd"),
Формат(КонецПериода, "ДФ=yyyy-MM-dd"));
Ответ = Соединение.Получить(Новый HTTPЗапрос(Адрес));
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение "Ошибка выгрузки накладных: " + Ответ.ПолучитьТелоКакСтроку();
КонецЕсли;
Ответ.ПолучитьТелоКакДвоичныеДанные().Записать(ИмяФайла);
Исключение
Соединение.Получить(Новый HTTPЗапрос("/resto/api/logout?key=" + Ключ));
ВызватьИсключение;
КонецПопытки;
Соединение.Получить(Новый HTTPЗапрос("/resto/api/logout?key=" + Ключ));
Возврат ИмяФайла;
КонецФункции
Если сервер iiko работает по HTTP без шифрования (локальная установка), последний параметр ЗащищенноеСоединениеOpenSSL уберите. Дальше обработка читает файл через ЧтениеXML, находит контрагента по ИНН, номенклатуру по коду iiko и создаёт документ поступления.
💡 Код iiko храните в 1С: например, в дополнительном реквизите номенклатуры и контрагента. Тогда повторная загрузка находит элемент сразу, а не перебирает похожие названия.
Особенности выгрузки для разных конфигураций 1С
Набор документов-приёмников зависит от конфигурации. Платформенная часть (файлы, API, синхронизация) одинакова.
| Конфигурация | Куда грузить продажи | Куда грузить поступления | Что учесть |
|---|---|---|---|
| 1С:Бухгалтерия 3.0 | Отчёт о розничных продажах | Поступление (акты, накладные, УПД) | Тип склада влияет на учёт выручки; производство — Отчёт производства за смену |
| 1С:Управление торговлей 11 | Отчёт о розничных продажах | Приобретение товаров и услуг | Нет бухгалтерского производства, сборка блюд в УТ ограничена |
| 1С:Комплексная автоматизация 2 / ERP | Отчёт о розничных продажах | Приобретение товаров и услуг | Производство и себестоимость можно вести в 1С, тогда списания по техкартам из iiko не грузят |
| Отраслевые решения для общепита | По документам решения | По документам решения | Часто имеют свою загрузку из iiko, сначала проверьте её |
| 1С:Бухгалтерия 2.0 (8.2) | — | — | Готовые модули под неё почти не поддерживаются, лучше переход на 3.0 |
Как автоматизировать обмен и не задвоить документы
Когда загрузка налажена руками, её переводят на расписание.
- ⏰ Регламентное задание. Обработка запускается ночью и забирает документы за прошлый день. В файловой базе регламентные задания выполняются только при открытом сеансе, поэтому для автоматики нужна клиент-серверная база или отдельный запуск по расписанию Windows.
- 🆔 Идентификатор документа iiko. Сохраняйте его в загруженном документе 1С. Перед созданием нового документа проверяйте, не загружен ли он раньше. Это единственная надёжная защита от дублей при повторном запуске.
- 📅 Окно загрузки. Забирайте не только вчерашний день, а последние 3–7 дней: в iiko задним числом правят накладные. Изменённый документ обновляйте, а не создавайте заново.
- 🔒 Дата запрета изменения. После закрытия месяца в 1С установите дату запрета. Тогда правка в iiko за прошлый месяц не перепишет сданную отчётность, а выдаст ошибку в журнале обмена.
- 📨 Журнал обмена. Пусть обработка пишет в журнал регистрации, сколько документов создала и какие строки не сопоставила. Бухгалтер раз в день проверяет только ошибки.
Кроме своей обработки есть и другие варианты:
- готовый модуль интеграции от iiko или партнёров — быстрее всего, но платный и под конкретные конфигурации;
- промежуточный сервис-коннектор, который берёт данные из iiko и отдаёт в 1С пакетами;
- сводный ручной ввод: бухгалтер раз в месяц вводит одну выручку по точке и поступления по оригиналам документов поставщиков. Для маленькой кофейни это честный и дешёвый вариант.