Имя: Пароль:
1C
1С v8
Получить параметр виртуальной таблицы запросом. Реально?
0 Kookish
 
26.01.14
02:03
День добрый.
Клепаю запрос по остаткам. Не нравится, что слишком долго работает. Копаю в сторону сокращения периода выборки. Получилось что-то вроде:

ВЫБРАТЬ
    Счет, Субконто1.Код КАК КодКонтр, Субконто1 КАК Контрагент,
    Субконто2.Код КАК КодНом, Субконто2 КАК Номенклатура, Субконто2.БазоваяЕдиницаИзмерения КАК ЕдИзм,
    Субконто3 КАК Партия, Субконто3.Номер КАК НомерДок, Субконто3.Дата КАК ДатаДок,
    СуммаОстаток, КоличествоОстаток
ПОМЕСТИТЬ ВТОстатки
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&Счет), , ) КАК Остатки
;
ВЫБРАТЬ
    МИНИМУМ(ДатаДок) КАК НачДата
ПОМЕСТИТЬ ВТНачДата
ИЗ ВТОстатки
;

ВЫБРАТЬ
    Остатки.Счет,
    // Для 45 счета
    Остатки.КодКонтр,
    Остатки.Контрагент, // Субконто1
    Остатки.КодНом,
    Остатки.Номенклатура, // Субконто2
    Остатки.ЕдИзм,
    Остатки.Партия, Остатки.НомерДок, Остатки.ДатаДок,
    Остатки.СуммаОстаток, Остатки.КоличествоОстаток,
    Обороты.Регистратор, Обороты.СуммаОборот, Обороты.КоличествоОборот
ИЗ
    ВТОстатки КАК Остатки
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрБухгалтерии.Хозрасчетный.Обороты(ВЫРАЗИТЬ((ВЫБРАТЬ НачДата ИЗ ВТНачДата) КАК Дата), &Дата, Регистратор, Счет В ИЕРАРХИИ (&Счет), , , , ) КАК Обороты
ПО
    Остатки.Партия = Обороты.Субконто3 И Остатки.Номенклатура = Обороты.Субконто2 И Остатки.Контрагент = Обороты.Субконто1
    
Я получаю во временную таблицу минимальную дату документов и хочу передать ее в качестве параметра запроса. Но ругается. В связи с этим вопрос: есть ли какое волшебное словечко, чтобы она таки приняла дату?
1 Вагнерус
 
26.01.14
02:05
Не взлетит...
2 Kookish
 
26.01.14
02:18
А хотя бы в параметр Субконто можно результат запроса засунуть? Сейчас попробую.
3 Kookish
 
26.01.14
02:29
ВЫБРАТЬ РАЗЛИЧНЫЕ Партия
ПОМЕСТИТЬ ВТПартии
ИЗ ВТОстатки
;

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

Такой вариант сработал. Уже не 300 с лишним секунд, а 76. Что более-менее приемлемо. Особенно, если учесть, что он мне один раз всего и понадобится.