Установить отбор в справочнике

1. SergeyR 17.09.07 14:13 Сейчас в теме
Как можно установить отбор в справочнике товар, чтобы отображался только тот товар который есть на складе.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sevenlis 70 17.09.07 14:22 Сейчас в теме
если так, значит отбор уже установлен. причем, подозреваю, ИспользоватьСписокЭлементов(); если так, то:
1. включить иерархию
2. отменить все отборы
3. установить нужный отбор.
ИМХО.
3. SergeyR 17.09.07 14:27 Сейчас в теме
У меня нет в справочнике количества товара. Поэтому я не знаю как это реализовать. Может использовать Запрс и считывать количество с регистра?
4. sevenlis 70 17.09.07 15:08 Сейчас в теме
а. понял. точнее не понял сначала вопроса. прочитал, что в справочнике УЖЕ отображаются только имеющиеся...
тогда с точностью до наоборот:
1. Передавать в форму справочника МестоХранания.
2. ПриОткрытии формировать список значений, где только те товары, которые есть в наличии (простым перебором элементов + Регистр.Остаток или Регистр.СводныйОстаток)
3. ПриОткрытии же отключить иерархию и ИспользоватьСписокЭлементов()

4. Не забыть (если надо) ПриЗакрытии установить иерерхию как было.

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

ну вот что-то типа такого. переменные тока обзывай как они у тя обзываются.
7. SergeyR 17.09.07 16:38 Сейчас в теме
Благодарю дома попробую
8. SergeyR 21.09.07 10:36 Сейчас в теме
Поставил этот модуль в Справочник.Товар.формаСписка
При продаже товара открываю справочник Товар, а там отсутствуют товары.
Хотя поступление товаров было.
Может я не так сделал?
9. sevenlis 70 21.09.07 11:23 Сейчас в теме
в дебаггере посмотри, чему равны переменные.
10. SergeyR 21.09.07 11:50 Сейчас в теме
Я поменял немного код.

ВремРегистры = СоздатьОбъект("Регистры");
ВремРегОстатки= ВремРегистры.ОстаткиТоваров;
СписокТов=СоздатьОбъект("СписокЗначений");
СпрТов=СоздатьОбъект("Справочник.Товар");
СпрТов.ВыбратьЭлементы();
Счетчик=0;
Пока СпрТов.ПолучитьЭлемент()=1 Цикл
Счетчик=Счетчик+1;
Состояние("Выполняется обработка. Обработано "+Счетчик+" элементов.");
Если СпрТов.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
КонОст=ВремРегОстатки.СводныйОстаток(Склад,СпрТов.ТекущийЭлемент(),"Количество");
Если (КонОст>0) Тогда
СписокТов.ДобавитьЗначение(СпрТов.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
ИерархическийСписок(0,1);
ИспользоватьСписокЭлементов(СписокТов);


А где посмотреть переменные?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот