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