Имя: Пароль:
1C
1С v8
Отчет на СКД: интересный запрос
0 Dmitriy_
Kolesnikov
 
19.04.18
08:05
Есть отчет, использующий такой запрос:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    &ДатаНачала КАК ДатаНачала,
    &ДатаОкончания КАК ДатаОкончания,
    Сотрудники.Ссылка КАК Сотрудник
ПОМЕСТИТЬ ВТСотрудники
ИЗ
    Справочник.Сотрудники КАК Сотрудники
{ГДЕ
    Сотрудники.Ссылка.* КАК Сотрудник}
;

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

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

Тем не менее, он работает. Объясните, как.
1 craxx
 
19.04.18
08:08
(0) Значит он берет запрос откуда-то из хранилища. В ЗУП 3.1 такое видел.
2 Ненавижу 1С
 
гуру
19.04.18
08:08
пустые запросы работают, да
3 los_hooliganos
 
19.04.18
08:30
Может отчет программно снимает ограничения
4 dvva
 
19.04.18
08:42
запрос выбирает "непустые" данные,
но вы их не видите потому что они лежат во временных таблицах, доступа к которым из консоли нет, а из кода возможно
5 Dmitriy_
Kolesnikov
 
19.04.18
08:52
(4) где их искать? В ПриКомпоновкеРезультата не вижу.
6 dnab
 
19.04.18
08:59
(5) неужели в ПриКомпоновкеРезультата нет вызова ИнициализироватьОтчет() ?
Если есть, то в него и копай
7 echo77
 
19.04.18
10:44
(0) то есть этот запрос выбирает только пустые значения - это утверждение ЛОЖНО.
Запрос выбирает все записи из Справочник.Сотрудники, помещает их в ВТ.
В консоли запросов - да, вы увидите одну строку, с количеством записей в ВТ
СКД работает таким образом, что выбирает данные из последней ВТ, если последний пакет запроса не является выборкой
8 n0ther
 
19.04.18
10:47
(0) в ЗУПе полно такого дермища. В нужном месте запрос в СКД изменяется и выполняется.
9 echo77
 
19.04.18
10:47
+ (7) Кажется, приврал - не так работает :-)
10 DrShad
 
19.04.18
10:51
(4) множество консолей запросов, которые выводят результаты временных таблиц
11 Вафель
 
19.04.18
10:55
в зупе все запросы для отчетов собираются вручную. А в скд только для определения полей
12 Dmitriy_
Kolesnikov
 
19.04.18
11:22
Я ща отладчиком вытащил полный текст этого запроса... 4755 строк...
Ну и шо теперь с этим делать...
Надо одно поле добавить. Но лезть в эту муть - всё равно что совать голову в петлю.
13 n0ther
 
19.04.18
11:29
(12) добро пожаловать в дивный новый мир
14 Вафель
 
19.04.18
11:35
Хуже только подсистема буджетирования в ЕРП
15 n0ther
 
19.04.18
11:38
Ну, к слову, расчет зарплаты в 1С всегда отличался <sarcasm on>простотой и прозрачностью</sarcasm off>
16 Dotoshin
 
19.04.18
11:39
(0) А попробуй в консоли дописать Выбрать ДатаНачала, ДатаОкончания, Сотрудник из ВТСотрудники
17 los_hooliganos
 
19.04.18
11:39
(11) Это специально сделано, чтобы фикси своими грязными ручонкам не лезли в грациозный ЗУП.
18 Вафель
 
19.04.18
11:40
(15) ну а что ты хотел, если кодеры всего сотку в 1с получают
19 Dmitriy_
Kolesnikov
 
20.04.18
06:04
Короче, разобрался - последнюю, итоговую таблицу запроса функции-обработчики не трогают: поэтому можно модифицировать запрос, превратив её во временную и накрутив дополнительно всё что угодно. Работать будет корректно.
Но я к этому шел три дня, боялся туда лезть :) Не так страшен черт.
20 Chameleon1980
 
20.04.18
07:01
(10) а я вот где-то видел (а может приснилось)
что с какой-то из платформ при отладке можно без. доп дописок смотреть вт
21 Chameleon1980
 
20.04.18
07:04
что-то типа этого

ВременнаяТаблицаЗапроса.ПолучитьДанные (QueryTempTable.GetData)
ВременнаяТаблицаЗапроса (QueryTempTable)
ПолучитьДанные (GetData)
Синтаксис:

ПолучитьДанные()
Возвращаемое значение:

Тип: РезультатЗапроса.

Описание:

Возвращает содержимое временной таблицы.

Доступность:

Сервер, толстый клиент, внешнее соединение.
22 Chameleon1980
 
20.04.18
07:05
а. ну это лоя менеджера
23 Chameleon1980
 
20.04.18
07:06
да похф. поспать надоть еще, наверное.
24 craxx
 
20.04.18
07:15
(12) Норм запрос. Для настоящих мужиков))
25 Chameleon1980
 
20.04.18
09:13
+(21)

Запрос.ВыполнитьПакетСПромежуточнымиДанными (Query.ExecuteBatchWithIntermediateData)
Запрос (Query)
ВыполнитьПакетСПромежуточнымиДанными (ExecuteBatchWithIntermediateData)
Синтаксис:

ВыполнитьПакетСПромежуточнымиДанными()
Возвращаемое значение:

Тип: Массив.

Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн