Интеграция учетной системы с кассовым программным обеспечением — это критически важный этап автоматизации розничной торговли. В данном руководстве мы разберем, как организовать выгрузку реализаций из системы Супермаг УКМ4 в конфигурацию 1С:Управление торговлей 8 для Беларуси (редакция 3.5). Мы проанализируем ситуацию, когда серверы находятся в одной подсети, а обмен данными происходит через общую сетевую папку в формате XML.
Прежде всего, выясним причину выбора методов интеграции. Редакция 3.5 для Беларуси построена на базе современной платформы и использует возможности Библиотеки стандартных подсистем (БСП) и Библиотеки подключаемого оборудования (БПО). Это дает нам два пути: использовать типовой механизм ККМ Offline или написать собственную обработку загрузки. Рассмотрим оба варианта подробнее.
В современных версиях 1С:Управление торговлей предусмотрен штатный механизм обмена с внешними кассовыми системами. Вместо того чтобы изобретать велосипед и писать код вручную, проанализируем возможность использования встроенных средств.
Отчет о розничных продажах в автоматизированном режиме.Если типовой механизм по каким-то причинам не подходит, разберем, как реализовать загрузку программно. Первым шагом нам необходимо получить список файлов из расшаренной папки сервера УКМ4. Для этого воспользуемся методом НайтиФайлы. Рассмотрим пример кода, который можно использовать в обработке:
// Определяем путь к сетевой папке
ПутьККаталогу = "\\server_ukm4\exchange_folder";
МаскаФайла = "*.xml";
// Получаем список файлов в указанной директории
СписокФайлов = НайтиФайлы(ПутьККаталогу, МаскаФайла, Истина);
Для каждого Файл Из СписокФайлов Цикл
// Проверяем, что это именно файл, а не каталог
Если Файл.ЭтоФайл() Тогда
Сообщить("Обнаружен файл для загрузки: " + Файл.Имя);
// Здесь будет вызываться процедура обработки файла
ОбработатьФайлРеализации(Файл.ПолноеИмя);
КонецЕсли;
КонецЦикла;
Важно помнить: при работе в клиент-серверном варианте 1С, поиск файлов будет выполнять сервер приложений. Убедитесь, что пользователь ОС, под которым запущен экземпляр rphost, имеет права доступа к сетевой папке \\server_ukm4\exchange_folder.
После того как мы нашли файл, нам нужно прочитать его содержимое. Один из универсальных способов — использование объекта ПостроительDOM. Этот метод позволяет загрузить весь XML в память и обращаться к его узлам как к объектам. Разберем по шагам логику чтения:
Процедура ОбработатьФайлРеализации(ИмяФайла)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
// Перебираем узлы документа
Для каждого Элемент Из ДокументDOM.ЭлементДокумента.ДочерниеУзлы Цикл
Если Элемент.ИмяУзла = "Информация" Тогда
// Обрабатываем общую информацию о смене или кассе
ДанныеИнфо = ПрочитатьИнформациюУзла(Элемент);
ИначеЕсли Элемент.ИмяУзла = "Документы" Тогда
// Переходим к чтению строк чеков и реализаций
ДанныеПродаж = ПрочитатьСтрокиДокументов(Элемент);
КонецЕсли;
КонецЦикла;
ЧтениеXML.Закрыть();
КонецПроцедуры
Этот подход удобен тем, что позволяет легко перемещаться по структуре файла, однако для очень больших файлов (десятки мегабайт) он может потреблять много оперативной памяти. В таких случаях лучше использовать последовательное чтение через ЧтениеXML.Прочитать().
Поскольку мы работаем в 1С:УТ 3.5, наиболее профессиональным подходом будет использование XDTO-пакетов. Это позволяет сопоставить структуру XML от Супермаг УКМ4 с объектной моделью 1С. Выясним преимущества этого метода:
XDTO-пакет, описывающий схему данных УКМ4.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипXDTO).ОбъектУКМ.СуммаЧека), что исключает ошибки при ручном разборе строк.При реализации обмена проанализируем следующие моменты, которые часто становятся причиной ошибок:
Сопоставление номенклатуры: В системе УКМ4 и 1С товары должны иметь общие идентификаторы. Чаще всего это Код или Штрихкод. Перед созданием документов убедитесь, что функция поиска номенклатуры корректно отрабатывает ситуацию, когда товар не найден (например, записывает информацию в лог ошибок).
Типы складов: Для того чтобы в 1С:УТ корректно провелся документ Отчет о розничных продажах, склад в системе должен иметь тип Розничный магазин. Если вы пытаетесь загрузить продажи на оптовый склад, система выдаст ошибку проведения.
Автоматизация процесса: Чтобы не запускать обработку вручную, рекомендуется использовать Регламентные задания. Создайте процедуру в серверном модуле, которая будет раз в 15-30 минут проверять наличие новых файлов в папке и загружать их. Это позволит актуализировать остатки в учетной системе практически в реальном времени.
Если у вас нет доступа к ИТС, основным источником информации для вас должен стать Синтаксис-помощник. Выделите интересующий вас метод (например, НайтиФайлы) в конфигураторе и нажмите Ctrl + F1. Там представлено подробное описание всех параметров и примеры использования.
Также помните, что белорусская редакция 3.5 программно идентична российским версиям 11.4/11.5. Поэтому любые руководства по Библиотеке подключаемого оборудования для этих версий будут актуальны и для вашей задачи.