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