Имя: Пароль:
1C
1С v8
запрос: пропадают данные при группировке
0 Игорь_МММ
 
04.09.15
14:01
вот такой запрос:

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

СГРУППИРОВАТЬ ПО
    ИнвентаризацияПоСкладуМатериалы.Номенклатура

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

ВЫБРАТЬ
    ХозрасчетныйОстатки.Номенклатура,
    СУММА(ХозрасчетныйОстатки.КоличествоОстаток)
ИЗ
    РегистрНакопления.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Таблица.Номенклатура КАК НаименованиеНоменклатуры,
    СУММА(Таблица.Количество) КАК КоличествоОст
ИЗ
    Таблица КАК Таблица

СГРУППИРОВАТЬ ПО
    Таблица.Номенклатура

почему-то, если помещаю во временную таблицу с послед.выборкой с группировкой, данных получаю 0 строк. Если оставляю просто секцию ВЫБРАТЬ - ОБЪЕДИНИТЬ ВСЕ - ВЫБРАТЬ  данные есть только несгруппированные. Ночью крутил-вертел, сейчас  ... вроде простейший запрос -- где я туплю?
1 trooba
 
04.09.15
14:06
(0) Где то Null...
2 Игорь_МММ
 
04.09.15
14:12
обработку NULL делал ...
сейчас в доке ИнвентаризацияПоСкладу одна строка и в Регистре Хозрасчетный одна строка. Там и там номенклатура даже одинаковая. Откуда он может взяться ?NULL?
3 olegves
 
04.09.15
14:14
(0) поменяй:
ИнвентаризацияПоСкладу.Текущая = ИСТИНА

на
ИнвентаризацияПоСкладу.Ссылка= &Ссылка
4 ibreiter
 
04.09.15
14:16
(0) Зачем левое соединение?
5 ssh-2013
 
04.09.15
14:16
(0) [если помещаю во временную таблицу с послед.выборкой с группировкой, данных получаю 0 строк. Если оставляю просто секцию ВЫБРАТЬ - ОБЪЕДИНИТЬ ВСЕ - ВЫБРАТЬ  данные есть только несгруппированные.] - этого не может быть
6 Игорь_МММ
 
04.09.15
14:20
(3) Текущая - это реквизит (4) чтобы вытащить только те доки где ИнвентаризацияПоСкладу.Текущая = ИСТИНА (5) вот и я о том же, но реально так и есть: убираю ПОМЕСТИТЬ и последний ВЫБРАТЬ - в таблице две строки. В таком варианте как в (0) - строк 0
7 ibreiter
 
04.09.15
14:22
(6) Через точку все равно соединится
8 ssh-2013
 
04.09.15
14:25
(6) и как ты получаешь эту таблицу?

Например, выходные поля у тебя по разному называются для первого и второго запроса, а что там дальше - неизвестно.
9 ibreiter
 
04.09.15
14:27
(8) Все норм с выходными полями
10 ssh-2013
 
04.09.15
14:27
(9) не может быть того что ты пишешь
11 ibreiter
 
04.09.15
14:29
(10) Это почему?
12 olegves
 
04.09.15
14:29
(4) я бы сделал полное к остаткам и без временной таблицы
13 Ненавижу 1С
 
гуру
04.09.15
14:30
(12) ПОЛНОЕ СОЕДИНЕНИЕ зло
14 Игорь_МММ
 
04.09.15
14:30
(7) так вроде же не рекомендуется? вы имеете ввиду вот так: ИнвентаризацияПоСкладуМатериалы.Ссылка.Текущая?
(10) так ...
форма регистра накопления Хозрасчетный , на форме реквизит - ДС с произвольным запросом из (0), далее как написал. Могу скрины конечно прикрепить ..
15 ibreiter
 
04.09.15
14:33
(14) Ну да, выбирайте
из Документ.ИнвентаризацияПоСкладу.Материалы КАК Материалы
Где Материалы.ссылка.Текущая
16 olegves
 
04.09.15
14:33
(13) тыне умеешь его готовить (с)
17 ssh-2013
 
04.09.15
14:35
(14) выполни запрос в консоли запросов

по документации ДС не поддерживает врем. таблицы емнип
18 olegves
 
04.09.15
14:35
+(12) имхается, причина в помещении во временную таблицу объединения запросов, да еще с группировкой
19 olegves
 
04.09.15
14:36
(17) поддерживает, сам делал, но вот объединения без внешнего запроса не поддерживает
20 olegves
 
04.09.15
14:37
+(19) я делал так
Выбрать * из
(Выбрать запрос1
Объединить все
Выбрать запрос 1)
21 ssh-2013
 
04.09.15
14:39
(0)

Если выбрано ручное формирование запроса, то на запрос налагаются некоторые ограничения:

? Динамический список не поддерживает работу с пакетными запросами.

? Динамический список не поддерживает в запросе объединения, если задана основная таблица.

? В динамических списках не поддерживается группировка и сортировка по реквизитам табличных частей.

? Динамический список не должен содержать секции УПОРЯДОЧИТЬ ПО, если задана основная таблица. Нужно использовать запрос без основной таблицы или задавать необходимое упорядочивание через настройки динамического списка.

? В числе полей запроса нельзя использовать поля подзапросов, возвращающих множественное количество значений. Необходимо использовать запрос без основной таблицы.

? Запрос не может содержать группировок и агрегатных функций, если задана основная таблица. Нужно использовать запрос без основной таблицы или задавать необходимые группировки через настройки динамического списка.

? Если динамический список отображается в виде иерархического списка или дерева, запрос не должен содержать условий отбора по родителю.

? Если динамический список отображается в виде иерархического списка или дерева, запрос должен быть построен так, чтобы в результате запроса присутствовали как элементы, так и их родители.

? Не поддерживается сортировка в динамическом списке, если запрос содержит агрегатные функции.

? Не поддерживается сортировка по полям, которые являются субконто регистрами бухгалтерии.

? В случае указания основной таблицы динамического списка запрос не должен содержать инструкций ПЕРВЫЕ и РАЗЛИЧНЫЕ.

? В случае указания произвольного запроса, этот запрос не должен содержать инструкцию ПЕРВЫЕ.

? Не поддерживается указание в качестве основной таблицы динамического списка таблицы, которая используется в запросе только во внешнем соединении.

? Не рекомендуется использовать соединения таблиц внутри блока ИЗ запроса динамического списка, если эти соединения указаны с помощью расширения языка запросов для системы компоновки данных (в фигурных скобках). Рекомендуется переписать запрос, избавившись от таких соединений.

При создании динамического списка нужно учитывать следующие особенности:

? Не поддерживается указание табличных частей объектов в качестве основной таблицы динамического списка.

? В качестве основной таблицы не могут быть выбраны таблицы регистрации изменений (используемые в механизмах обмена данными), таблицы последовательностей и таблицы перерасчетов (используемые в механизмах периодических расчетов).

? Если запрос, заданный для динамического списка, не обеспечивает уникальность выбираемых строк, то отображение строк списка и прокрутка будут выполняться некорректно.

Другими словами, динамический список с указанной основной таблицей будет работать корректно в том случае, если в результате выполнения запроса, указанного в качестве источника данных, не увеличивается количество строк, получаемых из основной таблицы (с учетом наложенного отбора).

Если же в результате выполнения запроса количество строк, получаемых запросом из основной таблицы, увеличивается, это будет приводить к нарушению уникальности ключа записей таблицы, отображаемой списком. В этом случае необходимо отключить использование основной таблицы.

При программном изменении свойств динамического списка не происходит автоматического повторного заполнения командных панелей, связанных с этим динамическим списком.

Для динамического списка, который отображает список перечисления, отсутствует возможность интерактивной настройки списка.

Состав колонок и настройки динамического списка связаны с полями запроса по именам. Это означает, что при изменении имени поля запроса, формирующего динамический список, будут утеряны настройки реквизита динамического списка, элементов формы «потеряет» отображаемый реквизит, настройки динамического списка станут неверными.
22 ssh-2013
 
04.09.15
14:40
23 Игорь_МММ
 
04.09.15
14:44
(21) основную таблицу не задавал
сейчас попробую (20)
24 Игорь_МММ
 
04.09.15
14:50
ВЫБРАТЬ
    ВложЗапрос.Номенклатура КАК НаименованиеНоменклатуры,
    СУММА(ВложЗапрос.Количество) КАК КоличествоОст
ИЗ
    (ВЫБРАТЬ
        ИнвентаризацияПоСкладуМатериалы.Номенклатура КАК Номенклатура,
        СУММА(ИнвентаризацияПоСкладуМатериалы.Количество) КАК Количество
    ИЗ
        Документ.ИнвентаризацияПоСкладу.Материалы КАК ИнвентаризацияПоСкладуМатериалы
    ГДЕ
        ИнвентаризацияПоСкладуМатериалы.Ссылка.Текущая = ИСТИНА
    
    СГРУППИРОВАТЬ ПО
        ИнвентаризацияПоСкладуМатериалы.Номенклатура
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ХозрасчетныйОстатки.Номенклатура,
        СУММА(ХозрасчетныйОстатки.КоличествоОстаток)
    ИЗ
        РегистрНакопления.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
    
    СГРУППИРОВАТЬ ПО
        ХозрасчетныйОстатки.Номенклатура) КАК ВложЗапрос

СГРУППИРОВАТЬ ПО
    ВложЗапрос.Номенклатура

- все ништяк... (20) спасибо
25 ssh-2013
 
04.09.15
14:51
(24) запрос в (0) рабочий, только для дин. списка не годится
26 Игорь_МММ
 
04.09.15
14:52
по ходу вопрос: обращение через точку смущает - ИнвентаризацияПоСкладуМатериалы.Ссылка.Текущая , вроде как везде говорят что это плохо , или я что-то не правильно переварил?
(25) понял