Имя: Пароль:
1C
1С v8
условие виртуальной таблицы
,
0 I_learn_1c
 
11.12.17
12:20
Виртуальная таблица ТоварыВРезервеНаСкладах.Остатки

У нее в качестве документа основания определен СчетНаОплатуПокупателю и другие.

Нужно выбирать записи номенклатура-остаток, только те у которых документ-основание счет, и этот счет оплачен

Такой запрос по идее должен же работать? (это кусок из большого)

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

этот запрос для набора данных скд,
параметр ТипСчет выбрала тип ДокументСсылка.СчетНаОплатуПокупателю и написала в Значение ТипЗнч(&ТипСчет) тут наверно не так нужно?

подскажите пожалуйста
1 mikecool
 
11.12.17
12:22
в условиях виртуалки
ДокументРезерва ссылка документ.Счет
должно работать
2 I_learn_1c
 
11.12.17
12:29
&ИСТИНА это опечатка без амперсанда в запросе.

выдает вообще ошибку

Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(30, 87)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&П, ТИПЗНАЧЕНИЯ(ДокументРезерва)
3 I_learn_1c
 
11.12.17
12:32
(1) в самом начале так пробовала, что то не пошло.. подумала что с виртуальными так нельзя. сейчас попробую еще, может напутала тогда что-то
4 I_learn_1c
 
11.12.17
12:35
Если ДокументРезерва ссылка документ.Счет то пишет ошибку "Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(30, 54)}: Не задано значение параметра "Период"
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(<<?>>&Период, ДокументРезерва ССЫЛКА Документ.СчетНаОплатуПокупателю) КАК ТоварыВРезервеНаСкладахОстатки
"
Но параметр Период не только там же, вот весь текст запроса

ВЫБРАТЬ
    Товары.Ссылка,
    Товары.Наименование,
    Товары.Артикул,
    ЕСТЬNULL(ОплаченныеСчета.КоличествоОстаток, 0) КАК ОстатокРезерв,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток,
    ЕСТЬNULL(ЗначенияТочкиЗаказаСрезПоследних.МинимальныйСтраховойЗапас, 0) КАК МинимальныйЗапас,
    ЕСТЬNULL(ЗначенияТочкиЗаказаСрезПоследних.МинимальныйСтраховойЗапас, 0) - ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК ДолгОстаток,
    ЕСТЬNULL(ЗначенияТочкиЗаказаСрезПоследних.МинимальныйСтраховойЗапас, 0) - ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ОплаченныеСчета.КоличествоОстаток, 0) КАК ИтогоВЗаказ,
    ВложенныйЗапрос.Значение КАК Производитель
ИЗ
    Справочник.Номенклатура КАК Товары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = Товары.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияТочкиЗаказа.СрезПоследних(&Период, ) КАК ЗначенияТочкиЗаказаСрезПоследних
        ПО (ЗначенияТочкиЗаказаСрезПоследних.Номенклатура = Товары.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗначенияСвойствОбъектов.Объект КАК Объект,
            ЗначенияСвойствОбъектов.Свойство КАК Свойство,
            ЗначенияСвойствОбъектов.Значение КАК Значение
        ИЗ
            РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ГДЕ
            ЗначенияСвойствОбъектов.Свойство.Наименование = "Производитель") КАК ВложенныйЗапрос
        ПО Товары.Ссылка = ВложенныйЗапрос.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
            ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура
        ИЗ
            РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ДокументРезерва ССЫЛКА Документ.СчетНаОплатуПокупателю) КАК ТоварыВРезервеНаСкладахОстатки
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
                ПО ТоварыВРезервеНаСкладахОстатки.ДокументРезерва = СчетНаОплатуПокупателю.Ссылка
        ГДЕ
            СчетНаОплатуПокупателю.Оплачен = ИСТИНА) КАК ОплаченныеСчета
        ПО Товары.Ссылка = ОплаченныеСчета.Номенклатура.Ссылка
ГДЕ
    Товары.ЭтоГруппа = ЛОЖЬ
5 hhhh
 
11.12.17
12:39
(4) ну задайте ему параметр Период. Что вам жалко?
6 I_learn_1c
 
11.12.17
12:41
(5) задан он, в параметрах СКД
7 I_learn_1c
 
11.12.17
12:43
8 hhhh
 
11.12.17
12:45
(7) какое-то странное что-то. Вы Период сам через себя определяете?
9 I_learn_1c
 
11.12.17
12:50
(8) Период нормально определен, это я делала еще раньше,тоже нашла по рекомендациям что так сделать правильнее, все работает, сейчас добавляю кусок

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

и с ним все перестает работать
10 I_learn_1c
 
11.12.17
12:51
а может такое быть что вложенный запрос не видит параметры основного?
11 rabbidX
 
11.12.17
12:53
В СКД не нужно задавать условия на периоды виртуальных таблиц, она их добавляет сама.
12 hhhh
 
11.12.17
12:55
а ну да, сотри везде слово &Период, она же всё равно сама его проставит.
13 I_learn_1c
 
11.12.17
13:11
Если стереть везде период то ошибка другая

Неверные параметры "РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки, 0"
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(ДокументРезерва <<?>>ССЫЛКА Документ.СчетНаОплатуПокупателю) КАК ТоварыВРезервеНаСкладахОстатки
14 I_learn_1c
 
11.12.17
13:14
В запросе где описание условий ССЫЛКА есть только вида

ДокументРезерва ССЫЛКА <ИмяТаблицы>

а что в качестве таблицы то?
15 hhhh
 
11.12.17
13:17
(13) может не может быть счет дкументом резерва. В типовой точно нет. Там документ ЗаказПокупателя.
16 I_learn_1c
 
11.12.17
13:20
(15) в типовой нет, а в конкретно данной есть.
https://yadi.sk/i/cY1ktxC93QWG44

но ругается он на ССЫЛКА. может как то еще это записать можно в условиях
17 I_learn_1c
 
11.12.17
13:21
пишет что мол ожидается имя таблицы
18 I_learn_1c
 
11.12.17
13:27
(16) и в регистре полно записей с документом резерва счет
19 _Дайвер_
 
11.12.17
14:11
(0) "Нужно выбирать записи номенклатура-остаток, только те у которых документ-основание счет, и этот счет оплачен"
Тебе нужно поставить в СКД условия:
1) Где ДокументыОснования = &
2) Где ДокументыОснования.Проведен = ИСТИНА
Тогда у тебя будет все нормально.
20 I_learn_1c
 
11.12.17
14:12
(19) ох, там я опечаталась, "..у которых документ-резерв счет.."

короче сделала еще раз с нуля кусок этот и как то заработало.. всем спасибо)

ВЫБРАТЬ
            ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
            ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура
        ИЗ
            РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ДокументРезерва ССЫЛКА Документ.СчетНаОплатуПокупателю) КАК ТоварыВРезервеНаСкладахОстатки
                ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
                ПО ТоварыВРезервеНаСкладахОстатки.ДокументРезерва = СчетНаОплатуПокупателю.Ссылка
        ГДЕ
            СчетНаОплатуПокупателю.Оплачен = &Истина
21 I_learn_1c
 
11.12.17
14:12
на истину конструктор чего то ругался, пришлось выкрутиться, знаю странно
22 _Дайвер_
 
11.12.17
14:14
(21) Разобралась, молодец)
23 kda26
 
11.12.17
14:17
(21)         ГДЕ
            СчетНаОплатуПокупателю.Оплачен
//= Истина ТУТ ЛИШНЕЕ
24 I_learn_1c
 
11.12.17
14:22
(23) аа, по умолчанию подразумевается истина? а если бы нужно было указать ЛОЖЬ?
25 I_learn_1c
 
11.12.17
14:23
(24) на ложь тоже ругается в другом аналогичном случае
26 I_learn_1c
 
11.12.17
14:24
(22)спасибо конечно:))) но скорости этого "разбирания" точно не позавидовать
27 3achem
 
11.12.17
14:24
(25) Вы в консоли проверяли запрос?
28 I_learn_1c
 
11.12.17
14:25
(27) нет
29 3achem
 
11.12.17
14:25
(20) поправлю

ГДЕ
СчетНаОплатуПокупателю.Оплачен
30 kda26
 
11.12.17
14:25
(24) ГДЕ
         НЕ СчетНаОплатуПокупателю.Оплачен
31 I_learn_1c
 
11.12.17
14:27
(30) ааа..даже так. вот я тормоз. спасибо за терпеливые комментарии) я буду стараться тупить меньше))
32 Быдло замкадное
 
11.12.17
14:39
Выведи регистратор. Тогда остатки будут иметь хотя бы логический смысл.
А без него думаю 1С ничего не посчитает.
Да и какой смысл в остатке без определенных регистраторов....
33 Быдло замкадное
 
11.12.17
14:40
была подобная глупая хотелка от пользователя.
Выведи остатки и обороты без расхода по 1 складу.

В итоге вывел ей
Начальный остаток 10
Приход 0
Расход 0
Конечный остаток 5
)))
Спрашивает они же не сходятся. Так логично, если мы вычитаем непойми что