Переход на обязательную маркировку товаров для пользователей 1С 7.7 ставит перед разработчиками сложную задачу. Стандартные механизмы платформы не рассчитаны на хранение длинных уникальных кодов DataMatrix (до 31 символа и более), а ограничение длины кода элемента справочника в 24 символа делает классический подход невозможным. Рассмотрим, как эффективно решить эту проблему, используя возможности SQL-сервера.
Первым делом проанализируем, нужно ли вести полноценный складской учет по каждой марке. Если вы производитель или участник цепочки поставок, необходимость фиксировать движение каждой единицы товара очевидна. Однако создание отдельного справочника в 1С 7.7 приведет к чрезмерному раздуванию базы и проблемам с быстродействием. Вместо этого предлагается вынести хранение кодов маркировки во внешнюю SQL-таблицу. Это решение позволяет хранить любые объемы данных, не затрагивая структуру DBF-файлов конфигурации.
Для хранения кодов маркировки создадим специализированную таблицу в базе данных. В ней мы будем хранить не только сам код маркировки, но и его статус, а также связь с документами 1С. Это обеспечит высокую скорость поиска и удобство при формировании УПД для электронного документооборота.
Рассмотрим пример создания таблицы s_marki:
CREATE TABLE dbo.s_marki (
ROW_ID int NOT NULL IDENTITY(1, 1),
ID_marki nchar(35),
ID_reference nchar(13) NOT NULL,
ID_document nchar(13),
status_km numeric(1),
DATE_mercury smalldatetime,
PRIMARY KEY (ROW_ID),
UNIQUE (ID_marki)
)
CREATE INDEX IND_doc_s_marki ON dbo.s_marki (ID_document)
CREATE INDEX IND_ref_s_marki ON dbo.s_marki (ID_reference)
Такая структура позволяет связать марку с товаром и документом через ID-ссылки, которые 1С использует для идентификации объектов. Поля status_km и DATE_mercury помогут вам отслеживать текущее состояние маркировки: от эмиссии до вывода из оборота.
При отгрузке товара в документе Реализация вам не потребуется переписывать структуру табличной части самого документа. Достаточно реализовать механизм сканирования кодов, при котором кладовщик считывает DataMatrix, а система записывает их в связке с текущим документом в созданную таблицу.
Номенклатура добавьте реквизит-флаг, определяющий, подлежит ли товар маркировке.s_marki, где он привязывается к текущему документу.УПД используйте данные из таблицы s_marki. Поскольку все марки привязаны к конкретному ID_document, вы сможете легко выгрузить список кодов для передачи в электронном виде.Разобрав данную схему, мы видим несколько ключевых преимуществ для 1С 7.7:
ID_document и ID_reference позволяет мгновенно получать списки марок для выбранной реализации, что критично при больших объемах продаж.Помните, что при работе с DataMatrix крайне важно проверять структуру кода. Код содержит GTIN, серийный номер и криптографическую часть, включающую спецсимволы. Убедитесь, что ваш алгоритм считывания корректно обрабатывает все символы, предусмотренные стандартом GS1, в том числе такие, как !\"%&'()*+-./_.
Используя этот подход, вы сможете успешно внедрить маркировку даже в сильно переписанной комплексной конфигурации 1С 7.7, сохранив при этом стабильность и производительность системы.