1С:7.7 получить движения документа запросом

1. pikul 112 15.06.15 15:21 Сейчас в теме
Добрый день. Хочу посоветоваться.
Есть нетиповая конфигурация, написанная на 1С Склад 7.7. База работает под SQL. Есть задача увеличить скорость проведения документа, в частности КомплектацииТМЦ. В процессе проведения, документ проводится по регистру ОстаткиТМЦ, ПартииТМЦ, а далее необходимо снять резервы, и вот последнее занимает большую часть времени. Замерами установлено, что при этом больше всего времени уходит на метод "Рег.ВыбратьДвиженияДокумента()" и последующий "Пока Рег.ПолучитьДвижение() > 0 Цикл".
Пробую движения документа получить Запросом. Ура! На это требуется времени в 2,5 раза меньше. Но меня терзают сомненья - нет ли в варианте с Запросом "подводных камней"?
Вот пример реализации запроса:

Запрос = СоздатьОбъект("Запрос");
ДатаНачала = ТекущийДокумент();
ДатаКонца = ТекущийДокумент();
ТекстЗапроса =
"
|Период с ДатаНачала по ДатаКонца;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоПриход = Приход(Количество);
|Функция КоличествоРасход = Расход(Количество);
|Группировка Номенклатура без групп;
|";//

(Прямые запросы, в качестве варианта оптимизации, не предлагать. Это вопрос - политический.)
(В результате Запроса Движения регистра ОстаткиТМЦ получаются не все, а с группировкой по номенклатуре, это понятно.)
Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. vasyak319 150 16.06.15 14:11 Сейчас в теме
(1) pikul, т.е. вы сейчас в раздумьях, как при проведении документа воспользоваться цифрами, которые вы перед этим запихали в регистр. А какое табу мешает запомнить всё, что нужно в, скажем, таблице значений, чтобы не обращаться за этим к базе вовсе?
2. CheBurator 3122 15.06.15 21:27 Сейчас в теме
бред какой.
если выполняется в ТА - выгрузи итоги по регистру (резервов или чего там у тебя) в ТЗ и пробегая по ТЗ - гаси все что надо
если выполняется задним числом - аналогично, только перед выгрузкой - расчет временных итогов (обычно это существенно замедляет проведение).
не изобретай велосипед. посмотри модуль типовой ТиС
дальнейший способ ускорения - прямые запросы.
3. pikul 112 16.06.15 11:57 Сейчас в теме
(2) CheBurator, может и бред. Конфигурацию писала 100 лет назад какая-то фирма. На текущий момент проведение документа в ТА гораздо дольше происходит (!!!!), чем "задним числом". Почему?!!! ТА установили в "далекое будущее". Бред? Бред. Вот и приходится извращаться. Прямые запросы и ВК руководство не принимает.
4. CheBurator 3122 16.06.15 12:05 Сейчас в теме
(3) ТА установили в далекое будущее - это ваще бред.
видимо попытки решить какие-то задачи "проведения будущим числом".
народ не различал требуемых сущностей и наплодид диплодоков неповоротливых
10. pikul 112 16.06.15 14:33 Сейчас в теме
(4) CheBurator, я вот понять не могу, почему документ в ТА проводится дольше, чем до ТА (поэтому и сместили ТА в будущее, чтобы документы проводились быстрее): в чем может быть причина, где копать?
13. CheBurator 3122 16.06.15 17:40 Сейчас в теме
(10) бяка какая-то, скорее всего в коде прямо прописано что если проведение задним числом то ускоренный расчет или отсутсвие контроля
23. pikul 112 17.06.15 17:23 Сейчас в теме
(2) CheBurator, Всем спасибо (и особенно Чебуратору). Время проведения документа сократила в 3 раза (без ВК и прямых запросов). Считаю тему закрытой.
5. AndKovalchuk 192 16.06.15 12:10 Сейчас в теме
А смысл анализировать движения документа Комплектация ТМЦ по количеству, не проще вытащить все из табличной части документа?
6. l_user 16.06.15 13:41 Сейчас в теме
(5) AndKovalchuk,
не проще вытащить все из табличной части документа
Очень странное предложение... Откуда уверенность, что количество в документе и в регистре совпадают?
9. pikul 112 16.06.15 14:27 Сейчас в теме
(5) AndKovalchuk, а х.з., почему программисты это сделали. Я тоже задаюсь этим вопросом и сейчас переписываю код, вытаскивая данные из табличной части документа
7. sanek_kop 15 16.06.15 14:06 Сейчас в теме
Была похожая проблема и она была связана с тем что 1с при формировании запросов не оптимально использует индексы некоторых регистров. Как вариант можно попробовать:
1)Изменить порядок измерений в регистре.
2)Поэкспериментировать с галочками "Отбор движений" и "Отбор итогов".
В моем случае после всех шаманств все же перешли на 1с++ и теперь уже не мыслю работу в 7.7 без прямых запросов.
11. Зеленоград 16.06.15 15:14 Сейчас в теме
"Прямые запросы и ВК руководство не принимает. "

Вызывай сюда руководство, скажи "щас кто-то за непослушание ЧеБуратора ответит". :)

Тебе умный и опытный человек говорит, как сделать хорошо и надёжно. Ты оправдываешь лень кривым франчекодом. Это неправильно. Это прямой путь во франч.
12. vasyak319 150 16.06.15 15:24 Сейчас в теме
(11) Зеленоград,
Тебе умный и опытный человек говорит, как сделать хорошо и надёжно


"Хорошо и надёжно" можно сделать стандартными средствами. У меня на одной из предыдущих работ была база 7.7, в которой одновременно работало 350-500 юзеров. Никаких намёков на тормоза. Никаких прямых запросов и ВК. 2007 год.
14. CheBurator 3122 16.06.15 17:41 Сейчас в теме
(12) интересно, каков был поток документов/строк вэтого количества юзеров? и на чем работают сейчас?
на моей памяти таким количеством юзеров на клюшках озвучивали ОЧЕНЬ немногие...
15. vasyak319 150 16.06.15 18:16 Сейчас в теме
(14) CheBurator, на том же и работают - за прошедшие 8 лет сервера только быстрее стали. Единственное неудобство - адекватного клюшечника даже за очень большие деньги хрен найдёшь, а у них программистка размножаться решила.
Про количество документов точно не скажу, но дофига. Плюс обмен с несколькими десятками баз (не УРБД). Там одной номенклатуры под 200 тысяч было.
17. CheBurator 3122 16.06.15 20:43 Сейчас в теме
(15) круто. было бы интересно глянуть на этого монстра. с учетом того что я сам клюшечник. может что полезное обоюдное - если что стукнись в личку
18. vasyak319 150 16.06.15 21:00 Сейчас в теме
(17) CheBurator, там ничего особо интересного, просто аккуратно написанная конфигурация. Единственная такая яркая особенность - двадцатиэтажные "Если". Очень правильно написанные, очень аккуратно отформатированные, чтобы понимать их было проще, но у меня от них мозг болел. Я бы такую жуть писать не стал, разбил бы на части, но их автору, видать, нормально было. А так модули проведения скучные: запрос к итогам, потом цикл, внутри которого одно мозговзрывающее Если, внутри которого запись в регистр(ы) - у того парня, которому хватило ума на эти Если, хватило ума и на правильную структуру данных. Жаль, что не он типовые конфигурации восьмёрки писал.
19. CheBurator 3122 16.06.15 21:32 Сейчас в теме
(18) интересно было бы глянуть...
.
я многоэтажные если не люблю писать. использую только тогда когда с передачей управления туго. а так зачастую вместо кучи вложенных если - куча линеынйых если с возвратами или "продолжить"
16. _Z1 38 16.06.15 19:32 Сейчас в теме
(12) Все равно правильно написанный запрос на 1с++ дает самый быстрый результат
и при этом с наименьшей загрузкой sql сервера.
Так что это лучший путь для ускорения - но надо много знать.

Ну тут уж каждый сам решает что именно ему использовать.
20. pikul 112 17.06.15 09:44 Сейчас в теме
(11) Зеленоград, всем огромное спасибо за советы. Потому и обратилась к сообществу, т.к. не считаю себя самой умной. С учетом данных здесь советов/рекомендаций уже переписываю код. Но программный продукт был выпущен фирмой с большим штатом, а я (по записи в трудовой книжке) даже не программист. Не та у меня должность и з/п, чтобы переделывать ВЕСЬ программный продукт. За "творчеством" Чебуратора слежу давно :) Мнение его уважаю.
Зеленоград; +1 Ответить
21. Зеленоград 17.06.15 10:31 Сейчас в теме
(20) pikul, Рарус, что ли, этот копрокод сделал? Ну так его кто только не переписывал.

Смелей, только архивы наладь и проверь (смоделируй ситуацию "одновременно диск умер, сервер не включается, серверная залита водой, через час должны быть восстановлены продажи, через 2 - банк, к вечеру по 1 компу в отделе").
22. pikul 112 17.06.15 10:48 Сейчас в теме
(21) Зеленоград, для этого у нас есть специальный сисадмин, он все это делает. Архивы делаются и средствами SQL, и средствами 1С. А разработчик ПО - "Астрософт", доработки делал какой-то ПроектЭксперт (комменты стоят).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот