Имя: Пароль:
1C
 
разное поведение запроса в консоли и в обработке
0 vde69
 
16.10.17
11:21
ОБЫЧНЫЕ формы, есть простая процедура (см ниже) выдает задвоеный результат, ровно в 2 раза больше чем надо...

запрос скопированный в консоль запросов возвращает валидный результат (правильный). Кеш чистил, бух итоги пересчитывал... Если обработку сохранить во внешнюю то то же имеем задвоенный результат.

Куда копать?



//!
Процедура мЗаполнить(мТД)
    
    
    // получим данные
    Для Каждого мНастройки из НастрокаДокументов Цикл

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

А так, параметры сымотри
2 DrShad
 
16.10.17
11:30
а вообще запрос странный, зачем ОстаткиИОбороты да еще и периодичность Регистратор?
3 vde69
 
модератор
16.10.17
11:31
(1) параметры идентичные акромя одного

в обработке "Документы" - пустой массив, в консоле - неопределено

счет не содержит суб счетов
4 DrShad
 
16.10.17
11:32
сорри  не заметил условия
5 vde69
 
модератор
16.10.17
11:32
(2) мне нужно исключить обороты по регламентным документам, тут или делать два запроса и потом вычитать, или так...
6 Ёпрст
 
16.10.17
11:32
(3) а чего регистратор унутрь вт не положишь ?
И зачем обороты с начала ведения базы ?
7 DrShad
 
16.10.17
11:35
ПроверкаСтроки(НоваяСтрока)

а тут что?
8 vde69
 
16.10.17
11:35
(6) это не начало ведения учета, это ежемесячная обработка которая сворачивает дебиторку операторов на головного оператора и на его основной договор.
9 vde69
 
16.10.17
11:36
(7) это не в счет, я смотрел результат запроса - задваивает еще до цикла
10 DrShad
 
16.10.17
11:37
ну хоть скрины кинь, а то не верим
11 vde69
 
16.10.17
11:46
короче дело в параметре "Документы"

в консоле запросов:
если этот параметр ставлю неопределено - результат верный
если тип массив (пустой) - результат задвоен

кто может объяснить такое поведение?
12 Ёпрст
 
16.10.17
11:52
(8) у тя же нет начальной даты.
Обороты и итоги будут с начала всех времён до конечной даты
13 vvp91
 
16.10.17
11:53
(11) В выборке присутствуют записи без регистратора, т.е. такие записи, в которых регистратор равен Неопределено.

Условие <НЕ Регистратор В (Неопределено)> выкинет такие записи.

Условие <НЕ Регистратор В (&ПустойМассив)> такие записи оставит.
14 vde69
 
16.10.17
12:00
(13) действительно !!! буду копать в эту сторону
15 vde69
 
16.10.17
12:02
добавил метод дополнения "Движения" вроде теперь похоже на правду стало