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