СообЧа > База Знаний > Программы > Бухгалтерские системы >

Вопрос

Тема 1С сетевая, конфигурация Торговля и Склад (вдоль и поперек переписанная). Программирую на языке 1С в принципе довольно давно написал несколько конфигураций и вот сталкнулся с такой проблемой. Просто жуткие тормоза при формировании отчетов. Структура примерно такая:

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

Потом вывод таблицы — только сумма остатков в регистрах.
Пока Запрос. Группировка(1) = 1 Цикл
Если Запрос. КоличествоКонОст > 0 тогда
Таб.ВывестиСекцию(«ОбщийПоГороду»);
КонецЕсли;
КонецЦикла;

"Заполнено" в регистрах накладных ну 200-250 остальные (несколько тысяч нулевые)- впринципе не много, но запрос обрабатывает даже пустые регистры (начиная с полугодичной давности) и очень долго все пересчитывает что-то. Одновременно работает 6-7 пользователей. Даже если 1 пользователь — долго (5-10 мин). База на выделенном файловом сервере P3 933 со сказидисками, сеть 100 мбит.

Подскажите как оптимизировать программно? Например в конфигурации Бухгалтерия тысячи проводок влет обрабатываются. Может сетевой канал «узкий» и дело в железе?

Ответ

Нет, дело в реализации регистров в 1С. Это самый медленный и самый нестабильный механизм по заявлениям самой 1С. Что можно сделать для ускорения:

1. Не записывать пустые движения регистров — ни в коем случае
2. В меню операции — управление опер итогами установите период хранения остатков не месяц, а меньше. Это приведет к некоторому увеличению базы, но немного повысит скорость. Дело в том, что 1С раз в начале периода(месяца) делает снимок состояния регистров, и при обращении к регистрам за 01.01.02 данные будут получены моментально, а вот если хотите информацию за 30.01.02, тогда будет сделано следующее — остатки на 01.01.02 + все движения по каждому документу за период, т.е. перебирается КАЖДЫЙ документ.
3. Значительное ускорение может быть получено переводом на SQL

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация