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