Имя: Пароль:
1C
1С v8
v8: Фильтр элементов справочника
0 1634344
 
22.03.13
10:38
Поле номенклатура - тип справочник.Номенклатура находится на форме документа. При открытии формы формируется запрос по регистру сведений.

ВЫБРАТЬ
   регСведСрезПоследних.Культура
ИЗ
   РегистрСведений.регСвед.СрезПоследних(
           &Дата,
           Организация = &Организация
           ) КАК регСведСрезПоследних

как сделать так что бы после выполнение запроса если количество записей больше или равно одной то при выборе поля номенклатуры открывался справочник только с позициями которые есть в запросе, иначе  открывался справочник со всеми позициями что в нем есть.

Проверяю следующим образом:

тзРезультат = Запрос.Выполнить().Выгрузить();
   
   Если тзРезультат.Количество() > 0 Тогда
       Возврат тзРезультат;    
   КонецЕсли;

а вот как дальше не могу сообразить.
1 kosts
 
22.03.13
10:42
(0) При открытии формы выбора установить отбор по списку найденных.

Ну и вроде можно установить срез последних как источник данных для табличного поля.
2 1634344
 
22.03.13
10:42
Надо каким -то образом поставить фильтр на справочник при выборе. Скорей всего при открытии надо проверять, количество записей в тзРезультат, если их больше нуля, тогда каким-то образом накладывать фильтр на справочник
3 MSII
 
22.03.13
10:42
Если НЕ Запрос.Выполнить().Пустой() тогда отобранные позиции в список, в справочнике отбор с видом сравнения "В списке".
4 ssh2006
 
22.03.13
10:43
Обычные формы. Если нужен фильтр то в событии начало выбора ЭУ пишешь СтандартнаяОбработка = Ложь; программно получаешь форму выбора и накладываешь отбор, пример:

       ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора();
   
   ФормаВыбора.НачальноеЗначениеВыбора = Элемент.Значение;
   
   ЭлементОтбора = ФормаВыбора.Отбор.Ссылка;
   ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
   ЭлементОтбора.Значение = СписокДляОтбора;
   ЭлементОтбора.Использование = Истина;
       
   ФормаВыбора.Открыть();
5 kosts
 
22.03.13
10:44
(1) > Ну и вроде можно установить срез последних как источник данных для табличного поля.
Не наврал
6 1634344
 
22.03.13
10:45
спасибо большое буду пробовать
7 1634344
 
22.03.13
12:13
Ребят, опять загвоздка

   тзРезультат = Запрос.Выполнить().Выгрузить();
   
   Если тзРезультат.Количество() > 0 Тогда
       СтандартнаяОбработка = Ложь;
       ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора();
       ФормаВыбора.НачальноеЗначениеВыбора = Элемент.Значение;
       ЭлементОтбора = ФормаВыбора.Отбор.Ссылка;
       ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
       ЭлементОтбора.Значение=тзРезультат;
       ЭлементОтбора.Использование = Истина;
       ФормаВыбора.Открыть();

Ошибка, {Документ.ПриходнаяТТН.Форма.ФормаДокумента.Форма(815)}: Ошибка при установке значения атрибута контекста (Значение)
       ЭлементОтбора.Значение=тзРезультат;
по причине:
Неверный тип значения

блин, почему неверный тип ? как можно исправить данную ситуЭЙШЕН
8 1634344
 
22.03.13
12:21
Может из-за того что я результат запроса выгружаю в ТЗ,а надо список значений ?
9 salvator
 
22.03.13
12:22
(8) Ты прав
10 salvator
 
22.03.13
12:22
Тебе еще в (3) об этом написали
11 MSII
 
22.03.13
12:22
(8) Можно в массив. ВыгрузитьКолонку.
12 1634344
 
22.03.13
12:25
блин точно в (3) все написано
13 1634344
 
22.03.13
12:45
что я мог неправильно сделать, все нормально список открывается фильтр срабатывает, но почему-то в поле выбора не фиксируется выбранное значение

СЗ = Новый СписокЗначений;
   СЗ.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Культура"));
   
   Если СЗ.Количество() > 0 Тогда
       СтандартнаяОбработка = Ложь;
       ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора();
       ФормаВыбора.НачальноеЗначениеВыбора = Элемент.Значение;
       ЭлементОтбора = ФормаВыбора.Отбор.Ссылка;
       ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
       ЭлементОтбора.Значение=СЗ;
       ЭлементОтбора.Использование = Истина;
       ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр=Ложь;
       ФормаВыбора.Открыть();
14 1634344
 
22.03.13
13:02
нечего не пойму вроде сделал все правильно
15 MSII
 
22.03.13
13:04
(14) А что у нас в обработке выбора?
16 1634344
 
22.03.13
13:18
все разобрался надо было так
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,Элемент);
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.