--- title: Проверка серий номенклатуры в ТЧ slug: типовые-erp-обработка-тч-с-номенклатурой/проверка-серий-номенклатуры-в-тч --- # НЕ ЗАКОНЧЕНО > Использование серий в 1С:ERP определяется функциональной опцией НСИ и администрирование – Настройка НСИ и разделов – Номенклатура – Разрезы учета – Серии товаров. > Далее серии указываются для каждого вида номенклатуры отдельно [Подробнее про настройку серий в ERP](https://efsol.ru/manuals/serial-accounting-1c-erp/?ysclid=mepv3es1ej787928552) ## Настройка формы Создаем таблицу (далее - `СписокНоменклатуры`) с обязательными колонками |Имя|Тип| |-|-| |`Номенклатура`|`СправочникСсылка.Номенклатура`| |`Характеристика`|`СправочникСсылка.ХарактеристикиНоменклатуры`| |`Серия`|`СправочникСсылка.СерииНоменклатуры`| |`СтатусУказанияСерий`|`Число (2,0)`| |`Склад`|`СправочникСсылка.Склады`| |`ХарактеристикиИспользуются`|`Булево`| |`ТипНоменклатуры`|`ПеречислениеСсылка.ТипыНоменклатуры`| Для поля `Серия` устанавливаем связи параметров выбора: ![Изображение](/erp/serii-nomenklatury/1.png) Поле `Склад` обычно не выводится в таблицу, а устанавливается отдельно для всех строк ТЧ. Для этого создадим реквизит объекта `Склад` и разместим в шапке Несмотря на то, что поле `СтатусУказанияСерий` служебное, его рекомендуется создавать на уровне **объекта**, а не **формы**. На форму выводится как `Поле картинки` с картинкой значений `СтатусыУказанияСерий` ![Изображение](/erp/serii-nomenklatury/2.png) Поля `ХарактеристикиИспользуются` и `ТипНоменклатуры` - служебные, и их создаем на уровне **формы**, а не **объекта** Создаем **реквизит формы** `ПараметрыУказанияСерий` с типом `Произвольный` > Пример для случая, когда серии указываются в той же ТЧ, что и номенклатура ## ПриСозданииНаСервере > Пример для случая, когда серии указываются в той же ТЧ, что и номенклатура ```bsl // См. описание метода // Для каждого документа параметры серии могут отличаться, поэтому устанавливаются в менеджере целевого объекта. В примере параметры из документа "ПриобретениеТоваровУслуг" СтруктураПараметров = НоменклатураСервер.ПараметрыУказанияСерий(Объект, <Менеджер объекта>); // где реализован экспортный метод "ПараметрыУказанияСерий" ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(СтруктураПараметров); НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий); НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект, "СерииВсегдаВТЧТовары", "СписокНоменклатурыСерия", "Объект.СписокНоменклатуры.СтатусУказанияСерий", "Объект.СписокНоменклатуры.ТипНоменклатуры"); НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий); ```
Пример реализации параметров учета серий в документе "Приобретение товаров и услуг ```bsl // Возвращает параметры указания серий для товаров, указанных в документе // // Параметры: // Объект - Структура - структура значений реквизитов объекта, необходимых для заполнения параметров указания серий. // // Возвращаемое значение: // Структура - см. НоменклатураКлиентСервер.ПараметрыУказанияСерий. // Функция ПараметрыУказанияСерий(Объект) Экспорт ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий(); ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ПриобретениеТоваровУслуг"; ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Истина); ЗакупкаУПоставщикаПоРеглУчету = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет); Если ЗакупкаУПоставщикаПоРеглУчету Тогда ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; ПараметрыУказанияСерий.ТолькоСерииДляСебестоимости = Истина; Иначе ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = (ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры И Не СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата, Истина)) Или ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; ПараметрыУказанияСерий.ТолькоСерииДляСебестоимости = Ложь; ПараметрыУказанияСерий.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина; КонецЕсли; ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаОтПоставщика); ПараметрыУказанияСерий.ПоляСвязи.Добавить("Склад"); ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение"); ПараметрыУказанияСерий.ЭтоНакладная = Истина; ПараметрыУказанияСерий.Дата = Объект.Дата; ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий"); ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Ссылка"); ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Соглашение"); ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Договор"); ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("ПоступлениеПоЗаказам"); ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_ЗаказПоставщику"); ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("ВариантПриемкиТоваров"); ПараметрыУказанияСерий.ОперацияДокумента = Объект.ХозяйственнаяОперация; ОперацииВПути = Новый Массив(); ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути); ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути); ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути); ОперацииНеотфактуровки = Новый Массив(); ОперацииНеотфактуровки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки); ОперацииНеотфактуровки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки); ХозОперацияТоварыВПутиИНеотфактуровка = ОперацииВПути.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Или ОперацииНеотфактуровки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено; ЭтоТоварыВПути = ОперацииВПути.Найти(Объект.ХозяйственнаяОперация) <> Неопределено; ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ЭтоТоварыВПути", ЭтоТоварыВПути); ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ХозОперацияТоварыВПутиИНеотфактуровка", ХозОперацияТоварыВПутиИНеотфактуровка); Возврат ПараметрыУказанияСерий; КонецФункции ```
## При изменении номенклатуры ```bsl &НаКлиенте Процедура СписокНоменклатурыНоменклатураПриИзменении(Элемент) ТекДанн = Элементы.СписокНоменклатуры.ТекущиеДанные; // см. описание метода ПараметрыЗаполненияСклада = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, Ложь, "Склад", "СкладНаФорме"); СтруктураДействий = Новый Структура; // Проверяем характеристики СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекДанн.Характеристика); // Заполняем склад в ТЧ из реквизита в шапке формы СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПараметрыЗаполненияСклада); // заполняем служебный реквизит "ТипНоменклатуры" СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры")); // Проверяем статус указания серий СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекДанн.Склад, ПараметрыУказанияСерий)); ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекДанн, СтруктураДействий, КэшированныеЗначения); КонецПроцедуры ```