Цитата:На примере регистра Партий (см.выше). Запрос с джйном к журналу документов (желательно не блокируя его) - получить список документов, выполнивших приход, с кол-вом движений?
Будем исходить из следующих условий:
1. У тебя 2 фирмы(можно и больше, т.к. все равно формируется список)
2. Товар так же укладываем в список, т.к. возможна выборка группы или нескольких элементов . ну я так захотел :
3. Ну и присутствует ограничение по датам документов- это можешь выкинуть...
4. Далее.. не знаю, какую роль у тебя играют измерения Поставка и ПрихДокумент ??? так что буду отбирать записи с документами движения (IDDOC), где debkred = 0. Если, к примеру ПрихДокумент- это партиеобразующий документ, можно вместо IDDOC брать его- все равно перебираем движения…
ТекстЗапроса = "
|Select
| Партии.iddoc[ДокПрихода :Документ],
| Журнал.iddocdef ДокПрихода_вид,
| count(Партии.iddoc) КолДвидженийДоковПрихода
|from Регистр_ПартииТоваров Партии
|inner join Журнал on Партии.iddoc = Журнал.iddoc
|where
| Журнал.date between :НачДата and :КонДата and Журнал.ПартииТоваров ФР = 1 and Партии.debkred = 0
| and Партии.Фирма in (select val from СпсФирмы)
| and Партии.Номенклатура in (select val from СпсТовары)
|group by
| Партии.iddoc,Журнал.iddocdef
|";
база.УложитьОбъекты(ВыбТМЦ,"СпсТовары" , , "Номенклатура"); // ВыбТМЦ – возможно это будет один товар, группа товаров, список товаров и т.д.
// в СпсФирмы загружаем 2 фирмы.
СпсФирмы = СоздатьОбъект("СписокЗначений");
СпсФирмы.добавитьЗначение(ВыбФирма1);
СпсФирмы.добавитьЗначение(ВыбФирма2);
база.УложитьОбъекты(СпсФирмы,"СпсФирмы" , , "Фирмы");
Запрос.Подставлять("КонДата",КонДата);
Запрос.Подставлять("НачДата",НачДата);
Запрос.Подготовить(ТекстЗапроса);
запрос.отладка(1);
запрос.Выполнить().выбратьстроку();
Что касается стоимости индекстов:
В регистре движений партии индексы по измерениям регистров появятся только при установке в измерениях опции «
Отбор движений». Возможно после этого скорость выборки возрастет. Но вследствие чего распухнет CDX файл таблицы движений. Пример: в моей базе таб. Движения партий = 90 Мб, cdx = 4 Мб. Установил в измерениях фирма и номенклатура отбор движений. Долго сохраняла конфу. После этого CDX стал 30 Мб. Ну и скорость записи в регистр упадет- насколько не знаю- не проверял. Не думаю, что намного…
Но несмотря на отсутствие индексов по измерениям в движениях, выборка у меня была примерно такая: с 01/01/11 по текущий день, по двум фирмам и по группа в которой у нас лежит очень дофига товаров – длилась ~ 5 секунд при первом запуске, 3 сек.- при последующих. Начало движения в партиях- с середины 07 года, всего записей в движенях - примерно 1400000. Штатным способом выборка была бы однозначно не такая.
Связь с журналом делаем тогда, когда например нужна типизация документов неопределенного вида, когда нужно ограничивать выборку по датам движений. Исключение - когда в регистре установлен флаг «
Быстрая обработка движений».
Это добавляет в таб. движений поля IDDOCDEF, DATE, TIME.
Что касается блокировки таблиц- вроде по умолючанию блокировок нет. но можно их установить принудительно. для этого есть свойство запроса
ВыполнятьВТранзакции Вроде все...уф.. многабукаф...