Интеграция 1С с терминалами Эвотор через драйвер «ККМ Offline» часто вызывает вопросы у специалистов, особенно когда первичная выгрузка прошла успешно, а последующие попытки обновить данные или загрузить их заново после очистки кассы не приносят результата. Проблема осложняется тем, что обмен данными между 1С и Эвотором происходит через облачный сервис (LMS), который накладывает свои ограничения на структуру данных и механизмы синхронизации.
В данной статье мы подробно разберем, почему «тихо» перестает работать выгрузка полного прайс-листа, как принудительно заставить систему отправить все данные заново и на какие критические ошибки в данных стоит обратить внимание.
Для начала проанализируем, как 1С понимает, что именно нужно отправить на кассу. В конфигурации 1С:Розница используется механизм планов обмена. Когда вы нажимаете кнопку «Выгрузить», система не просто берет всю номенклатуру, а обращается к регистрам, где зафиксированы изменения объектов с момента последней удачной синхронизации.
Если вы удалили товары на самом терминале Эвотор, 1С об этом «не знает». С точки зрения учетной системы, данные уже были успешно переданы, и повторная команда «Выгрузить полный прайс» может не сработать, если в узле плана обмена для данной кассы не зарегистрированы изменения.
Если вы столкнулись с ситуацией, когда выгрузка не идет, первым делом необходимо проверить регистрацию объектов. Рассмотрим, как это сделать правильно:
Справочник.Номенклатура или Справочник.Штрихкоды стоит «0», значит, 1С считает, что отправлять нечего.Чтобы «протолкнуть» данные, выполните следующие действия:
Нажмите правую кнопку мыши на нужном справочнике и выберите Зарегистрировать изменения всех объектов выбранного типа. После этого счетчик объектов изменится, и при следующей выгрузке 1С сформирует полный пакет данных.
Одной из наиболее коварных проблем при интеграции с Эвотором является несоответствие форматов налоговых ставок. Как отмечалось в обсуждении на форуме, Эвотор крайне чувствителен к полю НДС. Рассмотрим ситуацию подробнее.
API Эвотора ожидает строковые константы, такие как VAT_20, VAT_10, NO_VAT. В то же время типовые обработки в старых версиях 1С:Розница (например, 2.2.8.27) могли пытаться передать числовые значения (20, 10) или пустые строки. Если хотя бы один товар в пакете содержит некорректную ставку НДС, облако Эвотора может отклонить весь POST-запрос целиком, при этом в интерфейсе 1С вы можете не увидеть явной ошибки, кроме «Данные не выгружены».
Проанализируем пример того, как данные должны выглядеть в JSON-пакете перед отправкой:
{
"uuid": "5bc3...",
"name": "Товар тестовый",
"code": "00001",
"barcodes": ["4600000000001"],
"price": 100.00,
"tax": "VAT_20",
"type": "NORMAL"
}
Если вы видите в логах или при отладке в переменной запроса значение "tax": "20" или "tax": "", это является прямой причиной отказа в приеме данных. Необходимо проверить сопоставление налоговых ставок в настройках интеграции или внести правки в программный код обработки выгрузки.
Выясним еще одну причину: Эвотор — это облачная система. Когда вы удаляете товары на физическом терминале 7.2, они удаляются из локальной базы Android-устройства, но зачастую остаются в Личном кабинете Эвотор (облаке).
Когда 1С отправляет товар с тем же UUID (уникальным идентификатором), облако может посчитать, что запись дублируется или не требует обновления, если версия объекта не изменилась. Для «чистого старта» мы рекомендуем:
Эвотор 7.2 имеет ограниченные аппаратные ресурсы (всего 1 ГБ оперативной памяти). Выгрузка большого количества номенклатуры с картинками может приводить к таймаутам при передаче JSON или к зависанию приложения на самой кассе.
Рассмотрим рекомендации по оптимизации:
Если ручная регистрация через обработку не помогает, программист может воспользоваться следующим фрагментом кода для принудительного сброса состояния обмена для конкретного узла кассы:
// Пример программной регистрации всех товаров для узла Эвотор
УзелОбмена = ПланыОбмена.УдаленныйКассовыйУзел.НайтиПоКоду("EV001");
ВыборкаНоменклатуры = Справочники.Номенклатура.Выбрать();
Пока ВыборкаНоменклатуры.Следующий() Цикл
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ВыборкаНоменклатуры.Ссылка);
КонецЦикла;
Этот метод гарантирует, что при следующем сеансе связи 1С попытается отправить абсолютно все карточки товаров, которые есть в базе. Важно: убедитесь, что у товаров заполнены обязательные поля: Наименование, Цена (не нулевая), Штрихкод и Ставка НДС.
Подводя итог: для успешной повторной выгрузки необходимо синхронизировать три состояния: Регистрацию изменений в 1С, Список товаров в Облаке Эвотор и Локальную базу терминала. Только при «чистоте» всех трех звеньев вы сможете добиться корректного наполнения кассы актуальным ассортиментом.