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

1С:Предприятие ::

Метки: 

Акт сверки взаиморасчетов в разрезе договоров УПП

Я
   Gemini
 
28.03.18 - 15:33
В УПП  нужно сделать Акт сверки с разбивкой по договорам. Хочу сделать впф. Для этого Процедуру заполнения документа акта сверки перенесла в свою обработку (при отсутствии договора в документе не подтягиваются Корректировки, а при разбивке они нужны). Не работает запрос. Загружаю Запрос в Консоль выдает пустую таблицу. тдРезультат пуста. Помогите пж, подскажите что не так. Конфу не очень хочется трогать.

Код 1C v 8.2 УП
 перем Организация, Контрагент, ДоговорКонтрагента, Сделка, ДатаНачала, ДатаОкончания, Комментарий, Ответственный, ВалютаДокумента, ПредставительОрганизации, ПредставительКонтрагента, ОстатокНаНачало, Расхождение, СверкаСогласована, ПоДаннымОрганизации, ПоДаннымКонтрагента, СписокСчетов, Дата, Номер, Проведен, Ссылка;
перем МассивОбъектов, ОбъектыПечати, МетаданныеПоДокументам, мВалютаРегламентированногоУчета;


Организация = СсылкаНаОбъект.Организация;
Контрагент = СсылкаНаОбъект.Контрагент;
ДоговорКонтрагента = СсылкаНаОбъект.ДоговорКонтрагента;
Сделка = СсылкаНаОбъект.Сделка;
ДатаНачала = СсылкаНаОбъект.ДатаНачала;
ДатаОкончания = СсылкаНаОбъект.ДатаОкончания;
Комментарий = СсылкаНаОбъект.Комментарий;
Ответственный = СсылкаНаОбъект.Ответственный;
ВалютаДокумента = СсылкаНаОбъект.ВалютаДокумента;
ПредставительОрганизации = СсылкаНаОбъект.ПредставительОрганизации;
ПредставительКонтрагента = СсылкаНаОбъект.ПредставительКонтрагента;
ОстатокНаНачало = СсылкаНаОбъект.ОстатокНаНачало;
Расхождение = СсылкаНаОбъект.Расхождение;
СверкаСогласована = СсылкаНаОбъект.СверкаСогласована;
ПоДаннымОрганизации = СсылкаНаОбъект.ПоДаннымОрганизации;
ПоДаннымКонтрагента = СсылкаНаОбъект.ПоДаннымКонтрагента;
СписокСчетов = СсылкаНаОбъект.СписокСчетов;
Дата = СсылкаНаОбъект.Дата;
Номер = СсылкаНаОбъект.Номер;
Проведен = СсылкаНаОбъект.Проведен;
ПометкаУдаления = СсылкаНаОбъект.ПометкаУдаления;
Ссылка = СсылкаНаОбъект;
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(СсылкаНаОбъект);
ОбъектыПечати = Новый СписокЗначений;


КоличествоСчетов = СписокСчетов.Количество();


ФильтрСписокСчетов = Новый массив();
Для каждого СтрокаСчета Из СписокСчетов Цикл
    Если НЕ ЗначениеЗаполнено(СтрокаСчета.Счет) или СтрокаСчета.УчаствуетВРасчетах = Ложь Тогда
        Продолжить;
    Иначе
        ФильтрСписокСчетов.Добавить(СтрокаСчета.Счет);
    КонецЕсли; 
КонецЦикла; 
ЗаполнитьПоДаннымБухгалтерскогоУчетаВТ(ФильтрСписокСчетов);
//Процедура заполнения

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


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


АналитикаРасчетов = новый Массив();
АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
Запрос.УстановитьПараметр("АналитикаРасчетов",    АналитикаРасчетов);


Запрос.УстановитьПараметр("ДоговорКонтрагента", ?(НЕ ЗначениеЗаполнено(ДоговорКонтрагента),Неопределено,ДоговорКонтрагента));


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

|ВЫБРАТЬ
|    ВременнаяТаблицаДанных.Дата,
|    ВременнаяТаблицаДанных.ДокументРегистратор,
|    ВременнаяТаблицаДанных.Договор,
|    СУММА(ВременнаяТаблицаДанных.Дебет) КАК Дебет,
|    СУММА(ВременнаяТаблицаДанных.Кредит) КАК Кредит,
|    ВременнаяТаблицаДанных.НомерВходящегоДокумента,
|    ВременнаяТаблицаДанных.ДатаВходящегоДокумента,
|    ВременнаяТаблицаДанных.КорСчет,
|    ВЫРАЗИТЬ(ВременнаяТаблицаДанных.КорСубконто1 КАК Справочник.ПрочиеДоходыИРасходы) КАК КорСубконто1,
|    ВременнаяТаблицаДанных.Валюта,
|    СУММА(ВременнаяТаблицаДанных.ВалютнаяСуммаОборот) КАК ВалютнаяСуммаОборот,
|    ВременнаяТаблицаДанных.ВидПрочихДоходовИРасходов,
|    ВременнаяТаблицаДанных.Счет
|ИЗ
|    ВременнаяТаблицаДанных КАК ВременнаяТаблицаДанных
|
|СГРУППИРОВАТЬ ПО
|    ВременнаяТаблицаДанных.Договор,
|    ВременнаяТаблицаДанных.НомерВходящегоДокумента,
|    ВременнаяТаблицаДанных.ДатаВходящегоДокумента,
|    ВременнаяТаблицаДанных.КорСчет,
|    ВЫРАЗИТЬ(ВременнаяТаблицаДанных.КорСубконто1 КАК Справочник.ПрочиеДоходыИРасходы),
|    ВременнаяТаблицаДанных.Валюта,
|    ВременнаяТаблицаДанных.ВидПрочихДоходовИРасходов,
|    ВременнаяТаблицаДанных.Счет,
|    ВременнаяТаблицаДанных.Дата,
|    ВременнаяТаблицаДанных.ДокументРегистратор
|
|ИМЕЮЩИЕ
|    НЕ(СУММА(ВременнаяТаблицаДанных.Дебет) = 0
|            И СУММА(ВременнаяТаблицаДанных.Кредит) = 0)
|
|УПОРЯДОЧИТЬ ПО
|    ВременнаяТаблицаДанных.Дата,
|    ВременнаяТаблицаДанных.ДокументРегистратор";


Выборка = Запрос.Выполнить().Выбрать();
ТдРезультат=Запрос.Выполнить().Выгрузить();
 
  Рекламное место пустует
   Базис
 
1 - 28.03.18 - 15:40
Разбирайся в консоли, убирай фильтры, упрощай его, смотри все поля и их типы.

Код читать не буду, своего достаточно.
   Базис
 
2 - 28.03.18 - 15:41
Читать-колотить! Ты даже не запрос, я всю простыню наложил(а).
   Gemini
 
3 - 28.03.18 - 15:50
Спасибо за дельный совет.  Я и разбираюсь в консоли. Простыню  наложила, чтобы было понятно, что параметры в запрос загружаются. Ну не ас я по сложным запросам, поэтому и прошу помощи, а не комментариев какая я "читать-колотить"
   isa2net
 
4 - 28.03.18 - 15:56
(0) Параметры в консоли задали? Там у вас параметр &ФильтрСписокСчетов как массив, как его задали?
   Gemini
 
5 - 28.03.18 - 15:56
Код 1C v 8.2 УП
ВЫБРАТЬ
    ХозрасчетныйОбороты.Период КАК Дата,
    ХозрасчетныйОбороты.Регистратор КАК ДокументРегистратор,
    ХозрасчетныйОбороты.Субконто2 КАК Договор,
    ВЫБОР
        КОГДА &Валюта = НЕОПРЕДЕЛЕНО
            ТОГДА ХозрасчетныйОбороты.СуммаОборотДт
        ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт
    КОНЕЦ КАК Дебет,
    ВЫБОР
        КОГДА &Валюта = НЕОПРЕДЕЛЕНО
            ТОГДА ХозрасчетныйОбороты.СуммаОборотКт
        ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт
    КОНЕЦ КАК Кредит,
    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.НомерВходящегоДокумента, НЕОПРЕДЕЛЕНО) КАК НомерВходящегоДокумента,
    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.ДатаВходящегоДокумента, НЕОПРЕДЕЛЕНО) КАК ДатаВходящегоДокумента,
    ХозрасчетныйОбороты.КорСчет,
    ХозрасчетныйОбороты.КорСубконто1,
    ХозрасчетныйОбороты.КорСубконто2,
    ХозрасчетныйОбороты.КорСубконто3,
    ХозрасчетныйОбороты.Валюта,
    ХозрасчетныйОбороты.ВалютнаяСуммаОборот,
    ВЫБОР
        КОГДА ХозрасчетныйОбороты.КорСубконто1 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
            ТОГДА ХозрасчетныйОбороты.КорСубконто1.ВидПрочихДоходовИРасходов
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК ВидПрочихДоходовИРасходов,
    ХозрасчетныйОбороты.Счет
ПОМЕСТИТЬ ВременнаяТаблицаДанных
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(
            &ДатаНачала,
            &ДатаОкончания,
            Регистратор,
            Счет В (&ФильтрСписокСчетов),
            &АналитикаРасчетов,
            Организация = &Организация
                И ВЫБОР
                    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                        ТОГДА ИСТИНА
                    ИНАЧЕ Валюта = &Валюта
                КОНЕЦ
                И Субконто1 = &Контрагент
                И ВЫБОР
                    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
                        ТОГДА ИСТИНА
                    ИНАЧЕ Субконто2 = &ДоговорКонтрагента
                КОНЕЦ,
            ,
            ) КАК ХозрасчетныйОбороты
ГДЕ
    ВЫБОР
            КОГДА ХозрасчетныйОбороты.КорСчет В (&ФильтрСписокСчетов)
                ТОГДА ВЫБОР
                        КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
                            ТОГДА НЕ ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО) = &Контрагент
                        ИНАЧЕ НЕ(ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто1, НЕОПРЕДЕЛЕНО) = &Контрагент
                                    И ЕСТЬNULL(ХозрасчетныйОбороты.КорСубконто2, НЕОПРЕДЕЛЕНО) = &ДоговорКонтрагента)
                    КОНЕЦ
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И НЕ(ВЫБОР
                    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                        ТОГДА ХозрасчетныйОбороты.СуммаОборотДт
                    ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт
                КОНЕЦ = 0
                И ВЫБОР
                    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
                        ТОГДА ХозрасчетныйОбороты.СуммаОборотКт
                    ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт
                КОНЕЦ = 0)
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВременнаяТаблицаДанных.Дата,
    ВременнаяТаблицаДанных.ДокументРегистратор,
    ВременнаяТаблицаДанных.Договор,
    СУММА(ВременнаяТаблицаДанных.Дебет) КАК Дебет,
    СУММА(ВременнаяТаблицаДанных.Кредит) КАК Кредит,
    ВременнаяТаблицаДанных.НомерВходящегоДокумента,
    ВременнаяТаблицаДанных.ДатаВходящегоДокумента,
    ВременнаяТаблицаДанных.КорСчет,
    ВЫРАЗИТЬ(ВременнаяТаблицаДанных.КорСубконто1 КАК Справочник.ПрочиеДоходыИРасходы) КАК КорСубконто1,
    ВременнаяТаблицаДанных.Валюта,
    СУММА(ВременнаяТаблицаДанных.ВалютнаяСуммаОборот) КАК ВалютнаяСуммаОборот,
    ВременнаяТаблицаДанных.ВидПрочихДоходовИРасходов,
    ВременнаяТаблицаДанных.Счет
ИЗ
    ВременнаяТаблицаДанных КАК ВременнаяТаблицаДанных

СГРУППИРОВАТЬ ПО
    ВременнаяТаблицаДанных.Договор,
    ВременнаяТаблицаДанных.НомерВходящегоДокумента,
    ВременнаяТаблицаДанных.ДатаВходящегоДокумента,
    ВременнаяТаблицаДанных.КорСчет,
    ВЫРАЗИТЬ(ВременнаяТаблицаДанных.КорСубконто1 КАК Справочник.ПрочиеДоходыИРасходы),
    ВременнаяТаблицаДанных.Валюта,
    ВременнаяТаблицаДанных.ВидПрочихДоходовИРасходов,
    ВременнаяТаблицаДанных.Счет,
    ВременнаяТаблицаДанных.Дата,
    ВременнаяТаблицаДанных.ДокументРегистратор

ИМЕЮЩИЕ
    НЕ(СУММА(ВременнаяТаблицаДанных.Дебет) = 0
            И СУММА(ВременнаяТаблицаДанных.Кредит) = 0)

УПОРЯДОЧИТЬ ПО
    ВременнаяТаблицаДанных.Дата,
    ВременнаяТаблицаДанных.ДокументРегистратор
   Gemini
 
6 - 28.03.18 - 16:00
(4) да, я через отладку посмотрела, что программа помещает в этот параметр, и добавила Список значений в консоли
   Gantosha
 
7 - 28.03.18 - 16:08
кинь почту .. у меня есть такая ерунда но для бухгалтерии .. не знаю зарабаотает ли для упп .. я ее лет 5 назад делал .. что там не помню.. помню лишь что она разворачивает по договорам ..но там есть прикол, что все должно быть в неком периода ..толи год толи еще что то ..так как иначе никак .. не помню как делал.
   Gemini
 
8 - 28.03.18 - 16:12
(7) gemini.2014@yandex.ru
   Gantosha
 
9 - 28.03.18 - 16:15
кинул .. я правда не помню что там .. смотрите на запрос ..он должен быть похожий. У меня тоже разворачивают по документам и довговорам ..но это так давно было, что все забыто.
   Gemini
 
10 - 28.03.18 - 16:17
В конфе я исправила сам запрос, он мне заполняет с Корректировками и соответственно моя до этого написанная впф печатает все как надо в разрезе договоров, потому как берет данные из заполненной табличной части. но хотелось бы вообще не трогать модуль документа.
 
  Рекламное место пустует
   Gemini
 
11 - 28.03.18 - 16:17
(9) огромное спасибо))
   Gemini
 
12 - 28.03.18 - 18:19
В запросе проблема с валютой, если ставишь USD(валюту договора) -  выгружает, если руб - не выгружает. А мне нужны рублевые обороты((
   shuhard
 
13 - 28.03.18 - 18:31
(12) бяда


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