760 lines
52 KiB
Plaintext
760 lines
52 KiB
Plaintext
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
|
|
|
#Область ОбработчикиСобытий
|
|
|
|
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
|
|
|
СтандартнаяОбработка = Ложь;
|
|
|
|
ПользовательскиеНастройкиМодифицированы = Ложь;
|
|
УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы);
|
|
|
|
НаборДанныхОбъединение = СхемаКомпоновкиДанных.НаборыДанных.Объединение;
|
|
ОбработатьТекстыЗапросовНаборовДанных(НаборДанныхОбъединение);
|
|
|
|
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
|
|
РезультатОбработкиПараметров = ОбработатьПараметрыОтчета(НастройкиОтчета);
|
|
|
|
// выполнение компоновки данных
|
|
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
|
|
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
|
|
|
|
КомпоновкаДанныхСервер.УстановитьЗаголовкиМакетаКомпоновки(ПараметризуемыеЗаголовкиПолей(), МакетКомпоновки);
|
|
|
|
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
|
|
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,
|
|
ДанныеРасшифровки,
|
|
Истина,,
|
|
ВспомогательныеВременныеТаблицы(РезультатОбработкиПараметров.ПараметрВариантОтбораДокументов,
|
|
РезультатОбработкиПараметров.НачалоПериода,
|
|
РезультатОбработкиПараметров.КонецПериода));
|
|
|
|
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
|
|
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
|
|
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
|
|
|
|
КомпоновкаДанныхСервер.СкрытьВспомогательныеПараметрыОтчета(СхемаКомпоновкиДанных,
|
|
КомпоновщикНастроек,
|
|
ДокументРезультат,
|
|
ВспомогательныеПараметрыОтчета());
|
|
|
|
Если ПользовательскиеНастройкиМодифицированы Тогда
|
|
|
|
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить(
|
|
"ПользовательскиеНастройкиМодифицированы",
|
|
Истина);
|
|
|
|
КонецЕсли;
|
|
|
|
КонецПроцедуры
|
|
|
|
#КонецОбласти
|
|
|
|
#Область СлужебныйПрограммныйИнтерфейс
|
|
|
|
// Настройки общей формы отчета подсистемы "Варианты отчетов".
|
|
//
|
|
// Параметры:
|
|
// Форма - ФормаКлиентскогоПриложения - Форма отчета
|
|
// КлючВарианта - Строка - Имя предопределенного или уникальный идентификатор пользовательского варианта отчета
|
|
// Настройки - см. ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию
|
|
//
|
|
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
|
|
|
|
Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
|
|
Настройки.События.ПослеЗагрузкиНастроекВКомпоновщик = Истина;
|
|
|
|
КонецПроцедуры
|
|
|
|
// Вызывается перед загрузкой новых настроек. Используется для изменения схемы компоновки.
|
|
//
|
|
// Параметры:
|
|
// Контекст - Произвольный - Параметры контекста, в котором используется отчет
|
|
// КлючСхемы - Строка - Идентификатор текущей схемы компоновщика настроек
|
|
// КлючВарианта - Строка - Имя предопределенного или уникальный идентификатор пользовательского варианта отчета
|
|
// НовыеНастройкиКД - НастройкиКомпоновкиДанных - Настройки варианта отчета
|
|
// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных - Пользовательские настройки
|
|
//
|
|
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст,
|
|
КлючСхемы,
|
|
КлючВарианта,
|
|
НовыеНастройкиКД,
|
|
НовыеПользовательскиеНастройкиКД) Экспорт
|
|
|
|
Если КлючСхемы = КлючВарианта Тогда
|
|
Возврат;
|
|
КонецЕсли;
|
|
|
|
Если НовыеНастройкиКД = Неопределено Тогда
|
|
Возврат;
|
|
КонецЕсли;
|
|
|
|
КлючСхемы = КлючВарианта;
|
|
ЗаголовкиПолей = ПараметризуемыеЗаголовкиПолей();
|
|
|
|
КомпоновкаДанныхСервер.УстановитьЗаголовкиВыбранныхПолей(НовыеНастройкиКД.Выбор.Элементы, ЗаголовкиПолей);
|
|
|
|
Если ТипЗнч(НовыеПользовательскиеНастройкиКД) <> Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
|
|
Возврат;
|
|
КонецЕсли;
|
|
|
|
ИдентификаторНастройки = НовыеНастройкиКД.Выбор.ИдентификаторПользовательскойНастройки;
|
|
|
|
Если ЗначениеЗаполнено(ИдентификаторНастройки) Тогда
|
|
|
|
НайденныйЭлементНастройки = НовыеПользовательскиеНастройкиКД.Элементы.Найти(ИдентификаторНастройки);
|
|
Если НайденныйЭлементНастройки <> Неопределено Тогда
|
|
КомпоновкаДанныхСервер.УстановитьЗаголовкиВыбранныхПолей(НайденныйЭлементНастройки.Элементы, ЗаголовкиПолей);
|
|
КонецЕсли;
|
|
|
|
КонецЕсли;
|
|
|
|
КонецПроцедуры
|
|
|
|
// Вызывается после загрузки новых настроек. Используется для изменения схемы компоновки.
|
|
//
|
|
// Параметры:
|
|
// ДополнительныеПараметры - Структура
|
|
//
|
|
Процедура ПослеЗагрузкиНастроекВКомпоновщик(ДополнительныеПараметры) Экспорт
|
|
|
|
УстановитьОграниченияПоФункциональнымОпциям();
|
|
|
|
// установка доступных значений для параметров данных
|
|
Для Каждого ДоступныйПараметр Из КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы Цикл
|
|
|
|
Если ДоступныйПараметр.Параметр = Новый ПараметрКомпоновкиДанных("ОтборСостояние") Тогда
|
|
|
|
СписокВыбора = Перечисления.СостоянияЗаказовКлиентов.СписокДоступныхСостоянийРаспоряжений();
|
|
СписокВыбора.Вставить(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);
|
|
|
|
КонецЕсли;
|
|
|
|
// обработка параметра ОтборСостояние
|
|
ОтборСостояние = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "ОтборСостояние");
|
|
Если ТипЗнч(ОтборСостояние.Значение) = Тип("ПеречислениеСсылка.СостоянияЗаказовКлиентов") Тогда
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"Состояние",
|
|
ОтборСостояние.Значение,
|
|
ВидСравненияКомпоновкиДанных.Равно);
|
|
|
|
ИначеЕсли ОтборСостояние.Значение = "Все" Тогда
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"Состояние",
|
|
Неопределено,
|
|
ВидСравненияКомпоновкиДанных.Равно,
|
|
Ложь);
|
|
|
|
ИначеЕсли ОтборСостояние.Значение = "ВсеОткрытые" Тогда
|
|
|
|
СписокСостояний = Новый СписокЗначений();
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.Закрыт);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Выполнена);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Отклонена);
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"Состояние",
|
|
СписокСостояний,
|
|
ВидСравненияКомпоновкиДанных.НеВСписке);
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"ПометкаУдаления",
|
|
Ложь,
|
|
ВидСравненияКомпоновкиДанных.Равно);
|
|
|
|
ИначеЕсли ОтборСостояние.Значение = "ВсеОжидающиеОплаты" Тогда
|
|
|
|
СписокСостояний = Новый СписокЗначений();
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ОжидаетсяАвансДоОбеспечения);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ОжидаетсяПредоплатаДоОтгрузки);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ОжидаетсяОплатаПослеОтгрузки);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяАвансИлиВозвратДоОбеспечения);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяПредоплатаИлиВозвратДоОтгрузки);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяОплатаИлиВозвратПослеОтгрузки);
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"Состояние",
|
|
СписокСостояний,
|
|
ВидСравненияКомпоновкиДанных.ВСписке);
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"ПометкаУдаления",
|
|
Ложь,
|
|
ВидСравненияКомпоновкиДанных.Равно);
|
|
|
|
ИначеЕсли ОтборСостояние.Значение = "ВсеОжидающиеИсполнения" Тогда
|
|
|
|
СписокСостояний = Новый СписокЗначений();
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ОжидаетсяСогласование);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ГотовКОбеспечению);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ОжидаетсяОбеспечение);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ГотовКОтгрузке);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ВПроцессеОтгрузки);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ОжидаетсяПереходПраваСобственности);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаказовКлиентов.ГотовКЗакрытию);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяСогласование);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКОбеспечению);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяОбеспечение);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКОтгрузке);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ВПроцессеОтгрузки);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКОбеспечению);
|
|
СписокСостояний.Добавить(Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКВозврату);
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"Состояние",
|
|
СписокСостояний,
|
|
ВидСравненияКомпоновкиДанных.ВСписке);
|
|
|
|
КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(НастройкиОтчета,
|
|
"ПометкаУдаления",
|
|
Ложь,
|
|
ВидСравненияКомпоновкиДанных.Равно);
|
|
|
|
КонецЕсли;
|
|
|
|
Возврат Результат;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#КонецЕсли |