Acid @ Сегодня, 14:49
необходимо зарегистрироваться для просмотра ссылки
,
Техподдержка ДЦ предлагают подключить разработчиков конфигурации для анализа, но т.к. конфигурация немного модифицирована меня мучают сомнения, что они откажут.
В частности модификация заключалась в следующем, была доработана форма подбора номенклатуры (из видимых):
было
стало
Теперь вся информация находится перед глазами и не нужно прыгать по закладкам, чтобы увидеть нужную информацию.
ТабличноеПоле "ПодобранныйТовар" используется для накопления подбираемого товара и потом отправкой его всего в документ - очень удобно и быстро получилось, т.е. набрал артикул нажал Ввод, в вопросе указал количество и набираешь другой артикул...
Плюс верхнее дерево и сам список товаров пришлось кинуть на панель (без закладок), т.о. ограничил их от нижней панели с закладками и перенастроил привязки, т.к. постоянно нарушалось построение элементов на форме - элементы наползали одни на другие сбиваясь в кучу, для восстановления нужно было выбрать "Восстановить положение окна", но это было до следующего открытия.
Но это все не влияет на тормоза.
Единственно, что дает визуализацию тормозов при непонятных нагрузках на диск это функция определения допустимого остатка при выборе товара, которая при выборе товара выполняет запрос на остаток и кол-во уже выписанного в реализациях, но еще не проведенных.
Функция ДопустимыйОстаток(Артикул)
Товар = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Запрос = Новый Запрос;
ПодразделениеТекущегоПользователя = "";
Если ТекСклад = 0 Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиТоваровКомпанииОстатки.Номенклатура,
| ОстаткиТоваровКомпанииОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиТоваровКомпании.Остатки(
| ,
| Номенклатура = &Номенклатура) КАК ОстаткиТоваровКомпанииОстатки";
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиТоваровКомпанииОстатки.Номенклатура,
| ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,
| ОстаткиТоваровКомпанииОстатки.СкладКомпании
|ИЗ
| РегистрНакопления.ОстаткиТоваровКомпании.Остатки(, Номенклатура = &Номенклатура) КАК ОстаткиТоваровКомпанииОстатки
|ГДЕ
| ОстаткиТоваровКомпанииОстатки.СкладКомпании.РегионПродаж = &РегионПродаж";
Запрос.УстановитьПараметр("РегионПродаж", ТекСклад);
КонецЕсли;
Запрос.УстановитьПараметр("Номенклатура", Товар);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Остаток = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Остаток = Остаток+ВыборкаДетальныеЗаписи.КоличествоОстаток;
КонецЦикла;
Если Остаток = 0 Тогда
Возврат Остаток;
КонецЕсли;
// Найдем и узнаем сколько пользователь уже добавил товара в подбор
НайденаяСтрока = ПодобранныйТовар.Найти(Товар.Артикул, "Артикул");
ПодобраноКоличество = 0;
Если НайденаяСтрока = Неопределено Тогда
Иначе
ПодобраноКоличество = НайденаяСтрока.Количество;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровТовары.Количество,
| РеализацияТоваровТовары.Номенклатура,
| РеализацияТоваровТовары.Ссылка
|ИЗ
| Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваров КАК РеализацияТоваров
| ПО РеализацияТоваровТовары.Ссылка = РеализацияТоваров.Ссылка
|ГДЕ
| РеализацияТоваров.Проведен = ЛОЖЬ
| И РеализацияТоваров.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
| И РеализацияТоваров.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
| И РеализацияТоваров.СкладКомпании.РегионПродаж = &РегионПродаж";
ДатаНач = ДобавитьМесяц(НачалоДня(ТекущаяДата()), -1);
ДатаКон = КонецДня(ТекущаяДата())+1;
Запрос.УстановитьПараметр("ДатаНачала",ДатаНач);
Запрос.УстановитьПараметр("ДатаКонца",ДатаКон);
Запрос.УстановитьПараметр("Номенклатура",Товар);
Запрос.УстановитьПараметр("РегионПродаж",ТекСклад);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ВыписаноВДокументах = 0;
Пока Выборка.Следующий() Цикл
Если Выборка.Номенклатура = Товар Тогда
ВыписаноВДокументах = ВыписаноВДокументах+Выборка.Количество;
КонецЕсли;
КонецЦикла;
ДопустимыйОстаток = Остаток - ПодобраноКоличество - ВыписаноВДокументах;
Если ВыписаноВДокументах > 0 Тогда
ПоказатьОповещениеПользователя("ПОИСК В ДОКУМЕНТАХ: ",ПолучитьНавигационнуюСсылку(Товар.Ссылка), Товар.Артикул+
" уже выписано в не проведенных документах "+Символы.ПС+
"в количестве: "+Строка(ВыписаноВДокументах)+" шт.",БиблиотекаКартинок.Информация);
КонецЕсли;
Возврат ДопустимыйОстаток;
КонецФункции
Назначение функции следующее если на остатке числится 5 шт болтов, 2 болта уже выписаны одним из пользователей, но реализация еще не проведена, а другой пользователь пытается выписать 4 болта, то функция вычислит что допустимый остаток 5-2=3 шт, что меньше 4 и выдаст сообщение, что допустимо 3 и кто-то уже выписал болты.
ИМХО данная функция не должна создает большой нагрузки, но по задержке в ее выполнении можно судить о силе тормозов происходящих на сервере.