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