Имя: Пароль:
1C
1С v8
Условие в запросе
,
0 ogion83
 
28.03.13
15:58
Я перебираю в цикле строки табличной части документа. В ТЧ есть реквизит "Материал". Нужно в запросе (обращаюсь к регистру накопления) получить данные по этому реквизиту. Помогите, пожалуйста, новичку самоучке.
1 shuhard
 
28.03.13
15:59
(0)[Я перебираю в цикле строки табличной части документа]
что мешает сделать это в запросе ?
2 Джинн
 
28.03.13
15:59
(0) > Я перебираю в цикле строки табличной части документа.

За это уже можно оторвать руки и дальше не идти.
3 ogion83
 
28.03.13
16:00
Если есть способы лучше: прошу...
4 ogion83
 
28.03.13
16:02
Я хорошо знаю 1С7, в 8-ке первые шаги. (Так что обойдёмся без "За это уже можно оторвать руки и дальше не идти")
5 Spieluhr
 
28.03.13
16:04
(0) Запрос в цикле - это плохо. Нужно в запросе соединять таб. часть с таблицей регистра
6 ogion83
 
28.03.13
16:05
Буду признателен за коротенький примерчик
7 Джинн
 
28.03.13
16:06
(4) Это не оправдание. Смотрите типовые. Которые попроще.
8 samozvanec
 
28.03.13
16:06
(4) запрос по ТЧ, левое соединение с твоим регистром, потом по выборке цикл
9 ogion83
 
28.03.13
16:08
(8) Попробую
10 ogion83
 
28.03.13
16:27
(8) Благодарю за науку, получилось.
11 zladenuw
 
28.03.13
16:30
(10) лучше всю тч в запрос и сразу запрос к регистру накопление. между будет вызовов к серверу от клиента
12 zladenuw
 
28.03.13
16:30
(11) будет меньше вызовов к серверу от клиента
13 ogion83
 
28.03.13
16:36
"ВЫБРАТЬ
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.Ссылка,
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.НомерСтроки,
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.Материал,
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.Количество,
|   РегМатериалы.МПЗ,
|   РегМатериалы.Количество,
|   РегМатериалы.Сумма
|ИЗ
|Документ.ПередачаМатериаловВПроизводство.ТабличнаяЧасть КАК ПередачаМатериаловВПроизводствоТабличнаяЧасть
|Левое соединение
| РегистрНакопления.Материалы Как РегМатериалы
|По
| ПередачаМатериаловВПроизводствоТабличнаяЧасть.Материал = РегМатериалы.МПЗ";
Как можно улучшить?
14 GANR
 
28.03.13
16:56
(13) Что за данные по материалу нужны???
15 ogion83
 
28.03.13
16:58
Количество и сумма. Всё что нужно получаю. Всё работает. Тут (11) советуют как то улучшить, но не понял как.
16 GANR
 
28.03.13
16:59
(15) Остатки или обороты?
17 GANR
 
28.03.13
17:00
ВЫБРАТЬ
ДокТЧ.Материал КАК Материал,
СУММА(ДокТЧ.Количество) КАК Количество
ПОМЕСТИТЬ
ДокТЧ
ИЗ
Документ.ПередачаМатериаловВПроизводство.ТабличнаяЧасть КАК ДокТЧ
ГДЕ
ДокТЧ.Ссылка   = &Ссылка
;
ВЫБРАТЬ
ДокТЧ.Материал КАК Материал,
ДокТЧ.Количество КАК Количество,
ISNULL(ОстаткиМатериалов.КоличествоОстаток, 0) КАК КоличествоОстаток,
ISNULL(ОстаткиМатериалов.СуммаОстаток, 0) КАК СуммаОстаток
ИЗ
ДокТЧ КАК ДокТЧ
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.Материалы.Остатки(&МоментВремени, ) КАК ОстаткиМатериалов
ПО
ДокТЧ.Материал = ОстаткиМатериалов.МПЗ
18 GANR
 
28.03.13
17:05
(15) Да, всё работает... Пока в регистре 1 строчка.
19 GANR
 
28.03.13
17:20
(15) Добавь хотя-бы

1. ещё 1 документ с таким-же материалом
2. ещё 1 запись в регистр с таким-же материалом
3. ещё 1 строчку в этот-же документ с таким-же материалом

ну как? работает???
20 ogion83
 
29.03.13
08:27
Остатки
21 GANR
 
29.03.13
08:44
(20) Тогда тебе 100% нужно что-то вроде (17), но никак не (13).
22 ogion83
 
29.03.13
09:26
Как сделать чтобы тут &МоментВремени была дата документа в котором используется запрос???
23 ogion83
 
29.03.13
09:30
ISNULL в синтаксис-помощнике вообще есть?
24 salvator
 
29.03.13
09:31
(23) ISNULL = ЕСТЬNULL
(22) Установить параметр, к примеру.
25 ogion83
 
29.03.13
09:36
Как в семерке указать ДатаДок не прокатит значит? Уж такие то моменты могли бы и оставить.
26 salvator
 
29.03.13
09:43
(25) Голова на что? Одну строчку написать трудно?
27 GANR
 
29.03.13
09:45
(22) Короче... Радченко прорешай.
28 ogion83
 
29.03.13
09:46
Вот:
Запрос.Текст = "ВЫБРАТЬ
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.Ссылка,
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.НомерСтроки,
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.Материал,
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.Количество,
|   РегМатериалы.МПЗ,
|   ISNULL(РегМатериалы.КоличествоОстаток, 0) Как КоличВРегистре,
|   ISNULL(РегМатериалы.СуммаОстаток, 0) Как СуммаВРегистре
|ИЗ
|Документ.ПередачаМатериаловВПроизводство.ТабличнаяЧасть КАК ПередачаМатериаловВПроизводствоТабличнаяЧасть
|Левое соединение
|    РегистрНакопления.Материалы.Остатки(&НаДату, ) Как РегМатериалы
|По
|ПередачаМатериаловВПроизводствоТабличнаяЧасть.Материал = РегМатериалы.МПЗ";
Семёрку самостоятельно было легче изучать...
29 GANR
 
29.03.13
09:48
(28) >Семёрку самостоятельно было легче изучать...
Неужто??? Неужели в 7.7 удобный язык запросов?
30 ogion83
 
29.03.13
09:48
Про Редченко уточните, а то в поисковике всё не то выдаёт.
31 ogion83
 
29.03.13
09:49
По мне дак: вполне удобно. Проблем не возникало.
32 GANR
 
29.03.13
09:53
(30) http://snipurl.com/26ptj4o самое свежее.
33 GANR
 
29.03.13
10:01
(28) Где фильтр по текущему документу? А если в  документе 2 строки с одинаковым реквизитом Материал?
34 GANR
 
29.03.13
10:04
(31) Удивлен, потому что помню, как всех тошнило от 7.7, когда был стажером. Того гляди, все съеденное на клавиатуре окажется.
35 ogion83
 
29.03.13
10:26
За ссылку благодарствую. Как фильтр поставить?
36 lapinio
 
29.03.13
10:30
Проще в регистре в параметрах  номенклатура сделать подзапрос к ТЧ без всяких соединений.
37 lapinio
 
29.03.13
10:33
Пример

ВЫБРАТЬ
   ПартииНоменклатурыОстатки.Номенклатура,
   ПартииНоменклатурыОстатки.КоличествоОстаток
ИЗ
   РегистрНакопления.ПартииНоменклатуры.Остатки(
           ,
           Номенклатура В
               (ВЫБРАТЬ
                   ПриходнаяНакладнаяТабличнаяЧасть.Номенклатура
               ИЗ
                   Документ.ПриходнаяНакладная.ТабличнаяЧасть КАК ПриходнаяНакладнаяТабличнаяЧасть
               ГДЕ
                   ПриходнаяНакладнаяТабличнаяЧасть.Ссылка = &Ссылка)) КАК ПартииНоменклатурыОстатки
38 ogion83
 
29.03.13
10:39
Опробую где-нибудь и этот вариант.
39 ogion83
 
29.03.13
10:44
Два одинаковых материала в ТЧ мне не навредят. Проверил, всё пучком.
40 GANR
 
29.03.13
10:48
(37) А нулевые остатки?
41 GANR
 
29.03.13
10:48
+(40) они не попадут в эту выборку
Основная теорема систематики: Новые системы плодят новые проблемы.