В начало

Остатки номенклатуры по двум подразделениям

            В конфигурации имеется документ «Расходная накладная», справочник «Номенклатура» и регистр накопления «Остатки по подразделениям». Необходимо в Фоме выбора номенклатуры, вызываемой из документа «Расходная накладная» отображать остатки по отделу закупок и текущему поставщику.

  

Рис. Структуры данных справочника Номенклатура, документа «Расходная накладная» и регистра накопления «Остатки по подразделениям»

 

            Сначала конечно нужно настроить движение номенклатуры по регистру накопления. Это можно сделать через вкладку Движения свойств документа «Расходная накладная».

            Далее на форму документа «Расходная накладная» нужно добавить кнопку/команду «Открыть форму подбора», для которой прописать процедуру. Текущего поставщика будем передавать параметром Подразделение.

 

Листинг. Процедура для команды/кнопки подбора номенклатуры

&НаКлиенте

Процедура ОткрытьФормуВыбора(Команда)

ПараметрыФормы = Новый Структура("РежимВыбора,ЗакрыватьПриВыборе, МножественныйВыбор", Истина, Истина, Истина);

Владелец=ЭлементыписокНоменклатуры;

Ф=ПолучитьФорму("Справочникоменклатура.ФормаВыбора", ПараметрыФормы, Владелец);

Ф.Списокараметры.УстановитьЗначениеПараметра("Подразделение", Объект.Поставщик);

Ф.Открыть();       

КонецПроцедуры

 

            Потом для таблицы «Список номенклатуры» документа «Расходная накладная» нужно написать обработку выбора.

 

Листинг. Обработка выбора таблицы «Список номенклатуры»

&НаКлиенте

Процедура СписокНоменклатурыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда

Для каждого ТекЗнач Из ВыбранноеЗначение Цикл

Стр=ЭлементыписокНоменклатуры.ТекущиеДанные;

Строменклатура=ТекЗнач;

ЭлементыписокНоменклатуры.ДобавитьСтроку();

КонецЦикла;

КонецЕсли;

КонецПроцедуры

 

            Затем нужно найти форму выбора справочника Номенклатура, перейти к свойствам динамического списка и настроить произвольный запрос.

Откроется конструктор запросов, в котором нужно выбрать таблицу справочника номенклатуры и два раза виртуальную таблицу «ОстаткиПоПодразделениямОстатки».

Рис. Закладка «Таблицы и поля» конструктора запросов

 

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

Рис. Параметры виртуальных таблиц «ОстаткиПоПодразделениямОстатки» и «ОстаткиПоПодразделениямОстатки1»

 

Далее на закладке Связи соединяем таблицы по принципу левого соединения.

Рис. Закладка Связи конструктора запросов

 

            Листинг получившегося запроса показан чуть ниже.

 

Листинг. Текст запроса

ВЫБРАТЬ

      спрНоменклатурааименование КАК Наименование,

      ОстаткиПоПодразделениямОстаткиодразделение,

      ОстаткиПоПодразделениямОстаткиоличествоОстаток КАК ОстатокПоОтделуЗакупок,

      ОстаткиПоПодразделениямОстатки1.КоличествоОстаток КАК ОстатокПоТекущемуПоставщику

ИЗ

      Справочникоменклатура КАК спрНоменклатура

            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакоплениястаткиПоПодразделениям.Остатки(, Подразделение.Наименование = "Отдел закупок") КАК ОстаткиПоПодразделениямОстатки

            ПО спрНоменклатурасылка = ОстаткиПоПодразделениямОстатки.Номенклатура

            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакоплениястаткиПоПодразделениям.Остатки(, Подразделение = &Подразделение) КАК ОстаткиПоПодразделениямОстатки1

            ПО спрНоменклатурасылка = ОстаткиПоПодразделениямОстатки1.Номенклатура

 

            Затем запускаемся в режиме 1С:Предприятие, находим и открывает/создаем накладную, начинаем подбирать позиции номенклатуры.

Рис. Форма выбора номенклатуры

 

            На форме выбора номенклатуры отображаются позиции товаров, а также остатки в двух отделах: отделе закупок и текущем отделе, который указан как поставщик в документе «Расходная накладная».