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