По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
а. понял. точнее не понял сначала вопроса. прочитал, что в справочнике УЖЕ отображаются только имеющиеся...
тогда с точностью до наоборот:
1. Передавать в форму справочника МестоХранания.
2. ПриОткрытии формировать список значений, где только те товары, которые есть в наличии (простым перебором элементов + Регистр.Остаток или Регистр.СводныйОстаток)
3. ПриОткрытии же отключить иерархию и ИспользоватьСписокЭлементов()
4. Не забыть (если надо) ПриЗакрытии установить иерерхию как было.
У меня на 6000 наименований форма таким образом открывается ~1,5 сек.
тогда с точностью до наоборот:
1. Передавать в форму справочника МестоХранания.
2. ПриОткрытии формировать список значений, где только те товары, которые есть в наличии (простым перебором элементов + Регистр.Остаток или Регистр.СводныйОстаток)
3. ПриОткрытии же отключить иерархию и ИспользоватьСписокЭлементов()
4. Не забыть (если надо) ПриЗакрытии установить иерерхию как было.
У меня на 6000 наименований форма таким образом открывается ~1,5 сек.
Код |
---|
ВремРегистры = СоздатьОбъект("Регистры");
ВремРегОстатки= ВремРегистры.ОстаткиТМЦ;
//тут можно установить временный расчет регистра остатков если надо и рассчитать регистры На или По нужное событие (документ или дату)
СписокНом=СоздатьОбъект("СписокЗначений");
СпрНом=СоздатьОбъект("Справочник.Номенклатура");
СпрНом.ВыбратьЭлементы();
Счетчик=0;
Пока СпрНом.ПолучитьЭлемент()=1 Цикл
Счетчик=Счетчик+1;
Состояние("Выполняется обработка. Обработано "+Счетчик+" элементов.");
Если СпрНом.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли; КонОст=ВремРегОстатки.СводныйОстаток(ВыбМестоХранения,СпрНом.ТекущийЭлемент(),"Количество");
Если (КонОст>0) Тогда
СписокНом.ДобавитьЗначение(СпрНом.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
ИерархическийСписок(0,1);
ИспользоватьСписокЭлементов(СписокНом);
Показать полностью |
ну вот что-то типа такого. переменные тока обзывай как они у тя обзываются.
Я поменял немного код.
ВремРегистры = СоздатьОбъект("Регистры");
ВремРегОстатки= ВремРегистры.ОстаткиТоваров;
СписокТов=СоздатьОбъект("СписокЗначений");
СпрТов=СоздатьОбъект("Справочник.Товар");
СпрТов.ВыбратьЭлементы();
Счетчик=0;
Пока СпрТов.ПолучитьЭлемент()=1 Цикл
Счетчик=Счетчик+1;
Состояние("Выполняется обработка. Обработано "+Счетчик+" элементов.");
Если СпрТов.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
КонОст=ВремРегОстатки.СводныйОстаток(Склад,СпрТов.ТекущийЭлемент(),"Количество");
Если (КонОст>0) Тогда
СписокТов.ДобавитьЗначение(СпрТов.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
ИерархическийСписок(0,1);
ИспользоватьСписокЭлементов(СписокТов);
А где посмотреть переменные?
ВремРегистры = СоздатьОбъект("Регистры");
ВремРегОстатки= ВремРегистры.ОстаткиТоваров;
СписокТов=СоздатьОбъект("СписокЗначений");
СпрТов=СоздатьОбъект("Справочник.Товар");
СпрТов.ВыбратьЭлементы();
Счетчик=0;
Пока СпрТов.ПолучитьЭлемент()=1 Цикл
Счетчик=Счетчик+1;
Состояние("Выполняется обработка. Обработано "+Счетчик+" элементов.");
Если СпрТов.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
КонОст=ВремРегОстатки.СводныйОстаток(Склад,СпрТов.ТекущийЭлемент(),"Количество");
Если (КонОст>0) Тогда
СписокТов.ДобавитьЗначение(СпрТов.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
ИерархическийСписок(0,1);
ИспользоватьСписокЭлементов(СписокТов);
А где посмотреть переменные?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот