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