В процессе автоматизации загрузки данных в 1С:Управление торговлей 11.4 многие разработчики сталкиваются с тем, что справочник СерииНоменклатуры не имеет прямого поля Владелец. Из-за этого возникает закономерный вопрос: как система понимает, какому товару принадлежит серия, и почему загруженные программно серии исчезают из документов при проведении? Давайте разберем этот процесс по шагам и выясним, как правильно реализовать эту задачу.
Важно уяснить, что в 1С:УТ 11.4 связь серии с товаром реализована не через иерархию справочников, а через сочетание настроек Вида номенклатуры и реквизитов самого элемента Серии номенклатуры.
Серии номенклатуры ключевым полем является реквизит Номенклатура. При создании серии программным способом вы обязаны указать в этом поле ссылку на товар, к которому серия относится.Распространенная проблема, когда при записи или проведении документа (например, ПрочееОприходование) серии очищаются, кроется в защитных механизмах конфигурации. В системе существует процедура НоменклатураСервер.ОчиститьНеиспользуемыеСерии. Она срабатывает, если система считает, что добавленные вами серии не соответствуют текущей настройке учета или состоянию документа.
Чтобы избежать удаления данных, необходимо обратить внимание на два критических аспекта:
В табличных частях документов, где используются серии (например, в колонке Товары), обязательно должен быть корректно заполнен реквизит СтатусУказанияСерий. Этот статус сообщает системе, на каком этапе находится процесс указания серии. Если вы загружаете данные программно, убедитесь, что это значение соответствует требуемому для вашего типа операции (например, при поступлении товара статус должен отражать необходимость ввода серий для оприходования).
При программном создании серии используйте следующий подход. Давайте рассмотрим примерный алгоритм формирования объекта:
// Пример создания серии номенклатуры программно
НоваяСерия = Справочники.СерииНоменклатуры.СоздатьЭлемент();
НоваяСерия.Владелец = Неопределено; // Владельца нет, так как это не подчиненный справочник
НоваяСерия.Номенклатура = СсылкаНаТовар; // ОБЯЗАТЕЛЬНО указываем владельца через реквизит
НоваяСерия.Наименование = "ВашаСерия_001";
// Заполняем специфичные для политики учета данные (например, срок годности)
НоваяСерия.СрокГодности = ТекущаяДата() + 365 * 86400;
НоваяСерия.Записать();
Если вы столкнулись с тем, что серии не видны в подборе или удаляются, проанализируйте следующие моменты:
Вида номенклатуры выбран вариант использования серий (например, Учет остатков серий или Справочное указание).ПрочееОприходование, проверьте, что операция документа подразумевает движение по сериям.ОчиститьНеиспользуемыеСерии для отладки, помните, что это не решение проблемы, а лишь способ убедиться в корректности данных. Обязательно верните штатный механизм проверки и добейтесь того, чтобы серии проходили внутреннюю валидацию 1С без ошибок.Подводя итог, можно сказать, что ключом к успеху является точное соответствие программно создаваемых серий настройкам Вида номенклатуры и обязательное заполнение реквизита СтатусУказанияСерий в строках документа. Соблюдение этих правил позволит системе правильно идентифицировать серии и корректно проводить документы с ними.