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