Вход | Регистрация


ПКО

ПКО
Я
   KukenKvaken
 
01.10.18 - 11:02
Добрый день.
Есть ПКО.
в нем есть строчка основание
https://ibb.co/dYtqDe
в основании указан только тип документа его номер и дата.

а хочется чтоб он из документа брал еще одну строчку туда:
из раздела Тур:
https://ibb.co/dzPVDe

как допелить?

Модуль Объекта ПКО
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда


#Область ПроцедурыЗаполненияДокумента


// Процедура заполняет расшифровку платежа.

//
Процедура ЗаполнитьРасшифровкуПлатежа() Экспорт
    
    Компания = УправлениеНебольшойФирмойСервер.ПолучитьОрганизацию(Организация);
    
    Если НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДС Тогда
        СтавкаНДСПоУмолчанию = Организация.СтавкаНДСПоУмолчанию;
    ИначеЕсли НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.НеОблагаетсяНДС Тогда
        СтавкаНДСПоУмолчанию = УправлениеНебольшойФирмойПовтИсп.ПолучитьСтавкуНДСБезНДС();
    Иначе
        СтавкаНДСПоУмолчанию = УправлениеНебольшойФирмойПовтИсп.ПолучитьСтавкуНДСНоль();
    КонецЕсли;
    
    СтруктураПоВалюте = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура("Валюта", ВалютаДенежныхСредств));
    
    КурсВалютыДС = ?(
        СтруктураПоВалюте.Курс = 0,
        1,
        СтруктураПоВалюте.Курс
    );
    КратностьВалютыДС = ?(
        СтруктураПоВалюте.Курс = 0,
        1,
        СтруктураПоВалюте.Кратность
    );
    
    // Заполнение расшифровки расчетов по умолчанию.

    Запрос = Новый Запрос;
    Запрос.Текст =
    
    "ВЫБРАТЬ
    |    РасчетыСПокупателямиОстатки.Организация КАК Организация,
    |    РасчетыСПокупателямиОстатки.Контрагент КАК Контрагент,
    |    РасчетыСПокупателямиОстатки.Договор КАК Договор,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоДокументам
    |            ТОГДА РасчетыСПокупателямиОстатки.Документ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ КАК Документ,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоЗаказам
    |            ТОГДА РасчетыСПокупателямиОстатки.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    |    КОНЕЦ КАК Заказ,
    |    РасчетыСПокупателямиОстатки.ТипРасчетов КАК ТипРасчетов,
    |    СУММА(РасчетыСПокупателямиОстатки.СуммаОстаток) КАК СуммаОстаток,
    |    СУММА(РасчетыСПокупателямиОстатки.СуммаВалОстаток) КАК СуммаВалОстаток,
    |    РасчетыСПокупателямиОстатки.Документ.Дата КАК ДокументДата,
    |    СУММА(ВЫРАЗИТЬ(РасчетыСПокупателямиОстатки.СуммаВалОстаток * КурсыВалютРасчетов.Курс * КурсыВалютДокумента.Кратность / (КурсыВалютДокумента.Курс * КурсыВалютРасчетов.Кратность) КАК ЧИСЛО(15, 2))) КАК СуммаВалДокумента,
    |    КурсыВалютДокумента.Курс КАК КурсДенежныхСредств,
    |    КурсыВалютДокумента.Кратность КАК КратностьДенежныхСредств,
    |    КурсыВалютРасчетов.Курс КАК Курс,
    |    КурсыВалютРасчетов.Кратность КАК Кратность
    |ИЗ
    |    (ВЫБРАТЬ
    |        РасчетыСПокупателямиОстатки.Организация КАК Организация,
    |        РасчетыСПокупателямиОстатки.Контрагент КАК Контрагент,
    |        РасчетыСПокупателямиОстатки.Договор КАК Договор,
    |        РасчетыСПокупателямиОстатки.Документ КАК Документ,
    |        РасчетыСПокупателямиОстатки.Заказ КАК Заказ,
    |        РасчетыСПокупателямиОстатки.ТипРасчетов КАК ТипРасчетов,
    |        ЕСТЬNULL(РасчетыСПокупателямиОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
    |        ЕСТЬNULL(РасчетыСПокупателямиОстатки.СуммаВалОстаток, 0) КАК СуммаВалОстаток
    |    ИЗ
    |        РегистрНакопления.РасчетыСПокупателями.Остатки(
    |                ,
    |                Организация = &Организация
    |                    И Контрагент = &Контрагент
    |                    // ТекстДоговорОтбор

    |                    И ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)) КАК РасчетыСПокупателямиОстатки
    |    
    |    ОБЪЕДИНИТЬ ВСЕ
    |    
    |    ВЫБРАТЬ
    |        ДвиженияДокументаРасчетыСПокупателями.Организация,
    |        ДвиженияДокументаРасчетыСПокупателями.Контрагент,
    |        ДвиженияДокументаРасчетыСПокупателями.Договор,
    |        ДвиженияДокументаРасчетыСПокупателями.Документ,
    |        ДвиженияДокументаРасчетыСПокупателями.Заказ,
    |        ДвиженияДокументаРасчетыСПокупателями.ТипРасчетов,
    |        ВЫБОР
    |            КОГДА ДвиженияДокументаРасчетыСПокупателями.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |                ТОГДА -ЕСТЬNULL(ДвиженияДокументаРасчетыСПокупателями.Сумма, 0)
    |            ИНАЧЕ ЕСТЬNULL(ДвиженияДокументаРасчетыСПокупателями.Сумма, 0)
    |        КОНЕЦ,
    |        ВЫБОР
    |            КОГДА ДвиженияДокументаРасчетыСПокупателями.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |                ТОГДА -ЕСТЬNULL(ДвиженияДокументаРасчетыСПокупателями.СуммаВал, 0)
    |            ИНАЧЕ ЕСТЬNULL(ДвиженияДокументаРасчетыСПокупателями.СуммаВал, 0)
    |        КОНЕЦ
    |    ИЗ
    |        РегистрНакопления.РасчетыСПокупателями КАК ДвиженияДокументаРасчетыСПокупателями
    |    ГДЕ
    |        ДвиженияДокументаРасчетыСПокупателями.Регистратор = &Ссылка
    |        И ДвиженияДокументаРасчетыСПокупателями.Период <= &Период
    |        И ДвиженияДокументаРасчетыСПокупателями.Организация = &Организация
    |        И ДвиженияДокументаРасчетыСПокупателями.Контрагент = &Контрагент
    |        И ДвиженияДокументаРасчетыСПокупателями.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)) КАК РасчетыСПокупателямиОстатки
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютДокумента
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Период, ) КАК КурсыВалютРасчетов
    |        ПО РасчетыСПокупателямиОстатки.Договор.ВалютаРасчетов = КурсыВалютРасчетов.Валюта
    |ГДЕ
    |    РасчетыСПокупателямиОстатки.СуммаВалОстаток > 0
    |
    |СГРУППИРОВАТЬ ПО
    |    РасчетыСПокупателямиОстатки.Организация,
    |    РасчетыСПокупателямиОстатки.Контрагент,
    |    РасчетыСПокупателямиОстатки.Договор,
    |    РасчетыСПокупателямиОстатки.Документ,
    |    РасчетыСПокупателямиОстатки.Заказ,
    |    РасчетыСПокупателямиОстатки.ТипРасчетов,
    |    РасчетыСПокупателямиОстатки.Документ.Дата,
    |    КурсыВалютДокумента.Курс,
    |    КурсыВалютДокумента.Кратность,
    |    КурсыВалютРасчетов.Курс,
    |    КурсыВалютРасчетов.Кратность,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоДокументам
    |            ТОГДА РасчетыСПокупателямиОстатки.Документ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоЗаказам
    |            ТОГДА РасчетыСПокупателямиОстатки.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.Заказпокупателя.ПустаяСсылка)
    |    КОНЕЦ
    |
    |УПОРЯДОЧИТЬ ПО
    |    ДокументДата";
        
    Запрос.УстановитьПараметр("Организация", Компания);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("Период", Дата);
    Запрос.УстановитьПараметр("Валюта", ВалютаДенежныхСредств);
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    НуженОтборПоДоговорам = УправлениеНебольшойФирмойПовтИсп.ТребуетсяКонтрольДоговоровКонтрагентов();
    СписокВидовДоговоров = Справочники.ДоговорыКонтрагентов.ПолучитьСписокВидовДоговораДляДокумента(Ссылка, ВидОперации);
    Если НуженОтборПоДоговорам
       И Контрагент.ВестиРасчетыПоДоговорам Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "// ТекстДоговорОтбор", "И Договор.ВидДоговора В (&СписокВидовДоговоров)");

        Запрос.УстановитьПараметр("СписокВидовДоговоров", СписокВидовДоговоров);
    КонецЕсли;
    
    ДоговорПоУмолчанию = Справочники.ДоговорыКонтрагентов.ПолучитьДоговорПоУмолчаниюПоОрганизацииВидуДоговора(
        Контрагент,
        Организация,
        СписокВидовДоговоров
    );
    
    СтруктураКурсВалютыДоговораПоУмолчанию = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(
        Дата,
        Новый Структура("Валюта", ДоговорПоУмолчанию.ВалютаРасчетов)
    );
    
    ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
    
    РасшифровкаПлатежа.Очистить();
    
    СуммаОсталосьРаспределить = СуммаДокумента;
    
    Пока СуммаОсталосьРаспределить > 0 Цикл
        
        НоваяСтрока = РасшифровкаПлатежа.Добавить();
        
        Если ВыборкаРезультатаЗапроса.Следующий() Тогда
            
            ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаРезультатаЗапроса);
            
            Если ВыборкаРезультатаЗапроса.СуммаВалДокумента <= СуммаОсталосьРаспределить Тогда// сумма остатка меньше или равна чем осталось распределить

                
                НоваяСтрока.СуммаРасчетов = ВыборкаРезультатаЗапроса.СуммаВалОстаток;
                НоваяСтрока.СуммаПлатежа = ВыборкаРезультатаЗапроса.СуммаВалДокумента;
                НоваяСтрока.СтавкаНДС = СтавкаНДСПоУмолчанию;
                НоваяСтрока.СуммаНДС = НоваяСтрока.СуммаПлатежа - (НоваяСтрока.СуммаПлатежа) / ((СтавкаНДСПоУмолчанию.Ставка + 100) / 100);
                СуммаОсталосьРаспределить = СуммаОсталосьРаспределить - ВыборкаРезультатаЗапроса.СуммаВалДокумента;
                
            Иначе// сумма остатка больше чем нужно распределить

                
                НоваяСтрока.СуммаРасчетов = УправлениеНебольшойФирмойСервер.ПересчитатьИзВалютыВВалюту(
                    СуммаОсталосьРаспределить,
                    ВыборкаРезультатаЗапроса.КурсДенежныхСредств,
                    ВыборкаРезультатаЗапроса.Курс,
                    ВыборкаРезультатаЗапроса.КратностьДенежныхСредств,
                    ВыборкаРезультатаЗапроса.Кратность
                );
                НоваяСтрока.СуммаПлатежа = СуммаОсталосьРаспределить;
                НоваяСтрока.СтавкаНДС = СтавкаНДСПоУмолчанию;
                НоваяСтрока.СуммаНДС = НоваяСтрока.СуммаПлатежа - (НоваяСтрока.СуммаПлатежа) / ((СтавкаНДСПоУмолчанию.Ставка + 100) / 100);
                СуммаОсталосьРаспределить = 0;
                
            КонецЕсли;
            
        Иначе
            
            НоваяСтрока.Договор = ДоговорПоУмолчанию;
            НоваяСтрока.Курс = ?(
                СтруктураКурсВалютыДоговораПоУмолчанию.Курс = 0,
                1,
                СтруктураКурсВалютыДоговораПоУмолчанию.Курс
            );
            НоваяСтрока.Кратность = ?(
                СтруктураКурсВалютыДоговораПоУмолчанию.Кратность = 0,
                1,
                СтруктураКурсВалютыДоговораПоУмолчанию.Кратность
            );
            НоваяСтрока.СуммаРасчетов = УправлениеНебольшойФирмойСервер.ПересчитатьИзВалютыВВалюту(
                СуммаОсталосьРаспределить,
                КратностьВалютыДС,
                НоваяСтрока.Курс,
                КратностьВалютыДС,
                НоваяСтрока.Кратность
            );
            НоваяСтрока.ПризнакАванса = Истина;
            НоваяСтрока.СуммаПлатежа = СуммаОсталосьРаспределить;
            НоваяСтрока.СтавкаНДС = СтавкаНДСПоУмолчанию;
            НоваяСтрока.СуммаНДС = НоваяСтрока.СуммаПлатежа - (НоваяСтрока.СуммаПлатежа) / ((СтавкаНДСПоУмолчанию.Ставка + 100) / 100);
            СуммаОсталосьРаспределить = 0;
            
        КонецЕсли;
        
    КонецЦикла;
    
    Если РасшифровкаПлатежа.Количество() = 0 Тогда
        РасшифровкаПлатежа.Добавить();
        РасшифровкаПлатежа[0].СуммаПлатежа = СуммаДокумента;
    КонецЕсли;
    
    СуммаПлатежа = РасшифровкаПлатежа.Итог("СуммаПлатежа");
    
КонецПроцедуры// ЗаполнитьРасшифровкуПлатежа()


// Процедура заполняет расшифровку платежа.

//
Процедура ЗаполнитьРасшифровкуПлатежаАвтоЗачетДолгов() Экспорт
    
    Компания = УправлениеНебольшойФирмойСервер.ПолучитьОрганизацию(Организация);
    
    Если НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДС Тогда
        СтавкаНДСПоУмолчанию = Организация.СтавкаНДСПоУмолчанию;
    ИначеЕсли НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.НеОблагаетсяНДС Тогда
        СтавкаНДСПоУмолчанию = УправлениеНебольшойФирмойПовтИсп.ПолучитьСтавкуНДСБезНДС();
    Иначе
        СтавкаНДСПоУмолчанию = УправлениеНебольшойФирмойПовтИсп.ПолучитьСтавкуНДСНоль();
    КонецЕсли;
    
    СтруктураПоВалюте = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура("Валюта", ВалютаДенежныхСредств));
    
    КурсВалютыДС = ?(
        СтруктураПоВалюте.Курс = 0,
        1,
        СтруктураПоВалюте.Курс
    );
    КратностьВалютыДС = ?(
        СтруктураПоВалюте.Курс = 0,
        1,
        СтруктураПоВалюте.Кратность
    );
    
    // Заполнение расшифровки расчетов по умолчанию.

    Запрос = Новый Запрос;
    Запрос.Текст =
    
    "ВЫБРАТЬ
    |    РасходСоСчетаДоговорыАвтоЗачетаДолгов.Договор,
    |    РасходСоСчетаДоговорыАвтоЗачетаДолгов.СуммаПлатежа КАК СуммаПлатежа
    |ПОМЕСТИТЬ ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная
    |ИЗ
    |    &ДоговорыАвтоЗачетаДолгов КАК РасходСоСчетаДоговорыАвтоЗачетаДолгов
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная.Договор,
    |    СУММА(ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная.СуммаПлатежа) КАК СуммаПлатежа
    |ПОМЕСТИТЬ ВременнаяТаблицаДоговорыАвтоЗачета
    |ИЗ
    |    ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная КАК ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная
    |ГДЕ
    |    ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная.Договор <> Неопределено
    |    И ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная.Договор <> Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |
    |СГРУППИРОВАТЬ ПО
    |    ВременнаяТаблицаДоговорыАвтоЗачетаПредварительная.Договор
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    РасчетыСПокупателямиОстатки.Организация КАК Организация,
    |    РасчетыСПокупателямиОстатки.Контрагент КАК Контрагент,
    |    РасчетыСПокупателямиОстатки.Договор КАК Договор,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоДокументам
    |            ТОГДА РасчетыСПокупателямиОстатки.Документ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ КАК Документ,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоЗаказам
    |            ТОГДА РасчетыСПокупателямиОстатки.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
    |    КОНЕЦ КАК Заказ,
    |    РасчетыСПокупателямиОстатки.ТипРасчетов КАК ТипРасчетов,
    |    СУММА(ЕСТЬNULL(РасчетыСПокупателямиОстатки.СуммаОстаток, 0)) КАК СуммаОстаток,
    |    СУММА(ЕСТЬNULL(РасчетыСПокупателямиОстатки.СуммаВалОстаток, 0)) КАК СуммаВалОстаток,
    |    РасчетыСПокупателямиОстатки.Документ.Дата КАК ДокументДата,
    |    СУММА(ВЫРАЗИТЬ(РасчетыСПокупателямиОстатки.СуммаВалОстаток * КурсыВалютРасчетов.Курс * КурсыВалютДокумента.Кратность / (КурсыВалютДокумента.Курс * КурсыВалютРасчетов.Кратность) КАК ЧИСЛО(15, 2))) КАК СуммаВалДокумента,
    |    КурсыВалютДокумента.Курс КАК КурсДенежныхСредств,
    |    КурсыВалютДокумента.Кратность КАК КратностьДенежныхСредств,
    |    КурсыВалютРасчетов.Курс КАК Курс,
    |    КурсыВалютРасчетов.Кратность КАК Кратность,
    |    ВременнаяТаблицаДоговорыАвтоЗачета.СуммаПлатежа КАК СуммаПлатежаАвто,
    |    ВременнаяТаблицаДоговорыАвтоЗачета.Договор КАК ДоговорАвто
    |ИЗ
    |    ВременнаяТаблицаДоговорыАвтоЗачета КАК ВременнаяТаблицаДоговорыАвтоЗачета
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |        РасчетыСПокупателямиОстатки.Организация КАК Организация,
    |        РасчетыСПокупателямиОстатки.Контрагент КАК Контрагент,
    |        РасчетыСПокупателямиОстатки.Договор КАК Договор,
    |        РасчетыСПокупателямиОстатки.Документ КАК Документ,
    |        РасчетыСПокупателямиОстатки.Заказ КАК Заказ,
    |        РасчетыСПокупателямиОстатки.ТипРасчетов КАК ТипРасчетов,
    |        ЕСТЬNULL(РасчетыСПокупателямиОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
    |        ЕСТЬNULL(РасчетыСПокупателямиОстатки.СуммаВалОстаток, 0) КАК СуммаВалОстаток
    |    ИЗ
    |        РегистрНакопления.РасчетыСПокупателями.Остатки(
    |                ,
    |                Организация = &Организация
    |                    И Контрагент = &Контрагент
    |                    // ТекстДоговорОтбор

    |                    // ТекстДоговорАвтозаполнениеОтбор

    |                    И ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)) КАК РасчетыСПокупателямиОстатки
    |    
    |    ОБЪЕДИНИТЬ ВСЕ
    |    
    |    ВЫБРАТЬ
    |        ДвиженияДокументаРасчетыСПоставщиками.Организация,
    |        ДвиженияДокументаРасчетыСПоставщиками.Контрагент,
    |        ДвиженияДокументаРасчетыСПоставщиками.Договор,
    |        ДвиженияДокументаРасчетыСПоставщиками.Документ,
    |        ДвиженияДокументаРасчетыСПоставщиками.Заказ,
    |        ДвиженияДокументаРасчетыСПоставщиками.ТипРасчетов,
    |        ВЫБОР
    |            КОГДА ДвиженияДокументаРасчетыСПоставщиками.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |                ТОГДА -ЕСТЬNULL(ДвиженияДокументаРасчетыСПоставщиками.Сумма, 0)
    |            ИНАЧЕ ЕСТЬNULL(ДвиженияДокументаРасчетыСПоставщиками.Сумма, 0)
    |        КОНЕЦ,
    |        ВЫБОР
    |            КОГДА ДвиженияДокументаРасчетыСПоставщиками.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |                ТОГДА -ЕСТЬNULL(ДвиженияДокументаРасчетыСПоставщиками.СуммаВал, 0)
    |            ИНАЧЕ ЕСТЬNULL(ДвиженияДокументаРасчетыСПоставщиками.СуммаВал, 0)
    |        КОНЕЦ
    |    ИЗ
    |        РегистрНакопления.РасчетыСПокупателями КАК ДвиженияДокументаРасчетыСПоставщиками
    |    ГДЕ
    |        ДвиженияДокументаРасчетыСПоставщиками.Регистратор = &Ссылка
    |        И ДвиженияДокументаРасчетыСПоставщиками.Период <= &Период
    |        И ДвиженияДокументаРасчетыСПоставщиками.Организация = &Организация
    |        И ДвиженияДокументаРасчетыСПоставщиками.Контрагент = &Контрагент
    |        // ТекстДоговорДвиженийАвтозаполнениеОтбор

    |        И ДвиженияДокументаРасчетыСПоставщиками.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)) КАК РасчетыСПокупателямиОстатки
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютДокумента
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Период, ) КАК КурсыВалютРасчетов
    |        ПО РасчетыСПокупателямиОстатки.Договор.ВалютаРасчетов = КурсыВалютРасчетов.Валюта
    |    ПО ВременнаяТаблицаДоговорыАвтоЗачета.Договор = РасчетыСПокупателямиОстатки.Договор
    |
    |СГРУППИРОВАТЬ ПО
    |    РасчетыСПокупателямиОстатки.Организация,
    |    РасчетыСПокупателямиОстатки.Контрагент,
    |    РасчетыСПокупателямиОстатки.Договор,
    |    РасчетыСПокупателямиОстатки.Документ,
    |    РасчетыСПокупателямиОстатки.Заказ,
    |    РасчетыСПокупателямиОстатки.ТипРасчетов,
    |    РасчетыСПокупателямиОстатки.Документ.Дата,
    |    КурсыВалютДокумента.Курс,
    |    КурсыВалютДокумента.Кратность,
    |    КурсыВалютРасчетов.Курс,
    |    КурсыВалютРасчетов.Кратность,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоДокументам
    |            ТОГДА РасчетыСПокупателямиОстатки.Документ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА РасчетыСПокупателямиОстатки.Контрагент.ВестиРасчетыПоЗаказам
    |            ТОГДА РасчетыСПокупателямиОстатки.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
    |    КОНЕЦ,
    |    ВременнаяТаблицаДоговорыАвтоЗачета.Договор,
    |    ВременнаяТаблицаДоговорыАвтоЗачета.СуммаПлатежа
    |
    |УПОРЯДОЧИТЬ ПО
    |    ДокументДата
    |ИТОГИ
    |    СУММА(СуммаОстаток),
    |    СУММА(СуммаВалОстаток),
    |    СУММА(СуммаВалДокумента),
    |    МАКСИМУМ(СуммаПлатежаАвто)
    |ПО
    |    ДоговорАвто";
        
    Запрос.УстановитьПараметр("Организация", Компания);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("Период", Дата);
    Запрос.УстановитьПараметр("Валюта", ВалютаДенежныхСредств);
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.УстановитьПараметр("ДоговорыАвтоЗачетаДолгов", ДоговорыАвтоЗачетаДолгов.Выгрузить());
    
    НуженОтборПоДоговорам = УправлениеНебольшойФирмойПовтИсп.ТребуетсяКонтрольДоговоровКонтрагентов();
    СписокВидовДоговоров = Справочники.ДоговорыКонтрагентов.ПолучитьСписокВидовДоговораДляДокумента(Ссылка, ВидОперации);
    Если НуженОтборПоДоговорам
       И Контрагент.ВестиРасчетыПоДоговорам Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "// ТекстДоговорОтбор", "И Договор.ВидДоговора В (&СписокВидовДоговоров)");

        Запрос.УстановитьПараметр("СписокВидовДоговоров", СписокВидовДоговоров);
    КонецЕсли;
    
    Если Контрагент.ВестиРасчетыПоДоговорам Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "// ТекстДоговорАвтозаполнениеОтбор", "И Договор В (&ТаблицаДоговоровАвтоЗачета)");

        Запрос.Текст = СтрЗаменить(Запрос.Текст, "// ТекстДоговорДвиженийАвтозаполнениеОтбор", "И ДвиженияДокументаРасчетыСПоставщиками.Договор В (&ТаблицаДоговоровАвтоЗачета)");

        Запрос.УстановитьПараметр("ТаблицаДоговоровАвтоЗачета", ДоговорыАвтоЗачетаДолгов.ВыгрузитьКолонку("Договор"));
    КонецЕсли;
    
    РезультатЗапроса = Запрос.Выполнить();
    
    РасшифровкаПлатежа.Очистить();
    
    ВыборкаИтоги = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаИтоги.Следующий() Цикл
        
        ТекущийДоговор = ВыборкаИтоги.ДоговорАвто;
        
        СтруктураКурсВалютыДоговораПоУмолчанию = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(
            Дата,
            Новый Структура("Валюта", ТекущийДоговор.ВалютаРасчетов)
        );
        
        ВыборкаРезультатаЗапроса = ВыборкаИтоги.Выбрать();
        
        СуммаОсталосьРаспределить = ВыборкаИтоги.СуммаПлатежаАвто;
        
        Пока СуммаОсталосьРаспределить > 0 Цикл
            
            Если ВыборкаРезультатаЗапроса.Следующий() Тогда
                
                Если ВыборкаРезультатаЗапроса.СуммаВалОстаток <= 0 Тогда
                    Продолжить;
                КонецЕсли;
                
                НоваяСтрока = РасшифровкаПлатежа.Добавить();
                ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаРезультатаЗапроса);
                
                Если ВыборкаРезультатаЗапроса.СуммаВалДокумента <= СуммаОсталосьРаспределить Тогда// сумма остатка меньше или равна чем осталось распределить

                    
                    НоваяСтрока.СуммаРасчетов = ВыборкаРезультатаЗапроса.СуммаВалОстаток;
                    НоваяСтрока.СуммаПлатежа = ВыборкаРезультатаЗапроса.СуммаВалДокумента;
                    НоваяСтрока.СтавкаНДС = СтавкаНДСПоУмолчанию;
                    НоваяСтрока.СуммаНДС = НоваяСтрока.СуммаПлатежа - (НоваяСтрока.СуммаПлатежа) / ((СтавкаНДСПоУмолчанию.Ставка + 100) / 100);
                    СуммаОсталосьРаспределить = СуммаОсталосьРаспределить - ВыборкаРезультатаЗапроса.СуммаВалДокумента;
                    
                Иначе// сумма остатка больше чем нужно распределить

                    
                    НоваяСтрока.СуммаРасчетов = УправлениеНебольшойФирмойСервер.ПересчитатьИзВалютыВВалюту(
                        СуммаОсталосьРаспределить,
                        ВыборкаРезультатаЗапроса.КурсДенежныхСредств,
                        ВыборкаРезультатаЗапроса.Курс,
                        ВыборкаРезультатаЗапроса.КратностьДенежныхСредств,
                        ВыборкаРезультатаЗапроса.Кратность
                    );
                    НоваяСтрока.СуммаПлатежа = СуммаОсталосьРаспределить;
                    НоваяСтрока.СтавкаНДС = СтавкаНДСПоУмолчанию;
                    НоваяСтрока.СуммаНДС = НоваяСтрока.СуммаПлатежа - (НоваяСтрока.СуммаПлатежа) / ((СтавкаНДСПоУмолчанию.Ставка + 100) / 100);
                    СуммаОсталосьРаспределить = 0;
                    
                КонецЕсли;
                
            Иначе
                
                НоваяСтрока = РасшифровкаПлатежа.Добавить();
                НоваяСтрока.Договор = ТекущийДоговор;
                
                НоваяСтрока.Курс = ?(
                    СтруктураКурсВалютыДоговораПоУмолчанию.Курс = 0,
                    1,
                    СтруктураКурсВалютыДоговораПоУмолчанию.Курс
                );
                НоваяСтрока.Кратность = ?(
                    СтруктураКурсВалютыДоговораПоУмолчанию.Кратность = 0,
                    1,
                    СтруктураКурсВалютыДоговораПоУмолчанию.Кратность
                );
                НоваяСтрока.СуммаРасчетов = УправлениеНебольшойФирмойСервер.ПересчитатьИзВалютыВВалюту(
                    СуммаОсталосьРаспределить,
                    КурсВалютыДС,
                    НоваяСтрока.Курс,
                    КратностьВалютыДС,
                    НоваяСтрока.Кратность
                );
                НоваяСтрока.ПризнакАванса = Истина;
                НоваяСтрока.СуммаПлатежа = СуммаОсталосьРаспределить;
                НоваяСтрока.СтавкаНДС = СтавкаНДСПоУмолчанию;
                НоваяСтрока.СуммаНДС = НоваяСтрока.СуммаПлатежа - (НоваяСтрока.СуммаПлатежа) / ((СтавкаНДСПоУмолчанию.Ставка + 100) / 100);
                СуммаОсталосьРаспределить = 0;
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЦикла;// Пока ВыборкаИтоги.Следующий() Цикл

    
    Если РасшифровкаПлатежа.Количество() = 0 Тогда
        РасшифровкаПлатежа.Добавить();
        РасшифровкаПлатежа[0].СуммаПлатежа = СуммаДокумента;
    КонецЕсли;
    
    СуммаПлатежа = РасшифровкаПлатежа.Итог("СуммаПлатежа");
    
КонецПроцедуры// ЗаполнитьРасшифровкуПлатежа()


Процедура ЗаполнитьПоСтруктуре(ДанныеЗаполнения) Экспорт
    
    Если ДанныеЗаполнения.Свойство("Основание") Тогда
        Если ДанныеЗаполнения.Свойство("УчитыватьОстатки") 
            И ТипЗнч(ДанныеЗаполнения.Основание) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            ЗаполнитьПоЗаказуПокупателяСУчетомОстатковКОплате(ДанныеЗаполнения.Основание);
        ИначеЕсли ТипЗнч(ДанныеЗаполнения.Основание) = Тип("ДокументСсылка.СчетНаОплату") Тогда
            ЗаполнитьПоСчетуНаОплату(ДанныеЗаполнения, ДанныеЗаполнения.НомерСтроки);
        ИначеЕсли ТипЗнч(ДанныеЗаполнения.Основание) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            ЗаполнитьПоЗаказуПокупателя(ДанныеЗаполнения, ДанныеЗаполнения.НомерСтроки);
        ИначеЕсли ТипЗнч(ДанныеЗаполнения.Документ) = Тип("ДокументСсылка.ПоступлениеДСПлан") Тогда
            ЗаполнитьПоПоступлениюДСПлан(ДанныеЗаполнения.Документ, ДанныеЗаполнения.Сумма);
        КонецЕсли;
    ИначеЕсли ДанныеЗаполнения.Свойство("Документ") Тогда
        Если ТипЗнч(ДанныеЗаполнения.Документ) = Тип("ДокументСсылка.СчетНаОплату") Тогда
            ЗаполнитьПоСчетуНаОплату(ДанныеЗаполнения.Документ, Неопределено, ДанныеЗаполнения.Сумма);
        ИначеЕсли ТипЗнч(ДанныеЗаполнения.Документ) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            ЗаполнитьПоЗаказуПокупателя(ДанныеЗаполнения.Документ, Неопределено, ДанныеЗаполнения.Сумма);
        ИначеЕсли ТипЗнч(ДанныеЗаполнения.Документ) = Тип("ДокументСсылка.ПоступлениеДСПлан") Тогда
            ЗаполнитьПоПоступлениюДСПлан(ДанныеЗаполнения.Документ, ДанныеЗаполнения.Сумма);
        ИначеЕсли ТипЗнч(ДанныеЗаполнения.Документ) = Тип("ДокументСсылка.ПеремещениеДСПлан") Тогда
            ЗаполнитьПоПеремещениюДСПлан(ДанныеЗаполнения.Документ, ДанныеЗаполнения.Сумма);
        ИначеЕсли ТипЗнч(ДанныеЗаполнения.Документ) = Тип("ДокументСсылка.НачисленияПоКредитамИЗаймам") Тогда
            ЗаполнитьПоНачисленияПоКредитамИЗаймам(ДанныеЗаполнения);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

// Процедура заполнения документа на основании.

//
// Параметры:

//    ДанныеЗаполнения - Структура - Данные заполнения документа.
//    

Процедура ЗаполнитьПоПоступлениюДСПлан(ДокументОснование, Сумма = Неопределено) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", ДокументОснование);
    Запрос.УстановитьПараметр("Дата", ?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДата()));
    
    Если Сумма <> Неопределено Тогда
        
        Запрос.УстановитьПараметр("Сумма", Сумма);
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ПРЕДСТАВЛЕНИЕССЫЛКИ(&Ссылка) КАК Основание,
        |    ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПокупателя) КАК ВидОперации,
        |    &Ссылка КАК ДокументОснование,
        |    ТаблицаДокумента.Организация КАК Организация,
        |    ТаблицаДокумента.СтатьяДвиженияДенежныхСредств КАК Статья,
        |    ТаблицаДокумента.Касса КАК Касса,
        |    ТаблицаДокумента.ВалютаДокумента КАК ВалютаДенежныхСредств,
        |    ТаблицаДокумента.Контрагент КАК Контрагент,
        |    ТаблицаДокумента.Договор КАК Договор,
        |    &Сумма КАК СуммаДокумента,
        |    &Сумма КАК СуммаПлатежа,
        |    ТаблицаДокумента.Организация.СтавкаНДСПоУмолчанию КАК СтавкаНДС,
        |    ЕСТЬNULL(КурсыВалютРасчетов.Курс, 1) КАК Курс,
        |    ЕСТЬNULL(КурсыВалютРасчетов.Кратность, 1) КАК Кратность,
        |    ВЫРАЗИТЬ(&Сумма * ВЫБОР
        |            КОГДА ТаблицаДокумента.ВалютаДокумента <> ТаблицаДокумента.Договор.ВалютаРасчетов
        |                    И КурсыВалютРасчетов.Курс <> 0
        |                    И КурсыВалютДокумента.Кратность <> 0
        |                ТОГДА КурсыВалютДокумента.Курс * КурсыВалютРасчетов.Кратность / (ЕСТЬNULL(КурсыВалютРасчетов.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1))
        |            ИНАЧЕ 1
        |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаРасчетов,
        |    ВЫРАЗИТЬ(&Сумма * (1 - 1 / ((ЕСТЬNULL(ТаблицаДокумента.Организация.СтавкаНДСПоУмолчанию.Ставка, 0) + 100) / 100)) КАК ЧИСЛО(15, 2)) КАК СуммаНДС
        |ИЗ
        |    Документ.ПоступлениеДСПлан КАК ТаблицаДокумента
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютРасчетов
        |        ПО ТаблицаДокумента.Договор.ВалютаРасчетов = КурсыВалютРасчетов.Валюта
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютДокумента
        |        ПО ТаблицаДокумента.ВалютаДокумента = КурсыВалютДокумента.Валюта
        |ГДЕ
        |    ТаблицаДокумента.Ссылка = &Ссылка";
        
    Иначе
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ПРЕДСТАВЛЕНИЕССЫЛКИ(&Ссылка) КАК Основание,
        |    ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПокупателя) КАК ВидОперации,
        |    &Ссылка КАК ДокументОснование,
        |    ТаблицаДокумента.Организация КАК Организация,
        |    ТаблицаДокумента.СтатьяДвиженияДенежныхСредств КАК Статья,
        |    ТаблицаДокумента.Касса КАК Касса,
        |    ТаблицаДокумента.ВалютаДокумента КАК ВалютаДенежныхСредств,
        |    ТаблицаДокумента.Контрагент КАК Контрагент,
        |    ТаблицаДокумента.Договор КАК Договор,
        |    ТаблицаДокумента.СуммаДокумента КАК СуммаДокумента,
        |    ТаблицаДокумента.СуммаДокумента КАК СуммаПлатежа,
        |    ТаблицаДокумента.Организация.СтавкаНДСПоУмолчанию КАК СтавкаНДС,
        |    ЕСТЬNULL(КурсыВалютРасчетов.Курс, 1) КАК Курс,
        |    ЕСТЬNULL(КурсыВалютРасчетов.Кратность, 1) КАК Кратность,
        |    ВЫРАЗИТЬ(ТаблицаДокумента.СуммаДокумента * ВЫБОР
        |            КОГДА ТаблицаДокумента.ВалютаДокумента <> ТаблицаДокумента.Договор.ВалютаРасчетов
        |                    И КурсыВалютРасчетов.Курс <> 0
        |                    И КурсыВалютДокумента.Кратность <> 0
        |                ТОГДА КурсыВалютДокумента.Курс * КурсыВалютРасчетов.Кратность / (ЕСТЬNULL(КурсыВалютРасчетов.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1))
        |            ИНАЧЕ 1
        |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаРасчетов,
        |    ВЫРАЗИТЬ(ТаблицаДокумента.СуммаДокумента * (1 - 1 / ((ЕСТЬNULL(ТаблицаДокумента.Организация.СтавкаНДСПоУмолчанию.Ставка, 0) + 100) / 100)) КАК ЧИСЛО(15, 2)) КАК СуммаНДС
        |ИЗ
        |    Документ.ПоступлениеДСПлан КАК ТаблицаДокумента
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютРасчетов
        |        ПО ТаблицаДокумента.Договор.ВалютаРасчетов = КурсыВалютРасчетов.Валюта
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютДокумента
        |        ПО ТаблицаДокумента.ВалютаДокумента = КурсыВалютДокумента.Валюта
        |ГДЕ
        |    ТаблицаДокумента.Ссылка = &Ссылка";
        
    КонецЕсли;
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если НЕ РезультатЗапроса.Пустой() Тогда
        
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
        
        НалогообложениеНДС = УправлениеНебольшойФирмойСервер.НалогообложениеНДС(Организация, , Дата);
        
        РасшифровкаПлатежа.Очистить();
        НоваяСтрока = РасшифровкаПлатежа.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
        Если ПолучитьФункциональнуюОпцию("ОграничиватьДоступНаУровнеЗаписей") Тогда
            ЭтотОбъект.Касса = Справочники.Кассы.ПолучитьКассуСУчетомПравДоступаНаУровнеЗаписей(Выборка.Касса);
        КонецЕсли;
        НоваяСтрока.ПризнакАванса = Истина;
        НоваяСтрока.ДокументПланирования = ДокументОснование;
        
        Если ЗначениеЗаполнено(ДокументОснование.ДокументОснование)
           И ТипЗнч(ДокументОснование.ДокументОснование) = Тип("ДокументСсылка.ЗаказПокупателя")
           И Контрагент.ВестиРасчетыПоЗаказам Тогда
            
            НоваяСтрока.Заказ = ДокументОснование.ДокументОснование;
            
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры// ЗаполнитьПоПоступлениеДСПлан()


// Процедура заполнения документа на основании.

//
// Параметры:

//    ДанныеЗаполнения - Структура - Данные заполнения документа.
//    

Процедура ЗаполнитьПоПеремещениюДСПлан(ДокументОснование, Сумма = Неопределено) Экспорт
    
    Если ДокументОснование.СтатусУтвержденияПлатежа = Перечисления.СтатусыУтвержденияПлатежей.НеУтвержден Тогда
        ВызватьИсключение НСтр("ru = 'Нельзя ввести перемеще
 
 
   KukenKvaken
 
1 - 01.10.18 - 11:02
модуль менеджера



#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда


// Формирует таблицу значений, содержащую данные для проведения по регистру.

// Таблицы значений сохраняет в свойствах структуры "ДополнительныеСвойства".
//

Процедура СформироватьТаблицаДенежныеСредства(ДокументСсылкаПоступлениеВКассу, СтруктураДополнительныеСвойства)
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
    
    Запрос.УстановитьПараметр("Ссылка", ДокументСсылкаПоступлениеВКассу);
    Запрос.УстановитьПараметр("МоментВремени", Новый Граница(СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени, ВидГраницы.Включая));
    Запрос.УстановитьПараметр("ПериодКонтроля", СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени.Дата);
    Запрос.УстановитьПараметр("Организация", СтруктураДополнительныеСвойства.ДляПроведения.Организация);
    Запрос.УстановитьПараметр("ПоступлениеДенежныхСредств", НСтр("ru = 'Поступление денежных средств'"));
    Запрос.УстановитьПараметр("ПоступлениеРозничнойВыручки", НСтр("ru = 'Поступление розничной выручки'"));
    Запрос.УстановитьПараметр("КурсоваяРазница", НСтр("ru='Курсовая разница'"));
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    1 КАК НомерСтроки,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
    |    ТаблицаДокумента.Дата КАК Дата,
    |    ТаблицаДокумента.Организация КАК Организация,
    |    ЗНАЧЕНИЕ(Перечисление.ТипыДенежныхСредств.Наличные) КАК ТипДенежныхСредств,
    |    ТаблицаДокумента.Статья КАК Статья,
    |    ТаблицаДокумента.Касса КАК БанковскийСчетКасса,
    |    ВЫБОР
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПодотчетника)
    |            ТОГДА ТаблицаДокумента.Подотчетник
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.Прочее)
    |            ТОГДА ТаблицаДокумента.Корреспонденция
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ПрочиеРасчеты)
    |            ТОГДА ТаблицаДокумента.Контрагент
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РасчетыПоКредитам)
    |            ТОГДА ТаблицаДокумента.Контрагент
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ВозвратЗаймаСотрудником)
    |            ТОГДА ТаблицаДокумента.Подотчетник
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ПокупкаВалюты)
    |            ТОГДА ТаблицаДокумента.ВалютаДенежныхСредств
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручка)
    |            ТОГДА ТаблицаДокумента.КассаККМ
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручкаСуммовойУчет)
    |            ТОГДА ТаблицаДокумента.СтруктурнаяЕдиница
    |    КОНЕЦ КАК Аналитика,
    |    ТаблицаДокумента.ВалютаДенежныхСредств КАК Валюта,
    |    СУММА(ТаблицаДокумента.Сумма) КАК Сумма,
    |    СУММА(ТаблицаДокумента.СуммаВал) КАК СуммаВал,
    |    СУММА(ТаблицаДокумента.Сумма) КАК СуммаДляОстатка,
    |    СУММА(ТаблицаДокумента.СуммаВал) КАК СуммаВалДляОстатка,
    |    ТаблицаДокумента.КассаСчетУчета КАК СчетУчета,
    |    ВЫБОР
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручка)
    |                ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручкаСуммовойУчет)
    |            ТОГДА &ПоступлениеРозничнойВыручки
    |        ИНАЧЕ &ПоступлениеДенежныхСредств
    |    КОНЕЦ КАК СодержаниеПроводки
    |ПОМЕСТИТЬ ВременнаяТаблицаДенежныеСредства
    |ИЗ
    |    ВременнаяТаблицаШапка КАК ТаблицаДокумента
    |ГДЕ
    |    (ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПодотчетника)
    |            ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.Прочее)
    |            ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ПрочиеРасчеты)
    |            ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РасчетыПоКредитам)
    |            ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ВозвратЗаймаСотрудником)
    |            ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ПокупкаВалюты)
    |            ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручка)
    |            ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручкаСуммовойУчет))
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаДокумента.Дата,
    |    ТаблицаДокумента.Организация,
    |    ТаблицаДокумента.Статья,
    |    ТаблицаДокумента.Касса,
    |    ТаблицаДокумента.ВалютаДенежныхСредств,
    |    ТаблицаДокумента.КассаСчетУчета,
    |    ВЫБОР
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручка)
    |                ИЛИ ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручкаСуммовойУчет)
    |            ТОГДА &ПоступлениеРозничнойВыручки
    |        ИНАЧЕ &ПоступлениеДенежныхСредств
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПодотчетника)
    |            ТОГДА ТаблицаДокумента.Подотчетник
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.Прочее)
    |            ТОГДА ТаблицаДокумента.Корреспонденция
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ПрочиеРасчеты)
    |            ТОГДА ТаблицаДокумента.Контрагент
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РасчетыПоКредитам)
    |            ТОГДА ТаблицаДокумента.Контрагент
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ВозвратЗаймаСотрудником)
    |            ТОГДА ТаблицаДокумента.Подотчетник
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ПокупкаВалюты)
    |            ТОГДА ТаблицаДокумента.ВалютаДенежныхСредств
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручка)
    |            ТОГДА ТаблицаДокумента.КассаККМ
    |        КОГДА ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручкаСуммовойУчет)
    |            ТОГДА ТаблицаДокумента.СтруктурнаяЕдиница
    |    КОНЕЦ
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ВременнаяТаблицаРасшифровкаПлатежа.НомерСтроки,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
    |    ВременнаяТаблицаРасшифровкаПлатежа.Дата,
    |    &Организация,
    |    ЗНАЧЕНИЕ(Перечисление.ТипыДенежныхСредств.Наличные),
    |    ВременнаяТаблицаРасшифровкаПлатежа.Статья,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Касса,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПокупателя)
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Контрагент
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПоставщика)
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Контрагент
    |    КОНЕЦ,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаДенежныхСредств,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаУчета),
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаПлатежа),
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаУчета),
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаПлатежа),
    |    ВременнаяТаблицаРасшифровкаПлатежа.БанковскийСчетКассаСчетУчета,
    |    &ПоступлениеДенежныхСредств
    |ИЗ
    |    ВременнаяТаблицаРасшифровкаПлатежа КАК ВременнаяТаблицаРасшифровкаПлатежа
    |ГДЕ
    |    (ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПокупателя)
    |            ИЛИ ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПоставщика))
    |
    |СГРУППИРОВАТЬ ПО
    |    ВременнаяТаблицаРасшифровкаПлатежа.НомерСтроки,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Дата,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Статья,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Касса,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаДенежныхСредств,
    |    ВременнаяТаблицаРасшифровкаПлатежа.БанковскийСчетКассаСчетУчета,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПокупателя)
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Контрагент
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПоставщика)
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Контрагент
    |    КОНЕЦ
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Организация,
    |    ТипДенежныхСредств,
    |    БанковскийСчетКасса,
    |    Валюта,
    |    СчетУчета";
    
    Запрос.Выполнить();
    
    // Установка исключительной блокировки контролируемых остатков денежных средств.

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВременнаяТаблицаДенежныеСредства.Организация КАК Организация,
    |    ВременнаяТаблицаДенежныеСредства.ТипДенежныхСредств КАК ТипДенежныхСредств,
    |    ВременнаяТаблицаДенежныеСредства.БанковскийСчетКасса КАК БанковскийСчетКасса,
    |    ВременнаяТаблицаДенежныеСредства.Валюта КАК Валюта
    |ИЗ
    |    ВременнаяТаблицаДенежныеСредства";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ДенежныеСредства");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    
    Для каждого КолонкаРезультатЗапроса Из РезультатЗапроса.Колонки Цикл
        ЭлементБлокировки.ИспользоватьИзИсточникаДанных(КолонкаРезультатЗапроса.Имя, КолонкаРезультатЗапроса.Имя);
    КонецЦикла;
    Блокировка.Заблокировать();
    
    НомерЗапроса = 0;
    Запрос.Текст = УправлениеНебольшойФирмойСервер.ПолучитьТекстЗапросаКурсовыеРазницыДенежныеСредства(Запрос.МенеджерВременныхТаблиц, НомерЗапроса);
    МассивРезультатов = Запрос.ВыполнитьПакет();
    
    СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаДенежныеСредства", МассивРезультатов[НомерЗапроса].Выгрузить());
    
КонецПроцедуры// СформироватьТаблицаДенежныеСредства()


// Формирует таблицу значений, содержащую данные для проведения по регистру.

// Таблицы значений сохраняет в свойствах структуры "ДополнительныеСвойства".
//

Процедура СформироватьТаблицаДенежныеСредстваВКассахККМ(ДокументСсылкаПоступлениеВКассу, СтруктураДополнительныеСвойства)
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
    Запрос.Текст =
    
    "ВЫБРАТЬ
    |    1 КАК НомерСтроки,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
    |    ТаблицаДокумента.Дата КАК Дата,
    |    ТаблицаДокумента.Организация КАК Организация,
    |    ТаблицаДокумента.КассаККМ КАК КассаККМ,
    |    ТаблицаДокумента.ВалютаДенежныхСредств КАК Валюта,
    |    СУММА(ТаблицаДокумента.Сумма) КАК Сумма,
    |    СУММА(ТаблицаДокумента.СуммаВал) КАК СуммаВал,
    |    СУММА(ТаблицаДокумента.Сумма) КАК СуммаДляОстатка,
    |    СУММА(ТаблицаДокумента.СуммаВал) КАК СуммаВалДляОстатка,
    |    ТаблицаДокумента.КассаККМСчетУчета КАК СчетУчета,
    |    &РасходДенежныхСредств КАК СодержаниеПроводки
    |ПОМЕСТИТЬ ВременнаяТаблицаДенежныеСредстваВКассахККМ
    |ИЗ
    |    ВременнаяТаблицаШапка КАК ТаблицаДокумента
    |ГДЕ
    |    ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.РозничнаяВыручка)
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаДокумента.Дата,
    |    ТаблицаДокумента.Организация,
    |    ТаблицаДокумента.КассаККМ,
    |    ТаблицаДокумента.ВалютаДенежныхСредств,
    |    ТаблицаДокумента.КассаККМСчетУчета
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Организация,
    |    КассаККМ,
    |    Валюта,
    |    СчетУчета";
    
    Запрос.УстановитьПараметр("Организация", СтруктураДополнительныеСвойства.ДляПроведения.Организация);
    Запрос.УстановитьПараметр("Ссылка", ДокументСсылкаПоступлениеВКассу);
    Запрос.УстановитьПараметр("МоментВремени", Новый Граница(СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени, ВидГраницы.Включая));
    Запрос.УстановитьПараметр("ПериодКонтроля", СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени.Дата);
    Запрос.УстановитьПараметр("РасходДенежныхСредств", НСтр("ru = 'Расход денежных средств из кассы ККМ'"));
    Запрос.УстановитьПараметр("КурсоваяРазница", НСтр("ru='Курсовая разница'"));
    
    Запрос.Выполнить();
    
    // Установка исключительной блокировки контролируемых остатков денежных средств.

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВременнаяТаблицаДенежныеСредстваВКассахККМ.Организация КАК Организация,
    |    ВременнаяТаблицаДенежныеСредстваВКассахККМ.КассаККМ КАК КассаККМ
    |ИЗ
    |    ВременнаяТаблицаДенежныеСредстваВКассахККМ";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ДенежныеСредстваВКассахККМ");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    
    Для каждого КолонкаРезультатЗапроса Из РезультатЗапроса.Колонки Цикл
        ЭлементБлокировки.ИспользоватьИзИсточникаДанных(КолонкаРезультатЗапроса.Имя, КолонкаРезультатЗапроса.Имя);
    КонецЦикла;
    Блокировка.Заблокировать();
    
    НомерЗапроса = 0;
    Запрос.Текст = УправлениеНебольшойФирмойСервер.ПолучитьТекстЗапросаКурсовыеРазницыДенежныеСредстваВКассахККМ(Запрос.МенеджерВременныхТаблиц, НомерЗапроса);
    МассивРезультатов = Запрос.ВыполнитьПакет();
    
    СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаДенежныеСредстваВКассахККМ", МассивРезультатов[НомерЗапроса].Выгрузить());
    
КонецПроцедуры// СформироватьТаблицаДенежныеСредстваВКассахККМ()


// Формирует таблицу значений, содержащую данные для проведения по регистру.

// Таблицы значений сохраняет в свойствах структуры "ДополнительныеСвойства".
//

Процедура СформироватьТаблицаРасчетыСПодотчетниками(ДокументСсылкаПоступлениеВКассу, СтруктураДополнительныеСвойства)
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
    
    Запрос.УстановитьПараметр("Ссылка", ДокументСсылкаПоступлениеВКассу);
    Запрос.УстановитьПараметр("МоментВремени", Новый Граница(СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени, ВидГраницы.Включая));
    Запрос.УстановитьПараметр("ПериодКонтроля", СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени.Дата);
    Запрос.УстановитьПараметр("Организация", СтруктураДополнительныеСвойства.ДляПроведения.Организация);
    Запрос.УстановитьПараметр("ПогашениеДолгаПодотчетника", НСтр("ru = 'Погашение долга подотчетника'"));
    Запрос.УстановитьПараметр("КурсоваяРазница", НСтр("ru='Курсовая разница'"));
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    1 КАК НомерСтроки,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
    |    ТаблицаДокумента.Касса КАК Касса,
    |    ТаблицаДокумента.Документ КАК Документ,
    |    ТаблицаДокумента.Подотчетник КАК Сотрудник,
    |    ТаблицаДокумента.Дата КАК Дата,
    |    ТаблицаДокумента.Организация КАК Организация,
    |    ТаблицаДокумента.ВалютаДенежныхСредств КАК Валюта,
    |    СУММА(ТаблицаДокумента.Сумма) КАК Сумма,
    |    СУММА(ТаблицаДокумента.СуммаВал) КАК СуммаВал,
    |    -СУММА(ТаблицаДокумента.Сумма) КАК СуммаДляОстатка,
    |    -СУММА(ТаблицаДокумента.СуммаВал) КАК СуммаВалДляОстатка,
    |    ТаблицаДокумента.ПодотчетникСчетРасчетовСПодотчетниками КАК СчетУчета,
    |    &ПогашениеДолгаПодотчетника КАК СодержаниеПроводки
    |ПОМЕСТИТЬ ВременнаяТаблицаРасчетыСПодотчетниками
    |ИЗ
    |    ВременнаяТаблицаШапка КАК ТаблицаДокумента
    |ГДЕ
    |    ТаблицаДокумента.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПодотчетника)
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаДокумента.Касса,
    |    ТаблицаДокумента.Документ,
    |    ТаблицаДокумента.Подотчетник,
    |    ТаблицаДокумента.Дата,
    |    ТаблицаДокумента.Организация,
    |    ТаблицаДокумента.ВалютаДенежныхСредств,
    |    ТаблицаДокумента.ПодотчетникСчетРасчетовСПодотчетниками
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Организация,
    |    Сотрудник,
    |    Валюта,
    |    Документ,
    |    СчетУчета";
    
    Запрос.Выполнить();
    
    // Установка исключительной блокировки контролируемых остатков расчетов с подотчетными лицами.

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВременнаяТаблицаРасчетыСПодотчетниками.Организация КАК Организация,
    |    ВременнаяТаблицаРасчетыСПодотчетниками.Сотрудник КАК Сотрудник,
    |    ВременнаяТаблицаРасчетыСПодотчетниками.Валюта КАК Валюта,
    |    ВременнаяТаблицаРасчетыСПодотчетниками.Документ КАК Документ
    |ИЗ
    |    ВременнаяТаблицаРасчетыСПодотчетниками";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.РасчетыСПодотчетниками");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    
    Для каждого КолонкаРезультатЗапроса Из РезультатЗапроса.Колонки Цикл
        ЭлементБлокировки.ИспользоватьИзИсточникаДанных(КолонкаРезультатЗапроса.Имя, КолонкаРезультатЗапроса.Имя);
    КонецЦикла;
    Блокировка.Заблокировать();
    
    НомерЗапроса = 0;
    Запрос.Текст = УправлениеНебольшойФирмойСервер.ПолучитьТекстЗапросаКурсовыеРазницыРасчетыСПодотчетниками(Запрос.МенеджерВременныхТаблиц, НомерЗапроса);
    МассивРезультатов = Запрос.ВыполнитьПакет();
    
    СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаРасчетыСПодотчетниками", МассивРезультатов[НомерЗапроса].Выгрузить());
    
КонецПроцедуры// СформироватьТаблицаРасчетыСПодотчетниками()


// Формирует таблицу значений, содержащую данные для проведения по регистру.

// Таблицы значений сохраняет в свойствах структуры "ДополнительныеСвойства".
//

Процедура СформироватьТаблицаРасчетыСПокупателями(ДокументСсылкаПоступлениеВКассу, СтруктураДополнительныеСвойства)
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
    
    Запрос.УстановитьПараметр("Ссылка", ДокументСсылкаПоступлениеВКассу);
    Запрос.УстановитьПараметр("МоментВремени", Новый Граница(СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени, ВидГраницы.Включая));
    Запрос.УстановитьПараметр("ПериодКонтроля", СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени.Дата);
    Запрос.УстановитьПараметр("Организация", СтруктураДополнительныеСвойства.ДляПроведения.Организация);
    Запрос.УстановитьПараметр("ВозникновениеАвансаПокупателя", "Возникновение аванса покупателя");
    Запрос.УстановитьПараметр("ПогашениеОбязательствПокупателя", "Погашение обязательств покупателя");
    Запрос.УстановитьПараметр("КурсоваяРазница", НСтр("ru='Курсовая разница'"));
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВременнаяТаблицаРасшифровкаПлатежа.НомерСтроки КАК НомерСтроки,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоДокументам
    |            ТОГДА ВЫБОР
    |                    КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |                        ТОГДА &Ссылка
    |                    ИНАЧЕ ВременнаяТаблицаРасшифровкаПлатежа.Документ
    |                КОНЕЦ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ КАК Документ,
    |    &Организация КАК Организация,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Касса КАК Касса,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Контрагент КАК Контрагент,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Договор КАК Договор,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоЗаказам
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    |    КОНЕЦ КАК Заказ,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Дата КАК Дата,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)
    |    КОНЕЦ КАК ТипРасчетов,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаПлатежа) КАК СуммаПлатежа,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаУчета) КАК Сумма,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаРасчетов) КАК СуммаВал,
    |    -СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаУчета) КАК СуммаДляОстатка,
    |    -СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаРасчетов) КАК СуммаВалДляОстатка,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаАвансовПокупателя
    |        ИНАЧЕ ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаРасчетовСПокупателем
    |    КОНЕЦ КАК СчетУчета,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаРасчетов КАК Валюта,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаДенежныхСредств КАК ВалютаДенежныхСредств,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА &ВозникновениеАвансаПокупателя
    |        ИНАЧЕ &ПогашениеОбязательствПокупателя
    |    КОНЕЦ КАК СодержаниеПроводки
    |ПОМЕСТИТЬ ВременнаяТаблицаРасчетыСПокупателями
    |ИЗ
    |    ВременнаяТаблицаРасшифровкаПлатежа КАК ВременнаяТаблицаРасшифровкаПлатежа
    |ГДЕ
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПокупателя)
    |
    |СГРУППИРОВАТЬ ПО
    |    ВременнаяТаблицаРасшифровкаПлатежа.НомерСтроки,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Касса,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Контрагент,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Договор,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Дата,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаРасчетов,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаДенежныхСредств,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоДокументам
    |            ТОГДА ВЫБОР
    |                    КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |                        ТОГДА &Ссылка
    |                    ИНАЧЕ ВременнаяТаблицаРасшифровкаПлатежа.Документ
    |                КОНЕЦ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоЗаказам
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаАвансовПокупателя
    |        ИНАЧЕ ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаРасчетовСПокупателем
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА &ВозникновениеАвансаПокупателя
    |        ИНАЧЕ &ПогашениеОбязательствПокупателя
    |    КОНЕЦ
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Организация,
    |    Контрагент,
    |    Договор,
    |    Валюта,
    |    Документ,
    |    Заказ,
    |    ТипРасчетов,
    |    СчетУчета";
    
    Запрос.Выполнить();
    
    // Установка исключительной блокировки контролируемых остатков расчетов с контрагентами.

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВременнаяТаблицаРасчетыСПокупателями.Организация КАК Организация,
    |    ВременнаяТаблицаРасчетыСПокупателями.Контрагент КАК Контрагент,
    |    ВременнаяТаблицаРасчетыСПокупателями.Договор КАК Договор,
    |    ВременнаяТаблицаРасчетыСПокупателями.Документ КАК Документ,
    |    ВременнаяТаблицаРасчетыСПокупателями.Заказ КАК Заказ,
    |    ВременнаяТаблицаРасчетыСПокупателями.ТипРасчетов КАК ТипРасчетов
    |ИЗ
    |    ВременнаяТаблицаРасчетыСПокупателями";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.РасчетыСПокупателями");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    
    Для каждого КолонкаРезультатЗапроса Из РезультатЗапроса.Колонки Цикл
        ЭлементБлокировки.ИспользоватьИзИсточникаДанных(КолонкаРезультатЗапроса.Имя, КолонкаРезультатЗапроса.Имя);
    КонецЦикла;
    Блокировка.Заблокировать();
    
    НомерЗапроса = 0;
    Запрос.Текст = УправлениеНебольшойФирмойСервер.ПолучитьТекстЗапросаКурсовыеРазницыРасчетыСПокупателями(Запрос.МенеджерВременныхТаблиц, Ложь, НомерЗапроса);
    МассивРезультатов = Запрос.ВыполнитьПакет();
    
    СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаРасчетыСПокупателями", МассивРезультатов[НомерЗапроса].Выгрузить());
    
КонецПроцедуры// СформироватьТаблицаРасчетыСПокупателями()


// Формирует таблицу значений, содержащую данные для проведения по регистру.

// Таблицы значений сохраняет в свойствах структуры "ДополнительныеСвойства".
//

Процедура СформироватьТаблицаРасчетыСПоставщиками(ДокументСсылкаПоступлениеВКассу, СтруктураДополнительныеСвойства)
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
    
    Запрос.УстановитьПараметр("Ссылка", ДокументСсылкаПоступлениеВКассу);
    Запрос.УстановитьПараметр("МоментВремени", Новый Граница(СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени, ВидГраницы.Включая));
    Запрос.УстановитьПараметр("ПериодКонтроля", СтруктураДополнительныеСвойства.ДляПроведения.МоментВремени.Дата);
    Запрос.УстановитьПараметр("Организация", СтруктураДополнительныеСвойства.ДляПроведения.Организация);
    Запрос.УстановитьПараметр("ПогашениеАвансаПоставщику", НСтр("ru = 'Погашение аванса поставщику'"));
    Запрос.УстановитьПараметр("ВозникновениеОбязательствПередПоставщиком", НСтр("ru = 'Возникновение обязательств перед поставщиком'"));
    Запрос.УстановитьПараметр("КурсоваяРазница", НСтр("ru='Курсовая разница'"));
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВременнаяТаблицаРасшифровкаПлатежа.НомерСтроки КАК НомерСтроки,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоДокументам
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Документ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ КАК Документ,
    |    &Организация КАК Организация,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Касса КАК Касса,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Контрагент КАК Контрагент,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Договор КАК Договор,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоЗаказам
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
    |    КОНЕЦ КАК Заказ,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Дата КАК Дата,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)
    |    КОНЕЦ КАК ТипРасчетов,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаПлатежа) КАК СуммаПлатежа,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаУчета) КАК Сумма,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаРасчетов) КАК СуммаВал,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаУчета) КАК СуммаДляОстатка,
    |    СУММА(ВременнаяТаблицаРасшифровкаПлатежа.СуммаРасчетов) КАК СуммаВалДляОстатка,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаАвансовПоставщику
    |        ИНАЧЕ ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаРасчетовСПоставщиком
    |    КОНЕЦ КАК СчетУчета,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаРасчетов КАК Валюта,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаДенежныхСредств КАК ВалютаДенежныхСредств,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА &ПогашениеАвансаПоставщику
    |        ИНАЧЕ &ВозникновениеОбязательствПередПоставщиком
    |    КОНЕЦ КАК СодержаниеПроводки
    |ПОМЕСТИТЬ ВременнаяТаблицаРасчетыСПоставщиками
    |ИЗ
    |    ВременнаяТаблицаРасшифровкаПлатежа КАК ВременнаяТаблицаРасшифровкаПлатежа
    |ГДЕ
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеВКассу.ОтПоставщика)
    |
    |СГРУППИРОВАТЬ ПО
    |    ВременнаяТаблицаРасшифровкаПлатежа.НомерСтроки,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Касса,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Контрагент,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Договор,
    |    ВременнаяТаблицаРасшифровкаПлатежа.Дата,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаРасчетов,
    |    ВременнаяТаблицаРасшифровкаПлатежа.ВалютаДенежныхСредств,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоДокументам
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Документ
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ВестиРасчетыПоЗаказам
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.Заказ
    |        ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс)
    |        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг)
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаАвансовПоставщику
    |        ИНАЧЕ ВременнаяТаблицаРасшифровкаПлатежа.СчетУчетаРасчетовСПоставщиком
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ВременнаяТаблицаРасшифровкаПлатежа.ПризнакАванса
    |            ТОГДА &ПогашениеАвансаПоставщику
    |        ИНАЧЕ &ВозникновениеОбязательствПередПоставщиком
    |    КОНЕЦ
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Организация,
    |    Контрагент,
    |    Договор,
    |    Валюта,
    |    Документ,
    |    Заказ,
    |    ТипРасчетов,
    |    СчетУчета";
    
    Запрос.Выполнить();
    
    // Установка исключительной блокировки контролируемых остатков расчетов с контрагентами.

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВременнаяТаблицаРасчетыСПоставщиками.Организация КАК Организация,
    |    ВременнаяТаблицаРасчетыСПоставщиками.Контрагент КАК Контрагент,
    |    ВременнаяТаблицаРасчетыСПоставщиками.Договор КАК Договор,
    |    ВременнаяТаблицаРасчетыСПоставщиками.Документ КАК Документ,
    |    ВременнаяТаблицаРасчетыСПоставщиками.Заказ КАК Заказ,
    |    ВременнаяТаблицаРасчетыСПоставщиками.ТипРасчетов КАК ТипРасчетов
    |ИЗ
    |    ВременнаяТаблицаРасчетыСПоставщиками";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.РасчетыСПоставщиками");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
    
    Для каждого КолонкаРезультатЗапроса Из РезультатЗапроса.Колонки Цикл
        ЭлементБлоки
   Ёпрст
 
2 - 01.10.18 - 11:31
(0)
Смотри в сторону
ОбработкаПолученияПредставления +
ОбработкаПолученияПолейПредставления
   Ёпрст
 
3 - 01.10.18 - 11:33
Хотя, в таком случае, во всех местах будет такое представление ..
Тогда, только свой текст на гиперрсылке делать
   KukenKvaken
 
4 - 01.10.18 - 11:40
(2) (3) Да мне в принципе пофиг на все места. там печатается только договор но у него свои тараканы и ПКО если оплата наличкой. при безнале загружается из клиент банка.
   Ёпрст
 
5 - 01.10.18 - 11:41
(4) ну , тогда в модуле менеджера этого документа пропиши 2 эти процы.. будет тебе как хочешь

Список тем форума
Рекламное место пустует  Рекламное место пустует
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует