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