Имя: Пароль:
1C
1С v8
Построитель отчета и Запрос.Выполнить() возвращается разный результат
,
0 Sasha_H
 
09.08.12
13:37
собственно сабж.

Что конкретно происходит один и тот-же запрос выполняю на двух разных консолях запроса. Консоль запросов который использует "Построитель" возвращает пустые данные, а вот консоль запроса котороя исполнена через метод Запрос.Выполнить() возвращает данные.

Сам запрос:

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

ИНДЕКСИРОВАТЬ ПО
   ДокументРасчетовСКонтрагентом
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВремТаблица.ДокументРасчетовСКонтрагентом
ПОМЕСТИТЬ ДокРасчетов
ИЗ
   ВремТаблица КАК ВремТаблица

СГРУППИРОВАТЬ ПО
   ВремТаблица.ДокументРасчетовСКонтрагентом
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДокРасчетов.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
   ДвиженияДенежныхСредствОбороты.ДокументДвижения КАК ДокументДвижения,
   ДвиженияДенежныхСредствОбороты.ДокументДвижения.Дата КАК ДатаСортировки
ИЗ
   ДокРасчетов КАК ДокРасчетов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(, &ДатаАнализа, , ) КАК ДвиженияДенежныхСредствОбороты
       ПО ДокРасчетов.ДокументРасчетовСКонтрагентом = ДвиженияДенежныхСредствОбороты.ДокументРасчетовСКонтрагентом

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентами.ДокументРасчетовСКонтрагентом,
   ВзаиморасчетыСКонтрагентами.Регистратор,
   ВзаиморасчетыСКонтрагентами.Регистратор.Дата
ИЗ
   ВремТаблица КАК ВремТаблица
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(, &ДатаАнализа, Регистратор, ) КАК ВзаиморасчетыСКонтрагентами
       ПО ВремТаблица.ДокументРасчетовСКонтрагентом = ВзаиморасчетыСКонтрагентами.ДокументРасчетовСКонтрагентом
ГДЕ
   (ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
           ИЛИ ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.КорректировкаДолга)

УПОРЯДОЧИТЬ ПО
   ДатаСортировки
1 hhhh
 
09.08.12
13:42
мы то откуда знаем, каких-то левых консолей наскачивали в инете и теперь сидите, удивляетесь.
2 Sasha_H
 
09.08.12
13:44
(1) никак нет, проверка кодом тот же результатик дала.


Построитель = Новый ПостроительОтчета;
   ЭлементыФормы.ПолеТабличногоДокумента.Очистить();

   Граница = Новый Граница(КонецДня(ДатаНач), ВидГраницы.Включая);
   Построитель.Параметры.Вставить("ДатаАнализа",Граница);

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

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

консоля отчетов умирает вот здеся, когда пытаюсь соединить временную таблицу из регистром. Написали ЛЕВОЕ СОЕДИНЕНИЕ, нет данных. Написал тупо вот так:

ВЫБРАТЬ
   ДокРасчетов.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом
ИЗ
   ДокРасчетов КАК ДокРасчетов

данных нет.

Насколько я понимаю построитель захлебнулся с использованием временных таблиц, ограничение чтоли стоит наверное.
4 ptiz
 
09.08.12
13:55
У построителя есть метод .ПолучитьЗапрос()
Сравни (перед Построитель.Выполнить()) работающий запрос и "построительный"
5 Sasha_H
 
09.08.12
14:00
да они одинаковы сравнивал, проблема в том, что построитель уже не видит данных при получении из третей временной таблицы
6 Sasha_H
 
09.08.12
14:00
видимо бочина платформенная
7 Sasha_H
 
09.08.12
14:08
(4) ты был прав!
8 Sasha_H
 
09.08.12
14:10
ВЫБРАТЬ
   ОжидаемыеДенежныеСредстваПоКассе.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом
ПОМЕСТИТЬ ВремТаблица
ИЗ
   РегистрНакопления.ОжидаемыеДенежныеСредстваПоКассе.Остатки(&ДатаАнализа, ) КАК ОжидаемыеДенежныеСредстваПоКассе
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(, &ДатаАнализа, , , ) КАК ВзаиморасчетыПоДокументамРасчетовОстаткиИОбороты
       ПО ОжидаемыеДенежныеСредстваПоКассе.ДоговорКонтрагента = ВзаиморасчетыПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента
           И ОжидаемыеДенежныеСредстваПоКассе.ДокументРасчетовСКонтрагентом = ВзаиморасчетыПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом
           И ОжидаемыеДенежныеСредстваПоКассе.Контрагент = ВзаиморасчетыПоДокументамРасчетовОстаткиИОбороты.Контрагент
           И ОжидаемыеДенежныеСредстваПоКассе.Организация = ВзаиморасчетыПоДокументамРасчетовОстаткиИОбороты.Организация
ГДЕ
   ВзаиморасчетыПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовРасход > 0
   И ЕСТЬNULL(ВзаиморасчетыПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток, 0) = 0

ИНДЕКСИРОВАТЬ ПО
   ДокументРасчетовСКонтрагентом
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВремТаблица.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом
ПОМЕСТИТЬ ДокРасчетов
ИЗ
   ВремТаблица КАК ВремТаблица

СГРУППИРОВАТЬ ПО
   ВремТаблица.ДокументРасчетовСКонтрагентом
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДокРасчетов.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
   ДвиженияДенежныхСредствОбороты.ДокументДвижения КАК ДокументДвижения,
   ДвиженияДенежныхСредствОбороты.ДокументДвижения.Дата КАК ДатаСортировки
ИЗ
   ДокРасчетов КАК ДокРасчетов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(, &ДатаАнализа, , ) КАК ДвиженияДенежныхСредствОбороты
       ПО ДокРасчетов.ДокументРасчетовСКонтрагентом = ДвиженияДенежныхСредствОбороты.ДокументРасчетовСКонтрагентом

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентами.ДокументРасчетовСКонтрагентом,
   ВзаиморасчетыСКонтрагентами.Регистратор,
   ВзаиморасчетыСКонтрагентами.Регистратор.Дата
ИЗ
   ВремТаблица КАК ВремТаблица
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(, &ДатаАнализа, Регистратор, ) КАК ВзаиморасчетыСКонтрагентами
       ПО ВремТаблица.ДокументРасчетовСКонтрагентом = ВзаиморасчетыСКонтрагентами.ДокументРасчетовСКонтрагентом
ГДЕ
   (ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
           ИЛИ ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.КорректировкаДолга)

УПОРЯДОЧИТЬ ПО
   ДатаСортировки
9 Sasha_H
 
09.08.12
14:10
ип...... учий встроенный оптимизатор!
10 Sasha_H
 
09.08.12
14:11
А мне необходимо получить именно по всех измерениях информацию так как там подвисняк
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн