Откуда получать упаковки и единицы измерения в 1С:Комплексная автоматизация 2?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

При работе с номенклатурой и ценами в тиражных решениях на базе «1С:Предприятие 8» (таких как «1С:Комплексная автоматизация 2», «1С:ERP Управление предприятием» и «1С:Управление торговлей 11») часто возникает вопрос: где именно хранятся упаковки и единицы измерения и как правильно составлять запросы для их извлечения?

Рассмотрим подробно архитектуру хранения упаковок, разберем причины, по которым измерение упаковки может отсутствовать в номенклатуре или регистре цен, и проанализируем практические примеры запросов.

Архитектура хранения упаковок в конфигурациях 1С

В современных конфигурациях 1С используется двухуровневая модель работы с упаковками. Все упаковки и индивидуальные единицы измерения содержатся в едином справочнике Справочник.УпаковкиЕдиницыИзмерения.

Однако реквизит Владелец этого справочника может ссылаться на разные объекты системы:

  1. Справочник Номенклатура — если для позиции задана индивидуальная упаковка или единица измерения.
  2. Справочник НаборыУпаковок — если номенклатура использует общий набор упаковок, который назначается через реквизит номенклатуры НаборУпаковок.

Именно поэтому прямое обращение к номенклатуре для получения списка всех доступных упаковок не всегда дает результат. Если для товара используется общий набор упаковок, в самой номенклатуре реквизит индивидуальной упаковки будет отсутствовать, а ссылки на упаковки будут привязаны к соответствующему элементу справочника НаборыУпаковок.

Извлечение упаковок через запрос в 1С

Для того чтобы получить упаковки и единицы измерения из системы, проанализируем базовый запрос к справочнику УпаковкиЕдиницыИзмерения:


ВЫБРАТЬ
	УпаковкиЕдиницыИзмерения.Владелец КАК Владелец,
	УпаковкиЕдиницыИзмерения.Ссылка КАК Ссылка
ИЗ
	Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиЕдиницыИзмерения

Если требуется получить все упаковки, применимые к конкретной номенклатуре (как индивидуальные, так и из общего набора упаковок), необходимо соединить таблицу номенклатуры со справочником упаковок с выдерживанием следующего условия связи:


ВЫБРАТЬ
	Номенклатура.Ссылка КАК Номенклатура,
	Упаковки.Ссылка КАК Упаковка
ИЗ
	Справочник.Номенклатура КАК Номенклатура
	ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
		ПО (Упаковки.Владелец = Номенклатура.Ссылка
			ИЛИ Упаковки.Владелец = Номенклатура.НаборУпаковок)

Работа с упаковками в регистре цен номенклатуры

Рассмотрим ситуацию, когда необходимо выбрать цены номенклатуры с учетом упаковок. В регистре сведений ЦеныНоменклатуры (или ЦеныНоменклатуры25 в новых релизах) измерение Упаковка имеет следующие особенности заполнения:

  1. Если цена устанавливалась на конкретную упаковку, измерение Упаковка содержит ссылку на соответствующий элемент справочника УпаковкиЕдиницыИзмерения.
  2. Если цена задавалась за базовую единицу измерения товара (например, за штуку или килограмм), измерение Упаковка в регистре будет незаполнено. В таком случае базовую единицу учета следует брать напрямую из реквизита Номенклатура.ЕдиницаИзмерения.

Посмотрим на алгоритм проверки наличия упаковки в запросе сведений о ценах:


ВЫБРАТЬ
	СрезПоследних.Номенклатура КАК Номенклатура,
	ВЫБОР
		КОГДА СрезПоследних.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
			ТОГДА СрезПоследних.Упаковка
		ИНАЧЕ СрезПоследних.Номенклатура.ЕдиницаИзмерения
	КОНЕЦ КАК ЕдиницаИзмеренияУпаковка,
	СрезПоследних.Цена КАК Цена
ИЗ
	РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&Период, ) КАК СрезПоследних

При необходимости пересчета количества или цены из единиц упаковки в базовую единицу хранения обратим внимание на коэффициенты пересчета. В справочнике УпаковкиЕдиницыИзмерения для этих целей используются реквизиты Числитель и Знаменатель.

← На главную