#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
УстановитьУсловноеОформление();
Организация = Неопределено;
Подразделение = Неопределено;
Если Параметры.Свойство("Отбор") Тогда
Параметры.Отбор.Свойство("Организация", Организация);
Параметры.Отбор.Свойство("Подразделение", Подразделение);
Элементы.ТекстОтбора.Видимость = Истина;
ТекстОтбора = НСтр("ru = 'Организация: %1, Подразделение: %2'");
ТекстОтбора = СтрЗаменить(ТекстОтбора, "%1", Строка(Организация));
ТекстОтбора = СтрЗаменить(ТекстОтбора, "%2", Строка(Подразделение));
Если Параметры.Отбор.Свойство("НаправлениеДеятельности", НаправлениеДеятельности)
И Не ПолучитьФункциональнуюОпцию("УправлениеТорговлей") Тогда
Если ЗначениеЗаполнено(НаправлениеДеятельности) Тогда
ТекстОтбора = ТекстОтбора + ", " + НСтр("ru = 'Направление деятельности: %1'");
ТекстОтбора = СтрЗаменить(ТекстОтбора, "%1", Строка(НаправлениеДеятельности));
Иначе
ТекстОтбора = ТекстОтбора + ", " + НСтр("ru = 'Без указания направления деятельности'");
КонецЕсли;
КонецЕсли;
Элементы.ТекстОтбора.Заголовок = ТекстОтбора;
КонецЕсли;
Элементы.СписокХарактеристика.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры");
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ВосстановитьНастройки();
ЗаполнитьСписок();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
&НаКлиенте
Процедура НачалоПериодаПриИзменении(Элемент)
СохранитьНастройкиИЗаполнитьСписок();
КонецПроцедуры
&НаКлиенте
Процедура КонецПериодаПриИзменении(Элемент)
СохранитьНастройкиИЗаполнитьСписок();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПеренестиТоварыИзДокументов(Команда)
ПоместитьТоварыВХранилище();
ОповеститьОВыборе(Новый Структура("АдресТоваровВХранилище", АдресТоваровВХранилище));
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьДокументы(Команда)
Для Каждого Строка Из Список Цикл
Строка.Выбран = Истина;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ИсключитьДокументы(Команда)
Для Каждого Строка Из Список Цикл
Строка.Выбран = Ложь;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериод(Команда)
ПараметрыПериода = Новый Структура("ДатаНачала, ДатаОкончания", "НачалоПериода", "КонецПериода");
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
ОбщегоНазначенияУТКлиент.РедактироватьПериод(
ЭтаФорма, ПараметрыПериода, ОписаниеОповещения);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"СписокХарактеристика",
"Список.ХарактеристикиИспользуются");
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "СписокЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Список.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериодЗавершение(РезультатВыбора, ДопПараметры) Экспорт
Если РезультатВыбора = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСписок();
КонецПроцедуры
&НаСервере
Процедура ПоместитьТоварыВХранилище()
Товары = Список.Выгрузить(Новый Структура("Выбран", Истина), "Выбран, Номенклатура, Характеристика, Назначение, СтатьяРасходов, АналитикаРасходов, СписаниеНаРасходы, Упаковка, ЕдиницаИзмерения, КоличествоУпаковок");
АдресТоваровВХранилище = ПоместитьВоВременноеХранилище(Товары, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписок()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Т.Номенклатура,
| Т.Характеристика,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Назначения.Заказ) = ТИП(Документ.ЗаказНаВнутреннееПотребление)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ Т.Назначение
| КОНЕЦ КАК Назначение,
| ВЫБОР
| КОГДА СпрНоменклатура.ИспользованиеХарактеристик В (ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры))
| ТОГДА ИСТИНА
| ИНАЧЕ ВЫБОР
| КОГДА Т.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| КОНЕЦ КАК ХарактеристикиИспользуются,
| Т.СтатьяРасходов,
| Т.АналитикаРасходов,
| Док.Ответственный,
| Т.Ссылка КАК СписаниеНаРасходы,
| Док.Дата,
| Док.Склад,
| Т.Упаковка,
| Т.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| СУММА(Т.КоличествоУпаковок) КАК КоличествоУпаковок
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК Т
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннееПотребление КАК Док
| ПО Т.Ссылка = Док.Ссылка
| И (Док.Организация = НЕОПРЕДЕЛЕНО
| ИЛИ Док.Организация = &Организация)
| И (&Подразделение = НЕОПРЕДЕЛЕНО
| ИЛИ Док.Подразделение = &Подразделение)
| И Док.НаправлениеДеятельности = &НаправлениеДеятельности
| И (Док.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию))
| И (Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода)
| И (Док.Проведен)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО Т.Номенклатура = СпрНоменклатура.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО Т.Назначение = Назначения.Ссылка
|ГДЕ
| НЕ Т.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|
|СГРУППИРОВАТЬ ПО
| Т.Номенклатура,
| Т.Характеристика,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Назначения.Заказ) = ТИП(Документ.ЗаказНаВнутреннееПотребление)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ Т.Назначение
| КОНЕЦ,
| ВЫБОР
| КОГДА СпрНоменклатура.ИспользованиеХарактеристик В (ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры))
| ТОГДА ИСТИНА
| ИНАЧЕ ВЫБОР
| КОГДА Т.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| КОНЕЦ,
| Т.СтатьяРасходов,
| Т.АналитикаРасходов,
| Док.Ответственный,
| Т.Ссылка,
| Док.Дата,
| Док.Склад,
| Т.Упаковка,
| Т.Номенклатура.ЕдиницаИзмерения";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Запрос.УстановитьПараметр("НаправлениеДеятельности", НаправлениеДеятельности);
Если НЕ ЗначениеЗаполнено(НачалоПериода) Тогда
НачалоПериода = НачалоМесяца(НачалоМесяца(ТекущаяДатаСеанса()) - 1);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Иначе
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КонецПериода) Тогда
КонецПериода = КонецМесяца(ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Иначе
Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
КонецЕсли;
Список.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
&НаСервере
Процедура ВосстановитьНастройки()
ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Документ.ВнутреннееПотребление", "ПодборДокументовСписания");
НачалоПериода = '00010101';
КонецПериода = '00010101';
Если ТипЗнч(ЗначениеНастроек) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтаФорма, ЗначениеНастроек);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройкиИЗаполнитьСписок()
ИменаСохраняемыхРеквизитов = "НачалоПериода,КонецПериода";
Настройки = Новый Структура(ИменаСохраняемыхРеквизитов);
ЗаполнитьЗначенияСвойств(Настройки, ЭтаФорма);
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Документ.ВнутреннееПотребление", "ПодборДокументовСписания", Настройки);
ЗаполнитьСписок();
КонецПроцедуры
#КонецОбласти