1С:7.7 получить движения документа запросом
Добрый день. Хочу посоветоваться.
Есть нетиповая конфигурация, написанная на 1С Склад 7.7. База работает под SQL. Есть задача увеличить скорость проведения документа, в частности КомплектацииТМЦ. В процессе проведения, документ проводится по регистру ОстаткиТМЦ, ПартииТМЦ, а далее необходимо снять резервы, и вот последнее занимает большую часть времени. Замерами установлено, что при этом больше всего времени уходит на метод "Рег.ВыбратьДвиженияДокумента()" и последующий "Пока Рег.ПолучитьДвижение() > 0 Цикл".
Пробую движения документа получить Запросом. Ура! На это требуется времени в 2,5 раза меньше. Но меня терзают сомненья - нет ли в варианте с Запросом "подводных камней"?
Вот пример реализации запроса:
Запрос = СоздатьОбъект("Запрос");
ДатаНачала = ТекущийДокумент();
ДатаКонца = ТекущийДокумент();
ТекстЗапроса =
"
|Период с ДатаНачала по ДатаКонца;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоПриход = Приход(Количество);
|Функция КоличествоРасход = Расход(Количество);
|Группировка Номенклатура без групп;
|";//
(Прямые запросы, в качестве варианта оптимизации, не предлагать. Это вопрос - политический.)
(В результате Запроса Движения регистра ОстаткиТМЦ получаются не все, а с группировкой по номенклатуре, это понятно.)
Спасибо.
Есть нетиповая конфигурация, написанная на 1С Склад 7.7. База работает под SQL. Есть задача увеличить скорость проведения документа, в частности КомплектацииТМЦ. В процессе проведения, документ проводится по регистру ОстаткиТМЦ, ПартииТМЦ, а далее необходимо снять резервы, и вот последнее занимает большую часть времени. Замерами установлено, что при этом больше всего времени уходит на метод "Рег.ВыбратьДвиженияДокумента()" и последующий "Пока Рег.ПолучитьДвижение() > 0 Цикл".
Пробую движения документа получить Запросом. Ура! На это требуется времени в 2,5 раза меньше. Но меня терзают сомненья - нет ли в варианте с Запросом "подводных камней"?
Вот пример реализации запроса:
Запрос = СоздатьОбъект("Запрос");
ДатаНачала = ТекущийДокумент();
ДатаКонца = ТекущийДокумент();
ТекстЗапроса =
"
|Период с ДатаНачала по ДатаКонца;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоПриход = Приход(Количество);
|Функция КоличествоРасход = Расход(Количество);
|Группировка Номенклатура без групп;
|";//
(Прямые запросы, в качестве варианта оптимизации, не предлагать. Это вопрос - политический.)
(В результате Запроса Движения регистра ОстаткиТМЦ получаются не все, а с группировкой по номенклатуре, это понятно.)
Спасибо.
По теме из базы знаний
- Компонента "Быстрый регистр" для 1С 7.7 (на прямых запросах SQL 1c++)
- Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3
- АИС: Обмен с ФГИС Меркурий (Ветис.API) для всех* конфигураций 1С 7.7
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Первичное взаимодействие с ФГИС МДЛП в аптечной сети на 1С 7.7 (для "чайников"!)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
бред какой.
если выполняется в ТА - выгрузи итоги по регистру (резервов или чего там у тебя) в ТЗ и пробегая по ТЗ - гаси все что надо
если выполняется задним числом - аналогично, только перед выгрузкой - расчет временных итогов (обычно это существенно замедляет проведение).
не изобретай велосипед. посмотри модуль типовой ТиС
дальнейший способ ускорения - прямые запросы.
если выполняется в ТА - выгрузи итоги по регистру (резервов или чего там у тебя) в ТЗ и пробегая по ТЗ - гаси все что надо
если выполняется задним числом - аналогично, только перед выгрузкой - расчет временных итогов (обычно это существенно замедляет проведение).
не изобретай велосипед. посмотри модуль типовой ТиС
дальнейший способ ускорения - прямые запросы.
(2) CheBurator, может и бред. Конфигурацию писала 100 лет назад какая-то фирма. На текущий момент проведение документа в ТА гораздо дольше происходит (!!!!), чем "задним числом". Почему?!!! ТА установили в "далекое будущее". Бред? Бред. Вот и приходится извращаться. Прямые запросы и ВК руководство не принимает.
Была похожая проблема и она была связана с тем что 1с при формировании запросов не оптимально использует индексы некоторых регистров. Как вариант можно попробовать:
1)Изменить порядок измерений в регистре.
2)Поэкспериментировать с галочками "Отбор движений" и "Отбор итогов".
В моем случае после всех шаманств все же перешли на 1с++ и теперь уже не мыслю работу в 7.7 без прямых запросов.
1)Изменить порядок измерений в регистре.
2)Поэкспериментировать с галочками "Отбор движений" и "Отбор итогов".
В моем случае после всех шаманств все же перешли на 1с++ и теперь уже не мыслю работу в 7.7 без прямых запросов.
"Прямые запросы и ВК руководство не принимает. "
Вызывай сюда руководство, скажи "щас кто-то за непослушание ЧеБуратора ответит". :)
Тебе умный и опытный человек говорит, как сделать хорошо и надёжно. Ты оправдываешь лень кривым франчекодом. Это неправильно. Это прямой путь во франч.
Вызывай сюда руководство, скажи "щас кто-то за непослушание ЧеБуратора ответит". :)
Тебе умный и опытный человек говорит, как сделать хорошо и надёжно. Ты оправдываешь лень кривым франчекодом. Это неправильно. Это прямой путь во франч.
(11) Зеленоград,
"Хорошо и надёжно" можно сделать стандартными средствами. У меня на одной из предыдущих работ была база 7.7, в которой одновременно работало 350-500 юзеров. Никаких намёков на тормоза. Никаких прямых запросов и ВК. 2007 год.
Тебе умный и опытный человек говорит, как сделать хорошо и надёжно
"Хорошо и надёжно" можно сделать стандартными средствами. У меня на одной из предыдущих работ была база 7.7, в которой одновременно работало 350-500 юзеров. Никаких намёков на тормоза. Никаких прямых запросов и ВК. 2007 год.
(14) CheBurator, на том же и работают - за прошедшие 8 лет сервера только быстрее стали. Единственное неудобство - адекватного клюшечника даже за очень большие деньги хрен найдёшь, а у них программистка размножаться решила.
Про количество документов точно не скажу, но дофига. Плюс обмен с несколькими десятками баз (не УРБД). Там одной номенклатуры под 200 тысяч было.
Про количество документов точно не скажу, но дофига. Плюс обмен с несколькими десятками баз (не УРБД). Там одной номенклатуры под 200 тысяч было.
(17) CheBurator, там ничего особо интересного, просто аккуратно написанная конфигурация. Единственная такая яркая особенность - двадцатиэтажные "Если". Очень правильно написанные, очень аккуратно отформатированные, чтобы понимать их было проще, но у меня от них мозг болел. Я бы такую жуть писать не стал, разбил бы на части, но их автору, видать, нормально было. А так модули проведения скучные: запрос к итогам, потом цикл, внутри которого одно мозговзрывающее Если, внутри которого запись в регистр(ы) - у того парня, которому хватило ума на эти Если, хватило ума и на правильную структуру данных. Жаль, что не он типовые конфигурации восьмёрки писал.
(11) Зеленоград, всем огромное спасибо за советы. Потому и обратилась к сообществу, т.к. не считаю себя самой умной. С учетом данных здесь советов/рекомендаций уже переписываю код. Но программный продукт был выпущен фирмой с большим штатом, а я (по записи в трудовой книжке) даже не программист. Не та у меня должность и з/п, чтобы переделывать ВЕСЬ программный продукт. За "творчеством" Чебуратора слежу давно :) Мнение его уважаю.
(20) pikul, Рарус, что ли, этот копрокод сделал? Ну так его кто только не переписывал.
Смелей, только архивы наладь и проверь (смоделируй ситуацию "одновременно диск умер, сервер не включается, серверная залита водой, через час должны быть восстановлены продажи, через 2 - банк, к вечеру по 1 компу в отделе").
Смелей, только архивы наладь и проверь (смоделируй ситуацию "одновременно диск умер, сервер не включается, серверная залита водой, через час должны быть восстановлены продажи, через 2 - банк, к вечеру по 1 компу в отделе").
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот