1 С 7.7. (7.70.027). Конфигурация: Переделанный до неузнаваня ТИС.
В общих словах, есть аптека. Справочник товаров очень огромный, нужно чтобы фармацевт при подборе товара видел только тот, который есть на остатке. Состряпал следующий код:
Процедура ПриОткрытии()
глПриОткрытииФормыСправочника(Контекст);
Касса = глПользователь.ТекущийЭлемент().Касса;
Магазин = Касса.Магазин;
Склад = Касса.Склад;
Подразделение = Магазин.ОсновноеПодразделение;
СписТов = 0;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Магазин1 = Регистр.ОстаткиТоваров.Магазин;
|Подразделение1 = Регистр.ОстаткиТоваров.Подразделение;
|Склад1 = Регистр.ОстаткиТоваров.Склад;
|Товар = Регистр.ОстаткиТоваров.Товар;
|Количество = Регистр.ОстаткиТоваров.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Товар упорядочить по Товар.Наименование;
|Условие(Магазин1 в Магазин);
|Условие(Подразделение1 в Подразделение);
|Условие(Склад1 в Склад);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
СтатусВозвра(0)
КонецЕсли;
СписТов = СоздатьОбъект("СписокЗначений");
Пока Запрос.Группировка(1) = 1 Цикл
СписТов.ДобавитьЗначение(Запрос.Товар);
КонецЦикла;
Если СписТов <> 0 Тогда
ИспользоватьСписокЭлементов(СписТов);
ИерархическийСписок(0,0);
КонецЕсли;
КонецПроцедуры
Суть проблемы: когда делаем ручками подбор, нахождение Элемента справочника происходит очень долго.
Вопрос: Как убрать товар с остатком 0 с внимания пользователя и чтобы при этом подбор не тормозил ?
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)