В начало

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

 

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

  

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

 

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

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

 

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

&НаКлиенте

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

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

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

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

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

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

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

 

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

 

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

&НаКлиенте

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

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

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

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

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

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

КонецЦикла;

КонецЕсли;

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

 

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

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

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

 

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

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

 

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

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

 

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

 

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

ВЫБРАТЬ

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

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

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

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

ИЗ

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

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

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

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

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

 

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

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

 

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