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