#Область ОписаниеПеременных
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыОжидания;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
&НаКлиенте
Перем ПредыдущиеЗначения;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
УстановитьУсловноеОформление();
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
НоваяАрхитектураВзаиморасчетов = ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов");
СписаниеДебиторскойЗадолженности = Перечисления.ХозяйственныеОперации.СписаниеДебиторскойЗадолженности;
СписаниеКредиторскойЗадолженности = Перечисления.ХозяйственныеОперации.СписаниеКредиторскойЗадолженности;
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаПодвал.ЦветФона = Новый Цвет();
КонецЕсли;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
УстановитьВидимостьБазоваяВерсия();
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
НоваяАрхитектураВзаиморасчетов = ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов");
Если Объект.ВидОперации <> Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Произвольный
И Объект.ДебиторскаяЗадолженность.Количество() > 0 Тогда
ВалютаВзаиморасчетов = Объект.ДебиторскаяЗадолженность[0].ВалютаВзаиморасчетов;
КонецЕсли;
ПриЧтенииСозданииНаСервере();
ФормированиеФискальныхЧековСервер.ФормаПриЧтенииНаСервере(ЭтотОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Справочник.ОбъектыРасчетов.Форма.ПодборОбъектовРасчетов" Тогда
Если РезультатВыбора.ХозяйственнаяОперация = СписаниеДебиторскойЗадолженности Тогда
ПолучитьДебиторскуюЗадолженностиИзХранилища(РезультатВыбора.АдресПлатежейВХранилище);
Если Объект.ДебиторскаяЗадолженность.Количество() > 0 Тогда
УстановитьВалютуВзаиморасчетов(Объект.ДебиторскаяЗадолженность[0].ВалютаВзаиморасчетов);
КонецЕсли;
Если НЕ НоваяАрхитектураВзаиморасчетов Тогда
ПараметрыЗадолженностиДебитор = СтруктураПараметровЗадолженности(ЭтаФорма);
ЗаполняемаяТЧ = "ДебиторскаяЗадолженность";
АналитикаКРасчету = ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиДебитор);
Если АналитикаКРасчету.Количество() > 0 Тогда
ПодключитьОбработчикОжидания("ФоновоеЗаданиеПроверитьНаКлиенте", 0.1, Истина);
Возврат;
КонецЕсли;
КонецЕсли;
ДополнительныеПараметры = Новый Структура("ТолькоСуммы");
АвтоТест_РассчитатьВзаимозачетЗавершение(Неопределено,ДополнительныеПараметры);
Иначе
ПолучитьКредиторскуюЗадолженностиИзХранилища(РезультатВыбора.АдресПлатежейВХранилище);
Если Объект.КредиторскаяЗадолженность.Количество() > 0 Тогда
УстановитьВалютуВзаиморасчетов(Объект.КредиторскаяЗадолженность[0].ВалютаВзаиморасчетов);
КонецЕсли;
Если НЕ НоваяАрхитектураВзаиморасчетов Тогда
ПараметрыЗадолженностиКредитор = СтруктураПараметровЗадолженности(ЭтаФорма);
ЗаполняемаяТЧ = "КредиторскаяЗадолженность";
АналитикаКРасчету = ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиКредитор);
Если АналитикаКРасчету.Количество() > 0 Тогда
ПодключитьОбработчикОжидания("ФоновоеЗаданиеПроверитьНаКлиенте", 0.1, Истина);
Возврат;
КонецЕсли;
КонецЕсли;
ДополнительныеПараметры = Новый Структура("ТолькоСуммы");
АвтоТест_РассчитатьВзаимозачетЗавершение(Неопределено,ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбновитьСлужебныеРеквизитыТабличнойЧасти("Дт");
ОбновитьСлужебныеРеквизитыТабличнойЧасти("Кт");
Элементы.ГруппаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ВзаимозачетЗадолженности", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
СуммаДтРегл = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
СуммаКтРегл = Объект.КредиторскаяЗадолженность.Итог("СуммаРегл");
СуммаДтУпр = Объект.ДебиторскаяЗадолженность.Итог("СуммаУпр");
СуммаКтУпр = Объект.КредиторскаяЗадолженность.Итог("СуммаУпр");
Если Объект.КредиторскаяЗадолженность.Итог("Сумма")<>0 Тогда
Для Каждого Строка Из Объект.КредиторскаяЗадолженность Цикл
Строка.Сумма = 0;
КонецЦикла;
КонецЕсли;
Если Объект.ДебиторскаяЗадолженность.Итог("Сумма")<>0 Тогда
Для Каждого Строка Из Объект.ДебиторскаяЗадолженность Цикл
Строка.Сумма = 0;
КонецЦикла;
КонецЕсли;
Если СуммаДтРегл = СуммаКтРегл Тогда
Объект.СуммаРегл = СуммаДтРегл;
КонецЕсли;
Если СуммаДтУпр = СуммаКтУпр Тогда
Объект.СуммаУпр = СуммаДтУпр;
КонецЕсли;
Если СуммаДтРегл <> СуммаКтРегл ИЛИ СуммаДтУпр <> СуммаКтУпр Тогда
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Бартер")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный") Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьПересчитатьСуммуДокументаЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ПересчитатьСуммыРеглУпр(ОписаниеОповещения);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПересчитатьСуммуДокументаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса Тогда
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
Если ПереключательДебиторскаяЗадолженность = 0 ИЛИ ПереключательКредиторскаяЗадолженность = 0 Тогда
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.ДополнительныеСвойства.Вставить("ДебиторскаяБезРазбиения", ПереключательДебиторскаяЗадолженность = 0);
ДокументОбъект.ДополнительныеСвойства.Вставить("КредиторскаяБезРазбиения", ПереключательКредиторскаяЗадолженность = 0);
Если Элементы.ГруппаДебиторскаяЗадолженность.Видимость Тогда
ДокументОбъект.ДополнительныеСвойства.Вставить("ИмяСпискаДт", Элементы.ГруппаДебиторскаяЗадолженность.Заголовок);
КонецЕсли;
Если Элементы.ГруппаКредиторскаяЗадолженность.Видимость Тогда
ДокументОбъект.ДополнительныеСвойства.Вставить("ИмяСпискаКт", Элементы.ГруппаКредиторскаяЗадолженность.Заголовок);
КонецЕсли;
Если Не ДокументОбъект.ПроверитьЗаполнение() Тогда
Отказ = Истина;
КонецЕсли;
ПроверяемыеРеквизиты.Очистить();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ИнициализироватьПредыдущиеЗначения();
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ВидОперацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если Элемент.СписокВыбора.Количество() = 0 Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура("ВидОперации", Объект.ВидОперации);
Оповещение = Новый ОписаниеОповещения("ВидОперацииНачалоВыбораЗавершение", ЭтаФорма);
ОткрытьФорму(
"Документ.ВзаимозачетЗадолженности.Форма.ВыборВидаОперации",
ПараметрыФормы,
ЭтаФорма,,,,
Оповещение,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидОперацииНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено И Объект.ВидОперации <> Результат Тогда
Объект.ВидОперации = Результат;
Модифицированность = Истина;
ВидОперацииПриИзмененииСервер();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидОперацииПриИзменении(Элемент)
ВидОперацииПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования,
ЭтотОбъект,
"Объект.Комментарий");
КонецПроцедуры
&НаКлиенте
Процедура ТипДебитораПриИзменении(Элемент)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
Оповещение = Новый ОписаниеОповещения(
"ТипДебитораПриИзмененииНужноОчищатьТЧЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
НужноОчищатьТЧ(Оповещение, ЕстьСтроки("ДебиторскаяЗадолженность"));
КонецПроцедуры
&НаКлиенте
Процедура ТипДебитораПриИзмененииНужноОчищатьТЧЗавершение(ОчиститьТЧ, ДополнительныеПараметры) Экспорт
Если ОчиститьТЧ = КодВозвратаДиалога.Да Тогда
Объект.ОбъектРасчетовДебиторКредитор = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
ТипДебитораПриИзмененииНаСервере();
ОчиститьТабличнуюЧасть("ДебиторскаяЗадолженность");
ПредыдущиеЗначения.ТипДебитора = Объект.ТипДебитора;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элементы.КонтрагентДебитор);
Иначе
Объект.ТипДебитора = ПредыдущиеЗначения.ТипДебитора;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТипКредитораПриИзменении(Элемент)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
Оповещение = Новый ОписаниеОповещения(
"ТипКредитораПриИзмененииНужноОчищатьТЧЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
НужноОчищатьТЧ(Оповещение, ЕстьСтроки("КредиторскаяЗадолженность"));
КонецПроцедуры
&НаКлиенте
Процедура ТипКредитораПриИзмененииНужноОчищатьТЧЗавершение(ОчиститьТЧ, ДополнительныеПараметры) Экспорт
Если ОчиститьТЧ = КодВозвратаДиалога.Да Тогда
Объект.ОбъектРасчетовДебиторКредитор = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
ТипКредитораПриИзмененииНаСервере();
ОчиститьТабличнуюЧасть("КредиторскаяЗадолженность");
ПредыдущиеЗначения.ТипКредитора = Объект.ТипКредитора;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элементы.КонтрагентКредитор);
Иначе
Объект.ТипКредитора = ПредыдущиеЗначения.ТипКредитора;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентДебиторПриИзменении(Элемент)
ИмяТаблицы = "ДебиторскаяЗадолженность";
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями") Тогда
ИмяТаблицы = "КредиторскаяЗадолженность";
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ИмяТаблицы", ИмяТаблицы);
Объект.ОбъектРасчетовДебиторКредитор = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
НужноОчищатьТЧ(
Новый ОписаниеОповещения("КонтрагентДебиторПриИзмененииНужноОчищатьТЧЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ЕстьСтроки(ИмяТаблицы));
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентДебиторПриИзмененииНужноОчищатьТЧЗавершение(ОчиститьТЧ, ДополнительныеПараметры) Экспорт
Если ОчиститьТЧ = КодВозвратаДиалога.Да Тогда
КонтрагентДебиторПриИзмененииНаСервере();
ОчиститьТабличнуюЧасть("ДебиторскаяЗадолженность");
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуДвумяОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуДвумяОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуДвумяОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуДвумяОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Бартер")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями") Тогда
ОчиститьТабличнуюЧасть("КредиторскаяЗадолженность");
ИначеЕсли Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера") Тогда
ОчиститьТабличнуюЧасть("КредиторскаяЗадолженность");
КонецЕсли;
ПредыдущиеЗначения.КонтрагентДебитор = Объект.КонтрагентДебитор;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, ДополнительныеПараметры.Элемент);
Иначе
Объект.КонтрагентДебитор = ПредыдущиеЗначения.КонтрагентДебитор;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентКредиторПриИзменении(Элемент)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ЕстьСтроки = ЕстьСтроки("КредиторскаяЗадолженность");
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера") Тогда
ЕстьСтроки = ЕстьСтроки ИЛИ ЕстьСтроки("ДебиторскаяЗадолженность");
КонецЕсли;
Объект.ОбъектРасчетовДебиторКредитор = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
НужноОчищатьТЧ(
Новый ОписаниеОповещения("КонтрагентКредиторПриИзмененииНужноОчищатьТЧЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ЕстьСтроки);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентКредиторПриИзмененииНужноОчищатьТЧЗавершение(ОчиститьТЧ, ДополнительныеПараметры) Экспорт
Если ОчиститьТЧ = КодВозвратаДиалога.Да Тогда
КонтрагентКредиторПриИзмененииНаСервере();
ОчиститьТабличнуюЧасть("КредиторскаяЗадолженность");
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуОрганизациями")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями") Тогда
ОчиститьТабличнуюЧасть("ДебиторскаяЗадолженность");
ИначеЕсли Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера") Тогда
ОчиститьТабличнуюЧасть("ДебиторскаяЗадолженность");
КонецЕсли;
ПредыдущиеЗначения.КонтрагентКредитор = Объект.КонтрагентКредитор;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, ДополнительныеПараметры.Элемент);
Иначе
Объект.КонтрагентКредитор = ПредыдущиеЗначения.КонтрагентКредитор;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ЕстьСтроки = ЕстьСтроки("ДебиторскаяЗадолженность") ИЛИ ЕстьСтроки("КредиторскаяЗадолженность");
НужноОчищатьТЧ(
Новый ОписаниеОповещения("ОрганизацияПриИзмененииНужноОчищатьТЧЗавершение", ЭтотОбъект),
ЕстьСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзмененииНужноОчищатьТЧЗавершение(ОчиститьТЧ, ДополнительныеПараметры) Экспорт
Если ОчиститьТЧ = КодВозвратаДиалога.Да Тогда
ОчиститьТабличнуюЧасть("ДебиторскаяЗадолженность");
ОчиститьТабличнуюЧасть("КредиторскаяЗадолженность");
Объект.ОбъектРасчетовИнтеркампани = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
Объект.ОбъектРасчетовИнтеркампаниЗеркальный = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
ОрганизацияПриИзмененииСервер();
ПредыдущиеЗначения.Организация = Объект.Организация;
Иначе
Объект.Организация = ПредыдущиеЗначения.Организация;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовИнтеркампаниНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначенияОтбора = Новый Структура;
ЗначенияОтбора.Вставить("Организация", Объект.Организация);
ЗначенияОтбора.Вставить("Контрагент", Объект.ОрганизацияКредитор);
НастройкиВыбора = Новый Структура();
НастройкиВыбора.Вставить("ТекущаяСтрока", Объект.ОбъектРасчетовИнтеркампани);
НастройкиВыбора.Вставить("УчитыватьФилиалы", Ложь);
ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, НастройкиВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовИнтеркампаниОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Объект.ОбъектРасчетовИнтеркампани = ВыбранноеЗначение.ОбъектРасчетов;
Модифицированность = Истина;
ЗаблокироватьОбъектыРасчетов();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовИнтеркампаниЗеркальныйНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначенияОтбора = Новый Структура;
ЗначенияОтбора.Вставить("Организация", Объект.ОрганизацияКредитор);
ЗначенияОтбора.Вставить("Контрагент", Объект.Организация);
НастройкиВыбора = Новый Структура();
НастройкиВыбора.Вставить("ТекущаяСтрока", Объект.ОбъектРасчетовИнтеркампаниЗеркальный);
НастройкиВыбора.Вставить("УчитыватьФилиалы", Ложь);
ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, НастройкиВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовИнтеркампаниЗеркальныйОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Объект.ОбъектРасчетовИнтеркампаниЗеркальный = ВыбранноеЗначение.ОбъектРасчетов;
Модифицированность = Истина;
ЗаблокироватьОбъектыРасчетов();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовДебиторКредиторНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначенияОтбора = Новый Структура;
Если РасчетыМеждуОрганизациямиДебитор И (НЕ РасчетыМеждуОрганизациямиКредитор ИЛИ РасчетыСКлиентамиКредитор) Тогда
ЗначенияОтбора.Вставить("Организация", Объект.КонтрагентДебитор);
ЗначенияОтбора.Вставить("Контрагент", Объект.КонтрагентКредитор);
ЗначенияОтбора.Вставить("ТипРасчетов", ?(РасчетыСКлиентамиКредитор,
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"),
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком")));
Иначе
ЗначенияОтбора.Вставить("Организация", Объект.КонтрагентКредитор);
ЗначенияОтбора.Вставить("Контрагент", Объект.КонтрагентДебитор);
ЗначенияОтбора.Вставить("ТипРасчетов", ?(РасчетыСКлиентамиДебитор ИЛИ РасчетыМеждуОрганизациямиДебитор,
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"),
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком")));
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЗначенияОтбора.Организация) Тогда
ВызватьИсключение НСтр("ru = 'Не указана организация'");
КонецЕсли;
НастройкиВыбора = Новый Структура();
НастройкиВыбора.Вставить("ТекущаяСтрока", Объект.ОбъектРасчетовДебиторКредитор);
ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, НастройкиВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовДебиторКредиторОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Объект.ОбъектРасчетовДебиторКредитор = ВыбранноеЗначение.ОбъектРасчетов;
Модифицированность = Истина;
ЗаблокироватьОбъектыРасчетов();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовДебиторКредиторЗеркальныйНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначенияОтбора = Новый Структура;
Если РасчетыМеждуОрганизациямиДебитор И (НЕ РасчетыМеждуОрганизациямиКредитор ИЛИ РасчетыСКлиентамиКредитор) Тогда
ЗначенияОтбора.Вставить("Организация", Объект.КонтрагентКредитор);
ЗначенияОтбора.Вставить("Контрагент", Объект.КонтрагентДебитор);
ЗначенияОтбора.Вставить("ТипРасчетов", ?(РасчетыСКлиентамиДебитор ИЛИ РасчетыМеждуОрганизациямиДебитор,
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"),
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком")));
Иначе
ЗначенияОтбора.Вставить("Организация", Объект.КонтрагентДебитор);
ЗначенияОтбора.Вставить("Контрагент", Объект.КонтрагентКредитор);
ЗначенияОтбора.Вставить("ТипРасчетов", ?(РасчетыСКлиентамиКредитор,
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"),
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком")));
КонецЕсли;
НастройкиВыбора = Новый Структура();
НастройкиВыбора.Вставить("ТекущаяСтрока", Объект.ОбъектРасчетовДебиторКредиторЗеркальный);
ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, НастройкиВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовДебиторКредиторЗеркальныйОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Объект.ОбъектРасчетовДебиторКредиторЗеркальный = ВыбранноеЗначение.ОбъектРасчетов;
Модифицированность = Истина;
ЗаблокироватьОбъектыРасчетов();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница = Элементы.ГруппаДебиторскаяЗадолженность И Не ПереключательДебиторскаяЗадолженность Тогда
ДебиторскаяЗадолженностьПриНачалеРедактирования(Элементы.ДебиторскаяЗадолженность, Ложь, Ложь);
КонецЕсли;
Если ТекущаяСтраница = Элементы.ГруппаКредиторскаяЗадолженность И Не ПереключательКредиторскаяЗадолженность Тогда
КредиторскаяЗадолженностьПриНачалеРедактирования(Элементы.КредиторскаяЗадолженность, Ложь, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПереключательДебиторскаяЗадолженностьПриИзменении(Элемент)
ОчиститьСообщения();
Если Не ПереключательДебиторскаяЗадолженность Тогда
Если Объект.ДебиторскаяЗадолженность.Количество() = 0 Тогда
НоваяСтрока = Объект.ДебиторскаяЗадолженность.Добавить();
Элементы.ДебиторскаяЗадолженность.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
ИначеЕсли Объект.ДебиторскаяЗадолженность.Количество() = 1 Тогда
Если Элементы.ДебиторскаяЗадолженность.ТекущаяСтрока = Неопределено Тогда
Элементы.ДебиторскаяЗадолженность.ТекущаяСтрока = Объект.ДебиторскаяЗадолженность[0].ПолучитьИдентификатор();
КонецЕсли;
ИначеЕсли Объект.ДебиторскаяЗадолженность.Количество() > 1 Тогда
ТекстСообщения = НСтр("ru = 'Переключение в режим без разбиения невозможно, если в расшифровке платежа введено более одной строки!'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
ПереключательДебиторскаяЗадолженность = 1;
КонецЕсли;
КонецЕсли;
УстановитьСвойстваЭлементовФормыПоВидуОперации();
КонецПроцедуры
&НаКлиенте
Процедура ПереключательКредиторскаяЗадолженностьПриИзменении(Элемент)
Если Не ПереключательКредиторскаяЗадолженность Тогда
Если Объект.КредиторскаяЗадолженность.Количество() = 0 Тогда
НоваяСтрока = Объект.КредиторскаяЗадолженность.Добавить();
Элементы.КредиторскаяЗадолженность.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
ИначеЕсли Объект.КредиторскаяЗадолженность.Количество() = 1 Тогда
Если Элементы.КредиторскаяЗадолженность.ТекущаяСтрока = Неопределено Тогда
Элементы.КредиторскаяЗадолженность.ТекущаяСтрока = Объект.КредиторскаяЗадолженность[0].ПолучитьИдентификатор();
КонецЕсли;
ИначеЕсли Объект.КредиторскаяЗадолженность.Количество() > 1 Тогда
ТекстСообщения = НСтр("ru = 'Переключение в режим без разбиения невозможно, если в расшифровке платежа введено более одной строки!'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
ПереключательКредиторскаяЗадолженность = 1;
КонецЕсли;
КонецЕсли;
УстановитьСвойстваЭлементовФормыПоВидуОперации();
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовИнтеркампаниПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовИнтеркампаниЗеркальныйПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовДебиторКредиторПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовДебиторКредиторЗеркальныйПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ПартнерКомиссионнойПродажиПриИзменении(Элемент)
ПартнерКомиссионнойПродажиПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПартнерКомиссионнойПродажиПриИзмененииНаСервере()
ЭтоОплатаЧерезКомиссионера = ?(Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера, Истина, Ложь);
Если ЭтоОплатаЧерезКомиссионера Тогда
ТекущаяСтрокаКлиент = Объект.ДебиторскаяЗадолженность[0];
ТекущаяСтрокаКомиссионер = Объект.КредиторскаяЗадолженность[0];
Иначе
ТекущаяСтрокаКомиссионер = Объект.ДебиторскаяЗадолженность[0];
ТекущаяСтрокаКлиент = Объект.КредиторскаяЗадолженность[0];
КонецЕсли;
ДанныеДоговораКомиссионера = ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ТекущаяСтрокаКомиссионер.ОбъектРасчетов);
Если ДанныеДоговораКомиссионера.ВестиРасчетыЧерезКонечныхПокупателей Тогда
ТекущаяСтрокаКлиент.Партнер = ПартнерКомиссионнойПродажи;
Иначе
ТекущаяСтрокаКлиент.Партнер = ТекущаяСтрокаКомиссионер.Партнер;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КлиентКомиссионнойПродажиПриИзменении(Элемент)
ИмяТаблицы = "ДебиторскаяЗадолженность";
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера") Тогда
ИмяТаблицы = "КредиторскаяЗадолженность";
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ИмяТаблицы", ИмяТаблицы);
Объект.ОбъектРасчетовДебиторКредитор = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
НужноОчищатьТЧ(
Новый ОписаниеОповещения("КлиентКомиссионнойПродажиПриИзмененииНужноОчищатьТЧЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ЕстьСтроки(ИмяТаблицы));
КонецПроцедуры
&НаКлиенте
Процедура КлиентКомиссионнойПродажиПриИзмененииНужноОчищатьТЧЗавершение(ОчиститьТЧ, ДополнительныеПараметры) Экспорт
Если ОчиститьТЧ = КодВозвратаДиалога.Да Тогда
КлиентКомиссионнойПродажиПриИзмененииНаСервере();
ОчиститьТабличнуюЧасть(ДополнительныеПараметры.ИмяТаблицы);
Если ДополнительныеПараметры.ИмяТаблицы = "ДебиторскаяЗадолженность" Тогда
ПредыдущиеЗначения.КонтрагентДебитор = КлиентКомиссионнойПродажи;
Иначе
ПредыдущиеЗначения.КонтрагентКредитор = КлиентКомиссионнойПродажи;
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, ДополнительныеПараметры.Элемент);
Модифицированность = Истина;
Иначе
Если ДополнительныеПараметры.ИмяТаблицы = "ДебиторскаяЗадолженность" Тогда
КлиентКомиссионнойПродажи = ПредыдущиеЗначения.КонтрагентДебитор;
Иначе
КлиентКомиссионнойПродажи = ПредыдущиеЗначения.КонтрагентКредитор;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КлиентКомиссионнойПродажиПриИзмененииНаСервере()
Если ЗначениеЗаполнено(КлиентКомиссионнойПродажи) Тогда
ПартнерКомиссионнойПродажи = ДенежныеСредстваСервер.ПолучитьПартнераПоКонтрагенту(КлиентКомиссионнойПродажи);
Иначе
ПартнерКомиссионнойПродажи = Справочники.Партнеры.ПустаяСсылка();
КонецЕсли;
ЭтоОплатаЧерезКомиссионера = ?(Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера, Истина, Ложь);
ЭтоВозвратОплатыЧерезКомиссионера = ?(Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера, Истина, Ложь);
Если (ЭтоОплатаЧерезКомиссионера Или ЭтоВозвратОплатыЧерезКомиссионера)
И Объект.КредиторскаяЗадолженность.Количество() = 1 И Объект.ДебиторскаяЗадолженность.Количество() = 1 Тогда
Если ЭтоОплатаЧерезКомиссионера Тогда
ТекущаяСтрокаКлиент = Объект.ДебиторскаяЗадолженность[0];
ТекущаяСтрокаКомиссионер = Объект.КредиторскаяЗадолженность[0];
ИмяРеквизитаКонтрагентаКлиента = "КонтрагентДебитор";
ВидЗадолженностиКонтрагента = "Дт";
Иначе
ТекущаяСтрокаКомиссионер = Объект.ДебиторскаяЗадолженность[0];
ТекущаяСтрокаКлиент = Объект.КредиторскаяЗадолженность[0];
ИмяРеквизитаКонтрагентаКлиента = "КонтрагентКредитор";
ВидЗадолженностиКонтрагента = "Кт";
КонецЕсли;
ДанныеДоговораКомиссионера = ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ТекущаяСтрокаКомиссионер.ОбъектРасчетов);
ДанныеДоговораКлиента = ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ТекущаяСтрокаКлиент.ОбъектРасчетов);
Если ДанныеДоговораКомиссионера.ВестиРасчетыЧерезКонечныхПокупателей Тогда
ТекущаяСтрокаКлиент.Партнер = ПартнерКомиссионнойПродажи;
Объект[ИмяРеквизитаКонтрагентаКлиента] = КлиентКомиссионнойПродажи;
ОбновитьСлужебныеРеквизитыКонтрагента(ВидЗадолженностиКонтрагента);
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеДоговораКлиента.Договор) Тогда
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДанныеДоговораКлиента.Договор, "Партнер, Контрагент");
Если ПартнерКомиссионнойПродажи <> РеквизитыДоговора.Партнер
Или КлиентКомиссионнойПродажи <> РеквизитыДоговора.Контрагент Тогда
ТекущаяСтрокаКлиент.ОбъектРасчетов = Неопределено;
Если ЭтоОплатаЧерезКомиссионера Тогда
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
Иначе
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДебиторскаяЗадолженность
&НаКлиенте
Процедура ДебиторскаяЗадолженностьБезРазбиенияОбъектРасчетовПриИзменении(Элемент)
ОбъектРасчетовРасчетовПриИзменении("ДебиторскаяЗадолженность");
ДебиторскаяЗадолженностьБезРазбиенияОбъектРасчетовПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если НоваяСтрока И НЕ Копирование Тогда
Если НЕ (РасчетыМеждуОрганизациямиДебитор ИЛИ ЗначениеЗаполнено(ПартнерДебитор)) Тогда
ЗаполнитьПартнераДебитора();
КонецЕсли;
ТекущиеДанные.Партнер = ПартнерДебитор;
СуммаОстатокРегл = Объект.СуммаРегл - Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
ТекущиеДанные.СуммаРегл = СуммаОстатокРегл;
СуммаОстатокУпр = Объект.СуммаУпр - Объект.ДебиторскаяЗадолженность.Итог("СуммаУпр");
ТекущиеДанные.СуммаУпр = СуммаОстатокУпр;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьОбъектРасчетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовНачалоВыбора("Дт", Элемент, ДанныеВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьОбъектРасчетовПриИзменении(Элемент)
ОбъектРасчетовРасчетовПриИзменении("ДебиторскаяЗадолженность");
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьОбъектРасчетовОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовОбработкаВыбора("Дт", ВыбранноеЗначение);
ОбъектРасчетовОбработкаВыбораСервер("Дт");
ТекущиеДанные = ТекущаяСтрокаЗадолженности("Дт");
ПересчитатьСуммыУпрРеглВызовСервера(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьОбъектРасчетовЗеркальныйНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовНачалоВыбора("Дт", Элемент, ДанныеВыбора, "Зеркальный");
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьОбъектРасчетовЗеркальныйОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовОбработкаВыбора("Дт", ВыбранноеЗначение);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьСуммаВзаиморасчетовПриИзменении(Элемент)
ТекущиеДанные = ТекущаяСтрокаЗадолженности("Дт");
ТекущиеДанные.СуммаУпр = 0;
ТекущиеДанные.СуммаРегл = 0;
ЗаполнитьСуммыУпрРегл(СтруктураПараметровЗадолженности(ЭтаФорма, Ложь), Ложь);
ПересчитатьСуммыУпрРеглВызовСервера(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьПослеУдаления(Элемент)
ОчиститьВалютуВзаиморасчетов();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьОбъектРасчетовОчистка(Элемент, СтандартнаяОбработка)
ОчиститьВалютуВзаиморасчетов();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьБезРазбиенияОбъектРасчетовОчистка(Элемент, СтандартнаяОбработка)
ОчиститьВалютуВзаиморасчетов();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьОбъектРасчетовЗеркальныйПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ДебиторскаяЗадолженностьБезРазбиенияОбъектРасчетовЗеркальныйПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КонечныйКлиентОбъектРасчетовОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ТаблицаПересчета = "Дт";
ТаблицаПересчетаОбратная = "Кт";
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера") Тогда
ТаблицаПересчета = "Кт";
ТаблицаПересчетаОбратная = "Дт";
КонецЕсли;
СтандартнаяОбработка = Ложь;
ОбъектРасчетовОбработкаВыбора(ТаблицаПересчета, ВыбранноеЗначение);
ЗаблокироватьОбъектыРасчетов();
ТекущиеДанныеОбратная = ТекущаяСтрокаЗадолженности(ТаблицаПересчетаОбратная);
ТекущиеДанные = ТекущаяСтрокаЗадолженности(ТаблицаПересчета);
ТекущиеДанные.СуммаУпр = ТекущиеДанныеОбратная.СуммаУпр;
ТекущиеДанные.СуммаРегл = ТекущиеДанныеОбратная.СуммаРегл;
Если ТекущиеДанные.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета Тогда
ТекущиеДанные.СуммаВзаиморасчетов = ТекущиеДанные.СуммаРегл;
ИначеЕсли ЗначениеЗаполнено(ТекущиеДанные.ВалютаВзаиморасчетов) Тогда
ТекущиеДанные.СуммаВзаиморасчетов = ПересчитатьВСуммуВзаиморасчетов(ТекущиеДанные.СуммаРегл,
ТекущиеДанные.ВалютаВзаиморасчетов, ТекущиеДанные.ОбъектРасчетов);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыКредиторскаяЗадолженность
&НаКлиенте
Процедура КредиторскаяЗадолженностьБезРазбиенияОбъектРасчетовПриИзменении(Элемент)
ОбъектРасчетовРасчетовПриИзменении("КредиторскаяЗадолженность");
КредиторскаяЗадолженностьБезРазбиенияОбъектРасчетовПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если НоваяСтрока И НЕ Копирование Тогда
Если НЕ (РасчетыМеждуОрганизациямиКредитор ИЛИ ЗначениеЗаполнено(ПартнерКредитор)) Тогда
ЗаполнитьПартнераКредитора();
КонецЕсли;
ТекущиеДанные.Партнер = ПартнерКредитор;
СуммаОстатокРегл = Объект.СуммаРегл - Объект.КредиторскаяЗадолженность.Итог("СуммаРегл");
ТекущиеДанные.СуммаРегл = СуммаОстатокРегл;
СуммаОстатокУпр = Объект.СуммаУпр - Объект.КредиторскаяЗадолженность.Итог("СуммаУпр");
ТекущиеДанные.СуммаУпр = СуммаОстатокУпр;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьОбъектРасчетовПриИзменении(Элемент)
ОбъектРасчетовРасчетовПриИзменении("КредиторскаяЗадолженность");
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьОбъектРасчетовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовНачалоВыбора("Кт", Элемент, ДанныеВыбора);
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьОбъектРасчетовОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовОбработкаВыбора("Кт", ВыбранноеЗначение);
ОбъектРасчетовОбработкаВыбораСервер("Кт");
ТекущиеДанные = ТекущаяСтрокаЗадолженности("Кт");
ПересчитатьСуммыУпрРеглВызовСервера(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьОбъектРасчетовЗеркальныйНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовНачалоВыбора("Кт", Элемент, ДанныеВыбора, "Зеркальный");
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьОбъектРасчетовЗеркальныйОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовОбработкаВыбора("Кт", ВыбранноеЗначение);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьСуммаВзаиморасчетовПриИзменении(Элемент)
ТекущиеДанные = ТекущаяСтрокаЗадолженности("Кт");
ТекущиеДанные.СуммаУпр = 0;
ТекущиеДанные.СуммаРегл = 0;
ЗаполнитьСуммыУпрРегл(СтруктураПараметровЗадолженности(ЭтаФорма, Истина), Истина);
ПересчитатьСуммыУпрРеглВызовСервера(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьПослеУдаления(Элемент)
ОчиститьВалютуВзаиморасчетов();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьОбъектРасчетовОчистка(Элемент, СтандартнаяОбработка)
ОчиститьВалютуВзаиморасчетов();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьБезРазбиенияОбъектРасчетовОчистка(Элемент, СтандартнаяОбработка)
ОчиститьВалютуВзаиморасчетов();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьОбъектРасчетовЗеркальныйПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьБезРазбиенияОбъектРасчетовЗеркальныйПриИзменении(Элемент)
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура КредиторскаяЗадолженностьПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ОчиститьСообщения();
ВидОперацииОплатаПодарочнымСертификатом = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом");
Если Объект.ВидОперации = ВидОперацииОплатаПодарочнымСертификатом Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru = 'С видом операции ""%ПредставлениеВидаОперации%"" интерактивное добавление и копирование строк запрещено. Необходимо использовать подбор.'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ПредставлениеВидаОперации%", ВидОперацииОплатаПодарочнымСертификатом);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетаКомиссионераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбъектРасчетовНачалоВыбора("Кт", Элемент, ДанныеВыбора);
КонецПроцедуры
&НаСервере
Функция ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ОбъектРасчета)
СтруктураДанных = Новый Структура();
СтруктураДанных.Вставить("Договор", Справочники.ДоговорыКонтрагентов.ПустаяСсылка());
СтруктураДанных.Вставить("ВестиРасчетыЧерезКонечныхПокупателей", Ложь);
ДоговорКомиссионера = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
Если ЗначениеЗаполнено(ОбъектРасчета) Тогда
Договор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектРасчета, "Договор");
СтруктураДанных.Договор = Договор;
Если ЗначениеЗаполнено(Договор) Тогда
СтруктураДанных.ВестиРасчетыЧерезКонечныхПокупателей = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВестиРасчетыЧерезКонечныхПокупателей");
КонецЕсли;
КонецЕсли;
Возврат СтруктураДанных;
КонецФункции
&НаКлиенте
Процедура ОбъектРасчетовКлиентаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеПоКомиссионеру = Объект.КредиторскаяЗадолженность[0];
Если Не ЗначениеЗаполнено(ДанныеПоКомиссионеру.ОбъектРасчетов) Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Не задан объект расчетов комиссионера. Выберите объект расчетов комиссионера.'"));
Возврат;
КонецЕсли;
Вид = "Дт";
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма, Ложь);
ТекущиеДанные = ТекущаяСтрокаЗадолженности(Вид);
ЗначенияОтбора = Новый Структура;
ЗначенияОтбора.Вставить("ТипРасчетов", ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"));
ЗначенияОтбора.Вставить("Организация", ПараметрыЗадолженности.Организация.Значение);
ЗначенияОтбора.Вставить("ПлатежиПо275ФЗ" , Ложь);
ДанныеДоговораСКомиссионером = ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ДанныеПоКомиссионеру.ОбъектРасчетов);
ПараметрыОтбораКонечногоКлиента = Новый Структура();
ПараметрыОтбораКонечногоКлиента.Вставить("ВыбратьОбъектыРасчетовСКонечнымКлиентом", Истина);
ПараметрыОтбораКонечногоКлиента.Вставить("ДоговорСКомиссионером", ДанныеДоговораСКомиссионером.Договор);
Если ДанныеДоговораСКомиссионером.ВестиРасчетыЧерезКонечныхПокупателей Тогда
ПараметрыОтбораКонечногоКлиента.Вставить("Партнер", ТекущиеДанные.Партнер);
ПараметрыОтбораКонечногоКлиента.Вставить("Контрагент", ПараметрыЗадолженности.Контрагент.Значение);
Иначе
ПараметрыОтбораКонечногоКлиента.Вставить("Партнер", ПартнерКомиссионнойПродажи);
ПараметрыОтбораКонечногоКлиента.Вставить("Контрагент", КлиентКомиссионнойПродажи);
КонецЕсли;
НастройкиВыбора = Новый Структура;
НастройкиВыбора.Вставить("ВыбратьОбъектыРасчетовПоКомиссии", ПараметрыОтбораКонечногоКлиента);
НастройкиВыбора.Вставить("Сумма", 0);
НастройкиВыбора.Вставить("ПодборДебиторскойЗадолженности", Ложь);
ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, НастройкиВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовКлиентаВозвратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеПоКомиссионеру = Объект.ДебиторскаяЗадолженность[0];
Если Не ЗначениеЗаполнено(ДанныеПоКомиссионеру.ОбъектРасчетов) Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Не задан объект расчетов комиссионера. Выберите объект расчетов комиссионера.'"));
Возврат;
КонецЕсли;
Вид = "Кт";
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма, Истина);
ТекущиеДанные = ТекущаяСтрокаЗадолженности(Вид);
ЗначенияОтбора = Новый Структура;
ЗначенияОтбора.Вставить("ТипРасчетов", ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"));
ЗначенияОтбора.Вставить("Организация", ПараметрыЗадолженности.Организация.Значение);
ЗначенияОтбора.Вставить("ПлатежиПо275ФЗ" , Ложь);
ДанныеДоговораСКомиссионером = ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ДанныеПоКомиссионеру.ОбъектРасчетов);
ПараметрыОтбораКонечногоКлиента = Новый Структура();
ПараметрыОтбораКонечногоКлиента.Вставить("ВыбратьОбъектыРасчетовСКонечнымКлиентом", Истина);
ПараметрыОтбораКонечногоКлиента.Вставить("ДоговорСКомиссионером", ДанныеДоговораСКомиссионером.Договор);
Если ДанныеДоговораСКомиссионером.ВестиРасчетыЧерезКонечныхПокупателей Тогда
ПараметрыОтбораКонечногоКлиента.Вставить("Партнер", ТекущиеДанные.Партнер);
ПараметрыОтбораКонечногоКлиента.Вставить("Контрагент", ПараметрыЗадолженности.Контрагент.Значение);
Иначе
ПараметрыОтбораКонечногоКлиента.Вставить("Партнер", ПартнерКомиссионнойПродажи);
ПараметрыОтбораКонечногоКлиента.Вставить("Контрагент", КлиентКомиссионнойПродажи);
КонецЕсли;
НастройкиВыбора = Новый Структура;
НастройкиВыбора.Вставить("ВыбратьОбъектыРасчетовПоКомиссии", ПараметрыОтбораКонечногоКлиента);
НастройкиВыбора.Вставить("Сумма", 0);
НастройкиВыбора.Вставить("ПодборДебиторскойЗадолженности", Ложь);
ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, НастройкиВыбора);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура АвтоТест_РассчитатьВзаимозачет(Команда) Экспорт
ПараметрыДебиторки = СтруктураПараметровЗадолженности(ЭтаФорма);
ПараметрыКредиторки = СтруктураПараметровЗадолженности(ЭтаФорма, Истина);
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыДебиторки.Организация.ИмяРеквизита,
ПараметрыДебиторки.Организация.Представление);
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыДебиторки.Контрагент.ИмяРеквизита,
ПараметрыДебиторки.Контрагент.Представление);
Если ПараметрыДебиторки.Организация.ИмяРеквизита <> ПараметрыКредиторки.Организация.ИмяРеквизита Тогда
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыКредиторки.Организация.ИмяРеквизита,
ПараметрыКредиторки.Организация.Представление);
КонецЕсли;
Если ПараметрыДебиторки.Контрагент.ИмяРеквизита <> ПараметрыКредиторки.Контрагент.ИмяРеквизита Тогда
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыКредиторки.Контрагент.ИмяРеквизита,
ПараметрыКредиторки.Контрагент.Представление);
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("РассчитатьВзаимозачетЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьВзаимозачетЗавершение(Результат, ДополнительныеПараметры) Экспорт
ЕстьСтрокиДтЗадолженности = ЕстьСтроки("ДебиторскаяЗадолженность");
ЕстьСтрокиКтЗадолженности = ЕстьСтроки("КредиторскаяЗадолженность");
Если ЕстьСтрокиДтЗадолженности ИЛИ ЕстьСтрокиКтЗадолженности Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("РассчитатьВзаимозачет", ЭтотОбъект),
НСтр("ru = 'При выполнении операции табличные части дебиторской и кредиторской задолженности будут очищены. Продолжить?'"),
РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да);
Иначе
АвтоТест_РассчитатьВзаимозачетЗавершение(Неопределено, Неопределено);
КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьВзаимозачет(Результат, ДополнительныеПараметры) Экспорт
Ответ = Результат;
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
Иначе
Объект.СуммаРегл = 0;
Объект.СуммаУпр = 0;
Объект.ДебиторскаяЗадолженность.Очистить();
Объект.КредиторскаяЗадолженность.Очистить();
АвтоТест_РассчитатьВзаимозачетЗавершение(Неопределено, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПодборПоОстаткамДебиторскуюЗадолженность(Команда)
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма);
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыЗадолженности.Организация.ИмяРеквизита,
ПараметрыЗадолженности.Организация.Представление);
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыЗадолженности.Контрагент.ИмяРеквизита,
ПараметрыЗадолженности.Контрагент.Представление);
Оповещение = Новый ОписаниеОповещения("ПодборПоОстаткамДебиторскуюЗадолженностьЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура ПодборПоОстаткамКредиторскуюЗадолженность(Команда)
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма, Истина);
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыЗадолженности.Организация.ИмяРеквизита,
ПараметрыЗадолженности.Организация.Представление);
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыЗадолженности.Контрагент.ИмяРеквизита,
ПараметрыЗадолженности.Контрагент.Представление);
Оповещение = Новый ОписаниеОповещения("ПодборПоОстаткамКредиторскуюЗадолженностьЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоДебиторскойЗадолженности(Команда)
Если Объект.ДебиторскаяЗадолженность.Количество() = 0
ИЛИ Объект.ДебиторскаяЗадолженность.Итог("СуммаВзаиморасчетов") = 0
ИЛИ НЕ ЗначениеЗаполнено(Объект.ДебиторскаяЗадолженность[0].ОбъектРасчетов) Тогда
Текст = НСтр("ru = 'Не заполнена табличная часть ""%1""'");
Текст = СтрЗаменить(Текст, "%1", Элементы.ГруппаДебиторскаяЗадолженность.Заголовок);
ОбщегоНазначенияКлиент.СообщитьПользователю(Текст);
Возврат;
КонецЕсли;
ЗаполняемаяТЧ = "КредиторскаяЗадолженность";
ЗапуститьЗаполнениеЗадолженности("ЗаполнитьПоДебиторскойЗадолженностиЗавершение");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоДебиторскойЗадолженностиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПроверитьФоновоеЗаданиеНаКлиенте = ЗаполнитьПоДебиторскойЗадолженностиНаСервере(Результат, ДополнительныеПараметры);
Если НЕ НоваяАрхитектураВзаиморасчетов И ПроверитьФоновоеЗаданиеНаКлиенте Тогда
ПодключитьОбработчикОжидания("ФоновоеЗаданиеПроверитьНаКлиенте", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьПоДебиторскойЗадолженностиНаСервере(Результат, ДополнительныеПараметры)
Если Объект.ДебиторскаяЗадолженность.Количество() = 0 Тогда
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
ТекстСообщения = НСтр("ru = 'Дебиторская задолженность не заполнена.'");
Иначе
ТекстСообщения = Элементы.ГруппаДебиторскаяЗадолженность.Заголовок + " " + НСтр("ru = 'не заполнены'") + ".";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Возврат Ложь;
КонецЕсли;
ПараметрыЗадолженностиКредитор = СтруктураПараметровЗадолженности(ЭтаФорма, ЗаполняемаяТЧ = "КредиторскаяЗадолженность");
Если НЕ НоваяАрхитектураВзаиморасчетов Тогда
АналитикаКРасчету = ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиКредитор);
Если АналитикаКРасчету.Количество() > 0 Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
Объект.СуммаРегл = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
СуммаКРаспределению = Объект.СуммаРегл;
Иначе
Объект.СуммаДокумента = Объект.ДебиторскаяЗадолженность.Итог("СуммаВзаиморасчетов");
СуммаКРаспределению = Объект.СуммаДокумента;
КонецЕсли;
ЗаполнитьПоОстаткамКредиторскуюЗадолженностьСервер(ПараметрыЗадолженностиКредитор);
Если Объект.КредиторскаяЗадолженность.Количество() = 0 Тогда
ИнициализироватьЗадолженность("Кт");
Объект.КредиторскаяЗадолженность[0].ВалютаВзаиморасчетов = Объект.ДебиторскаяЗадолженность[0].ВалютаВзаиморасчетов;
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
Объект.КредиторскаяЗадолженность[0].СуммаРегл = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
Иначе
Объект.КредиторскаяЗадолженность[0].СуммаВзаиморасчетов = Объект.ДебиторскаяЗадолженность.Итог("СуммаВзаиморасчетов");
КонецЕсли;
Иначе
РассчитатьСуммыВзаимозачетаСервер(СуммаКРаспределению);
ИнициализироватьЗадолженность("Дт");
ИнициализироватьЗадолженность("Кт");
КонецЕсли;
УстановитьСвойстваЭлементовФормыПоВидуОперации();
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьПоКредиторскойЗадолженности(Команда)
Если Объект.КредиторскаяЗадолженность.Количество() = 0
ИЛИ Объект.КредиторскаяЗадолженность.Итог("СуммаВзаиморасчетов") = 0
ИЛИ НЕ ЗначениеЗаполнено(Объект.КредиторскаяЗадолженность[0].ОбъектРасчетов) Тогда
Текст = НСтр("ru = 'Не заполнена табличная часть ""%1""'");
Текст = СтрЗаменить(Текст, "%1", Элементы.ГруппаДебиторскаяЗадолженность.Заголовок);
ОбщегоНазначенияКлиент.СообщитьПользователю(Текст);
Возврат;
КонецЕсли;
ЗаполняемаяТЧ = "ДебиторскаяЗадолженность";
ЗапуститьЗаполнениеЗадолженности("ЗаполнитьПоКредиторскойЗадолженностиЗавершение");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоКредиторскойЗадолженностиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПроверитьФоновоеЗаданиеНаКлиенте = ЗаполнитьПоКредиторскойЗадолженностиНаСервере(Результат, ДополнительныеПараметры);
Если НЕ НоваяАрхитектураВзаиморасчетов И ПроверитьФоновоеЗаданиеНаКлиенте Тогда
ПодключитьОбработчикОжидания("ФоновоеЗаданиеПроверитьНаКлиенте", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьПоКредиторскойЗадолженностиНаСервере(Результат, ДополнительныеПараметры)
Если Объект.КредиторскаяЗадолженность.Количество() = 0 Тогда
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
ТекстСообщения = НСтр("ru = 'Кредиторская задолженность не заполнена.'");
Иначе
ТекстСообщения = Элементы.ГруппаКредиторскаяЗадолженность.Заголовок + " " + НСтр("ru = 'не заполнены'") + ".";
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Возврат Ложь;
КонецЕсли;
ПараметрыЗадолженностиДебитор = СтруктураПараметровЗадолженности(ЭтаФорма, ЗаполняемаяТЧ = "КредиторскаяЗадолженность");
Если НЕ НоваяАрхитектураВзаиморасчетов Тогда
АналитикаКРасчету = ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиДебитор);
Если АналитикаКРасчету.Количество() > 0 Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
Объект.СуммаРегл = Объект.КредиторскаяЗадолженность.Итог("СуммаРегл");
СуммаКРаспределению = Объект.СуммаРегл;
Иначе
Объект.СуммаДокумента = Объект.КредиторскаяЗадолженность.Итог("СуммаВзаиморасчетов");
СуммаКРаспределению = Объект.СуммаДокумента;
КонецЕсли;
ЗаполнитьПоОстаткамДебиторскуюЗадолженностьСервер(ПараметрыЗадолженностиДебитор);
Если Объект.ДебиторскаяЗадолженность.Количество() = 0 Тогда
ИнициализироватьЗадолженность("Дт");
Объект.ДебиторскаяЗадолженность[0].ВалютаВзаиморасчетов = Объект.КредиторскаяЗадолженность[0].ВалютаВзаиморасчетов;
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
Объект.ДебиторскаяЗадолженность[0].СуммаРегл = Объект.КредиторскаяЗадолженность.Итог("СуммаРегл");
Иначе
Объект.ДебиторскаяЗадолженность[0].СуммаВзаиморасчетов = Объект.КредиторскаяЗадолженность.Итог("СуммаВзаиморасчетов");
КонецЕсли;
Иначе
РассчитатьСуммыВзаимозачетаСервер(СуммаКРаспределению);
ИнициализироватьЗадолженность("Дт");
ИнициализироватьЗадолженность("Кт");
КонецЕсли;
УстановитьСвойстваЭлементовФормыПоВидуОперации();
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ЗапуститьЗаполнениеЗадолженности(ИмяПостОбработчика)
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма, ЗаполняемаяТЧ = "КредиторскаяЗадолженность");
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыЗадолженности.Организация.ИмяРеквизита,
ПараметрыЗадолженности.Организация.Представление);
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить(
ПараметрыЗадолженности.Контрагент.ИмяРеквизита,
ПараметрыЗадолженности.Контрагент.Представление);
Оповещение = Новый ОписаниеОповещения(ИмяПостОбработчика, ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПодарочныйСертификат(Команда)
Если ПодарочныеСертификатыКлиент.ПроверитьВозможностьДобавленияПодарочногоСертификата(ЭтотОбъект, Ложь) Тогда
Если Объект.Проведен Тогда
ОписаниеОповещенияЗавершения = Новый ОписаниеОповещения("ПодобратьПодарочныйСертификатНачало", ЭтотОбъект);
РозничныеПродажиКлиент.ОтобразитьВопросОНеобходимостиНепроведенногоДокумента(ЭтотОбъект, ОписаниеОповещенияЗавершения);
Иначе
ОткрытьФормуПодбораПодарочныхСертификатов();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСлужебныеРеквизитыТабличнойЧасти(Вид)
ЭтоДебет = Вид = "Дт";
Если ЭтоДебет Тогда
ИмяТЧ = "ДебиторскаяЗадолженность";
Иначе
ИмяТЧ = "КредиторскаяЗадолженность";
КонецЕсли;
ТаблицаОбъектовРасчетов = Объект[ИмяТЧ].Выгрузить(,"ОбъектРасчетов");
ТаблицаОбъектовРасчетов.Свернуть("ОбъектРасчетов", "");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбъектыРасчетов.Ссылка КАК Ссылка,
| ОбъектыРасчетов.Объект КАК Объект
|ИЗ
| Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
| ПО ОбъектыРасчетов.Договор = ДоговорыКонтрагентов.Ссылка
|ГДЕ
| ОбъектыРасчетов.Ссылка В (&ОбъектыРасчетов)";
Запрос.УстановитьПараметр("ОбъектыРасчетов", ТаблицаОбъектовРасчетов.ВыгрузитьКолонку("ОбъектРасчетов"));
РеквизитыОбъектовРасчетов = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Реквизиты = Новый Структура("Объект");
ЗаполнитьЗначенияСвойств(Реквизиты, Выборка);
РеквизитыОбъектовРасчетов.Вставить(Выборка.Ссылка, Реквизиты);
КонецЦикла;
Для Каждого Строка Из Объект[ИмяТЧ] Цикл
Реквизиты = РеквизитыОбъектовРасчетов[Строка.ОбъектРасчетов];
Если Реквизиты <> Неопределено Тогда
Если НЕ ЭтоДебет Тогда
Строка.ОбъектРасчетовПодарочныйСертификат = ТипЗнч(Реквизиты.Объект) = Тип("СправочникСсылка.ПодарочныеСертификаты");
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСлужебныеРеквизитыКонтрагента(Вид)
ЭтоДебет = Вид = "Дт";
СвязанныеРеквизитыФормы = Новый Соответствие;
Если ЭтоДебет Тогда
ИмяРеквизитаОбъекта = "КонтрагентДебитор";
ИмяРеквизитаРасчетыМеждуОрганизациями = "РасчетыМеждуОрганизациямиДебитор";
СвязанныеРеквизитыФормы.Вставить("ЮрФизЛицоДебитор", "ЮрФизЛицо");
Иначе
ИмяРеквизитаОбъекта = "КонтрагентКредитор";
ИмяРеквизитаРасчетыМеждуОрганизациями = "РасчетыМеждуОрганизациямиКредитор";
СвязанныеРеквизитыФормы.Вставить("ЮрФизЛицоКредитор", "ЮрФизЛицо");
КонецЕсли;
ЗначенияРеквизитовОбъекта = Новый Структура;
Если ЗначениеЗаполнено(Объект[ИмяРеквизитаОбъекта]) И НЕ ЭтаФорма[ИмяРеквизитаРасчетыМеждуОрганизациями] Тогда
РеквизитыОбъекта = Новый Структура;
Для Каждого СвязанныйРеквизит Из СвязанныеРеквизитыФормы Цикл
РеквизитыОбъекта.Вставить(СвязанныйРеквизит.Значение);
КонецЦикла;
ЗначенияРеквизитовОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект[ИмяРеквизитаОбъекта], РеквизитыОбъекта);
КонецЕсли;
ЗначениеРеквизитаФормы = Неопределено;
Для Каждого СвязанныйРеквизит Из СвязанныеРеквизитыФормы Цикл
ЗначенияРеквизитовОбъекта.Свойство(СвязанныйРеквизит.Значение, ЗначениеРеквизитаФормы);
ЭтаФорма[СвязанныйРеквизит.Ключ] = ЗначениеРеквизитаФормы;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСуммыУпрРегл(Команда)
НоваяПометка = НЕ Элементы.ДебиторскаяЗадолженностьПоказатьСуммыУпрРегл.Пометка;
Элементы.ДебиторскаяЗадолженностьСуммаРегл.Видимость = НоваяПометка;
Элементы.ДебиторскаяЗадолженностьСуммаУпр.Видимость = НоваяПометка;
Элементы.ДебиторскаяЗадолженностьПоказатьСуммыУпрРегл.Пометка = НоваяПометка;
НоваяПометка = НЕ Элементы.КредиторскаяЗадолженностьПоказатьСуммыУпрРегл.Пометка;
Элементы.КредиторскаяЗадолженностьСуммаРегл.Видимость = НоваяПометка;
Элементы.КредиторскаяЗадолженностьСуммаУпр.Видимость = НоваяПометка;
Элементы.КредиторскаяЗадолженностьПоказатьСуммыУпрРегл.Пометка = НоваяПометка;
Если Элементы.Страницы.ТекущаяСтраница = Элементы.ГруппаДебиторскаяЗадолженность Тогда
ИначеЕсли Элементы.Страницы.ТекущаяСтраница = Элементы.ГруппаКредиторскаяЗадолженность Тогда
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область УправлениеЭлементамиФормы
&НаСервере
Процедура УстановитьСвойстваЭлементовФормыПоВидуОперации(ПереключитьСтраницы = Ложь)
ПроизвольнаяОперация = (Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Произвольный);
ОперацияПоЗачетуПлатежаЧерезКомиссионера = (Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера);
ОперацияПоВозвратуПлатежаОтКомиссионера = (Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера);
ОперацияОплатаПодарочнымСертификатом = (Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом);
ОперацияБартер = (Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Бартер
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями);
Элементы.ТипДебитора.Видимость = ПроизвольнаяОперация;
Элементы.ТипКредитора.Видимость = ПроизвольнаяОперация;
Элементы.ФормаРассчитатьВзаимозачет.Видимость = ПроизвольнаяОперация ИЛИ ОперацияБартер;
СтруктураПредставлений = Документы.ВзаимозачетЗадолженности.ПредставлениеРеквизитовПоВидуОперации(Объект.ВидОперации);
Элементы.Организация.Заголовок = СтруктураПредставлений.Организация;
Элементы.ОрганизацияКредитор.Заголовок = СтруктураПредставлений.ОрганизацияКредитор;
Элементы.ТипДебитора.Заголовок = СтруктураПредставлений.КонтрагентДебитор;
Элементы.ТипКредитора.Заголовок = СтруктураПредставлений.КонтрагентКредитор;
Элементы.КонтрагентДебитор.Заголовок = СтруктураПредставлений.КонтрагентДебитор;
Элементы.КонтрагентКредитор.Заголовок = СтруктураПредставлений.КонтрагентКредитор;
ПараметрыВыбораКонтрагентДебитор = Новый Массив;
Если ПроизвольнаяОперация Тогда
Элементы.КонтрагентДебитор.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элементы.КонтрагентКредитор.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Иначе
Элементы.КонтрагентДебитор.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
Элементы.КонтрагентКредитор.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
КонецЕсли;
Элементы.КонтрагентДебитор.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораКонтрагентДебитор);
Элементы.КонтрагентКредитор.Доступность = НЕ ОперацияОплатаПодарочнымСертификатом;
Элементы.ВыборДебитора.Видимость = НЕ ОперацияПоЗачетуПлатежаЧерезКомиссионера
И НЕ ОперацияПоВозвратуПлатежаОтКомиссионера;
МеждуОрганизациями = ВыбранВидОперацииМеждуОрганизациями(Объект.ВидОперации);
Элементы.ОрганизацияКредитор.Видимость = МеждуОрганизациями;
ВидимостьЭлемента = ВыбранВидОперацииМеждуКонтрагентами(Объект.ВидОперации);
Элементы.ВыборКредитора.Видимость = ВидимостьЭлемента И НЕ ОперацияПоЗачетуПлатежаЧерезКомиссионера
И НЕ ОперацияПоВозвратуПлатежаОтКомиссионера;
УстановитьВидимостьЗадолженности(ПереключитьСтраницы);
ОперацииСКлиентом = ВыбранВидОперацииСКлиентом();
ЗаголовокПолучателя = НСтр("ru = 'Получатели'");
Если ВыбранВидОперацииПереносАванса() Тогда
НовыйЗаголовок = НСтр("ru = 'Авансы'");
Если ОперацииСКлиентом Тогда
Элементы.ГруппаКредиторскаяЗадолженность.Заголовок = НовыйЗаголовок;
Элементы.ГруппаДебиторскаяЗадолженность.Заголовок = ЗаголовокПолучателя;
Иначе
Элементы.ГруппаДебиторскаяЗадолженность.Заголовок = НовыйЗаголовок;
Элементы.ГруппаКредиторскаяЗадолженность.Заголовок = ЗаголовокПолучателя;
КонецЕсли;
ИначеЕсли ВыбранВидОперацииПереносДолга() Тогда
НовыйЗаголовок = НСтр("ru = 'Долги'");
Если ОперацииСКлиентом Тогда
Элементы.ГруппаДебиторскаяЗадолженность.Заголовок = НовыйЗаголовок;
Элементы.ГруппаКредиторскаяЗадолженность.Заголовок = ЗаголовокПолучателя;
Иначе
Элементы.ГруппаКредиторскаяЗадолженность.Заголовок = НовыйЗаголовок;
Элементы.ГруппаДебиторскаяЗадолженность.Заголовок = ЗаголовокПолучателя;
КонецЕсли;
ИначеЕсли Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Бартер
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями Тогда
Элементы.ГруппаДебиторскаяЗадолженность.Заголовок = НСтр("ru = 'Отгрузки'");
Элементы.ГруппаКредиторскаяЗадолженность.Заголовок = НСтр("ru = 'Поступления'");
Иначе
Элементы.ГруппаДебиторскаяЗадолженность.Заголовок = НСтр("ru = 'Дебиторская задолженность'");
Элементы.ГруппаКредиторскаяЗадолженность.Заголовок = НСтр("ru = 'Кредиторская задолженность'");
КонецЕсли;
Если НЕ ПереключательДебиторскаяЗадолженность Тогда
Элементы.СтраницыДебиторскаяЗадолженность.ТекущаяСтраница = Элементы.ДебиторскаяЗадолженностьБезРазбиения;
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
Иначе
Элементы.СтраницыДебиторскаяЗадолженность.ТекущаяСтраница = Элементы.ДебиторскаяЗадолженностьСписком;
КонецЕсли;
Если НЕ ПереключательКредиторскаяЗадолженность Тогда
Элементы.СтраницыКредиторскаяЗадолженность.ТекущаяСтраница = Элементы.КредиторскаяЗадолженностьБезРазбиения;
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
Иначе
Элементы.СтраницыКредиторскаяЗадолженность.ТекущаяСтраница = Элементы.КредиторскаяЗадолженностьСписком;
КонецЕсли;
УстановитьВидимостьФилиалов();
УстановитьВидимостьОбъектаРасчетовДтКт();
Элементы.ОбъектРасчетовИнтеркампани.Видимость = МеждуОрганизациями;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЗадолженности(ПереключитьСтраницы = Ложь)
Элементы.ДебиторскаяЗадолженностьПоказатьСуммыУпрРегл.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьПоказатьСуммыУпрРегл.Видимость = Ложь;
Элементы.ГруппаПодвал.Видимость = Ложь;
Элементы.ГруппаИтогоРасчеты.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаРегл.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаУпр.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаРегл.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаУпр.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьСуммаРегл.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьСуммаУпр.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьСуммаРегл.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьСуммаУпр.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьПоказатьСуммыУпрРегл.Пометка = Ложь;
Элементы.КредиторскаяЗадолженностьПоказатьСуммыУпрРегл.Пометка = Ложь;
УстановитьДоступностьСуммУпрРегл(Истина);
Элементы.ЗаполнитьПоДебиторскойЗадолженности.Видимость = Ложь;
Элементы.ЗаполнитьПоКредиторскойЗадолженности.Видимость = Ложь;
Элементы.ЗаполнитьПоДебиторскойЗадолженности.Заголовок = НСтр("ru = 'Заполнить по дебиторской задолженности'");
Элементы.ЗаполнитьПоКредиторскойЗадолженности.Заголовок = НСтр("ru = 'Заполнить по кредиторской задолженности'");
Элементы.КредиторскаяЗадолженностьПодобратьПодарочныйСертификат.Видимость = Ложь;
ЗаголовокКнопки = НСтр("ru = 'Заполнить'");
ОперацииСКлиентом = ВыбранВидОперацииСКлиентом();
ПоказатьПартнера = НЕ ВыбранВидОперацииМеждуДвумяОрганизациями(Объект.ВидОперации);
ДебиторОрганизация = Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик
ИЛИ Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент;
КредиторОрганизация = Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик
ИЛИ Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент;
Элементы.ДебиторскаяЗадолженностьПартнер.Видимость = ПоказатьПартнера И НЕ ДебиторОрганизация;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияПартнер.Видимость = ПоказатьПартнера И НЕ ДебиторОрганизация;
Элементы.КредиторскаяЗадолженностьПартнер.Видимость = ПоказатьПартнера И НЕ КредиторОрганизация;
Элементы.КредиторскаяЗадолженностьБезРазбиенияПартнер.Видимость = ПоказатьПартнера И НЕ КредиторОрганизация;
Если ПереключитьСтраницы Тогда
Элементы.Переместить(Элементы.ГруппаДебиторскаяЗадолженность,Элементы.Страницы,Элементы.ГруппаКредиторскаяЗадолженность);
Элементы.Страницы.ТекущаяСтраница = Элементы.ГруппаДебиторскаяЗадолженность;
КонецЕсли;
Если ВыбранВидОперацииПереносАванса() Тогда
НастроитьВидимостьЛокализуемыхЭлементов();
Элементы.ДебиторскаяЗадолженностьПоказатьСуммыУпрРегл.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьПоказатьСуммыУпрРегл.Видимость = Истина;
УстановитьДоступностьСуммУпрРегл(Ложь);
Если ОперацииСКлиентом Тогда
Если ПереключитьСтраницы Тогда
Элементы.Переместить(Элементы.ГруппаКредиторскаяЗадолженность,Элементы.Страницы,Элементы.ГруппаДебиторскаяЗадолженность);
Элементы.Страницы.ТекущаяСтраница = Элементы.ГруппаКредиторскаяЗадолженность;
КонецЕсли;
КнопкаЗаполнить = Элементы.ЗаполнитьПоКредиторскойЗадолженности;
Иначе
КнопкаЗаполнить = Элементы.ЗаполнитьПоДебиторскойЗадолженности;
КонецЕсли;
Элементы.СтраницаОтраженияОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.СтраницаОтражениеВозвратаОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.ДанныеПоВходящемуДокументу.Видимость = Ложь;
КнопкаЗаполнить.Заголовок = НСтр("ru = 'Заполнить по авансам'");
КнопкаЗаполнить.Видимость = Истина;
ИначеЕсли ВыбранВидОперацииПереносДолга() Тогда
Элементы.ГруппаПодвал.Видимость = Истина;
Элементы.ГруппаИтогоРасчеты.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьПоказатьСуммыУпрРегл.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьПоказатьСуммыУпрРегл.Видимость = Истина;
УстановитьДоступностьСуммУпрРегл(Ложь);
Если НЕ ОперацииСКлиентом Тогда
Если ПереключитьСтраницы Тогда
Элементы.Переместить(Элементы.ГруппаКредиторскаяЗадолженность,Элементы.Страницы,Элементы.ГруппаДебиторскаяЗадолженность);
Элементы.Страницы.ТекущаяСтраница = Элементы.ГруппаКредиторскаяЗадолженность;
КонецЕсли;
КнопкаЗаполнить = Элементы.ЗаполнитьПоКредиторскойЗадолженности;
Иначе
КнопкаЗаполнить = Элементы.ЗаполнитьПоДебиторскойЗадолженности;
КонецЕсли;
Элементы.СтраницаОтраженияОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.СтраницаОтражениеВозвратаОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.ДанныеПоВходящемуДокументу.Видимость = Ложь;
КнопкаЗаполнить.Заголовок = НСтр("ru = 'Заполнить по долгам'");
КнопкаЗаполнить.Видимость = Истина;
ИначеЕсли Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера Тогда
Элементы.ГруппаПодвал.Видимость = Истина;
Элементы.ГруппаИтогоРасчеты.Видимость = Ложь;
Элементы.ГруппаДебиторскаяЗадолженность.Видимость = Ложь;
Элементы.КнопкиДебиторскаяЗадолженность.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьБезРазбиения.Видимость = Ложь;
Элементы.ГруппаКредиторскаяЗадолженность.Видимость = Ложь;
Элементы.КнопкиКредиторскаяЗадолженность.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьБезРазбиения.Видимость = Ложь;
Элементы.СтраницаОтраженияОплатыЧерезКомиссионера.Видимость = Истина;
Элементы.СтраницаОтражениеВозвратаОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.ДанныеПоВходящемуДокументу.Заголовок = НСтр("ru = 'Данные по входящему платежному документу'");
Элементы.ДанныеПоВходящемуДокументу.Видимость = Истина;
ИначеЕсли Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера Тогда
Элементы.ГруппаПодвал.Видимость = Истина;
Элементы.ГруппаИтогоРасчеты.Видимость = Ложь;
Элементы.ГруппаДебиторскаяЗадолженность.Видимость = Ложь;
Элементы.КнопкиДебиторскаяЗадолженность.Видимость = Ложь;
Элементы.ДебиторскаяЗадолженностьБезРазбиения.Видимость = Ложь;
Элементы.ГруппаКредиторскаяЗадолженность.Видимость = Ложь;
Элементы.КнопкиКредиторскаяЗадолженность.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьБезРазбиения.Видимость = Ложь;
Элементы.СтраницаОтраженияОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.СтраницаОтражениеВозвратаОплатыЧерезКомиссионера.Видимость = Истина;
Элементы.ДанныеПоВходящемуДокументу.Заголовок = НСтр("ru = 'Данные по входящему платежному документу возврата'");
Элементы.ДанныеПоВходящемуДокументу.Видимость = Истина;
Иначе
Элементы.ГруппаПодвал.Видимость = Истина;
Элементы.ГруппаИтогоРасчеты.Видимость = Истина;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаРегл.Видимость = Истина;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаУпр.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаРегл.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаУпр.Видимость = Истина;
Элементы.ДебиторскаяЗадолженностьСуммаРегл.Видимость = Истина;
Элементы.ДебиторскаяЗадолженностьСуммаУпр.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьСуммаРегл.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьСуммаУпр.Видимость = Истина;
Элементы.ГруппаДебиторскаяЗадолженность.Видимость = Истина;
Элементы.КнопкиДебиторскаяЗадолженность.Видимость = Истина;
Элементы.ДебиторскаяЗадолженностьБезРазбиения.Видимость = Истина;
Элементы.ГруппаКредиторскаяЗадолженность.Видимость = Истина;
Элементы.КнопкиКредиторскаяЗадолженность.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьБезРазбиения.Видимость = Истина;
Элементы.ЗаполнитьПоДебиторскойЗадолженности.Видимость = Истина;
Элементы.ЗаполнитьПоКредиторскойЗадолженности.Видимость = Истина;
Элементы.СтраницаОтраженияОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.СтраницаОтражениеВозвратаОплатыЧерезКомиссионера.Видимость = Ложь;
Элементы.ДанныеПоВходящемуДокументу.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьОбъектаРасчетовДтКт()
Элементы.ОбъектРасчетовДебиторКредитор.Видимость =
(Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент
ИЛИ Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик
ИЛИ Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент
ИЛИ Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик)
И (Объект.КонтрагентДебитор <> Объект.КонтрагентКредитор
ИЛИ НЕ (ЗначениеЗаполнено(Объект.КонтрагентДебитор) ИЛИ ЗначениеЗаполнено(Объект.КонтрагентКредитор)))
И НЕ ВыбранВидОперацииМеждуДвумяОрганизациями(Объект.ВидОперации);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьСуммУпрРегл(ЕстьДоступ)
Элементы.ДебиторскаяЗадолженностьСуммаРегл.ТолькоПросмотр = НЕ ЕстьДоступ;
Элементы.ДебиторскаяЗадолженностьСуммаУпр.ТолькоПросмотр = НЕ ЕстьДоступ;
Элементы.КредиторскаяЗадолженностьСуммаРегл.ТолькоПросмотр = НЕ ЕстьДоступ;
Элементы.КредиторскаяЗадолженностьСуммаУпр.ТолькоПросмотр = НЕ ЕстьДоступ;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьЗадолженность(Вид)
Если Вид = "Дт" Тогда
ИмяТЧ = "ДебиторскаяЗадолженность";
ИмяЭлементаПереключатель = "ПереключательДебиторскаяЗадолженность";
Иначе
ИмяТЧ = "КредиторскаяЗадолженность";
ИмяЭлементаПереключатель = "ПереключательКредиторскаяЗадолженность";
КонецЕсли;
ТабличнаяЧасть = Объект[ИмяТЧ];
Если ТабличнаяЧасть.Количество() = 0 Тогда
НоваяСтрока = ТабличнаяЧасть.Добавить();
НоваяСтрока.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета;
Если Вид = "Дт" Тогда
ЗаполнитьПартнераДебитора();
Иначе
ЗаполнитьПартнераКредитора();
КонецЕсли;
КонецЕсли;
Элементы[ИмяТЧ].ТекущаяСтрока = ТабличнаяЧасть[0].ПолучитьИдентификатор();
ЭтаФорма[ИмяЭлементаПереключатель] = ТабличнаяЧасть.Количество() > 1;
КонецПроцедуры
&НаКлиенте
Функция ТекущаяСтрокаЗадолженности(Вид)
ИмяТЧ = ?(Вид = "Дт", "ДебиторскаяЗадолженность", "КредиторскаяЗадолженность");
СтрокаТаблицы = Элементы[ИмяТЧ].ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
СтрокаТаблицы = Объект[ИмяТЧ][0];
КонецЕсли;
Возврат СтрокаТаблицы;
КонецФункции
&НаСервере
Процедура УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения()
Если Объект.ДебиторскаяЗадолженность.Количество() > 0 Тогда
ТекСтрока = Объект.ДебиторскаяЗадолженность[0];
Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаРегл.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаУпр.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаУправленческогоУчета;
Элементы.СуммаРеглКлиента.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета;
Элементы.СуммаУпрКлиента.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаУправленческогоУчета;
Элементы.СуммаРеглВозвратаКомиссионера.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета;
Элементы.СуммаУпрВозвратаКомиссионера.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаУправленческогоУчета;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения()
Если Объект.КредиторскаяЗадолженность.Количество() > 0 Тогда
ТекСтрока = Объект.КредиторскаяЗадолженность[0];
Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаРегл.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета;
Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаУпр.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаУправленческогоУчета;
Элементы.СуммаРеглКомиссионера.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета;
Элементы.СуммаУпрКомиссионера.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаУправленческогоУчета;
Элементы.СуммаРеглВозвратаКлиента.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета;
Элементы.СуммаУпрВозвратаКлиента.Доступность = ТекСтрока.ВалютаВзаиморасчетов <> ВалютаУправленческогоУчета;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДебиторскаяЗадолженностьСуммаРегл.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаРегл.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДебиторскаяЗадолженность.ВалютаВзаиморасчетов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ВалютаРегламентированногоУчета");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КредиторскаяЗадолженностьСуммаРегл.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаРегл.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.КредиторскаяЗадолженность.ВалютаВзаиморасчетов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ВалютаРегламентированногоУчета");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДебиторскаяЗадолженностьСуммаУпр.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаУпр.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДебиторскаяЗадолженность.ВалютаВзаиморасчетов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ВалютаУправленческогоУчета");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КредиторскаяЗадолженностьСуммаУпр.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаУпр.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.КредиторскаяЗадолженность.ВалютаВзаиморасчетов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ВалютаУправленческогоУчета");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КредиторскаяЗадолженностьОбъектРасчетов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидОперации");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьФилиалов()
ЕстьФилиалы = Справочники.Организации.ФилиалыСРасчетамиЧерезГоловнуюОрганизацию(Объект.Организация).Количество() > 0;
МеждуОрганизациями = ВыбранВидОперацииМеждуОрганизациями(Объект.ВидОперации);
ОрганизацияДтСовпадает = Объект.ДебиторскаяЗадолженность.Количество() = 1
И ЗначениеЗаполнено(Объект.ДебиторскаяЗадолженность[0].Организация)
И Объект.Организация = Объект.ДебиторскаяЗадолженность[0].Организация;
ОрганизацияКтСовпадает = Объект.КредиторскаяЗадолженность.Количество() = 1
И ЗначениеЗаполнено(Объект.КредиторскаяЗадолженность[0].Организация)
И Объект.Организация = Объект.КредиторскаяЗадолженность[0].Организация;
Элементы.ДебиторскаяЗадолженностьОрганизация.Видимость = ЕстьФилиалы;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияОрганизация.Видимость = ЕстьФилиалы И НЕ ОрганизацияДтСовпадает;
Элементы.КредиторскаяЗадолженностьОрганизация.Видимость = ЕстьФилиалы И НЕ МеждуОрганизациями;
Элементы.КредиторскаяЗадолженностьБезРазбиенияОрганизация.Видимость = ЕстьФилиалы И НЕ МеждуОрганизациями И НЕ ОрганизацияКтСовпадает;
КонецПроцедуры
&НаСервере
Процедура ОграничитьВыборВидаОперации()
Если НЕ Пользователи.ЭтоПолноправныйПользователь()
И НЕ Пользователи.РолиДоступны("ДобавлениеИзменениеДокументовКорректировкиЗадолженности") Тогда
Элементы.ВидОперации.СписокВыбора.Добавить(Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаОрганизацияКонтрагент);
Элементы.ВидОперации.СписокВыбора.Добавить(Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаОрганизацияКонтрагент);
Элементы.ВидОперации.СписокВыбора.Добавить(Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент);
Если Элементы.ВидОперации.СписокВыбора.НайтиПоЗначению(Объект.ВидОперации) = Неопределено Тогда
Элементы.ВидОперации.ТолькоПросмотр = Истина;
Иначе
Элементы.ВидОперации.РежимВыбораИзСписка = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Заполнение
&НаКлиенте
Процедура АвтоТест_РассчитатьВзаимозачетЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ДополнительныеПараметры) Тогда
ТолькоСуммы = ДополнительныеПараметры.Свойство("ТолькоСуммы");
Иначе
ТолькоСуммы = Ложь;
КонецЕсли;
ПараметрыЗадолженностиДебитор = СтруктураПараметровЗадолженности(ЭтаФорма);
ПараметрыЗадолженностиКредитор = СтруктураПараметровЗадолженности(ЭтаФорма, Истина);
Если НЕ ТолькоСуммы Тогда
Если НЕ НоваяАрхитектураВзаиморасчетов Тогда
АналитикаКРасчету = ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиДебитор, ПараметрыЗадолженностиКредитор);
Если АналитикаКРасчету.Количество() > 0 Тогда
ЗаполняемаяТЧ = "";
ПодключитьОбработчикОжидания("ФоновоеЗаданиеПроверитьНаКлиенте", 0.1, Истина);
Возврат;
КонецЕсли;
КонецЕсли;
ЗаполнитьПоОстаткамДебиторскуюКредиторскуюЗадолженностьСервер(ПараметрыЗадолженностиДебитор, ПараметрыЗадолженностиКредитор);
РассчитатьСуммыВзаимозачета(Объект.СуммаРегл);
Элементы.ДебиторскаяЗадолженность.Обновить();
Элементы.КредиторскаяЗадолженность.Обновить();
АвтоТест_РассчитатьВзаимозачетЗавершениеНаСервере();
Иначе
Если ЗаполняемаяТЧ = "" Тогда
ЗаполнитьСуммыУпрРегл(ПараметрыЗадолженностиДебитор, Ложь);
ЗаполнитьСуммыУпрРегл(ПараметрыЗадолженностиКредитор, Истина);
ИначеЕсли ЗаполняемаяТЧ = "ДебиторскаяЗадолженность" Тогда
ЗаполнитьСуммыУпрРегл(ПараметрыЗадолженностиДебитор, Ложь);
Иначе
ЗаполнитьСуммыУпрРегл(ПараметрыЗадолженностиКредитор, Истина);
КонецЕсли;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АвтоТест_РассчитатьВзаимозачетЗавершениеНаСервере()
УстановитьСвойстваЭлементовФормыПоВидуОперации();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоОстаткамДебиторскуюЗадолженностьСервер(ПараметрыЗадолженностиКредитор)
ВзаиморасчетыСервер.ЗаполнитьЗадолженностьПоОстаткамВзаиморасчетов(
ПараметрыЗадолженностиКредитор.Организация.Значение,
ПараметрыЗадолженностиКредитор.Контрагент.Значение,
Перечисления.ТипыЗадолженности.Дебиторская,
ПараметрыЗадолженностиКредитор.ТипРасчетов,
Объект.Дата,
ВалютаДокументаДляПереноса("ДебиторскаяЗадолженность"),
Объект.ДебиторскаяЗадолженность);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоОстаткамКредиторскуюЗадолженностьСервер(ПараметрыЗадолженностиКредитор)
ВзаиморасчетыСервер.ЗаполнитьЗадолженностьПоОстаткамВзаиморасчетов(
ПараметрыЗадолженностиКредитор.Организация.Значение,
ПараметрыЗадолженностиКредитор.Контрагент.Значение,
Перечисления.ТипыЗадолженности.Кредиторская,
ПараметрыЗадолженностиКредитор.ТипРасчетов,
Объект.Дата,
ВалютаДокументаДляПереноса("КредиторскаяЗадолженность"),
Объект.КредиторскаяЗадолженность);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоОстаткамДебиторскуюКредиторскуюЗадолженностьСервер(ПараметрыЗадолженностиДебитор, ПараметрыЗадолженностиКредитор)
ВзаиморасчетыСервер.ЗаполнитьЗадолженностьПоОстаткамВзаиморасчетов(
ПараметрыЗадолженностиДебитор.Организация.Значение,
ПараметрыЗадолженностиДебитор.Контрагент.Значение,
Перечисления.ТипыЗадолженности.Дебиторская,
ПараметрыЗадолженностиДебитор.ТипРасчетов,
Объект.Дата,
ВалютаДокументаДляПереноса("ДебиторскаяЗадолженность"),
Объект.ДебиторскаяЗадолженность);
ВзаиморасчетыСервер.ЗаполнитьЗадолженностьПоОстаткамВзаиморасчетов(
ПараметрыЗадолженностиКредитор.Организация.Значение,
ПараметрыЗадолженностиКредитор.Контрагент.Значение,
Перечисления.ТипыЗадолженности.Кредиторская,
ПараметрыЗадолженностиКредитор.ТипРасчетов,
Объект.Дата,
ВалютаДокументаДляПереноса("КредиторскаяЗадолженность"),
Объект.КредиторскаяЗадолженность);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ПодборПоОстаткамДебиторскуюЗадолженностьЗавершение(Результат, ДополнительныеПараметры) Экспорт
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
АдресПлатежейВХранилище = ПоместитьРасшифровкуПлатежаВХранилище(Объект.ДебиторскаяЗадолженность);
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ОбъектСсылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("АдресПлатежейВХранилище", АдресПлатежейВХранилище);
ПараметрыОткрытия.Вставить("Организация", ПараметрыЗадолженности.Организация.Значение);
ПараметрыОткрытия.Вставить("УчитыватьФилиалы", Истина);
ПараметрыОткрытия.Вставить("Контрагент", ПараметрыЗадолженности.Контрагент.Значение);
ПараметрыОткрытия.Вставить("ЗаполнятьНДСВРасшифровке", Ложь);
Если Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Бартер")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный")
И Объект.КредиторскаяЗадолженность.Количество() > 0
И ЗначениеЗаполнено(Объект.КредиторскаяЗадолженность[0].ОбъектРасчетов) Тогда
ПараметрыОткрытия.Вставить("ВалютаДокумента", Объект.КредиторскаяЗадолженность[0].ВалютаВзаиморасчетов);
КонецЕсли;
ПараметрыОткрытия.Вставить("СуммаДокумента", 0);
ПараметрыОткрытия.Вставить("ДатаДокумента", Объект.Дата);
ПараметрыОткрытия.Вставить("ТипРасчетов", ПараметрыЗадолженности.ТипРасчетов);
ПараметрыОткрытия.Вставить("ИдентификаторПлатежа", "");
ПараметрыОткрытия.Вставить("ПартнерПрочиеОтношения", Ложь);
ПараметрыОткрытия.Вставить("ПодборДебиторскойЗадолженности", Истина);
ПараметрыОткрытия.Вставить("ПодборТолькоБезусловнойЗадолженности", Ложь);
Если Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Бартер")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями") Тогда
ПараметрыОткрытия.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
ПараметрыОткрытия.Вставить("ОднаВалютаВзаиморасчетов", Истина);
КонецЕсли;
ПараметрыОткрытия.Вставить("ДополнительныеОтборы", Новый Соответствие());
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Форма", ЭтаФорма);
ДополнительныеПараметры.Вставить("ОповещениеПослеЗавершения", Неопределено);
ОткрытьФорму(
"Справочник.ОбъектыРасчетов.Форма.ПодборОбъектовРасчетов",
ПараметрыОткрытия,
ЭтаФорма,,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПодборПоОстаткамКредиторскуюЗадолженностьЗавершение(Результат, ДополнительныеПараметры) Экспорт
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
АдресПлатежейВХранилище = ПоместитьРасшифровкуПлатежаВХранилище(Объект.КредиторскаяЗадолженность);
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма, Истина);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ОбъектСсылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("АдресПлатежейВХранилище", АдресПлатежейВХранилище);
ПараметрыОткрытия.Вставить("Организация", ПараметрыЗадолженности.Организация.Значение);
ПараметрыОткрытия.Вставить("УчитыватьФилиалы", Истина);
ПараметрыОткрытия.Вставить("Контрагент", ПараметрыЗадолженности.Контрагент.Значение);
ПараметрыОткрытия.Вставить("ЗаполнятьНДСВРасшифровке", Ложь);
Если Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Бартер")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный")
И Объект.ДебиторскаяЗадолженность.Количество() > 0
И ЗначениеЗаполнено(Объект.ДебиторскаяЗадолженность[0].ОбъектРасчетов) Тогда
ПараметрыОткрытия.Вставить("ВалютаДокумента", Объект.ДебиторскаяЗадолженность[0].ВалютаВзаиморасчетов);
КонецЕсли;
ПараметрыОткрытия.Вставить("СуммаДокумента", 0);
ПараметрыОткрытия.Вставить("ДатаДокумента", Объект.Дата);
ПараметрыОткрытия.Вставить("ТипРасчетов", ПараметрыЗадолженности.ТипРасчетов);
ПараметрыОткрытия.Вставить("ИдентификаторПлатежа", "");
ПараметрыОткрытия.Вставить("ПартнерПрочиеОтношения", Ложь);
ПараметрыОткрытия.Вставить("ПодборДебиторскойЗадолженности", Ложь);
ПараметрыОткрытия.Вставить("ПодборТолькоБезусловнойЗадолженности", Ложь);
Если Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Бартер")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями") Тогда
ПараметрыОткрытия.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
ПараметрыОткрытия.Вставить("ОднаВалютаВзаиморасчетов", Истина);
КонецЕсли;
ПараметрыОткрытия.Вставить("ДополнительныеОтборы", Новый Соответствие());
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Форма", ЭтаФорма);
ДополнительныеПараметры.Вставить("ОповещениеПослеЗавершения", Неопределено);
ОткрытьФорму(
"Справочник.ОбъектыРасчетов.Форма.ПодборОбъектовРасчетов",
ПараметрыОткрытия,
ЭтаФорма,,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПартнераВТабличнойЧасти(ОбъектТабличнаяЧасть, ПартнерСсылка, РасчетыМеждуОрганизациями)
Если НЕ ЗначениеЗаполнено(ПартнерСсылка) Тогда
Возврат;
КонецЕсли;
Для Каждого СтрокаТаблицы Из ОбъектТабличнаяЧасть Цикл
Если РасчетыМеждуОрганизациями Тогда
СтрокаТаблицы.Партнер = Неопределено;
ИначеЕсли СтрокаТаблицы.Партнер <> ПартнерСсылка Тогда
СтрокаТаблицы.Партнер = ПартнерСсылка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПартнераДебитора()
Если НЕ РасчетыМеждуОрганизациямиДебитор Тогда
Если ЗначениеЗаполнено(Объект.КонтрагентДебитор) Тогда
ПартнерДебитор = ДенежныеСредстваСервер.ПолучитьПартнераПоКонтрагенту(Объект.КонтрагентДебитор);
Иначе
ПартнерДебитор = Справочники.Партнеры.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
Если ВыбранВидОперацииВРамкахОдногоКонтрагента() Тогда
ЗаполнитьПартнераВТабличнойЧасти(Объект.ДебиторскаяЗадолженность, ПартнерДебитор, РасчетыМеждуОрганизациямиДебитор);
ЗаполнитьПартнераВТабличнойЧасти(Объект.КредиторскаяЗадолженность, ПартнерДебитор, РасчетыМеждуОрганизациямиКредитор);
Иначе
Если Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера Тогда
ЗаполнитьДанныеКонечногоКлиента(Истина, ПартнерДебитор);
Иначе
ЗаполнитьПартнераВТабличнойЧасти(Объект.ДебиторскаяЗадолженность, ПартнерДебитор, РасчетыМеждуОрганизациямиДебитор);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеКонечногоКлиента(ПерезаполнятьДанныеДокумента = Ложь, ПартнерСсылка = Неопределено)
ЭтоОплатаЧерезКомиссионера = ?(Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера, Истина, Ложь);
ЭтоВозвратОплатыЧерезКомиссионера = ?(Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера, Истина, Ложь);
Если (ЭтоОплатаЧерезКомиссионера Или ЭтоВозвратОплатыЧерезКомиссионера)
И Объект.КредиторскаяЗадолженность.Количество() = 1 И Объект.ДебиторскаяЗадолженность.Количество() = 1 Тогда
Если ЭтоОплатаЧерезКомиссионера Тогда
ТекущаяСтрокаКлиент = Объект.ДебиторскаяЗадолженность[0];
ТекущаяСтрокаКомиссионер = Объект.КредиторскаяЗадолженность[0];
ИмяРеквизитаКонтрагентаКлиента = "КонтрагентДебитор";
ИмяРеквизитаКонтрагентаКомиссионера = "КонтрагентКредитор";
ВидЗадолженностиКонтрагентаКлиента = "Дт";
Иначе
ТекущаяСтрокаКомиссионер = Объект.ДебиторскаяЗадолженность[0];
ТекущаяСтрокаКлиент = Объект.КредиторскаяЗадолженность[0];
ИмяРеквизитаКонтрагентаКлиента = "КонтрагентКредитор";
ИмяРеквизитаКонтрагентаКомиссионера = "КонтрагентДебитор";
ВидЗадолженностиКонтрагентаКлиента = "Кт";
КонецЕсли;
Если Не ПартнерСсылка = Неопределено И ТекущаяСтрокаКомиссионер.Партнер <> ПартнерСсылка Тогда
ТекущаяСтрокаКомиссионер.Партнер = ПартнерСсылка;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрокаКомиссионер.ОбъектРасчетов) Тогда
ДанныеДоговораКомиссионера = ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ТекущаяСтрокаКомиссионер.ОбъектРасчетов);
ДоговорКомиссионера = ДанныеДоговораКомиссионера.Договор;
Иначе
ДанныеДоговораКомиссионера = Неопределено;
ДоговорКомиссионера = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрокаКлиент.ОбъектРасчетов) Тогда
ДанныеДоговораКлиента = ПолучитьДанныеПоДоговоруИзОбъектаРасчетов(ТекущаяСтрокаКлиент.ОбъектРасчетов);
ДоговорКлиента = ДанныеДоговораКлиента.Договор;
Иначе
ДанныеДоговораКлиента = Неопределено;
ДоговорКлиента = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(ДоговорКлиента) Тогда
ПартнерКомиссионнойПродажи = ДоговорКлиента.Партнер;
КлиентКомиссионнойПродажи = ДоговорКлиента.Контрагент;
КонецЕсли;
Если ПерезаполнятьДанныеДокумента
И ЗначениеЗаполнено(ДанныеДоговораКомиссионера) Тогда
Если ТекущаяСтрокаКомиссионер.Партнер <> ДоговорКомиссионера.Партнер
Или Объект[ИмяРеквизитаКонтрагентаКомиссионера] <> ДоговорКомиссионера.Контрагент Тогда
ТекущаяСтрокаКомиссионер.ОбъектРасчетов = Неопределено;
Если ЭтоОплатаЧерезКомиссионера Тогда
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
Иначе
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
КонецЕсли;
КонецЕсли;
Если ДанныеДоговораКомиссионера.ВестиРасчетыЧерезКонечныхПокупателей Тогда
НовыйПартнерКомиссионнойПродажи = ПартнерКомиссионнойПродажи;
НовыйКлиентКомиссионнойПродажи = КлиентКомиссионнойПродажи;
Иначе
НовыйПартнерКомиссионнойПродажи = ТекущаяСтрокаКомиссионер.Партнер;
НовыйКлиентКомиссионнойПродажи = Объект[ИмяРеквизитаКонтрагентаКомиссионера];
КонецЕсли;
Если ТекущаяСтрокаКлиент.Партнер <> НовыйПартнерКомиссионнойПродажи
Или Объект[ИмяРеквизитаКонтрагентаКлиента] <> НовыйКлиентКомиссионнойПродажи Тогда
ТекущаяСтрокаКлиент.Партнер = НовыйПартнерКомиссионнойПродажи;
Объект[ИмяРеквизитаКонтрагентаКлиента] = НовыйКлиентКомиссионнойПродажи;
ОбновитьСлужебныеРеквизитыКонтрагента(ВидЗадолженностиКонтрагентаКлиента);
ТекущаяСтрокаКлиент.ОбъектРасчетов = Неопределено;
Если ЭтоОплатаЧерезКомиссионера Тогда
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
Иначе
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
КонецЕсли;
КонецЕсли
КонецЕсли;
Если ПерезаполнятьДанныеДокумента
И ЗначениеЗаполнено(ДоговорКлиента) Тогда
Если ЗначениеЗаполнено(ДоговорКомиссионера)
И ДоговорКлиента.ДоговорСКомиссионером <> ДоговорКомиссионера Тогда
ТекущаяСтрокаКлиент.ОбъектРасчетов = Неопределено;
Если ЭтоОплатаЧерезКомиссионера Тогда
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
Иначе
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
КонецЕсли;
ИначеЕсли ДоговорКлиента.Контрагент <> КлиентКомиссионнойПродажи
Или ДоговорКлиента.Партнер <> ПартнерКомиссионнойПродажи Тогда
ТекущаяСтрокаКлиент.ОбъектРасчетов = Неопределено;
Если ЭтоОплатаЧерезКомиссионера Тогда
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
Иначе
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПартнераКредитора(ОчиститьТЧ = Ложь)
Если Не РасчетыМеждуОрганизациямиКредитор Тогда
Если ЗначениеЗаполнено(Объект.КонтрагентКредитор) Тогда
ПартнерКредитор = ДенежныеСредстваСервер.ПолучитьПартнераПоКонтрагенту(Объект.КонтрагентКредитор);
Иначе
ПартнерКредитор = Справочники.Партнеры.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
Если Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера Тогда
ЗаполнитьДанныеКонечногоКлиента(Истина, ПартнерКредитор);
Иначе
ЗаполнитьПартнераВТабличнойЧасти(Объект.КредиторскаяЗадолженность, ПартнерКредитор, РасчетыМеждуОрганизациямиКредитор);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПриИзмененииРеквизитов
&НаКлиенте
Процедура ОбъектРасчетовРасчетовПриИзменении(ИмяТаблицы)
Если Объект[ИмяТаблицы].Количество() = 1
И НЕ ЗначениеЗаполнено(Объект[ИмяТаблицы][0].ОбъектРасчетов) Тогда
Объект[ИмяТаблицы][0].ВалютаВзаиморасчетов = Неопределено;
Объект[ИмяТаблицы][0].Организация = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовНачалоВыбора(Вид, Элемент, ДанныеВыбора, Зеркальный = Неопределено)
ЭтоДебет = Вид = "Дт";
ПараметрыЗадолженности = СтруктураПараметровЗадолженности(ЭтаФорма, НЕ ЭтоДебет);
ТипКлиента = ?(ЭтоДебет, РасчетыСКлиентамиДебитор, РасчетыСКлиентамиКредитор);
ЗначенияОтбора = Новый Структура;
ЗначенияОтбора.Вставить("ТипРасчетов", ?(ТипКлиента,
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"),
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком")));
Если НЕ ЗначениеЗаполнено(Зеркальный) Тогда
ЗначенияОтбора.Вставить("Организация", ПараметрыЗадолженности.Организация.Значение);
ЗначенияОтбора.Вставить("Контрагент", ПараметрыЗадолженности.Контрагент.Значение);
Иначе
ЗначенияОтбора.Вставить("Организация", ПараметрыЗадолженности.Контрагент.Значение);
ЗначенияОтбора.Вставить("Контрагент", ПараметрыЗадолженности.Организация.Значение);
КонецЕсли;
ЗначенияОтбора.Вставить("ПлатежиПо275ФЗ" , Ложь);
ОбъектРасчетов = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
Если ТипЗнч(ЗначенияОтбора.Контрагент) = Тип("СправочникСсылка.Организации") Тогда
ЗначенияОтбора.Вставить("Партнер", ПредопределенноеЗначение("Справочник.Партнеры.НашеПредприятие"));
ИначеЕсли ЭтоДебет Тогда
Если Элементы.ДебиторскаяЗадолженность.ТекущиеДанные <> Неопределено Тогда
Если НЕ ЗначениеЗаполнено(Зеркальный) Тогда
ОбъектРасчетов = Элементы.ДебиторскаяЗадолженность.ТекущиеДанные.ОбъектРасчетов;
Иначе
ОбъектРасчетов = Элементы.ДебиторскаяЗадолженность.ТекущиеДанные.ОбъектРасчетовЗеркальный;
КонецЕсли;
ИначеЕсли Объект.ДебиторскаяЗадолженность.Количество() > 0 Тогда
Если НЕ ЗначениеЗаполнено(Зеркальный) Тогда
ОбъектРасчетов = Объект.ДебиторскаяЗадолженность[0].ОбъектРасчетов;
Иначе
ОбъектРасчетов = Объект.ДебиторскаяЗадолженность[0].ОбъектРасчетовЗеркальный;
КонецЕсли;
КонецЕсли;
Иначе
Если Элементы.КредиторскаяЗадолженность.ТекущиеДанные <> Неопределено Тогда
Если НЕ ЗначениеЗаполнено(Зеркальный) Тогда
ОбъектРасчетов = Элементы.КредиторскаяЗадолженность.ТекущиеДанные.ОбъектРасчетов;
Иначе
ОбъектРасчетов = Элементы.КредиторскаяЗадолженность.ТекущиеДанные.ОбъектРасчетовЗеркальный;
КонецЕсли;
ИначеЕсли Объект.КредиторскаяЗадолженность.Количество() > 0 Тогда
Если НЕ ЗначениеЗаполнено(Зеркальный) Тогда
ОбъектРасчетов = Объект.КредиторскаяЗадолженность[0].ОбъектРасчетов;
Иначе
ОбъектРасчетов = Объект.КредиторскаяЗадолженность[0].ОбъектРасчетовЗеркальный;
КонецЕсли;
КонецЕсли;
КонецЕсли;
НастройкиВыбора = Новый Структура;
НастройкиВыбора.Вставить("Сумма", 0);
НастройкиВыбора.Вставить("ПодборДебиторскойЗадолженности", ЭтоДебет);
НастройкиВыбора.Вставить("ТекущаяСтрока", ОбъектРасчетов);
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера") Тогда
НастройкиВыбора.Вставить("ВыбратьОбъектыРасчетовПоКомиссии", Новый Структура("ВыбратьОбъектыРасчетовСКонечнымКлиентом", Ложь));
КонецЕсли;
ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, НастройкиВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектРасчетовОбработкаВыбора(Вид, ВыбранноеЗначение)
ТекущиеДанные = ТекущаяСтрокаЗадолженности(Вид);
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера")
ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера") Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ВыбранноеЗначение, "ОбъектРасчетов, ВалютаВзаиморасчетов, СуммаВзаиморасчетов, Организация");
ЗаполнитьДанныеКонечногоКлиента(Истина);
Иначе
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ВыбранноеЗначение,
"ОбъектРасчетов, Партнер, ВалютаВзаиморасчетов, Организация");
Если ВыбранноеЗначение.СуммаВзаиморасчетов <> 0 Тогда
ТекущиеДанные.СуммаВзаиморасчетов = ВыбранноеЗначение.СуммаВзаиморасчетов;
КонецЕсли;
КонецЕсли;
ОрганизацияШапки = ТекущиеДанные.Организация = Объект.Организация;
Модифицированность = Истина;
ТекущиеДанные.СуммаРегл = 0;
ТекущиеДанные.СуммаУпр = 0;
Если Вид = "Дт" Тогда
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
Элементы.ДебиторскаяЗадолженностьБезРазбиенияОрганизация.Видимость = НЕ ОрганизацияШапки;
Иначе
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
Элементы.КредиторскаяЗадолженностьБезРазбиенияОрганизация.Видимость = НЕ ОрганизацияШапки;
КонецЕсли;
УстановитьВалютуВзаиморасчетов(ВыбранноеЗначение.ВалютаВзаиморасчетов);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбъектРасчетовОбработкаВыбораСервер(ВидЗадолженности)
ЭтоКредит = ВидЗадолженности = "Кт";
ЗаполнитьСуммыУпрРегл(СтруктураПараметровЗадолженности(ЭтаФорма, ЭтоКредит), ЭтоКредит);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСуммыУпрРеглВызовСервера(ТекущиеДанные)
Если ТекущиеДанные.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета Тогда
ТекущиеДанные.СуммаРегл = ТекущиеДанные.СуммаВзаиморасчетов;
ИначеЕсли ТекущиеДанные.СуммаРегл = 0 И ЗначениеЗаполнено(ТекущиеДанные.ВалютаВзаиморасчетов) Тогда
ТекущиеДанные.СуммаРегл = ПересчитатьВСуммуРегл(ТекущиеДанные.СуммаВзаиморасчетов,
ТекущиеДанные.ВалютаВзаиморасчетов, ТекущиеДанные.ОбъектРасчетов);
КонецЕсли;
Если ТекущиеДанные.ВалютаВзаиморасчетов = ВалютаУправленческогоУчета Тогда
ТекущиеДанные.СуммаУпр = ТекущиеДанные.СуммаВзаиморасчетов;
ИначеЕсли ТекущиеДанные.СуммаУпр = 0 И ЗначениеЗаполнено(ТекущиеДанные.ВалютаВзаиморасчетов) Тогда
ТекущиеДанные.СуммаУпр = ПересчитатьВСуммуУпр(ТекущиеДанные.СуммаВзаиморасчетов,
ТекущиеДанные.ВалютаВзаиморасчетов, ТекущиеДанные.ОбъектРасчетов);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ЗаполнитьСписокОрганизаций();
УстановитьВидимостьФилиалов();
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияКредиторПриИзменении(Элемент)
НужноОчищатьТЧ(
Новый ОписаниеОповещения("ОрганизацияКредиторПриИзмененииНужноОчищатьТЧЗавершение", ЭтотОбъект),
ЕстьСтроки("КредиторскаяЗадолженность"));
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияКредиторПриИзмененииНужноОчищатьТЧЗавершение(ОчиститьТЧ, ДополнительныеПараметры) Экспорт
Если ОчиститьТЧ = КодВозвратаДиалога.Да Тогда
ОрганизацияКредиторПриИзмененииНаСервере();
ПредыдущиеЗначения.ОрганизацияКредитор = Объект.ОрганизацияКредитор;
Иначе
Объект.ОрганизацияКредитор = ПредыдущиеЗначения.ОрганизацияКредитор;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОрганизацияКредиторПриИзмененииНаСервере()
Объект.ОбъектРасчетовИнтеркампани = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
Объект.ОбъектРасчетовИнтеркампаниЗеркальный = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ВидОперацииПриИзмененииСервер()
Объект.СуммаДокумента = 0;
Объект.СуммаРегл = 0;
Объект.СуммаУпр = 0;
Если НЕ ЗначениеЗаполнено(Объект.ОбъектРасчетовИнтеркампани)
И НЕ ЗначениеЗаполнено(Объект.ОбъектРасчетовДебиторКредитор) Тогда
ВалютаВзаиморасчетов = Неопределено;
КонецЕсли;
Если Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Произвольный Тогда
ВалютаВзаиморасчетов = Неопределено;
Иначе
Если ВыбранВидОперацииСКлиентом() Тогда
ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.Клиент;
ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.Клиент;
Если ВыбранВидОперацииМеждуДвумяОрганизациями(Объект.ВидОперации) Тогда
ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент;
ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент;
КонецЕсли;
Если (Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом) Тогда
Если Объект.КонтрагентКредитор <> Справочники.Контрагенты.РозничныйПокупатель Тогда
Объект.КонтрагентКредитор = Справочники.Контрагенты.РозничныйПокупатель;
ОбновитьСлужебныеРеквизитыКонтрагента("Кт");
КонецЕсли;
Объект.КредиторскаяЗадолженность.Очистить();
КонецЕсли;
ИначеЕсли ВыбранВидОперацииСПоставщиком() Тогда
ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.Поставщик;
ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.Поставщик;
Если ВыбранВидОперацииМеждуДвумяОрганизациями(Объект.ВидОперации) Тогда
ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик;
ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик;
КонецЕсли;
Иначе
ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.Клиент;
ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.Поставщик;
Если ВыбранВидОперацииМеждуДвумяОрганизациями(Объект.ВидОперации) Тогда
ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент;
ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик;
КонецЕсли;
КонецЕсли;
Если Объект.ТипДебитора <> ТипДебитора Тогда
Объект.ТипДебитора = ТипДебитора;
УстановитьТипДебитора();
КонецЕсли;
Если Объект.ТипКредитора <> ТипКредитора Тогда
Объект.ТипКредитора = ТипКредитора;
УстановитьТипКредитора();
КонецЕсли;
КонецЕсли;
Если ВыбранВидОперацииМеждуКонтрагентами(Объект.ВидОперации)
И Объект.ВидОперации <> Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Произвольный
И Объект.ВидОперации <> Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом Тогда
Объект.КонтрагентКредитор = Справочники.Контрагенты.ПустаяСсылка();
Если Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуКонтрагентами Тогда
ОбновитьСлужебныеРеквизитыКонтрагента("Кт");
Для Каждого Строка Из Объект.КредиторскаяЗадолженность Цикл
Строка.Партнер = Неопределено;
КонецЦикла;
ИначеЕсли Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуКонтрагентами Тогда
ОбновитьСлужебныеРеквизитыКонтрагента("Дт");
Для Каждого Строка Из Объект.ДебиторскаяЗадолженность Цикл
Строка.Партнер = Неопределено;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если ВыбранВидОперацииВРамкахОдногоКонтрагента() Тогда
ПартнерДебитор = ДенежныеСредстваСервер.ПолучитьПартнераПоКонтрагенту(Объект.КонтрагентДебитор);
ЗаполнитьПартнераВТабличнойЧасти(Объект.КредиторскаяЗадолженность, ПартнерДебитор, РасчетыМеждуОрганизациямиКредитор);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОрганизацияКредитор) И НЕ ВыбранВидОперацииМеждуОрганизациями(Объект.ВидОперации) Тогда
Объект.ОрганизацияКредитор = Справочники.Организации.ПустаяСсылка();
КонецЕсли;
Если НЕ ВыбранВидОперацииМеждуОрганизациями(Объект.ВидОперации) Тогда
Объект.ОбъектРасчетовИнтеркампани = Справочники.ОбъектыРасчетов.ПустаяСсылка();
КонецЕсли;
Если Объект.ТипКредитора <> Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент
И Объект.ТипКредитора <> Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик Тогда
Объект.ОбъектРасчетовДебиторКредитор = Справочники.ОбъектыРасчетов.ПустаяСсылка();
КонецЕсли;
Объект.ДебиторскаяЗадолженность.Очистить();
Объект.КредиторскаяЗадолженность.Очистить();
ИнициализироватьЗадолженность("Дт");
ИнициализироватьЗадолженность("Кт");
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ЗаполнитьСписокОрганизаций();
ПереключитьСтраницы = Истина;
УстановитьСвойстваЭлементовФормыПоВидуОперации(ПереключитьСтраницы);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ТипДебитораПриИзмененииНаСервере()
УстановитьВидимостьОбъектаРасчетовДтКт();
УстановитьТипДебитора();
ЗаполнитьПартнераДебитора();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ТипКредитораПриИзмененииНаСервере()
УстановитьВидимостьОбъектаРасчетовДтКт();
УстановитьТипКредитора();
ЗаполнитьПартнераКредитора();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура КонтрагентДебиторПриИзмененииНаСервере()
ОбновитьСлужебныеРеквизитыКонтрагента("Дт");
ЗаполнитьПартнераДебитора();
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
УстановитьВидимостьОбъектаРасчетовДтКт();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура КонтрагентКредиторПриИзмененииНаСервере()
ОбновитьСлужебныеРеквизитыКонтрагента("Кт");
ЗаполнитьПартнераКредитора();
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
УстановитьВидимостьОбъектаРасчетовДтКт();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ДебиторскаяЗадолженностьБезРазбиенияОбъектРасчетовПриИзмененииНаСервере()
УстановитьДоступностьЭлементовДебиторскаяЗадолженностьБезРазбиения();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура КредиторскаяЗадолженностьБезРазбиенияОбъектРасчетовПриИзмененииНаСервере()
УстановитьДоступностьЭлементовКредиторскаяЗадолженностьБезРазбиения();
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ФискальнаяОперация
&НаКлиенте
Процедура ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Если НавигационнаяСсылка = "КонтрагентПоставщикПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
ИмяКомандыПробитияЧека = "КонтрагентПоставщик";
ИмяКомандыПробитияЧекаПриИзмененииНаСервере();
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.РасходДенежныхСредств");
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылка = "КонтрагентПоставщикОткрытьЗаписьФискальнойОперации" Тогда
СтандартнаяОбработка = Ложь;
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.РасходДенежныхСредств");
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка, , ТипРасчета);
ИначеЕсли НавигационнаяСсылка = "КонтрагентДебиторПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
ИмяКомандыПробитияЧека = "КонтрагентДебитор";
ИмяКомандыПробитияЧекаПриИзмененииНаСервере();
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств");
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылка = "КонтрагентДебиторОткрытьЗаписьФискальнойОперации" Тогда
СтандартнаяОбработка = Ложь;
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств");
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка, , ТипРасчета);
ИначеЕсли НавигационнаяСсылка = "КонтрагентКредиторПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
ИмяКомандыПробитияЧека = "КонтрагентКредитор";
ИмяКомандыПробитияЧекаПриИзмененииНаСервере();
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратДенежныхСредств");
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылка = "КонтрагентКредиторОткрытьЗаписьФискальнойОперации" Тогда
СтандартнаяОбработка = Ложь;
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратДенежныхСредств");
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка, , ТипРасчета);
ИначеЕсли НавигационнаяСсылка = "КонтрагентПодарочныйСертификатПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
ИмяКомандыПробитияЧека = "КонтрагентПодарочныйСертификат";
ИмяКомандыПробитияЧекаПриИзмененииНаСервере();
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств");
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылка = "КонтрагентПодарочныйСертификатОткрытьЗаписьФискальнойОперации" Тогда
СтандартнаяОбработка = Ложь;
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств");
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка, , ТипРасчета);
ИначеЕсли НавигационнаяСсылка = "ОрганизацияПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
ИмяКомандыПробитияЧека = "ОрганизацияДебитор";
ИмяКомандыПробитияЧекаПриИзмененииНаСервере();
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств");
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылка = "ОрганизацияОткрытьЗаписьФискальнойОперации" Тогда
СтандартнаяОбработка = Ложь;
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств");
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка, , ТипРасчета);
ИначеЕсли НавигационнаяСсылка = "ОрганизацияКредиторПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
ИмяКомандыПробитияЧека = "ОрганизацияКредитор";
ИмяКомандыПробитияЧекаПриИзмененииНаСервере();
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратДенежныхСредств");
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылка = "ОрганизацияКредиторОткрытьЗаписьФискальнойОперации" Тогда
СтандартнаяОбработка = Ложь;
ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратДенежныхСредств");
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка, , ТипРасчета);
ИначеЕсли НавигационнаяСсылка = "НастроитьОборудование" Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму("Обработка.ПредпросмотрЧека.Форма.ОшибкаПодключенияККТ");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИмяКомандыПробитияЧекаПриИзмененииНаСервере()
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ФискальнаяОперацияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ФискальнаяОперацияЗавершениеНаСервере();
КонецПроцедуры
&НаСервере
Процедура ФискальнаяОперацияЗавершениеНаСервере()
ФормированиеФискальныхЧековСервер.ОбновитьГиперссылкуПробитияФискальногоЧека(Объект.Ссылка, ЭтотОбъект, ТекстДокументыНаОснованииПодвал);
КонецПроцедуры
#Область ФискальнаяОперацияЛокализация
&НаСервере
Процедура НастроитьВидимостьЛокализуемыхЭлементов()
Элементы.ГруппаПодвал.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьПодобратьПодарочныйСертификат.Видимость = Ложь;
Элементы.КредиторскаяЗадолженностьПодборПоОстаткамКредиторскуюЗадолженность.Видимость = Истина;
Если ВзаимозачетЗадолженностиЛокализация.РазрешеноПробитиеФискальныхЧековПоДокументу(ЭтаФорма) Тогда
Элементы.ГруппаПодвал.Видимость = Истина;
КонецЕсли;
Если НоваяАрхитектураВзаиморасчетов
И ПолучитьФункциональнуюОпцию("ИспользоватьПодарочныеСертификаты")
И Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом Тогда
Элементы.КредиторскаяЗадолженностьПодобратьПодарочныйСертификат.Видимость = Истина;
Элементы.КредиторскаяЗадолженностьПодборПоОстаткамКредиторскуюЗадолженность.Видимость = Ложь;
Иначе
Элементы.КредиторскаяЗадолженностьПодобратьПодарочныйСертификат.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьНесколькоОрганизаций = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ВалютаУправленческогоУчета = Константы.ВалютаУправленческогоУчета.Получить();
ТипСсылкаКонтрагенты = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");
ТипСсылкаОрганизации = Новый ОписаниеТипов("СправочникСсылка.Организации");
ЗаполнитьСписокОрганизаций();
УстановитьТипДебитора();
УстановитьТипКредитора();
Элементы.ГруппаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
ИнициализироватьЗадолженность("Дт");
ИнициализироватьЗадолженность("Кт");
ОбновитьСлужебныеРеквизитыКонтрагента("Дт");
ОбновитьСлужебныеРеквизитыКонтрагента("Кт");
ОбновитьСлужебныеРеквизитыТабличнойЧасти("Дт");
ОбновитьСлужебныеРеквизитыТабличнойЧасти("Кт");
ЗаполнитьДанныеКонечногоКлиента();
ПереключитьСтраницы = Истина;
УстановитьСвойстваЭлементовФормыПоВидуОперации(ПереключитьСтраницы);
ОграничитьВыборВидаОперации();
КонецПроцедуры
&НаСервере
Функция ПоместитьРасшифровкуПлатежаВХранилище(Знач РасшифровкаПлатежа)
ТЗ = РасшифровкаПлатежа.Выгрузить();
ТЗ.Колонки.Удалить("Сумма");
ТЗ.Колонки.СуммаВзаиморасчетов.Имя = "Сумма";
АдресПлатежейВХранилище = ПоместитьВоВременноеХранилище(
ТЗ,
УникальныйИдентификатор);
Возврат АдресПлатежейВХранилище;
КонецФункции
&НаСервере
Процедура ПолучитьДебиторскуюЗадолженностиИзХранилища(АдресПлатежейВХранилище)
ДебиторскаяЗадолженность = ПолучитьИзВременногоХранилища(АдресПлатежейВХранилище);
ДебиторскаяЗадолженность.Свернуть("ТипРасчетов, Партнер, ОбъектРасчетов, ВалютаВзаиморасчетов, Организация","Сумма, НашДолг, ДолгПартнера");
ДебиторскаяЗадолженность.Колонки.Добавить("СуммаВзаиморасчетов");
Для Каждого СтрокаЗадолженности Из ДебиторскаяЗадолженность Цикл
СтрокаЗадолженности.СуммаВзаиморасчетов = СтрокаЗадолженности.Сумма;
КонецЦикла;
Объект.ДебиторскаяЗадолженность.Загрузить(ДебиторскаяЗадолженность);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура ПолучитьКредиторскуюЗадолженностиИзХранилища(АдресПлатежейВХранилище)
КредиторскаяЗадолженность = ПолучитьИзВременногоХранилища(АдресПлатежейВХранилище);
КредиторскаяЗадолженность.Свернуть("ТипРасчетов, Партнер, ОбъектРасчетов, ВалютаВзаиморасчетов, Организация","Сумма, НашДолг, ДолгПартнера");
КредиторскаяЗадолженность.Колонки.Добавить("СуммаВзаиморасчетов");
Для Каждого СтрокаЗадолженности Из КредиторскаяЗадолженность Цикл
СтрокаЗадолженности.СуммаВзаиморасчетов = СтрокаЗадолженности.Сумма;
КонецЦикла;
Объект.КредиторскаяЗадолженность.Загрузить(КредиторскаяЗадолженность);
ЗаблокироватьОбъектыРасчетов();
КонецПроцедуры
&НаСервере
Процедура УстановитьТипДебитора()
РасчетыМеждуОрганизациямиДебитор =
Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент
ИЛИ Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик;
РасчетыСКлиентамиДебитор =
Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.Клиент
ИЛИ Объект.ТипДебитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент;
ОграничениеТипа = ?(РасчетыМеждуОрганизациямиДебитор, ТипСсылкаОрганизации, ТипСсылкаКонтрагенты);
Если Элементы.КонтрагентДебитор.ОграничениеТипа <> ОграничениеТипа Тогда
Элементы.КонтрагентДебитор.ОграничениеТипа = ОграничениеТипа;
Элементы.КлиентКомиссионнойПродажи.ОграничениеТипа = ОграничениеТипа;
КонецЕсли;
Элементы.ДебиторскаяЗадолженностьПартнер.Видимость = НЕ РасчетыМеждуОрганизациямиДебитор;
Элементы.ДебиторскаяЗадолженностьБезРазбиенияПартнер.Видимость = Не РасчетыМеждуОрганизациямиДебитор;
Элементы.КонтрагентДебитор.РежимВыбораИзСписка = РасчетыМеждуОрганизациямиДебитор;
Если РасчетыМеждуОрганизациямиДебитор Тогда
МассивОрганизация = ОрганизацииДляВыбора.ВыгрузитьЗначения();
Элементы.КонтрагентДебитор.СписокВыбора.ЗагрузитьЗначения(МассивОрганизация);
Иначе
Элементы.КонтрагентДебитор.СписокВыбора.Очистить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьТипКредитора()
РасчетыМеждуОрганизациямиКредитор =
Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент
Или Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияПоставщик;
РасчетыСКлиентамиКредитор =
Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.Клиент
Или Объект.ТипКредитора = Перечисления.ТипыУчастниковВзаимозачета.ОрганизацияКлиент;
ОграничениеТипа = ?(РасчетыМеждуОрганизациямиКредитор, ТипСсылкаОрганизации, ТипСсылкаКонтрагенты);
Если Элементы.КонтрагентКредитор.ОграничениеТипа <> ОграничениеТипа Тогда
Элементы.КонтрагентКредитор.ОграничениеТипа = ОграничениеТипа;
Элементы.Комиссионер.ОграничениеТипа = ОграничениеТипа;
Элементы.КлиентКомиссионнойПродажиВозврат.ОграничениеТипа = ОграничениеТипа;
Элементы.КомиссионерВозврата.ОграничениеТипа = ОграничениеТипа;
КонецЕсли;
Элементы.КредиторскаяЗадолженностьПартнер.Видимость = Не РасчетыМеждуОрганизациямиКредитор;
Элементы.КредиторскаяЗадолженностьБезРазбиенияПартнер.Видимость = Не РасчетыМеждуОрганизациямиКредитор;
Элементы.КонтрагентКредитор.РежимВыбораИзСписка = РасчетыМеждуОрганизациямиКредитор;
Если РасчетыМеждуОрганизациямиКредитор Тогда
МассивОрганизация = ОрганизацииДляВыбора.ВыгрузитьЗначения();
Элементы.КонтрагентКредитор.СписокВыбора.ЗагрузитьЗначения(МассивОрганизация);
Иначе
Элементы.КонтрагентКредитор.СписокВыбора.Очистить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РассчитатьСуммыВзаимозачетаСервер(ЗНАЧ СуммаВзаимозачета)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| *
|ПОМЕСТИТЬ ТаблицаДокумента
|ИЗ
| &ИсходнаяТаблицаДокумента КАК ИсходнаяТаблицаДокумента
|;
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| *,
| ТаблицаДокумента.ОбъектРасчетов.Дата КАК Дата,
| ТаблицаДокумента.ОбъектРасчетов.Номер КАК Номер
|ИЗ
| ТаблицаДокумента КАК ТаблицаДокумента
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Номер
|");
МассивТабличныйЧастей = Новый Массив;
МассивТабличныйЧастей.Добавить("ДебиторскаяЗадолженность");
МассивТабличныйЧастей.Добавить("КредиторскаяЗадолженность");
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
ИмяРесурса = "СуммаРегл";
Иначе
ИмяРесурса = "СуммаВзаиморасчетов";
КонецЕсли;
Для Каждого ТабличнаяЧасть Из МассивТабличныйЧастей Цикл
СуммаДокумента = СуммаВзаимозачета;
ТаблицаДокумента = Объект[ТабличнаяЧасть].Выгрузить(,);
Запрос.УстановитьПараметр("ИсходнаяТаблицаДокумента", ТаблицаДокумента);
Объект[ТабличнаяЧасть].Очистить();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сумма = Мин(Выборка[ИмяРесурса], СуммаДокумента);
Если Сумма > 0 Тогда
СтрокаТаблицы = Объект[ТабличнаяЧасть].Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
Если ВалютаУправленческогоУчета = ВалютаРегламентированногоУчета Тогда
СтрокаТаблицы.СуммаУпр = Сумма;
ИначеЕсли Сумма = СуммаДокумента И НЕ СтрокаТаблицы[ИмяРесурса] = 0 И НЕ СтрокаТаблицы.СуммаУпр = 0 Тогда
СтрокаТаблицы.СуммаУпр = Сумма / (СтрокаТаблицы[ИмяРесурса] / СтрокаТаблицы.СуммаУпр);
КонецЕсли;
Если Сумма = СуммаДокумента Тогда
ВзаиморасчетыСервер.СписатьСуммуПропорционально(
СтрокаТаблицы.СуммаВзаиморасчетов,
СтрокаТаблицы[ИмяРесурса] - Сумма,
СтрокаТаблицы[ИмяРесурса]);
КонецЕсли;
СтрокаТаблицы[ИмяРесурса] = Сумма;
СуммаДокумента = СуммаДокумента - СтрокаТаблицы[ИмяРесурса];
КонецЕсли;
КонецЦикла;
КонецЦикла;
СуммаВзаимозачетаУпрДт = Объект.ДебиторскаяЗадолженность.Итог("СуммаУпр");
СуммаВзаимозачетаУпрКт = Объект.КредиторскаяЗадолженность.Итог("СуммаУпр");
СуммаВзаимозачетаУпр = Мин(СуммаВзаимозачетаУпрДт,СуммаВзаимозачетаУпрКт);
Если СуммаВзаимозачетаУпрДт <> СуммаВзаимозачетаУпрКт Тогда
Для Каждого ТабличнаяЧасть Из МассивТабличныйЧастей Цикл
СуммаДокумента = СуммаВзаимозачетаУпр;
ТаблицаДокумента = Объект[ТабличнаяЧасть].Выгрузить(,);
Запрос.УстановитьПараметр("ИсходнаяТаблицаДокумента", ТаблицаДокумента);
Объект[ТабличнаяЧасть].Очистить();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СуммаУпр = Мин(Выборка.СуммаУпр, СуммаДокумента);
Если СуммаУпр > 0 Тогда
СтрокаТаблицы = Объект[ТабличнаяЧасть].Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
Если СтрокаТаблицы.ВалютаВзаиморасчетов <> ВалютаУправленческогоУчета Тогда
СтрокаТаблицы.СуммаУпр = СуммаУпр;
Иначе
СтрокаТаблицы.СуммаУпр = СтрокаТаблицы.СуммаВзаиморасчетов;
КонецЕсли;
СуммаДокумента = СуммаДокумента - СтрокаТаблицы.СуммаУпр;
Иначе
СтрокаТаблицы = Объект[ТабличнаяЧасть].Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
СтрокаТаблицы.СуммаУпр = 0;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Если ВыбранВидОперацииПроизвольныйИлиБартер() Тогда
ПрезапролнитьСуммыУпрРегл("СуммаРегл", Запрос, МассивТабличныйЧастей);
ПрезапролнитьСуммыУпрРегл("СуммаУпр", Запрос, МассивТабличныйЧастей);
Объект.СуммаУпр = Объект.ДебиторскаяЗадолженность.Итог("СуммаУпр");
Объект.СуммаРегл = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
Иначе
Объект.СуммаДокумента = СуммаВзаимозачета;
КонецЕсли;
Объект.СуммаУпр = СуммаВзаимозачетаУпр;
КонецПроцедуры
&НаСервере
Процедура ПрезапролнитьСуммыУпрРегл(ИмяРесурса,Запрос,МассивТабличныйЧастей)
СуммаВзаимозачетаВВалютеУчетаДт = Объект.ДебиторскаяЗадолженность.Итог(ИмяРесурса);
СуммаВзаимозачетаВВалютеУчетаКт = Объект.КредиторскаяЗадолженность.Итог(ИмяРесурса);
СуммаВзаимозачетаВВалютеУчета = Мин(СуммаВзаимозачетаВВалютеУчетаДт,СуммаВзаимозачетаВВалютеУчетаКт);
Если СуммаВзаимозачетаВВалютеУчетаДт <> СуммаВзаимозачетаВВалютеУчетаКт Тогда
Для Каждого ТабличнаяЧасть Из МассивТабличныйЧастей Цикл
СуммаДокумента = СуммаВзаимозачетаВВалютеУчета;
ТаблицаДокумента = Объект[ТабличнаяЧасть].Выгрузить(,);
Запрос.УстановитьПараметр("ИсходнаяТаблицаДокумента", ТаблицаДокумента);
Объект[ТабличнаяЧасть].Очистить();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СуммаВВалютеУчета = Мин(Выборка[ИмяРесурса], СуммаДокумента);
Если СуммаВВалютеУчета > 0 Тогда
СтрокаТаблицы = Объект[ТабличнаяЧасть].Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
Если СтрокаТаблицы.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета Тогда
СтрокаТаблицы[ИмяРесурса] = СтрокаТаблицы.СуммаВзаиморасчетов;
Иначе
СтрокаТаблицы[ИмяРесурса] = СуммаВВалютеУчета;
КонецЕсли;
СуммаДокумента = СуммаДокумента - СтрокаТаблицы[ИмяРесурса];
Иначе
СтрокаТаблицы = Объект[ТабличнаяЧасть].Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
СтрокаТаблицы[ИмяРесурса] = 0;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСуммыВзаимозачета(Знач СуммаДокументаРегл = 0)
Дебиторская = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
Кредиторская = Объект.КредиторскаяЗадолженность.Итог("СуммаРегл");
Если СуммаДокументаРегл <> 0 Тогда
СуммаВзаимозачета = Мин(Дебиторская, Кредиторская, СуммаДокументаРегл);
Иначе
СуммаВзаимозачета = Мин(Дебиторская, Кредиторская);
КонецЕсли;
Если СуммаВзаимозачета = 0 Тогда
Объект.ДебиторскаяЗадолженность.Очистить();
Объект.КредиторскаяЗадолженность.Очистить();
ИнициализироватьЗадолженностьНаСервере();
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура("СуммаВзаимозачета", СуммаВзаимозачета);
Оповещение = Новый ОписаниеОповещения("РассчитатьСуммыВзаимозачетаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Если СуммаВзаимозачета < СуммаДокументаРегл Тогда
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Взаимозачет возможен на сумму %1 %2, скорректировать сумму?'"),
СуммаВзаимозачета,
ВалютаРегламентированногоУчета);
КодОтвета = Неопределено;
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ВыполнитьОбработкуОповещения(Оповещение, КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСуммыВзаимозачетаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
РассчитатьСуммыВзаимозачетаФрагмент(ДополнительныеПараметры.СуммаВзаимозачета);
Иначе
ИнициализироватьЗадолженностьНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСуммыВзаимозачетаФрагмент(Знач СуммаВзаимозачета)
РассчитатьСуммыВзаимозачетаСервер(СуммаВзаимозачета);
ИнициализироватьЗадолженностьНаСервере();
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Рассчитан взаимозачет на сумму %1'"),
СуммаВзаимозачета);
ПоказатьОповещениеПользователя(НСтр("ru = 'Рассчитан взаимозачет'"),, Текст, БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьЗадолженностьНаСервере()
ИнициализироватьЗадолженность("Дт");
ИнициализироватьЗадолженность("Кт");
УстановитьСвойстваЭлементовФормыПоВидуОперации();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораОбъектовРасчетов(Элемент, ЗначенияОтбора, ЕщеНастройкиВыбора = Неопределено)
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
Сумма = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
НастройкиВыбора = Новый Структура;
НастройкиВыбора.Вставить("ВыборОснованияПлатежа", Ложь);
НастройкиВыбора.Вставить("РедактируемыйДокумент", Объект.Ссылка);
НастройкиВыбора.Вставить("Валюта", ВалютаРегламентированногоУчета);
НастройкиВыбора.Вставить("Сумма", Сумма);
НастройкиВыбора.Вставить("УчитыватьФилиалы", Истина);
НастройкиВыбора.Вставить("Отбор", ЗначенияОтбора);
НастройкиВыбора.Вставить("ВернутьСтруктуру", Истина);
Если ЕщеНастройкиВыбора <> Неопределено Тогда
Для Каждого Настройка Из ЕщеНастройкиВыбора Цикл
НастройкиВыбора.Вставить(Настройка.Ключ, Настройка.Значение);
КонецЦикла;
КонецЕсли;
Если ЗначениеЗаполнено(ВалютаВзаиморасчетов)
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера")
И Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера") Тогда
НастройкиВыбора.Отбор.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
НастройкиВыбора.Удалить("Валюта");
КонецЕсли;
ОткрытьФорму("Справочник.ОбъектыРасчетов.ФормаВыбора", НастройкиВыбора, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура НужноОчищатьТЧ(ОписаниеОповещения, ЕстьСтроки)
Если ЕстьСтроки Тогда
ТекстВопроса = НСтр("ru = 'Суммы взаимозачета могут стать неактуальными.
|Очистить списки задолженностей?'");
ПоказатьВопрос(
ОписаниеОповещения,
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещения, КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокОрганизаций()
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| НЕ Организации.ПометкаУдаления
| И Организации.Ссылка <> &ЭтаОрганизация
| И Организации.ГоловнаяОрганизация <> &ЭтаОрганизация
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
| И (Организации.Предопределенный = &ИспользоватьУпрОрганизацию
| ИЛИ НЕ Организации.Предопределенный)
| И (Организации.Ссылка НЕ В (
| ВЫБРАТЬ
| Организации.ГоловнаяОрганизация КАК Ссылка
| ИЗ
| Справочник.Организации КАК Организации
| ГДЕ
| Организации.Ссылка = &ЭтаОрганизация)
| ИЛИ &ВидОперации НЕ В (ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Бартер),
| ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный)))
|");
Запрос.УстановитьПараметр("ЭтаОрганизация", Объект.Организация);
Запрос.УстановитьПараметр("ИспользоватьУпрОрганизацию", ПолучитьФункциональнуюОпцию("ИспользоватьУправленческуюОрганизацию"));
Запрос.УстановитьПараметр("ВидОперации", Объект.ВидОперации);
МассивОрганизаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ОрганизацииДляВыбора.ЗагрузитьЗначения(МассивОрганизаций);
Если ВыбранВидОперацииМеждуОрганизациями(Объект.ВидОперации) Тогда
Элементы.ОрганизацияКредитор.СписокВыбора.ЗагрузитьЗначения(МассивОрганизаций);
КонецЕсли;
Если РасчетыМеждуОрганизациямиДебитор Тогда
Элементы.КонтрагентДебитор.СписокВыбора.ЗагрузитьЗначения(МассивОрганизаций);
КонецЕсли;
Если РасчетыМеждуОрганизациямиКредитор Тогда
Элементы.КонтрагентКредитор.СписокВыбора.ЗагрузитьЗначения(МассивОрганизаций);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СтруктураПараметровЗадолженности(Форма, ЭтоКредиторскаяЗадолженность = Ложь)
Объект = Форма.Объект;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("УчитыватьФилиалы", Истина);
ОперацииИсключение = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями");
Если ЭтоКредиторскаяЗадолженность И ВыбранВидОперацииМеждуОрганизациями(Объект.ВидОперации) И НЕ ОперацииИсключение
ИЛИ (НЕ ЭтоКредиторскаяЗадолженность И ВыбранВидОперацииМеждуОрганизациями(Объект.ВидОперации) И ОперацииИсключение) Тогда
ИмяРеквизита = "ОрганизацияКредитор";
СтруктураПараметров.УчитыватьФилиалы = Ложь;
Иначе
ИмяРеквизита = "Организация";
КонецЕсли;
СтруктураЗначения = Новый Структура(
"ИмяРеквизита, Значение, Представление",
ИмяРеквизита,
Объект[ИмяРеквизита],
Форма.СтруктураПредставлений[ИмяРеквизита]);
СтруктураПараметров.Вставить("Организация", СтруктураЗначения);
Если ЭтоКредиторскаяЗадолженность И ВыбранВидОперацииМеждуКонтрагентами(Объект.ВидОперации) Тогда
ИмяРеквизита = "КонтрагентКредитор";
Иначе
ИмяРеквизита = "КонтрагентДебитор";
КонецЕсли;
СтруктураЗначения = Новый Структура(
"ИмяРеквизита, Значение, Представление",
ИмяРеквизита,
Объект[ИмяРеквизита],
Форма.СтруктураПредставлений[ИмяРеквизита]);
СтруктураПараметров.Вставить("Контрагент", СтруктураЗначения);
Если (Форма.РасчетыСКлиентамиДебитор И НЕ ЭтоКредиторскаяЗадолженность)
ИЛИ (Форма.РасчетыСКлиентамиКредитор И ЭтоКредиторскаяЗадолженность) Тогда
СтруктураПараметров.Вставить("ТипРасчетов",
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом"));
Иначе
СтруктураПараметров.Вставить("ТипРасчетов",
ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком"));
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции
&НаСервере
Функция ВыбранВидОперацииСПоставщиком()
Возврат Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуДвумяОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуДвумяОрганизациями;
КонецФункции
&НаСервере
Функция ВыбранВидОперацииСКлиентом()
Возврат Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуДвумяОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуДвумяОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера;
КонецФункции
&НаСервере
Функция ВыбранВидОперацииВРамкахОдногоКонтрагента()
Возврат Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Бартер
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями
КонецФункции
&НаСервере
Функция ВыбранВидОперацииПроизвольныйИлиБартер()
Возврат Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Произвольный
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.Бартер
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями;
КонецФункции
&НаСервере
Функция ВыбранВидОперацииПереносАванса()
Возврат Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуДвумяОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуДвумяОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом;
КонецФункции
&НаСервере
Функция ВыбранВидОперацииПереносДолга()
Возврат Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуДвумяОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуОрганизацияКонтрагент
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуДвумяОрганизациями;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ВыбранВидОперацииМеждуОрганизациями(ВидОперации)
Возврат ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуОрганизациями")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуОрганизациями")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуОрганизациями")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуОрганизациями");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ВыбранВидОперацииМеждуДвумяОрганизациями(ВидОперации)
Возврат ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуДвумяОрганизациями")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуДвумяОрганизациями")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуДвумяОрганизациями")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуДвумяОрганизациями")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.БартерМеждуОрганизациями");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ВыбранВидОперацииМеждуКонтрагентами(ВидОперации)
Возврат НЕ ЗначениеЗаполнено(ВидОперации)
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаКлиентаМеждуКонтрагентами")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОплатаПодарочнымСертификатом")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаКлиентаМеждуКонтрагентами")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносАвансаПоставщикуМеждуКонтрагентами")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ПереносДолгаПоставщикуМеждуКонтрагентами")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера")
ИЛИ ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеВозвратаОплатыЧерезКомиссионера");
КонецФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиДебитор = Неопределено, ПараметрыЗадолженностиКредитор = Неопределено)
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| АналитикаПоПартнерам.КлючАналитики КАК КлючАналитики
|ИЗ
| РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаПоПартнерам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКРаспределениюРасчетовСКлиентами КАК Задания
| ПО Задания.АналитикаУчетаПоПартнерам = АналитикаПоПартнерам.КлючАналитики
|ГДЕ
| (&ОтборКлиентДт
| ИЛИ
| &ОтборКлиентКт)
| И Задания.Месяц <= &ТекущийМесяц
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| АналитикаПоПартнерам.КлючАналитики КАК КлючАналитики
|ИЗ
| РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаПоПартнерам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаданияКРаспределениюРасчетовСПоставщиками КАК Задания
| ПО Задания.АналитикаУчетаПоПартнерам = АналитикаПоПартнерам.КлючАналитики
|ГДЕ
| (&ОтборПоставщикДт
| ИЛИ
| &ОтборПоставщикКт)
| И Задания.Месяц <= &ТекущийМесяц";
ОтборДт = ?(НЕ ЗначениеЗаполнено(ПараметрыЗадолженностиДебитор),"ЛОЖЬ","(АналитикаПоПартнерам.Организация В (&ОрганизацияДт)
| И АналитикаПоПартнерам.Контрагент = &КонтрагентДт
| И &ТипРасчетовДт = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом))");
ОтборКт = ?(НЕ ЗначениеЗаполнено(ПараметрыЗадолженностиКредитор),"ЛОЖЬ","(АналитикаПоПартнерам.Организация В (&ОрганизацияКт)
| И АналитикаПоПартнерам.Контрагент = &КонтрагентКт
| И &ТипРасчетовКт = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом))");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборКлиентДт", ОтборДт);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборКлиентКт", ОтборКт);
ОтборДт = СтрЗаменить(ОтборДт, ".РасчетыСКлиентом)", ".РасчетыСПоставщиком)");
ОтборКт = СтрЗаменить(ОтборКт, ".РасчетыСКлиентом)", ".РасчетыСПоставщиком)");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПоставщикДт", ОтборДт);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПоставщикКт", ОтборКт);
Если ЗначениеЗаполнено(ПараметрыЗадолженностиДебитор) Тогда
Запрос.УстановитьПараметр("ОрганизацияДт", ОрганизацииКРасчету(ПараметрыЗадолженностиДебитор));
Запрос.УстановитьПараметр("КонтрагентДт", ПараметрыЗадолженностиДебитор.Контрагент.Значение);
Запрос.УстановитьПараметр("ТипРасчетовДт", ПараметрыЗадолженностиДебитор.ТипРасчетов);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыЗадолженностиКредитор) Тогда
Запрос.УстановитьПараметр("ОрганизацияКт", ОрганизацииКРасчету(,ПараметрыЗадолженностиКредитор));
Запрос.УстановитьПараметр("КонтрагентКт", ПараметрыЗадолженностиКредитор.Контрагент.Значение);
Запрос.УстановитьПараметр("ТипРасчетовКт", ПараметрыЗадолженностиКредитор.ТипРасчетов);
КонецЕсли;
Запрос.УстановитьПараметр("ТекущийМесяц", НачалоМесяца(Объект.Дата));
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("КлючАналитики");
КонецФункции
&НаСервере
Процедура ЗаполнитьСуммыУпрРегл(ПараметрыСтруктура, ЭтоКредит)
Если ЭтоКредит Тогда
ТабличнаяЧасть = Объект.КредиторскаяЗадолженность;
Иначе
ТабличнаяЧасть = Объект.ДебиторскаяЗадолженность;
КонецЕсли;
СтруктураПоиска = Новый Структура("ОбъектРасчетов, Партнер");
МассивОбъектовРасчетов = Новый Массив;
Для Каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
Если МассивОбъектовРасчетов.Найти(СтрокаТЧ.ОбъектРасчетов) = Неопределено
И СтрокаТЧ.СуммаВзаиморасчетов <> 0 Тогда
МассивОбъектовРасчетов.Добавить(СтрокаТЧ.ОбъектРасчетов);
КонецЕсли;
КонецЦикла;
ОстаткиЗадолженности = ОстаткиЗадолженностиПоОбъектамРасчетов(ПараметрыСтруктура, МассивОбъектовРасчетов);
ОстаткиЗадолженности.Индексы.Добавить("ОбъектРасчетов, Партнер");
Для Каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
Если СтрокаТЧ.СуммаВзаиморасчетов <> 0 Тогда
СтруктураПоиска.ОбъектРасчетов = СтрокаТЧ.ОбъектРасчетов;
СтруктураПоиска.Партнер = СтрокаТЧ.Партнер;
СтрокиОстатков = ОстаткиЗадолженности.НайтиСтроки(СтруктураПоиска);
Если СтрокиОстатков.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Если СтрокиОстатков[0].СуммаВзаиморасчетов > 0 Тогда
СтрокаТЧ.СуммаУпр = СтрокиОстатков[0].СуммаУпр * (СтрокаТЧ.СуммаВзаиморасчетов / СтрокиОстатков[0].СуммаВзаиморасчетов);
СтрокаТЧ.СуммаРегл = СтрокиОстатков[0].СуммаРегл * (СтрокаТЧ.СуммаВзаиморасчетов / СтрокиОстатков[0].СуммаВзаиморасчетов);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Объект.СуммаРегл = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
Объект.СуммаУпр = Объект.ДебиторскаяЗадолженность.Итог("СуммаУпр");
КонецПроцедуры
&НаСервере
Функция ОстаткиЗадолженностиПоОбъектамРасчетов(ПараметрыАналитики, МассивОбъектовРасчетов)
ЗапросОрганизаций = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ГоловнаяОрганизация В (&Организация)
| И Организации.ДопускаютсяВзаиморасчетыЧерезГоловнуюОрганизацию");
Если ПараметрыАналитики.УчитыватьФилиалы Тогда
ЗапросОрганизаций.УстановитьПараметр("Организация", ПараметрыАналитики.Организация.Значение);
ДоступныеОрганизации = ЗапросОрганизаций.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ДоступныеОрганизации.Добавить(ПараметрыАналитики.Организация.Значение);
Организация = ДоступныеОрганизации;
Иначе
Организация = ПараметрыАналитики.Организация.Значение;
КонецЕсли;
ТекстВтАналитика = "
|ВЫБРАТЬ
| РегистрАналитикаУчетаПоПартнерам.КлючАналитики КАК АналитикаУчетаПоПартнерам,
| РегистрАналитикаУчетаПоПартнерам.Партнер КАК Партнер
|ПОМЕСТИТЬ ВтАналитика
|ИЗ
| РегистрСведений.АналитикаУчетаПоПартнерам КАК РегистрАналитикаУчетаПоПартнерам
|ГДЕ
| РегистрАналитикаУчетаПоПартнерам.Организация В (&Организация)
| И РегистрАналитикаУчетаПоПартнерам.Контрагент = &Контрагент
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаПоПартнерам
|;
|
|";
Если НЕ НоваяАрхитектураВзаиморасчетов Тогда
ТекстРасчетыСКлиентами = "
|ВЫБРАТЬ
| Аналитика.Партнер КАК Партнер,
| Остатки.ЗаказКлиента КАК ОбъектРасчетов,
| ВЫБОР
| КОГДА Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток < 0
| ТОГДА -(Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток)
| ИНАЧЕ Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток
| КОНЕЦ КАК СуммаВзаиморасчетов,
| ВЫБОР
| КОГДА Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток < 0
| ТОГДА -(Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток)
| ИНАЧЕ Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток
| КОНЕЦ КАК СуммаРегл,
| ВЫБОР
| КОГДА Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток < 0
| ТОГДА -(Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток)
| ИНАЧЕ Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток
| КОНЕЦ КАК СуммаУпр
|ИЗ РегистрНакопления.РасчетыСКлиентамиПоДокументам.Остатки(&Граница, ЗаказКлиента В (&МассивОбъектовРасчетов) И АналитикаУчетаПоПартнерам В (
| ВЫБРАТЬ Аналитика.АналитикаУчетаПоПартнерам
| ИЗ ВтАналитика КАК Аналитика)) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ ВтАналитика КАК Аналитика
| ПО Аналитика.АналитикаУчетаПоПартнерам = Остатки.АналитикаУчетаПоПартнерам
|";
ТекстРасчетыСПоставщками = "
|ВЫБРАТЬ
| Аналитика.Партнер КАК Партнер,
| Остатки.ЗаказПоставщику КАК ОбъектРасчетов,
| ВЫБОР
| КОГДА Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток < 0
| ТОГДА -(Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток)
| ИНАЧЕ Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток
| КОНЕЦ КАК СуммаВзаиморасчетов,
| ВЫБОР
| КОГДА Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток < 0
| ТОГДА -(Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток)
| ИНАЧЕ Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток
| КОНЕЦ КАК СуммаРегл,
| ВЫБОР
| КОГДА Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток < 0
| ТОГДА -(Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток)
| ИНАЧЕ Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток
| КОНЕЦ КАК СуммаУпр
|ИЗ РегистрНакопления.РасчетыСПоставщикамиПоДокументам.Остатки(&Граница, ЗаказПоставщику В (&МассивОбъектовРасчетов) И АналитикаУчетаПоПартнерам В (
| ВЫБРАТЬ Аналитика.АналитикаУчетаПоПартнерам
| ИЗ ВтАналитика КАК Аналитика)) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ ВтАналитика КАК Аналитика
| ПО Аналитика.АналитикаУчетаПоПартнерам = Остатки.АналитикаУчетаПоПартнерам
|";
Если Не ЗначениеЗаполнено(ПараметрыАналитики.ТипРасчетов) Тогда
ТекстЗапроса = ТекстВтАналитика + ТекстРасчетыСКлиентами + "
|
|ОБЪЕДИНИТЬ ВСЕ
|
|" + ТекстРасчетыСПоставщками;
ИначеЕсли ПараметрыАналитики.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом Тогда
ТекстЗапроса = ТекстВтАналитика + ТекстРасчетыСКлиентами;
Иначе
ТекстЗапроса = ТекстВтАналитика + ТекстРасчетыСПоставщками;
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
МоментВремени = КонецДня(Объект.Дата);
Граница = Новый Граница(МоментВремени, ВидГраницы.Включая);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Контрагент", ПараметрыАналитики.Контрагент.Значение);
Запрос.УстановитьПараметр("Граница", Граница);
Запрос.УстановитьПараметр("МассивОбъектовРасчетов", МассивОбъектовРасчетов);
Иначе
ТекстРасчетыСКлиентами = "
|ВЫБРАТЬ
| Аналитика.Партнер КАК Партнер,
| Остатки.ОбъектРасчетов КАК ОбъектРасчетов,
| Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток КАК СуммаВзаиморасчетов,
| Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток КАК СуммаРегл,
| Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток КАК СуммаУпр
|ИЗ РегистрНакопления.РасчетыСКлиентамиПоСрокам.Остатки(&Граница, ОбъектРасчетов В (&МассивОбъектовРасчетов) И АналитикаУчетаПоПартнерам В (
| ВЫБРАТЬ Аналитика.АналитикаУчетаПоПартнерам
| ИЗ ВтАналитика КАК Аналитика)) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ ВтАналитика КАК Аналитика
| ПО Аналитика.АналитикаУчетаПоПартнерам = Остатки.АналитикаУчетаПоПартнерам
|";
ТекстРасчетыСПоставщками = "
|ВЫБРАТЬ
| Аналитика.Партнер КАК Партнер,
| Остатки.ОбъектРасчетов КАК ОбъектРасчетов,
| Остатки.ДолгОстаток + Остатки.ПредоплатаОстаток КАК СуммаВзаиморасчетов,
| Остатки.ДолгРеглОстаток + Остатки.ПредоплатаРеглОстаток КАК СуммаРегл,
| Остатки.ДолгУпрОстаток + Остатки.ПредоплатаУпрОстаток КАК СуммаУпр
|ИЗ РегистрНакопления.РасчетыСПоставщикамиПоСрокам.Остатки(&Граница, ОбъектРасчетов В (&МассивОбъектовРасчетов) И АналитикаУчетаПоПартнерам В (
| ВЫБРАТЬ Аналитика.АналитикаУчетаПоПартнерам
| ИЗ ВтАналитика КАК Аналитика)) КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ ВтАналитика КАК Аналитика
| ПО Аналитика.АналитикаУчетаПоПартнерам = Остатки.АналитикаУчетаПоПартнерам
|";
Запрос = Новый Запрос;
МоментВремени = КонецДня(Объект.Дата);
Граница = Новый Граница(МоментВремени, ВидГраницы.Включая);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Контрагент", ПараметрыАналитики.Контрагент.Значение);
Запрос.УстановитьПараметр("Граница", Граница);
Запрос.УстановитьПараметр("МассивОбъектовРасчетов", МассивОбъектовРасчетов);
Если Не ЗначениеЗаполнено(ПараметрыАналитики.ТипРасчетов) Тогда
ТекстЗапроса = ТекстВтАналитика + ТекстРасчетыСКлиентами + "
|
|ОБЪЕДИНИТЬ ВСЕ
|
|" + ТекстРасчетыСПоставщками;
ИначеЕсли ПараметрыАналитики.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом Тогда
ТекстЗапроса = ТекстВтАналитика + ТекстРасчетыСКлиентами;
Иначе
ТекстЗапроса = ТекстВтАналитика + ТекстРасчетыСПоставщками;
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
&НаКлиенте
Процедура ПересчитатьСуммыРеглУпр(ОписаниеОповещения)
ТекстВопроса = НСтр("ru = 'Суммы регламентированного и управленческого учёта по строкам в табличной части не равны суммам документам, пересчитать суммы документа?'");
ДопПараметры = Новый Структура;
ДопПараметры.Вставить("Форма", ЭтаФорма);
ДопПараметры.Вставить("ОписаниеОповещения", ОписаниеОповещения);
ОписаниеОповещения = Новый ОписаниеОповещения("ПересчитатьСуммыДокументаПоРасшифровкеПлатежаЗавершение",ЭтотОбъект, ДопПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСуммыДокументаПоРасшифровкеПлатежаЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ОтветНаВопрос = КодВозвратаДиалога.Да Тогда
Объект.СуммаРегл = Объект.ДебиторскаяЗадолженность.Итог("СуммаРегл");
Объект.СуммаУпр = Объект.ДебиторскаяЗадолженность.Итог("СуммаУпр");
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОповещения, Истина);
Иначе
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОповещения, Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СостояниеФоновогоЗаданияВзаиморасчетов()
Отбор = Новый Структура();
Отбор.Вставить("Ключ", РаспределениеВзаиморасчетовВызовСервера.ИмяФоновогоЗаданияРасчетовСКлиентами()+Ключ);
ЗаданияРасчетовСКлиентами = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Отбор = Новый Структура();
Отбор.Вставить("Ключ", РаспределениеВзаиморасчетовВызовСервера.ИмяФоновогоЗаданияРасчетовСПоставщиками()+Ключ);
ЗаданияРасчетовСПоставщиками = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Если ЗаданияРасчетовСКлиентами.Количество() = 0 И ЗаданияРасчетовСПоставщиками.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
Если ЗаданияРасчетовСКлиентами.Количество() > 0 И ЗаданияРасчетовСКлиентами[0].Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
Возврат "Ошибка";
ИначеЕсли ЗаданияРасчетовСКлиентами.Количество() > 0 И ЗаданияРасчетовСКлиентами[0].Состояние = СостояниеФоновогоЗадания.Активно Тогда
КлиентЗавершено = Ложь;
Иначе
КлиентЗавершено = Истина;
КонецЕсли;
Если ЗаданияРасчетовСПоставщиками.Количество() > 0 И ЗаданияРасчетовСПоставщиками[0].Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
Возврат "Ошибка";
ИначеЕсли ЗаданияРасчетовСПоставщиками.Количество() > 0 И ЗаданияРасчетовСПоставщиками[0].Состояние = СостояниеФоновогоЗадания.Активно Тогда
ПоставщикЗавершено = Ложь;
Иначе
ПоставщикЗавершено = Истина;
КонецЕсли;
КонецЕсли;
Если НЕ КлиентЗавершено ИЛИ НЕ ПоставщикЗавершено Тогда
Возврат "Активно";
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ФоновоеЗаданиеПроверитьНаКлиенте()
Состояние = СостояниеФоновогоЗаданияВзаиморасчетов();
Если Состояние = Неопределено Тогда
Если ЗаполняемаяТЧ = "ДебиторскаяЗадолженность" Тогда
ПараметрыЗадолженностиДебитор = СтруктураПараметровЗадолженности(ЭтаФорма);
АналитикаКРасчету = ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиДебитор);
РаспределятьРасчетыСКлиентами =
ПараметрыЗадолженностиДебитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом");
РаспределятьРасчетыСПоставщиком =
ПараметрыЗадолженностиДебитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком");
ИначеЕсли ЗаполняемаяТЧ = "КредиторскаяЗадолженность" Тогда
ПараметрыЗадолженностиКредитор = СтруктураПараметровЗадолженности(ЭтаФорма, Истина);
АналитикаКРасчету = ЕстьЗаданияКРаспределению(,ПараметрыЗадолженностиКредитор);
РаспределятьРасчетыСКлиентами =
ПараметрыЗадолженностиКредитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом");
РаспределятьРасчетыСПоставщиком =
ПараметрыЗадолженностиКредитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком");
Иначе
ПараметрыЗадолженностиДебитор = СтруктураПараметровЗадолженности(ЭтаФорма);
ПараметрыЗадолженностиКредитор = СтруктураПараметровЗадолженности(ЭтаФорма, Истина);
АналитикаКРасчету = ЕстьЗаданияКРаспределению(ПараметрыЗадолженностиДебитор, ПараметрыЗадолженностиКредитор);
РаспределятьРасчетыСКлиентами =
ПараметрыЗадолженностиДебитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом")
ИЛИ ПараметрыЗадолженностиКредитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом");
РаспределятьРасчетыСПоставщиком =
ПараметрыЗадолженностиДебитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком")
ИЛИ ПараметрыЗадолженностиКредитор.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком");
КонецЕсли;
РасчетыРаспределены = АналитикаКРасчету.Количество() = 0;
Если НЕ РасчетыРаспределены Тогда
Ключ = Новый УникальныйИдентификатор();
СтруктураРасчетов = Новый Структура("АналитикиУчетаПоПартнерам, Организации", АналитикаКРасчету, Неопределено);
Если ФормаДлительнойОперации = Неопределено Тогда
ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтотОбъект, УникальныйИдентификатор);
ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОжидания);
Элемент = ФормаДлительнойОперации.Элементы.ДекорацияПоясняющийТекстДлительнойОперации;
Элемент.Заголовок = НСтр("ru = 'Пожалуйста, подождите...'")+Символы.ПС+
НСтр("ru = 'Выполняется распределение расчетов по документам.'");
Иначе
ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОжидания);
КонецЕсли;
Если РаспределятьРасчетыСКлиентами Тогда
РаспределениеВзаиморасчетовВызовСервера.РаспределитьРасчетыФоновымЗаданием(,СтруктураРасчетов,"РасчетыСКлиентами",
РаспределениеВзаиморасчетовВызовСервера.ИмяФоновогоЗаданияРасчетовСКлиентами()+Строка(Ключ));
КонецЕсли;
Если РаспределятьРасчетыСПоставщиком Тогда
РаспределениеВзаиморасчетовВызовСервера.РаспределитьРасчетыФоновымЗаданием(,СтруктураРасчетов,"РасчетыСПоставщиками",
РаспределениеВзаиморасчетовВызовСервера.ИмяФоновогоЗаданияРасчетовСПоставщиками()+Строка(Ключ));
КонецЕсли;
ПодключитьОбработчикОжидания("ФоновоеЗаданиеПроверитьНаКлиенте", 0.1, Истина);
Иначе
Ключ = Неопределено;
Если ФормаДлительнойОперации <> Неопределено Тогда
ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации);
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
Если ЗаполняемаяТЧ = "ДебиторскаяЗадолженность" Тогда
АвтоТест_РассчитатьВзаимозачетЗавершение(Неопределено,ДополнительныеПараметры);
ЗаблокироватьОбъектыРасчетов();
ИначеЕсли ЗаполняемаяТЧ = "КредиторскаяЗадолженность" Тогда
АвтоТест_РассчитатьВзаимозачетЗавершение(Неопределено,ДополнительныеПараметры);
ЗаблокироватьОбъектыРасчетов();
Иначе
АвтоТест_РассчитатьВзаимозачетЗавершение(Неопределено,Неопределено);
КонецЕсли;
КонецЕсли;
ИначеЕсли Состояние = "Активно" Тогда
Если ФормаДлительнойОперации = Неопределено Тогда
ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтотОбъект, УникальныйИдентификатор);
ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОжидания);
Элемент = ФормаДлительнойОперации.Элементы.ДекорацияПоясняющийТекстДлительнойОперации;
Элемент.Заголовок = НСтр("ru = 'Пожалуйста, подождите...'")+Символы.ПС+
НСтр("ru = 'Выполняется распределение расчетов по документам.'");
Иначе
ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОжидания);
КонецЕсли;
ПодключитьОбработчикОжидания("ФоновоеЗаданиеПроверитьНаКлиенте", ПараметрыОжидания.ТекущийИнтервал, Истина);
Иначе
ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации);
ТекстСообщения = НСтр("ru = 'Во время распределения расчетов по документам произошла ошибка. Подробности см. в Журнале регистрации.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПересчитатьВСуммуРегл(Сумма,Валюта,ОбъектРасчетов)
Возврат РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(Сумма,
ВалютаРегламентированногоУчета,
Валюта,
ВалютаРегламентированногоУчета,
Объект.Дата,
ОбъектРасчетов);
КонецФункции
&НаСервере
Функция ПересчитатьВСуммуУпр(Сумма,Валюта,ОбъектРасчетов)
Возврат РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(Сумма,
ВалютаРегламентированногоУчета,
Валюта,
ВалютаУправленческогоУчета,
Объект.Дата,
ОбъектРасчетов);
КонецФункции
&НаСервере
Функция ПересчитатьВСуммуВзаиморасчетов(Сумма,Валюта,ОбъектРасчетов)
Возврат РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(Сумма,
ВалютаРегламентированногоУчета,
ВалютаРегламентированногоУчета,
Валюта,
Объект.Дата,
ОбъектРасчетов);
КонецФункции
&НаСервере
Процедура УстановитьВидимостьБазоваяВерсия()
ЭтоНеБазовая = ПолучитьФункциональнуюОпцию("НеБазоваяВерсия");
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ДекорацияСуммаУпрПодвал");
МассивЭлементов.Добавить("ДебиторскаяЗадолженностьИтогСуммаУпр");
МассивЭлементов.Добавить("КредиторскаяЗадолженностьИтогСуммаУпр");
МассивЭлементов.Добавить("ПолеВалютаУпрУчета");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", ЭтоНеБазовая);
Если НЕ ЭтоНеБазовая Тогда
Элементы.ДебиторскаяЗадолженностьБезРазбиенияСуммаРегл.Заголовок = НСтр("ru = 'Сумма'");
Элементы.КредиторскаяЗадолженностьБезРазбиенияСуммаРегл.Заголовок = НСтр("ru = 'Сумма'");
Элементы.ДекорацияСуммаРеглПодвал.Заголовок = НСтр("ru = 'Сумма'");
Элементы.КредиторскаяЗадолженностьСуммаРегл.Заголовок = НСтр("ru = 'Сумма'");
Элементы.ДебиторскаяЗадолженностьСуммаРегл.Заголовок = НСтр("ru = 'Сумма'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОрганизацииКРасчету(ПараметрыЗадолженностиДебитор = Неопределено, ПараметрыЗадолженностиКредитор = Неопределено)
ДоступныеОрганизации = Новый Массив;
ЗапросОрганизаций = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ГоловнаяОрганизация В (&Организация)
| И Организации.ДопускаютсяВзаиморасчетыЧерезГоловнуюОрганизацию");
Если ЗначениеЗаполнено(ПараметрыЗадолженностиДебитор) Тогда
Если ПараметрыЗадолженностиДебитор.УчитыватьФилиалы Тогда
ЗапросОрганизаций.УстановитьПараметр("Организация", ПараметрыЗадолженностиДебитор.Организация.Значение);
ДоступныеОрганизацииДт = ЗапросОрганизаций.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Для Каждого Орг Из ДоступныеОрганизацииДт Цикл
ДоступныеОрганизации.Добавить(Орг);
КонецЦикла;
КонецЕсли;
ДоступныеОрганизации.Добавить(ПараметрыЗадолженностиДебитор.Организация.Значение);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыЗадолженностиКредитор) Тогда
Если ПараметрыЗадолженностиКредитор.УчитыватьФилиалы Тогда
ЗапросОрганизаций.УстановитьПараметр("Организация", ПараметрыЗадолженностиКредитор.Организация.Значение);
ДоступныеОрганизацииКт = ЗапросОрганизаций.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Для Каждого Орг Из ДоступныеОрганизацииКт Цикл
ДоступныеОрганизации.Добавить(Орг);
КонецЦикла;
КонецЕсли;
ДоступныеОрганизации.Добавить(ПараметрыЗадолженностиКредитор.Организация.Значение);
КонецЕсли;
Возврат ДоступныеОрганизации;
КонецФункции
&НаКлиенте
Процедура УстановитьВалютуВзаиморасчетов(НоваяВалютаВзаиморасчетов)
Если Объект.ВидОперации <> ПредопределенноеЗначение("Перечисление.ВидыОперацийВзаимозачетаЗадолженности.Произвольный") Тогда
Если НЕ ЗначениеЗаполнено(ВалютаВзаиморасчетов) Тогда
ВалютаВзаиморасчетов = НоваяВалютаВзаиморасчетов;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьВалютуВзаиморасчетов()
ДтПусто = Объект.ДебиторскаяЗадолженность.Количество() = 0
ИЛИ Объект.ДебиторскаяЗадолженность.Количество() = 1
И НЕ ЗначениеЗаполнено(Объект.ДебиторскаяЗадолженность[0].ОбъектРасчетов);
КтПусто = Объект.КредиторскаяЗадолженность.Количество() = 0
ИЛИ Объект.КредиторскаяЗадолженность.Количество() = 1
И НЕ ЗначениеЗаполнено(Объект.КредиторскаяЗадолженность[0].ОбъектРасчетов);
ШапкаПусто = НЕ ЗначениеЗаполнено(Объект.ОбъектРасчетовИнтеркампани)
И НЕ ЗначениеЗаполнено(Объект.ОбъектРасчетовДебиторКредитор);
Если ДтПусто И КтПусто И ШапкаПусто Тогда
ВалютаВзаиморасчетов = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаблокироватьОбъектыРасчетов()
РазблокироватьДанныеДляРедактирования(, УникальныйИдентификатор);
МассивОбъектовРасчета = Новый Массив;
Для Каждого СтрокаТаблицы Из Объект.ДебиторскаяЗадолженность Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.ОбъектРасчетов) Тогда
МассивОбъектовРасчета.Добавить(СтрокаТаблицы.ОбъектРасчетов);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицы.ОбъектРасчетовЗеркальный) Тогда
МассивОбъектовРасчета.Добавить(СтрокаТаблицы.ОбъектРасчетовЗеркальный);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаТаблицы Из Объект.КредиторскаяЗадолженность Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.ОбъектРасчетов) Тогда
МассивОбъектовРасчета.Добавить(СтрокаТаблицы.ОбъектРасчетов);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицы.ОбъектРасчетовЗеркальный) Тогда
МассивОбъектовРасчета.Добавить(СтрокаТаблицы.ОбъектРасчетовЗеркальный);
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(Объект.ОбъектРасчетовИнтеркампани) Тогда
МассивОбъектовРасчета.Добавить(Объект.ОбъектРасчетовИнтеркампани);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОбъектРасчетовИнтеркампаниЗеркальный) Тогда
МассивОбъектовРасчета.Добавить(Объект.ОбъектРасчетовИнтеркампаниЗеркальный);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОбъектРасчетовДебиторКредитор) Тогда
МассивОбъектовРасчета.Добавить(Объект.ОбъектРасчетовДебиторКредитор);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОбъектРасчетовДебиторКредиторЗеркальный) Тогда
МассивОбъектовРасчета.Добавить(Объект.ОбъектРасчетовДебиторКредиторЗеркальный);
КонецЕсли;
МассивОбъектовРасчета = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивОбъектовРасчета);
Для Каждого ОбъектРасчетов Из МассивОбъектовРасчета Цикл
Попытка
ЗаблокироватьДанныеДляРедактирования(ОбъектРасчетов,, УникальныйИдентификатор);
Исключение
КонецПопытки;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ЕстьСтроки(ИмяТаблицы)
ЗадолженностьСписком = Истина;
Если ИмяТаблицы = "ДебиторскаяЗадолженность" Тогда
ЗадолженностьСписком = ПереключательДебиторскаяЗадолженность = 1;
Иначе
ЗадолженностьСписком = ПереключательКредиторскаяЗадолженность = 1;
КонецЕсли;
Если ЗадолженностьСписком Тогда
ЕстьСтроки = Объект[ИмяТаблицы].Количество() > 0;
Иначе
ЕстьСтроки = Не (Объект[ИмяТаблицы][0].ОбъектРасчетовЗеркальный = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка")
И Объект[ИмяТаблицы][0].ОбъектРасчетов = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка")
И Объект[ИмяТаблицы][0].Сумма = 0
И Объект[ИмяТаблицы][0].СуммаВзаиморасчетов = 0
И Объект[ИмяТаблицы][0].СуммаРегл = 0
И Объект[ИмяТаблицы][0].СуммаУпр = 0);
КонецЕсли;
Возврат ЕстьСтроки;
КонецФункции
&НаКлиенте
Процедура ОчиститьТабличнуюЧасть(ИмяТаблицы)
ЗадолженностьСписком = Истина;
Если ИмяТаблицы = "ДебиторскаяЗадолженность" Тогда
ЗадолженностьСписком = ПереключательДебиторскаяЗадолженность = 1;
Иначе
ЗадолженностьСписком = ПереключательКредиторскаяЗадолженность = 1;
КонецЕсли;
Если ЗадолженностьСписком Тогда
Объект[ИмяТаблицы].Очистить();
Иначе
Объект[ИмяТаблицы][0].ОбъектРасчетовЗеркальный = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
Объект[ИмяТаблицы][0].ОбъектРасчетов = ПредопределенноеЗначение("Справочник.ОбъектыРасчетов.ПустаяСсылка");
Объект[ИмяТаблицы][0].Сумма = 0;
Объект[ИмяТаблицы][0].СуммаВзаиморасчетов = 0;
Объект[ИмяТаблицы][0].ВалютаВзаиморасчетов = ПредопределенноеЗначение("Справочник.Валюты.ПустаяСсылка");
Объект[ИмяТаблицы][0].СуммаРегл = 0;
Объект[ИмяТаблицы][0].СуммаУпр = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИнициализироватьПредыдущиеЗначения()
ПредыдущиеЗначения = Новый Структура();
ПредыдущиеЗначения.Вставить("КонтрагентДебитор", Объект.КонтрагентДебитор);
ПредыдущиеЗначения.Вставить("КонтрагентКредитор", Объект.КонтрагентКредитор);
ПредыдущиеЗначения.Вставить("Организация", Объект.Организация);
ПредыдущиеЗначения.Вставить("ОрганизацияКредитор", Объект.ОрганизацияКредитор);
ПредыдущиеЗначения.Вставить("ТипДебитора", Объект.ТипДебитора);
ПредыдущиеЗначения.Вставить("ТипКредитора", Объект.ТипКредитора);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуПодбораПодарочныхСертификатов()
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("Валюта", ВалютаРегламентированногоУчета);
ИдТекущейСтроки = Неопределено;
Если Не Элементы.КредиторскаяЗадолженность.ТекущиеДанные = Неопределено Тогда
ИдТекущейСтроки = Элементы.КредиторскаяЗадолженность.ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ДанныеПомещеннойТаблицы = ПоместитьТаблицуПодарочныхСертификатов(ИдТекущейСтроки);
АдресТаблицыТоваровДляАнализаВозможностиОплаты = ПодарочныеСертификатыВызовСервера.АдресТабличнойЧастиТоварыДляАнализаВозможностиОплатыПодарочнымиСертификатами(Объект.Ссылка, УникальныйИдентификатор);
Если ЗначениеЗаполнено(АдресТаблицыТоваровДляАнализаВозможностиОплаты) Тогда
ПараметрыПодбора.Вставить("АдресВХранилищеТовары", АдресТаблицыТоваровДляАнализаВозможностиОплаты);
КонецЕсли;
ПараметрыПодбора.Вставить("АдресВХранилище", ДанныеПомещеннойТаблицы.АдресВоВременномХранилище);
ПараметрыПодбора.Вставить("ИндексТекущейСтроки", ДанныеПомещеннойТаблицы.ИндексТекущейСтроки);
ПараметрыПодбора.Вставить("РежимОткрытияДоплата", Ложь);
ПараметрыПодбора.Вставить("Доплатить", 0);
ПараметрыПодбора.Вставить("ПоказыватьИтогОсталосьДоплатить", Ложь);
ПараметрыПодбора.Вставить("РегистрироватьНовые", Ложь);
ПараметрыПодбора.Вставить("ОписаниеОповещенияОЗакрытии", Новый ОписаниеОповещения("ПодобратьПодарочныйСертификатЗавершение", ЭтотОбъект));
ПараметрыПодбора.Вставить("Отбор", Новый Структура);
СтатусыДляОтбора = Новый Массив;
СтатусыДляОтбора.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыПодарочныхСертификатов.Активирован"));
СтатусыДляОтбора.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыПодарочныхСертификатов.ЧастичноПогашен"));
ПараметрыПодбора.Отбор.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Отбор.Вставить("Валюта", ВалютаРегламентированногоУчета);
ПараметрыПодбора.Отбор.Вставить("Статус", СтатусыДляОтбора);
ПараметрыПодбора.Отбор.Вставить("УчетПодарочныхСертификатов2_5", Истина);
ПараметрыПодбора.Отбор.Вставить("ТипОперации", ПодарочныеСертификатыКлиентСервер.ТипОперацииПоПодарочнымСертификатам(Объект));
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрыПодбора.Отбор.Вставить("Дата", Объект.Дата);
КонецЕсли;
ПодарочныеСертификатыКлиент.ОткрытьФормуПодбораПодарочныхСертификатов(ЭтотОбъект, ПараметрыПодбора);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПодарочныйСертификатНачало(Результат, ДополнительныеПараметры) Экспорт
ОткрытьФормуПодбораПодарочныхСертификатов();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПодарочныйСертификатЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЭтоАдресВременногоХранилища(Результат) Тогда
ОбработатьПодобранныеПодарочныеСертификатыНаСервере(Результат);
Если Объект.КредиторскаяЗадолженность.Количество() > 0 Тогда
УстановитьВалютуВзаиморасчетов(Объект.КредиторскаяЗадолженность[0].ВалютаВзаиморасчетов);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьТаблицуПодарочныхСертификатов(ИдТекущейСтроки = Неопределено)
СуммаЗачтеннаяПодарочнымиСертификатами = 0;
ТаблицаЗачтенныхПодарочныхСертификатов = Новый ТаблицаЗначений;
ТаблицаЗачтенныхПодарочныхСертификатов.Колонки.Добавить("ПодарочныйСертификат", Новый ОписаниеТипов("СправочникСсылка.ПодарочныеСертификаты"));
ТаблицаЗачтенныхПодарочныхСертификатов.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
ИндексТекущейСтроки = Неопределено;
ТекущиеДанныеОбъектРасчетов = Неопределено;
Если Не ИдТекущейСтроки = Неопределено Тогда
ТекущиеДанныеОбъектРасчетов = Объект.КредиторскаяЗадолженность.НайтиПоИдентификатору(ИдТекущейСтроки).ОбъектРасчетов;
КонецЕсли;
Для Каждого СтрокаКредиторскойЗадолженности Из Объект.КредиторскаяЗадолженность Цикл
Если ЗначениеЗаполнено(СтрокаКредиторскойЗадолженности.ОбъектРасчетов) Тогда
СтрокаКредиторскойЗадолженностиОбъект = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаКредиторскойЗадолженности.ОбъектРасчетов, "Объект");
Если ТипЗнч(СтрокаКредиторскойЗадолженностиОбъект) = Тип("СправочникСсылка.ПодарочныеСертификаты") Тогда
НоваяСтрока = ТаблицаЗачтенныхПодарочныхСертификатов.Добавить();
НоваяСтрока.ПодарочныйСертификат = СтрокаКредиторскойЗадолженностиОбъект;
НоваяСтрока.Сумма = СтрокаКредиторскойЗадолженности.СуммаВзаиморасчетов;
СуммаЗачтеннаяПодарочнымиСертификатами = СуммаЗачтеннаяПодарочнымиСертификатами + СтрокаКредиторскойЗадолженности.СуммаВзаиморасчетов;
Если СтрокаКредиторскойЗадолженности.ОбъектРасчетов = ТекущиеДанныеОбъектРасчетов Тогда
ИндексТекущейСтроки = ТаблицаЗачтенныхПодарочныхСертификатов.Индекс(НоваяСтрока);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Результат = Новый Структура;
Результат.Вставить("АдресВоВременномХранилище", ПоместитьВоВременноеХранилище(ТаблицаЗачтенныхПодарочныхСертификатов, УникальныйИдентификатор));
Результат.Вставить("СуммаЗачтеннаяПодарочнымиСертификатами", СуммаЗачтеннаяПодарочнымиСертификатами);
Результат.Вставить("ИндексТекущейСтроки", ИндексТекущейСтроки);
Возврат Результат;
КонецФункции
&НаСервере
Процедура ОбработатьПодобранныеПодарочныеСертификатыНаСервере(АдресТабличнойЧастиПодарочныеСертификаты)
ПодобранныеПодарочныеСертификаты = ПолучитьИзВременногоХранилища(АдресТабличнойЧастиПодарочныеСертификаты);
ТабличнаяЧасть = Объект.КредиторскаяЗадолженность;
ОтборСтрокСНезаполеннымОбъектомРасчетов = Новый Структура("ОбъектРасчетов", Справочники.ОбъектыРасчетов.ПустаяСсылка());
МассивСтрокКУдалению = ТабличнаяЧасть.НайтиСтроки(ОтборСтрокСНезаполеннымОбъектомРасчетов);
Для Каждого СтрокаДляУдаления Из МассивСтрокКУдалению Цикл
ТабличнаяЧасть.Удалить(СтрокаДляУдаления);
КонецЦикла;
ОбъектыРасчетовТабличнойЧасти = ТабличнаяЧасть.Выгрузить(,"ОбъектРасчетов");
ОбъектыРасчетовТабличнойЧасти.Свернуть("ОбъектРасчетов");
ЗначенияРеквизитаОбъект = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(ОбъектыРасчетовТабличнойЧасти.ВыгрузитьКолонку("ОбъектРасчетов"), "Объект");
МассивСтрокДляУдаления = Новый Массив;
Для Каждого СтрокаТабличнойЧасти Из ТабличнаяЧасть Цикл
СтрокаТабличнойЧастиОбъект = ЗначенияРеквизитаОбъект[СтрокаТабличнойЧасти.ОбъектРасчетов];
Если ТипЗнч(СтрокаТабличнойЧастиОбъект) = Тип("СправочникСсылка.ПодарочныеСертификаты") Тогда
СтруктураПоиска = Новый Структура("ПодарочныйСертификат", СтрокаТабличнойЧастиОбъект);
Если ПодобранныеПодарочныеСертификаты.НайтиСтроки(СтруктураПоиска).Количество()=0 Тогда
МассивСтрокДляУдаления.Добавить(СтрокаТабличнойЧасти);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаДляУдаления Из МассивСтрокДляУдаления Цикл
ТабличнаяЧасть.Удалить(СтрокаДляУдаления);
КонецЦикла;
ВалютаВзаиморасчетовПодобранныхПодарочныхСертификатов = Неопределено;
Если ПодобранныеПодарочныеСертификаты.Количество() > 0 Тогда
ВалютаВзаиморасчетовПодобранныхПодарочныхСертификатов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
ПодобранныеПодарочныеСертификаты[0].ОбъектРасчетов,
"ВалютаВзаиморасчетов");
КонецЕсли;
СтруктураПоиска = Новый Структура("ОбъектРасчетов, Партнер");
Для Каждого СтрокаТаблицы Из ПодобранныеПодарочныеСертификаты Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТаблицы);
НайденныеСтроки = ТабличнаяЧасть.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
СтрокаТабличнойЧасти.Организация = Объект.Организация;
СтрокаТабличнойЧасти.ВалютаВзаиморасчетов = ВалютаВзаиморасчетовПодобранныхПодарочныхСертификатов;
СтрокаТабличнойЧасти.ОбъектРасчетов = СтрокаТаблицы.ОбъектРасчетов;
СтрокаТабличнойЧасти.Партнер = СтрокаТаблицы.Партнер;
СтрокаТабличнойЧасти.ТипРасчетов = ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом")
Иначе
СтрокаТабличнойЧасти = НайденныеСтроки[0];
КонецЕсли;
СтрокаТабличнойЧасти.ОбъектРасчетовПодарочныйСертификат = Истина;
СтрокаТабличнойЧасти.Сумма = СтрокаТаблицы.Сумма;
СтрокаТабличнойЧасти.СуммаВзаиморасчетов = СтрокаТаблицы.Сумма;
СтрокаТабличнойЧасти.СуммаРегл = СтрокаТабличнойЧасти.СуммаВзаиморасчетов;
СтрокаТабличнойЧасти.СуммаУпр = СтрокаТабличнойЧасти.СуммаВзаиморасчетов;
Если ВалютаВзаиморасчетовПодобранныхПодарочныхСертификатов <> ВалютаРегламентированногоУчета Тогда
СтрокаТабличнойЧасти.СуммаРегл = РаботаСКурсамиВалютУТ.ПересчитатьСуммуДокументаВВалюту(
СтрокаТабличнойЧасти.СуммаВзаиморасчетов, ВалютаВзаиморасчетовПодобранныхПодарочныхСертификатов, ВалютаРегламентированногоУчета, Объект.Дата, ВалютаРегламентированногоУчета);
КонецЕсли;
Если ВалютаВзаиморасчетовПодобранныхПодарочныхСертификатов <> ВалютаУправленческогоУчета Тогда
СтрокаТабличнойЧасти.СуммаУпр = РаботаСКурсамиВалютУТ.ПересчитатьСуммуДокументаВВалюту(
СтрокаТабличнойЧасти.СуммаВзаиморасчетов, ВалютаВзаиморасчетовПодобранныхПодарочныхСертификатов, ВалютаУправленческогоУчета, Объект.Дата, ВалютаРегламентированногоУчета);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ВалютаДокументаДляПереноса(ИмяТабличнойЧасти)
ЭтоДебет = ИмяТабличнойЧасти = "ДебиторскаяЗадолженность";
Результат = Неопределено;
Если ВыбранВидОперацииПереносАванса() ИЛИ ВыбранВидОперацииПереносДолга() Тогда
Если ЭтоДебет Тогда
Задолженноть = Объект.КредиторскаяЗадолженность;
Иначе
Задолженноть = Объект.ДебиторскаяЗадолженность;
КонецЕсли;
Если Задолженноть.Количество() > 0 Тогда
Результат = Задолженноть[0].ВалютаВзаиморасчетов;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
#КонецОбласти