Имя: Пароль:
1C
1С v8
Очень долго формируется отчет
,
0 prilforreal
 
18.07.17
14:17
Добрый день, прошу вашей помощи!
Строю отчет в скд, в в конструкторе запроса, добавляю необходимые измерения из регистра, один реквизит из табличной части документа и  ставлю условие - период, связи через левое соединение, отчет грузится невероятно долго, хотя к нему нужно еще одно измерение другого регистра прикрепить с условием отбора... вот текст запроса:

ВЫБРАТЬ
    ДилЗаказТабличнаяЧасть1.Срок КАК Срок,
    Потолки.Код,
    Потолки.Заказчик,
    Потолки.Материал,
    Потолки.Площадь
ИЗ
    РегистрНакопления.Потолки КАК Потолки
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДилЗаказ.ТабличнаяЧасть1 КАК ДилЗаказТабличнаяЧасть1
        ПО Потолки.Регистратор.Ссылка = ДилЗаказТабличнаяЧасть1.Срок
ГДЕ
    ДилЗаказТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода

СГРУППИРОВАТЬ ПО
    ДилЗаказТабличнаяЧасть1.Срок,
    Потолки.Код,
    Потолки.Заказчик,
    Потолки.Материал,
    Потолки.Площадь
1 Джинн
 
18.07.17
14:32
Странное какое-то соединение:

ПО Потолки.Регистратор.Ссылка = ДилЗаказТабличнаяЧасть1.Срок
2 Ц_У
 
18.07.17
14:32
ПО Потолки.Регистратор.Ссылка = ДилЗаказТабличнаяЧасть1.Срок
3 mehfk
 
18.07.17
14:35
(0)
Регистр - шляпа
Документ - шляпа
Запрос - шляпа
4 prilforreal
 
18.07.17
14:40
(1) Потолки.Регистратор.ТабличнаяЧасть1.Срок = илЗаказТабличнаяЧасть1.Срок

Так вернее будет?
5 prilforreal
 
18.07.17
14:41
(3) Шляпник, дай совет лучше)
6 Любопытная
 
18.07.17
14:43
какой-то ужас в (0)
7 vicof
 
18.07.17
14:43
(5) Позовите программиста
8 Ц_У
 
18.07.17
14:44
(4) если у тебя есть срок и регистратор нахрена соединять?
9 vicof
 
18.07.17
14:44
(3) +100500
10 Любопытная
 
18.07.17
14:44
(5) почему запрос к реальной таблице регистра? Почему таблица регистра слева, а ТЧ документа справа? Что вы вообще собрать хотите?
11 catena
 
18.07.17
14:49
(4)Да, сделай так. У тебя количество записей регистра умножится на количество строк в документе.
12 prilforreal
 
18.07.17
14:53
(10) Из таблицы регистра вытаскиваю почти все, из ТЧ док-а только одно поле-Срок, нужен отчет, без группировок, по колонкам- срок - код - материал - площадь - заказчик. Сперва это, после приделать регистратор состояния потолка, через него отбирать только готовые.
13 Любопытная
 
18.07.17
14:54
(12) у тебя выбирается вся таблица регистра без ограничения вообще. Уверен, что тебе это надо?
14 prilforreal
 
18.07.17
15:00
(12) Нет, мне нужно только 4 измерения, соединение начал делать по той причине, что сроки начали прописываться там, где даже нет записей о них, и в стремлении к соответствию данных попробовал соединить таблицы
15 Любопытная
 
18.07.17
15:02
а, т.е. ты даже не понимаешь о чем я говорю. Ну ок.
Тогда точно (7)
16 Avalone2010
 
18.07.17
15:04
(12)В вашем регистре добавьте реквизит - срок. Не придеться выполнять соединения.
17 prilforreal
 
18.07.17
15:10
(15) я же ответил, что вся таблица регистра мне не нужна, только данные по четырем измерениям, ограниченные во времени и критериями отбора. Все же программисты рождаются обученными и квалифицированными.
18 Джинн
 
18.07.17
15:13
(17) Не обученные и не квалифицированные учатся и повышают свою квалификацию. Тут (3) прав - архитектура ээ..., в общем в армию тоже не годится. Отсюда дальше лезут всяческие проблемы, с которыми Вы пытаетесь героически бороться. Нет рядом никого, кто бы хотя бы концептуально архитектуру решения набросал? Коллеги какие-нибудь?
19 Avalone2010
 
18.07.17
15:14
(0)Нужна проверка заполнения срока по регистру?Типа в документе срока нет а в регистре он вдруг появился?
20 Любопытная
 
18.07.17
15:16
(17) Вы не поняли о чем я говорю. У вас берется вообще вся таблица. Представьте себе регистр в виде большого шкафа. В шкафу на полках стоят некие папки с документами. Вам нужно выбрать некоторые документы. И вы для этого берете и весь шкаф переворачиваете. Зачем вы так делаете?
21 troekurov1991
 
18.07.17
15:18
(0) Бери стандартную обработку "Консоль запросов", идет вроде с ИТС и отлаживай в ней свой запрос. Вначале задай более жесткие условия чтобы запрос не завис и что-то хотя бы вывел, потом убирай лишние условия
22 troekurov1991
 
18.07.17
15:20
(7) (20) Нехорошо издеваться над ребенком
23 Любопытная
 
18.07.17
15:21
(22) я не издеваюсь, я пытаюсь объяснить. Вопрос в (0) - почему долго строится отчет, я на пальцах объясняю почему он долго строится.
24 troekurov1991
 
18.07.17
15:24
(23) Я сомневаюсь что у него настолько большая даже файловая база, чтобы были проблемы с производительностью из-за того что он телегу впереди лошади ставит. В его случае лошадь будет толкать телегу достаточно быстро если было бы наоборот.
25 Любопытная
 
18.07.17
15:27
(24) Во-первых, мы не знаем. Во-вторых, это не повод писать тупой код. Стремиться к хорошему нужно всегда.
26 troekurov1991
 
18.07.17
15:27
(0) Сколько в регистре накопления "Потолки" у Вас записей?
27 troekurov1991
 
18.07.17
15:29
(25) Тупой не тупой, главное что работает, это для новичка большое достижение. А искать узкие места в плане производительности должен архитектор, а не новичок.
28 Любопытная
 
18.07.17
15:30
(27) И вы считаете себя хорошим специалистом?
29 troekurov1991
 
18.07.17
15:33
(28) Нет я знаю немного больше новичка, но успешно решил в одиночку несколько больших проектов.
30 troekurov1991
 
18.07.17
15:34
(28) Заказчик считает меня хорошим специалистом))
31 Любопытная
 
18.07.17
15:34
(29) я прям представляю эти решения.
32 piter3
 
18.07.17
15:34
(30) может просто разницы не понимает
33 Ц_У
 
18.07.17
15:34
(29) написать внешнюю печатную форму - это не проект
34 troekurov1991
 
18.07.17
15:38
(33) 1) Перенес почти все данные из 1С 7.7 Комплексная в 1С:8.2 Комплексная автоматизация  
2) "с нуля" разработал конфу, перенес данные из старой программы Delphi, и организовал обмен с 1С:ЗУП?
Продолжать?))
35 piter3
 
18.07.17
15:39
конечно продолжай
36 prilforreal
 
18.07.17
15:40
По порядку, беру из регистра Потолки необходимые измерения- колонки которые будут выводиться в отчете, (Площадь, Материал, Заказчик, Код) т.к. реквизиты из табличной части документа регистратора я включить в запрос не могу, приходится записи подтягивать из реквизита табличной части документа (ДокументДилЗаказ.ТабличнаяЧасть1.Срок) (23) записей в регистре накопления потолки пока несколько тысяч, т.к. база молодая, но в день появляется около сотни записей. Далее устанавливаю связь через регистратор, коллега подсказал связь делать через Регистратор.Документ.Ссылка на Доккумент.ТабличнаяЧасть.Срок. Условие пока только на период.
37 troekurov1991
 
18.07.17
15:40
(35) Теперь Вы сэр)))
38 piter3
 
18.07.17
15:41
(37) тут пальцами ты машешь,мне это не нужно)
39 troekurov1991
 
18.07.17
15:41
(36) Как долго формируется отчет, больше 15 секунд?
40 troekurov1991
 
18.07.17
15:41
(38) Я так и знал))
41 troekurov1991
 
18.07.17
15:44
(33) У меня на прошлой работе была внешняя обработка в ней учитывалось рабочее время и считалась зарплата, вместо того чтобы изменять ЗУП менялась эта обработка, в ней было 15 тыс. строк кода, я бы назвал ее тоже проектом
42 prilforreal
 
18.07.17
15:46
(20) Мне и нужны все записи о потолках в периоде, позже будет отбор по состоянию потолка, но так как я пока не могу связать регистр с документом не берусь туда еще один регистр СостояниеПотолков привязывать
43 prilforreal
 
18.07.17
15:46
(39) больше 15 минут
44 Любопытная
 
18.07.17
15:47
Ой нет, у меня слов нет. ТС, тебе тут товарищ "Троекуров" пусть помогает, вы, похоже, нашли друг друга
45 prilforreal
 
18.07.17
15:51
(44) Любопытная, спасибо конечно, но может подскажете, чем лучше мне здесь виртуальная таблица и как ее использовать вместо реальной.
46 vicof
 
18.07.17
15:54
(45) Посмотри курс по запросам от @Groovy хотя бы. Чтобы основы основ понимать.
47 youalex
 
18.07.17
15:54
(43)
>ПО Потолки.Регистратор.Ссылка = ДилЗаказТабличнаяЧасть1.Срок

1) ".Ссылка" здесь не нужно, это лишнее соединение
2) у тебя во всех документах по одной строке?  У тебя  получается что все строки ТЧ одного документа - соединяются со всеми записями регистра по этому документу. Т.е. если в документе 100 строк (и записей сто) - то в результат по этому доку выведется 100*100 = 10 000 записей
48 prilforreal
 
18.07.17
15:58
(45) Спасибо, обязательно посмотрю, вся проблема в том, что с связанными таблицами сталкиваюсь впервые... (43) то есть мне достаточно использовать  
Потолки.Регистратор= ДилЗаказТабличнаяЧасть1.Срок?
Нет, в документе то количество строк, сколько потолков менеджер к нему прикрепил.
49 troekurov1991
 
18.07.17
15:58
(43)  >ПО Потолки.Регистратор.Ссылка = ДилЗаказТабличнаяЧасть1.Срок

Ты дату или число (срок) сравниваешь с документом (регистратор)?
50 prilforreal
 
18.07.17
16:01
(49) Дату.
51 LuciferArh
 
18.07.17
16:03
(50) А зачем?
52 troekurov1991
 
18.07.17
16:04
(50) Сравнивай одинаковые типы, а то ты дату с ссылкой на документ сравниваешь
53 troekurov1991
 
18.07.17
16:05
(50) Отчет тебе вообще правильную таблицу выдает?
54 prilforreal
 
18.07.17
16:05
(52) тогда так

ДилЗаказТабличнаяЧасть1.Срок=Регистратор.ТабличнаяЧасть1.Срок
55 prilforreal
 
18.07.17
16:07
(53) Последний раз таблицу выдавал правильную, но происходило как заметил (47), число записей по одному документу дублировалось в количестве его строк
56 vicof
 
18.07.17
16:09
(54) мыши плакали и кололись
57 prilforreal
 
18.07.17
16:11
(56) Как правильно сделать соединение, я скоро уже сам мышью плачуще-колющейся стану...
58 vicof
 
18.07.17
16:14
(57) Правильно не соединения делать, а грамотно спроектировать структуру решения.
59 prilforreal
 
18.07.17
16:17
Может все на поверхности и мне нужно добавить не один лишь реквизит Срок, а вместе с табличной частью? Тогда и связь автоматически заполняется...
ПО Потолки.Регистратор = ДилЗаказ.Ссылка
60 troekurov1991
 
18.07.17
16:20
(59) ТАк пробуй че спрашиваешь!
61 prilforreal
 
18.07.17
16:28
Отчет начал формироваться, быстро и без дублей, всем большое спасибо за терпение!)
62 troekurov1991
 
18.07.17
16:39
(31) Любопытная скушала?))
63 Любопытная
 
18.07.17
23:14
(62) ты прикалываешься? Хотя о чем это я... Да, вы великие спецы, постараюсь держаться от вас подальше, чтобы не дай бог не навредить вашей репутации.
64 Diman000
 
18.07.17
23:35
(61) Главное понять почему Регистратор.Ссылка это ужасно.
65 H A D G E H O G s
 
19.07.17
00:42
РН Потолки
РС Стены
АВ Днище
66 Злопчинский
 
19.07.17
05:04
Пусть автор почитает совсем небольшую книжку
SQL для чайников
Автор вроде Тейлор
Иначе он нихрена не поймёт как и зачем таблицы соединяются
67 Diman000
 
19.07.17
06:58
Тут еще "1С в SQL для чайников" нужен. Если есть такой.
Для любой таблицы 1С ".Ссылка" это плохо и бессмысленно.
Но Регистратор это часто много-много таблиц, поэтому в нем любые поля через точку это совсем беда бедная и потеря потерь потерь, если не типизировать.
68 prilforreal
 
19.07.17
08:24
(66) Спасибо, прочту)
69 troekurov1991
 
19.07.17
08:56
(68) Да нафиг тебе эти книжки по SQL, это уж потом для общего развития. Для начала набери на ютубе: "1С запросы" и вдумчиво послушай там курс видеоуроков и в обработке "Консоль запросов.epf" поиграйся с запросами.
72 prilforreal
 
19.07.17
11:21
(69) Благодарю за материал, буду развиваться)