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