Разработчики 1С часто сталкиваются с ситуацией, когда клиент ставит задачу по автоматизации маркировки «Честный знак» (ГИС МТ), но при этом «партизанит»: не предоставляет доступ к своей рабочей базе, не дает тестовую копию с настроенным подключением и категорически отказывается делиться усиленной квалифицированной электронной подписью (УКЭП). Работа в таких условиях «вслепую» превращается в угадывание алгоритмов, что неизбежно ведет к ошибкам на этапе внедрения.
В этой статье мы подробно разберем, как развернуть полноценное окружение для тестирования маркировки на своей локальной демобазе 1С:Управление торговлей 11.5 (или любой другой конфигурации с поддержкой ИС МП), зарегистрировать вымышленную организацию в тестовом контуре ГИС МТ, бесплатно получить коды маркировки и правильно наполнить базу тестовыми данными.
Существует распространенное заблуждение, что для работы в тестовом контуре «Честного знака» (так называемой Песочнице) обязательно нужна реально существующая организация и настоящая УКЭП. Это не так. Песочница ГИС МТ создана специально для разработчиков и не связана с базами ФНС или ЕГРЮЛ.
Для создания тестового личного кабинета выполним следующие действия:
markirovka.sandbox.crptech.ru). Подключаем тестовую УКЭП через плагин КриптоПро и проходим стандартную процедуру регистрации нового участника.После прохождения этих шагов мы получаем полноценный доступ к личному кабинету участника оборота в тестовом контуре, где можно эмулировать любые действия с маркируемым товаром.
В рабочем (продуктивном) контуре за каждый заказанный код маркировки списывается плата (около 50–60 копеек в зависимости от товарной группы). В тестовом контуре Станция управления заказами (СУЗ) функционирует в демонстрационном режиме.
Мы можем заказывать тысячи кодов для любых видов продукции абсолютно бесплатно. Это позволяет отработать всю цепочку: от отправки запроса на эмиссию из 1С до получения готовых кодов, их печати, агрегации в короба/паллеты и ввода в оборот.
В процессе обсуждения на форумах часто звучит совет: «Зачем заморачиваться, просто возьмите и отсканируйте код с любой пачки сигарет или обувной коробки в магазине и вставьте его в 1С». Проанализируем, почему этот подход не сработает при серьезной разработке:
Если нам необходимо протестировать поведение логики проведения документов, печатных форм или обработки подбора маркированной продукции без прямого подключения к СУЗ, мы можем наполнить соответствующий регистр сведений вручную или с помощью простой обработки.
В современных конфигурациях 1С (УТ, КА, ERP) за хранение полученных кодов отвечает регистр сведений ПулКодовМаркировкиСУЗ. Нам важно правильно заполнить его измерения и ресурсы, особенно соблюдая структуру кодов.
Рассмотрим пример кода на встроенном языке 1С для программного добавления тестовых кодов в этот регистр:
Процедура ЗаполнитьТестовыйПулКодов(ДокументЗаказа, ВыбранныйНоменклатура, ТестовыйGTIN) Экспорт
// Задаем тестовые параметры штрихкода
СерийныйНомер = "AbC12de34Fgh5"; // 13 символов
КлючПроверки = "1234"; // 4 символа
Криптохвост = "qWeRtYuIoPlKjHgFdSaZxCvBnM1234567890abcde="; // 44 символа
// Формируем правильный полный код маркировки со спецсимволами GS (ASCII 29)
СимволGS = Символы.ПС; // В тестовых целях или при записи строки часто используют замену,
// но для 1С ИС МП критично использовать Символ(29)
СимволGS = Символ(29);
СтрокаКодаИдентификации = "01" + ТестовыйGTIN + "21" + СерийныйНомер;
ПолныйКодМаркировки = СтрокаКодаИдентификации + СимволGS + "91" + КлючПроверки + СимволGS + "92" + Криптохвост;
// Создаем запись в регистре сведений
МенеджерЗаписи = РегистрыСведений.ПулКодовМаркировкиСУЗ.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ЗаказНаЭмиссию = ДокументЗаказа;
МенеджерЗаписи.КодМаркировки = СтрокаКодаИдентификации;
МенеджерЗаписи.ПолныйКодМаркировки = ПолныйКодМаркировки;
МенеджерЗаписи.Номенклатура = ВыбранныйНоменклатура;
МенеджерЗаписи.GTIN = ТестовыйGTIN;
МенеджерЗаписи.СерийныйНомер = СерийныйНомер;
// Устанавливаем статус готовности к использованию
МенеджерЗаписи.Состояние = Перечисления.СостоянияКодовМаркировкиСУЗ.ГотовКПечати;
Попытка
МенеджерЗаписи.Записать(Истина);
Сообщить("Тестовый код успешно добавлен в пул СУЗ!");
Исключение
ВызватьИсключение "Ошибка при записи кода в пул: " + ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
При записи полного кода маркировки обязательно разделяйте блоки идентификации данными Символ(29). Это позволит встроенным механизмам БСП (Библиотеки стандартных подсистем) корректно парсить штрихкод при сканировании в форме подбора и проверки.
Чтобы окончательно закрыть потребность в оборудовании и доступах клиента, рекомендуем использовать два проверенных приема:
ИнтеграцияИСМП или ИнтеграцияИСМПВызовСервера). В функции отправки запросов можно временно внедрить директиву компиляции #Если Сервер Тогда и принудительно возвращать структуру успешного ответа, имитируя, что сервер ЧЗ вернул статус «В обороте» или успешно принял документ. Это позволит отладить интерфейсную часть и проведение документов без реального сетевого взаимодействия.Используя тестовый контур, генераторы подписей и программную эмуляцию кодов, мы можем выполнить до 95% задач по маркировке в 1С без какого-либо привлечения ресурсов клиента. Это гарантирует высокое качество кода и спокойное внедрение системы в промышленную эксплуатацию.