Имя: Пароль:
1C
1С v8
Оптимизация обращения к БД
0 Bobby McFerrin
 
21.04.17
16:55
Привет. Есть уже выполненная задача: нужно вывести строки из ТЧ Заказа, добавив дополнительной колонкой последнюю цену по этой номенклатуре из документа Счет на оплату поставщику. Счет не делает никаких движений по регистрам, поэтому срез последних использовать не могу.
В цикле обхожу строки Заказа и запросом получаю последнюю по дате цену. Если строк немного, то терпимо, но клиент стал жаловаться на длительное ожидание при обработке больших Заказов.
Запросы знаю так себе, не представляю как в этой ситуации обойтись одним выполнением запроса.
Можно ли как-то эмулировать результат выполнения среза последних по всей номенклатуре или списку?
1 Bobby McFerrin
 
21.04.17
16:57
Да, если имеет значение, УТ 10.3
2 mehfk
 
21.04.17
16:57
А ты почитай книжку по запросам.
3 Cyberhawk
 
21.04.17
16:58
Сколько платят за решение вопроса?
4 Bobby McFerrin
 
21.04.17
16:58
Спасибо за совет, уже купил курс гилева по запросам. Но мне нужно сейчас, а не через месяц
5 Fragster
 
гуру
21.04.17
16:58
там вроде есть регистр цен поставщиков
6 Bobby McFerrin
 
21.04.17
16:58
Уже оплатили))
7 Bobby McFerrin
 
21.04.17
16:59
Счет на оплату поставщика не делает движений. Регистр цен это из заказов
8 Heckfy
 
21.04.17
16:59
Склей ТЧ заказа с документов Счет по номенклатуре, где дата документа счет максимум. Как то так.....
9 Bobby McFerrin
 
21.04.17
17:01
(8) Пробовал. Тогда получается выборка только по одной номенклатуре из одного счета. Остальные значения пустуют
10 Bobby McFerrin
 
21.04.17
17:02
(8) Так как выбирается один счет с максимальной даттой и из нее сопоставляет номенклатуру, а не все товары по счетам с максимальной датой
11 h-sp
 
21.04.17
17:04
(10) а ты выбирай не один счет, а несколько. Почему такой бзик? Выбирать именно один счет?
12 FIXXXL
 
21.04.17
17:07
проще свой РС прикрутить и движуху записать
13 Heckfy
 
21.04.17
17:09
(9) Не правильно пробовал.
(10) Нужно склеивать все со всеми.
14 Bobby McFerrin
 
21.04.17
17:13
(11) Я явно не указываю счета. На входе ссылка на заказ, потом по каждому товару заказа ищу последний по дате Счет и оттуда получаю цену.
Если для вложенного запроса со Счетами написать
ВЫБРАТЬ ПЕРВЫЕ 1
и
УПОРЯДОЧИТЬ ПО ДатаСчета УБЫВ
я получаю только 1 счет, хотя строки с номенклатурой находятся в нескольких счетах.

(13) При склеивании всех со всеми на выходе получаю не 49 строк заказа, а 600 строк с различными вариантами цен счетов. Нужно потом как-то обработать этот массив, выбрать только по 1-й номенклатуре с максимальной датой счета. Я хз как это сделать.
15 Bobby McFerrin
 
21.04.17
17:19
Вот так выглядит склейка всех со всеми. Но на выходе строк больше, чем по заказу. А если ограничить вложенный запрос ВЫБРАТЬ ПЕРВЫЕ 1 и сортировку по дате документа, тогда не заполняются остальные цены из счета

ВЫБРАТЬ
    ЗаказПоставщикуТовары.Номенклатура,
    ЗаказПоставщикуТовары.ХарактеристикаНоменклатуры,
    ВложенныйЗапрос.ЦенаИзСчета
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СчетНаОплатуПоставщикаТовары.Номенклатура КАК Номенклатура,
            СчетНаОплатуПоставщикаТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
            СчетНаОплатуПоставщикаТовары.Цена КАК ЦенаИзСчета
        ИЗ
            Документ.СчетНаОплатуПоставщика.Товары КАК СчетНаОплатуПоставщикаТовары) КАК ВложенныйЗапрос
        ПО ЗаказПоставщикуТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
            И ЗаказПоставщикуТовары.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры
16 Bobby McFerrin
 
21.04.17
17:49
Спасибо всем за помощь. Видимо прийдется клиентам подождать, пока Гилева досмотрю) Кстати, интересное наблюдение: любитель послать почитать книгу по существу ничего не сказал.
17 mehfk
 
21.04.17
18:21
(16) Что тебе сказать, мой йуный друх?
18 mehfk
 
21.04.17
18:22
Если я тебе дам рыбу, а не удочку, ты станешь в конце концов тем, кого зовут "тупым 1с-ником", ты этого хочешь?
19 mehfk
 
21.04.17
18:25
Научишься писать запросы - заткнешь за пояс половину тех, кто называет себя 1с-никами, имеют опыт, но невзирая на это, так и не научились писать запросы :)
AdBlock убивает бесплатный контент. 1Сергей