Имя: Пароль:
1C
1С v8
остатки на каждый день, оптимизация
0 Stim
 
27.03.13
10:18
Получаю остатки на каждый день, связывая регл произв календарь с регистром по условию датаКалендаря больше периода регистра. Группируются по максимуму периода, связываю полученную таблицу с регистром по условию максПериод равно период.
И все бы хорошо, но в регистре пара сотен тысяч записей, почти все они соединяются с каждой датой из календаря. Итого имеем примерно сотню тысяч записей на каждый день из периода в среднем.
Выполняется такое соединение 1-2 минуты.
Как можно оптимизировать? РС периодический( день) должен заполняться каждый день, но если не заполнен, то брать предыдущее рассчитанное значение.
1 mistеr
 
27.03.13
10:32
Если есть записи "почти" за каждый день, можно выбрать все и кодом пробежаться, заполнить ТЗ на каждый день.

P.S. В РС остатки?
2 neckto
 
27.03.13
10:41
1. Запрос к таблице остатков.
2. Запрос к таблице Остатки и обороты за указанный период с разбивкой по дням - расчет остатка на конец текущего дня = Остаток за предыдущий день+оборот за текущий.
3 mistеr
 
27.03.13
10:44
(2) Тоже попался :) "РС периодический"
4 neckto
 
27.03.13
10:46
(3) И что?
5 Stim
 
27.03.13
10:49
Не остатки, а какие-то расчетные значения,  получаемые из периодического регистра сведений, типа курсов валют.
6 neckto
 
27.03.13
10:53
А, блин. Ну заведи регистр накопления.
7 Stim
 
27.03.13
11:00
(6)  нафейхуа?
8 НафНаф
 
27.03.13
11:02
(0) сделай временную таблицу интервалы действия, работай с ней потом
9 hhhh
 
27.03.13
11:02
(7) вообще-то в отчетах десятки миллиардов строчек в выборке колбасятся. Сто тысяч - это несерьезно, даже не стоит заморачиваться.
10 scanduta
 
27.03.13
11:04
Юзай Скд ...Период из календаря передавай между запросами как параметр
11 Stim
 
27.03.13
11:06
(10) скд не катит. Таблицу с данными нужно получать из разных мест
12 Stim
 
27.03.13
11:07
(8) временную табл из регистра?что это даст?
13 scanduta
 
27.03.13
11:07
(11)Подробнее можно?
14 Stim
 
27.03.13
11:14
(13) подробнее- на каждый день задается стоимость товаров. В рс.
Мне нужно на каждую дату операции с этими товарами получить стоимость. Можно через запрос в цикле срезом последних на каждый документ, но лучше получить таблицу за весь период операций. Эта оценка операций нужна в нескольких отчетах и документах
15 scanduta
 
27.03.13
11:18
(14) ну делай 2 набора жанныхв СКД один будет собой представлять дата из РС.

А второй запрос будет по остаткам. (вирт. таблица) А параметра дата передавай из первого набора данных
16 scanduta
 
27.03.13
11:19
Так получятся остатки на каждую дату из РС
17 Stim
 
27.03.13
11:21
Пля. Без скд
18 scanduta
 
27.03.13
11:22
Зря там очень просто это
19 Stim
 
27.03.13
11:24
Подозреваю, что скд в этом случае проводит запрос в цикле по каждой строке первой таблицы. Да и в любом случае- как получить тз от скд?
20 scanduta
 
27.03.13
11:24
Если что вот статья как быстро сделать http://1c-wiki.ru/wiki/Ежедневные_остатки
21 mistеr
 
27.03.13
20:37
(14) >Эта оценка операций нужна в нескольких отчетах и документах
Если такая выборка действительно нужна во многих местах, и получать ее нужно быстро, то можно материализовать ее в отдельном регистре. Аналогично тому, как в ЗУПе графики работы заполняются на каждый день. Заполнять при изменении стоимости в первичном регистре.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший