#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если ОтборДата.Дата = '000101010000' Тогда
ОтборДата.Вариант = ВариантСтандартнойДатыНачала.НачалоЭтогоДня;
КонецЕсли;
Элементы.СписокПартияДатаНачалаЭксплуатации.Формат = НСтр("ru = 'ДФ=''ММММ гггг'''");
Элементы.СписокПартияДатаЗавершенияЭксплуатации.Формат = НСтр("ru = 'ДФ=''ММММ гггг'''");
УстановитьПараметрыСписка(ЭтотОбъект, ТекущаяДатаСеанса());
НастроитьЗависимыеЭлементыФормыНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_СписаниеИзЭксплуатации"
ИЛИ ИмяСобытия = "Запись_ПрочееОприходованиеТоваров"
ИЛИ ИмяСобытия = "Запись_ЗаказНаВнутреннееПотребление" Тогда
ОбновитьДанныеКогдаФормаСтанетАктивной();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОтборДатаПриИзменении(Элемент)
Если ОтборДата.Дата = '000101010000' Тогда
ОтборДата.Вариант = ВариантСтандартнойДатыНачала.НачалоЭтогоДня;
КонецЕсли;
УстановитьПараметрыСписка(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура ОтборПодразделениеПриИзменении(Элемент)
УстановитьПараметрыСписка(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура ОтборМОЛПриИзменении(Элемент)
УстановитьПараметрыСписка(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура ОтборОрганизацияПриИзменении(Элемент)
УстановитьПараметрыСписка(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле = Элементы.СписокНоменклатура Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(, ТекущиеДанные.Номенклатура);
ИначеЕсли Поле = Элементы.СписокКатегорияЭксплуатации Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(, ТекущиеДанные.КатегорияЭксплуатации);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Списать(Команда)
СоздатьСписание();
КонецПроцедуры
&НаКлиенте
Процедура Вернуть(Команда)
СоздатьВозврат();
КонецПроцедуры
&НаКлиенте
Процедура Заказать(Команда)
СоздатьЗаказ();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтотОбъект, "СписокХарактеристика", "Список.ХарактеристикиИспользуются");
ТМЦВЭксплуатацииСервер.УстановитьУсловноеОформлениеИнвентарногоНомера(
ЭтотОбъект, "СписокИнвентарныйНомер", "Список.ИнвентарныйУчет", "Список.Партия");
ТМЦВЭксплуатацииСервер.УстановитьУсловноеОформлениеФизЛица(
ЭтотОбъект, "СписокФизическоеЛицо", "Список.УчетПоФизЛицам", "Список.Партия");
КонецПроцедуры
&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере()
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций") Тогда
Элементы.СписокОрганизация.Видимость = Ложь;
КонецЕсли;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения") Тогда
Элементы.СписокПодразделение.Видимость = Ложь;
КонецЕсли;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры") Тогда
Элементы.СписокХарактеристика.Видимость = Ложь;
КонецЕсли;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры")
ИЛИ НЕ ТМЦВЭксплуатацииПовтИсп.ВозможенУчетСерийВЭксплуатации() Тогда
Элементы.СписокСерия.Видимость = Ложь;
КонецЕсли;
Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.СписаниеИзЭксплуатации) Тогда
Элементы.СписокСписать.Видимость = Ложь;
КонецЕсли;
Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.ПрочееОприходованиеТоваров) Тогда
Элементы.СписокВернуть.Видимость = Ложь;
КонецЕсли;
Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.ЗаказНаВнутреннееПотребление) Тогда
Элементы.СписокЗаказать.Видимость = Ложь;
КонецЕсли;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрослеживаемыхИмпортныхТоваров") Тогда
Элементы.СписокНомерГТД.Видимость = Ложь;
Элементы.СписокКоличествоПоРНПТ.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанныеКогдаФормаСтанетАктивной()
ПодключитьОбработчикОжидания("Подключаемый_ОбновитьДанныеКогдаФормаСтанетАктивной", 0.8, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьДанныеКогдаФормаСтанетАктивной()
Если ВводДоступен() Тогда
Элементы.Список.Обновить();
Иначе
ОбновитьДанныеКогдаФормаСтанетАктивной();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПараметрыСписка(Знач Форма, Знач ТекДата)
Список = Форма.Список;
Список.Параметры.УстановитьЗначениеПараметра("Период", ?(Форма.ОтборДата.Дата <> '000101010000', КонецДня(Форма.ОтборДата.Дата), КонецДня(ТекДата)));
Список.Параметры.УстановитьЗначениеПараметра("Организация", Форма.ОтборОрганизация);
Список.Параметры.УстановитьЗначениеПараметра("Подразделение", Форма.ОтборПодразделение);
Список.Параметры.УстановитьЗначениеПараметра("ФизическоеЛицо", Форма.ОтборФизическоеЛицо);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьСписание()
СписокТМЦ = Новый Массив;
ТекущаяОрганизация = Неопределено;
ТекущееПодразделение = Неопределено;
Для Каждого ИдентификаторСтроки Из Элементы.Список.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.Список.ДанныеСтроки(ИдентификаторСтроки);
Если ДанныеСтроки.Организация <> ТекущаяОрганизация
И ТекущаяОрганизация <> Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одной организации'"));
Возврат;
КонецЕсли;
Если ДанныеСтроки.Подразделение <> ТекущееПодразделение
И ТекущееПодразделение <> Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одного подразделения'"));
Возврат;
КонецЕсли;
СвойстваТМЦ = Новый Структура;
СвойстваТМЦ.Вставить("ИнвентарныйНомер", ДанныеСтроки.ИнвентарныйНомер);
СвойстваТМЦ.Вставить("Номенклатура", ДанныеСтроки.Номенклатура);
СвойстваТМЦ.Вставить("Характеристика", ДанныеСтроки.Характеристика);
СвойстваТМЦ.Вставить("Серия", ДанныеСтроки.Серия);
СвойстваТМЦ.Вставить("ФизическоеЛицо", ДанныеСтроки.ФизическоеЛицо);
СвойстваТМЦ.Вставить("НаправлениеДеятельности", ДанныеСтроки.НаправлениеДеятельности);
СвойстваТМЦ.Вставить("Партия", ДанныеСтроки.Партия);
СвойстваТМЦ.Вставить("Количество", ДанныеСтроки.Количество);
СвойстваТМЦ.Вставить("НомерГТД", ДанныеСтроки.НомерГТД);
СвойстваТМЦ.Вставить("КоличествоПоРНПТ", ДанныеСтроки.КоличествоПоРНПТ);
СписокТМЦ.Добавить(СвойстваТМЦ);
ТекущаяОрганизация = ДанныеСтроки.Организация;
ТекущееПодразделение = ДанныеСтроки.Подразделение;
КонецЦикла;
Если СписокТМЦ.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ, для которых требуется оформить списание'"));
Возврат;
КонецЕсли;
РеквизитыШапки = Новый Структура;
РеквизитыШапки.Вставить("Организация", ТекущаяОрганизация);
РеквизитыШапки.Вставить("Подразделение", ТекущееПодразделение);
ДанныеОснования = Новый Структура;
ДанныеОснования.Вставить("РеквизитыШапки", РеквизитыШапки);
ДанныеОснования.Вставить("Товары", СписокТМЦ);
ПараметрыФормы = Новый Структура("Основание", ДанныеОснования);
ОткрытьФорму("Документ.СписаниеИзЭксплуатации.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьВозврат()
СписокТМЦ = Новый Массив;
ТекущаяОрганизация = Неопределено;
ТекущееПодразделение = Неопределено;
Для Каждого ИдентификаторСтроки Из Элементы.Список.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.Список.ДанныеСтроки(ИдентификаторСтроки);
Если ДанныеСтроки.Организация <> ТекущаяОрганизация
И ТекущаяОрганизация <> Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одной организации'"));
Возврат;
КонецЕсли;
Если ДанныеСтроки.Подразделение <> ТекущееПодразделение
И ТекущееПодразделение <> Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одного подразделения'"));
Возврат;
КонецЕсли;
СвойстваТМЦ = Новый Структура;
СвойстваТМЦ.Вставить("ИнвентарныйНомер", ДанныеСтроки.ИнвентарныйНомер);
СвойстваТМЦ.Вставить("Номенклатура", ДанныеСтроки.Номенклатура);
СвойстваТМЦ.Вставить("Характеристика", ДанныеСтроки.Характеристика);
СвойстваТМЦ.Вставить("Серия", ДанныеСтроки.Серия);
СвойстваТМЦ.Вставить("ФизическоеЛицо", ДанныеСтроки.ФизическоеЛицо);
СвойстваТМЦ.Вставить("НаправлениеДеятельности", ДанныеСтроки.НаправлениеДеятельности);
СвойстваТМЦ.Вставить("Партия", ДанныеСтроки.Партия);
СвойстваТМЦ.Вставить("Количество", ДанныеСтроки.Количество);
СвойстваТМЦ.Вставить("КоличествоУпаковок", ДанныеСтроки.Количество);
СвойстваТМЦ.Вставить("НомерГТД", ДанныеСтроки.НомерГТД);
СвойстваТМЦ.Вставить("КоличествоПоРНПТ", ДанныеСтроки.КоличествоПоРНПТ);
СписокТМЦ.Добавить(СвойстваТМЦ);
ТекущаяОрганизация = ДанныеСтроки.Организация;
ТекущееПодразделение = ДанныеСтроки.Подразделение;
КонецЦикла;
Если СписокТМЦ.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ, для которых требуется оформить возврат'"));
Возврат;
КонецЕсли;
РеквизитыШапки = Новый Структура;
РеквизитыШапки.Вставить("Организация", ТекущаяОрганизация);
РеквизитыШапки.Вставить("Подразделение", ТекущееПодразделение);
РеквизитыШапки.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратИзЭксплуатации"));
ДанныеОснования = Новый Структура;
ДанныеОснования.Вставить("РеквизитыШапки", РеквизитыШапки);
ДанныеОснования.Вставить("Товары", СписокТМЦ);
ПараметрыФормы = Новый Структура("Основание", ДанныеОснования);
ОткрытьФорму("Документ.ПрочееОприходованиеТоваров.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьЗаказ()
СписокТМЦ = Новый Массив;
ТекущаяОрганизация = Неопределено;
ТекущееПодразделение = Неопределено;
ТекущееНаправлениеДеятельности = Неопределено;
Для Каждого ИдентификаторСтроки Из Элементы.Список.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.Список.ДанныеСтроки(ИдентификаторСтроки);
Если ДанныеСтроки.Организация <> ТекущаяОрганизация
И ТекущаяОрганизация <> Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одной организации'"));
Возврат;
КонецЕсли;
Если ДанныеСтроки.Подразделение <> ТекущееПодразделение
И ТекущееПодразделение <> Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ одного подразделения'"));
Возврат;
КонецЕсли;
Если ДанныеСтроки.НаправлениеДеятельности <> ТекущееНаправлениеДеятельности
И ТекущееНаправлениеДеятельности <> Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ с одним направлением деятельности'"));
Возврат;
КонецЕсли;
СвойстваТМЦ = Новый Структура("Номенклатура,Характеристика,КатегорияЭксплуатации,ФизическоеЛицо,СтатьяРасходов,Количество,КоличествоУпаковок");
ЗаполнитьЗначенияСвойств(СвойстваТМЦ, ДанныеСтроки);
СвойстваТМЦ.КоличествоУпаковок = ДанныеСтроки.Количество;
СписокТМЦ.Добавить(СвойстваТМЦ);
ТекущаяОрганизация = ДанныеСтроки.Организация;
ТекущееПодразделение = ДанныеСтроки.Подразделение;
ТекущееНаправлениеДеятельности = ДанныеСтроки.НаправлениеДеятельности;
КонецЦикла;
Если СписокТМЦ.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать ТМЦ, для которых требуется оформить заказ'"));
Возврат;
КонецЕсли;
РеквизитыШапки = Новый Структура;
РеквизитыШапки.Вставить("Организация", ТекущаяОрганизация);
РеквизитыШапки.Вставить("Подразделение", ТекущееПодразделение);
РеквизитыШапки.Вставить("НаправлениеДеятельности", ТекущееНаправлениеДеятельности);
РеквизитыШапки.Вставить("ХозяйственнаяОперация", ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию"));
ДанныеОснования = Новый Структура;
ДанныеОснования.Вставить("РеквизитыШапки", РеквизитыШапки);
ДанныеОснования.Вставить("Товары", СписокТМЦ);
ПараметрыФормы = Новый Структура("Основание", ДанныеОснования);
ОткрытьФорму("Документ.ЗаказНаВнутреннееПотребление.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
#КонецОбласти