Имя: Пароль:
1C
1С v8
Запрос в динамическом списке
0 rowflag
 
21.03.13
19:55
Почему не работает? (работает в консоли запросов)

ВЫБРАТЬ
   картриджи_СвободноеДвижениеТЧСписок.Номенклатура
ПОМЕСТИТЬ СодержимоеТабличнойЧастиДокумента
ИЗ
   Документ.картриджи_СвободноеДвижение.ТЧСписок КАК картриджи_СвободноеДвижениеТЧСписок
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.картриджи_СвободноеДвижение КАК картриджи_СвободноеДвижение
       ПО картриджи_СвободноеДвижениеТЧСписок.Ссылка = картриджи_СвободноеДвижение.Ссылка
ГДЕ
   картриджи_СвободноеДвижение.Ссылка = &СсылкаНаДокумент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОстаткиНаСкладахОстатки.Номенклатура
ИЗ
   РегистрНакопления.ОстаткиНаСкладах.Остатки КАК ОстаткиНаСкладахОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ СодержимоеТабличнойЧастиДокумента КАК СодержимоеТабличнойЧастиДокумента
       ПО (СодержимоеТабличнойЧастиДокумента.Номенклатура В (ОстаткиНаСкладахОстатки.Номенклатура))
ГДЕ
   ОстаткиНаСкладахОстатки.Склад.Наименование = &СкладИсточник
   И ЕстьNULL(СодержимоеТабличнойЧастиДокумента.Номенклатура,0) = 0
1 SherifSP
 
21.03.13
19:58
Ошибка какая или ничего не выводит?
2 rowflag
 
21.03.13
20:00
Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
{(1, 37)}: Поле не найдено "картриджи_СвободноеДвижениеТЧСписок.Дата"
картриджи_СвободноеДвижениеТЧСписок.<<?>>Дата
3 rowflag
 
21.03.13
20:00
(и ничего не выводит:( )
4 mistеr
 
21.03.13
20:02
(0)(2) Показания не сходятся.
5 rowflag
 
21.03.13
20:04
(в том то и фиг)
6 rowflag
 
21.03.13
20:04
Может потому что пакетный запрос с динамическом списке не
7 rowflag
 
21.03.13
20:05
не
8 rowflag
 
21.03.13
20:05
не работает?
9 palpetrovich
 
21.03.13
20:05
может все-таки
ПО СодержимоеТабличнойЧастиДокумента.Номенклатура =ОстаткиНаСкладахОстатки.Номенклатура
10 H A D G E H O G s
 
21.03.13
20:07
(8) Работает, но основную таблицу во временную помещать нельзя.
11 rowflag
 
21.03.13
20:09
(10) а как надо?
12 rowflag
 
21.03.13
20:09
(у меня основная таблица указано "Документ.картриджи_СвободноеДвижение" )
13 rowflag
 
21.03.13
20:10
(9) да. Так и надо.
14 rowflag
 
21.03.13
20:12
(но результат тот же. Хотя прекрасно работает в КЗ)
15 rowflag
 
21.03.13
20:13
Про какую "дата" ругается - не понимаю...
16 palpetrovich
 
21.03.13
20:15
(13) а это зачем? И ЕстьNULL(СодержимоеТабличнойЧастиДокумента.Номенклатура,0) = 0
ососбенно если надо как (9)
17 rowflag
 
21.03.13
20:15
(16) чтобы выбрать только те, которых нет в табличной части.
18 palpetrovich
 
21.03.13
20:16
+16 и  наверное все-тки обращаться нужно к виртуальной  таблице - и эт туда уйдет   ОстаткиНаСкладахОстатки.Склад.Наименование = &СкладИсточник
19 rowflag
 
21.03.13
20:17
(УФ если что)
20 kosts
 
21.03.13
20:18
Странный запрос. Зачем соединение в первом подзапросе. Зачем вообще первая часть?...

По сабжу про Дату возможно система ожидает наличия некоторых обязательных полей в динамическом запросе, типа номер, дата, ссылка.
21 rowflag
 
21.03.13
20:21
(20) первая часть - получаем содержимое табличной части
вторая часть получаем остатки на складе источнике и выводим те, которых нет в табличной части.
22 kosts
 
21.03.13
20:22
Предположу: или на форме в списке есть реквизит, в котором в свойстве Данные вписано "Дата".
23 kosts
 
21.03.13
20:24
(21) Это ясно из запроса, я про то, что не нужно явное соединение документа и его ТЧ.
По этому можно всё сделать без первой части, подставив ТЧ сразу во второй подзапрос, вроде =)
24 rowflag
 
21.03.13
20:24
(22) не пойму. Как это влияет на запрос?
25 rowflag
 
21.03.13
20:25
(23) сейчас попробую сделать..
26 kosts
 
21.03.13
20:31
Не знаю точно, но вроде так, если основная таблица это документ, то запрос должен вернуть список в котором есть "ссылка на документ", которая притом не повторяется, иначе могут наблюдаться глюки при просмотре таких списков. (могу ошибаться).
27 rowflag
 
21.03.13
20:52
Вот так выводит только те, что в табличной части..

ВЫБРАТЬ
   ОстаткиНаСкладахОстатки.Номенклатура
ИЗ
   РегистрНакопления.ОстаткиНаСкладах.Остатки КАК ОстаткиНаСкладахОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.картриджи_СвободноеДвижение КАК картриджи_СвободноеДвижение
       ПО ОстаткиНаСкладахОстатки.Номенклатура = картриджи_СвободноеДвижение.ТЧСписок.Номенклатура
ГДЕ
   ОстаткиНаСкладахОстатки.Склад.Наименование = &СкладИсточник
   И картриджи_СвободноеДвижение.Номер = &Номер
28 rowflag
 
21.03.13
21:00
Удалил динамический список, создал его заново, заполним запросом из (0).
Теперь выводит другую ошибку:
Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Поле не найдено "Номенклатура"
29 rowflag
 
21.03.13
21:01
Указал основную таблицу: "Документ.картриджи_СвободноеДвижение" - стал также ругаться на "дату".
30 kosts
 
21.03.13
21:03
(29) Ну попробуй, добавь в запрос Дату документа.
Дальше видно будет.
31 rowflag
 
21.03.13
21:06
Добавил

ВЫБРАТЬ
   картриджи_СвободноеДвижениеТЧСписок.Номенклатура,
   картриджи_СвободноеДвижение.Дата
ПОМЕСТИТЬ СодержимоеТабличнойЧастиДокумента
ИЗ
   Документ.картриджи_СвободноеДвижение.ТЧСписок КАК картриджи_СвободноеДвижениеТЧСписок
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.картриджи_СвободноеДвижение КАК картриджи_СвободноеДвижение
       ПО картриджи_СвободноеДвижениеТЧСписок.Ссылка = картриджи_СвободноеДвижение.Ссылка
ГДЕ
   картриджи_СвободноеДвижение.Номер = "000000153"
;

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

Другая ошибка:
Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(5, 38)}: Поле не найдено "картриджи_СвободноеДвижениеТЧСписок.ПометкаУдаления"
картриджи_СвободноеДвижениеТЧСписок.<<?>>ПометкаУдаления,
32 rowflag
 
21.03.13
21:08
Мне кажется я неправильно пользуюсь динамическим списком..
Ибо в КЗ этот запрос выводит все прекрасно. А именно номенклатуру на складе, которой нет в табличной части.
33 kosts
 
21.03.13
21:11
(31) Скорее всего система ожидает все типичные реквизиты документа, т.к. основная таблица - это документ.
34 rowflag
 
21.03.13
21:12
Как быть?
35 kosts
 
21.03.13
21:15
(34) По УФ мало подскажу, возможно основную таблицу нужно указать как РегистрНакопления.ОстаткиНаСкладах.Остатки если это возможно...
36 rowflag
 
21.03.13
21:16
(35) не возможно. Попробую вместо динамического списка использовать реквизит типа "таблицу значений".
Только плохо что остатки не будут динамически обновляться.
37 kosts
 
21.03.13
21:21
(36) Плохо проверил, сейчас у себя глянул - вполне возможно указать основную таблицу, например, как РегистрНакопления.МестонахождениеН.Остатки пробуй
38 rowflag
 
21.03.13
21:23
С запросом из (0)?
39 kosts
 
21.03.13
21:24
(38) Ну примерно.
40 rowflag
 
21.03.13
21:26
(нет. Только документ..)
41 rowflag
 
21.03.13
21:26
(вот если бы избавиться от первой части....)
42 rowflag
 
21.03.13
21:27
(тогда можно было бы, наверное)
43 kosts
 
21.03.13
21:28
(41) Динамический список можно добавить в реквизиты формы руками.
44 rowflag
 
21.03.13
21:28
Начал пробовать. При этом запросе никаких ошибок нет, основная таблица - РН.Остатки, но он выводит содержимое табличной части.
ВЫБРАТЬ
   ОстаткиНаСкладахОстатки.Номенклатура
ИЗ
   РегистрНакопления.ОстаткиНаСкладах.Остатки КАК ОстаткиНаСкладахОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.картриджи_СвободноеДвижение КАК картриджи_СвободноеДвижение
       ПО ОстаткиНаСкладахОстатки.Номенклатура = картриджи_СвободноеДвижение.ТЧСписок.Номенклатура
ГДЕ
   ОстаткиНаСкладахОстатки.Склад = "Склад"
   И картриджи_СвободноеДвижение.Номер = "000000153"
45 kosts
 
21.03.13
21:29

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


Напиши словами, что должен вернуть запрос
46 rowflag
 
21.03.13
21:33
Выводит остатки на складе и все..
47 rowflag
 
21.03.13
21:42
(завтра еще поработаю над этим)
48 rowflag
 
21.03.13
21:43
Спасибо за помощь! Понял что дело в основной таблице.
Ошибка? Это не ошибка, это системная функция.