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