Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 03:54

Отбор файлов в списке формы

Автор qpluckq, 26 фев 2014, 18:18

0 Пользователей и 1 гость просматривают эту тему.

qpluckq

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

Делал через произвольный запрос и вызов списка из формы документа
Код на кнопке в документе, должен открывать форму списка и передавать параметр "ФильтрФайлов"

&НаКлиенте
Процедура ОткрытьФайл(Команда)

ФормаСписка =ПолучитьФорму("Справочник.ХранилищеФайлов.Форма.ФормаСпискаФайлов");
   ФормаСписка.ФильтрФайлов = Объект;
   ФормаСписка.Открыть();
КонецПроцедуры 


В справочнике в форме списка установлен произвольный запрос:

ВЫБРАТЬ
    ХранилищеФайлов.Наименование КАК Наименование
ИЗ
    Справочник.ХранилищеФайлов КАК ХранилищеФайлов
ГДЕ
    ХранилищеФайлов.Объект = &Объект


Так же в форме списка справочника код "ПриОткрытии"
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   СписокФайлов.Параметры.УстановитьЗначениеПараметра("Объект",ФильтрФайлов);
КонецПроцедуры


И у справочника есть реквизит "Объект" который является ссылкой на документ Заявки из которого запускаем форму справочника

Подскажите в чем ошибка, т.к. я начинающий не пойму как правильно передать параметр и собственно сделать чтобы отобранные файлы были = Объекту т.е. уникальной заявке (документу)

Ошибка выводится следующая:
{Справочник.ХранилищеФайлов.Форма.СписокФайлов.Форма(26,64)}: Переменная не определена (ФильтрФайлов)
   СписокФайлов.Параметры.УстановитьЗначениеПараметра("Объект",<<?>>ФильтрФайлов);

sadovod

В вашем случае совершенно не нужно использовать метод ПолучитьФорму(), достаточно её просто открыть, передав нужный параметр.
&НаКлиенте
Процедура ОткрытьФайл(Команда)
   ПараметрФормы = Новый Структура("ФильтрФайлов", Объект);   //  очень неудачно вы выбрали имя переменной "Объект", странно, что платформа не выдала ошибку
   ОткрытьФорму("Справочник.ХранилищеФайлов.Форма.ФормаСпискаФайлов", ПараметрФормы)
КонецПроцедуры


В форме списка нужно использовать не ПриОткрытии(), а ПриСозданииНаСервере()
Процедура ПриСозданииНаСервере()
   СписокФайлов.Параметры.УстановитьЗначениеПараметра("Объект", Параметры.ФильтрФайлов);
КонецПроцедуры

qpluckq

Спасибо большое, вроде заработало, но теперь ругается на запрос

{(9, 25)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ХранилищеФайлов.Объект <<?>>= &Объект

Здесь сравнивается реквизит ссылка на документ с параметром, это не верно? подскажите как поступить?

и объект это не имя переменной, это ссылка на "Объект" который в форме документа

sadovod

Не зная структуры ваших метаданных, вряд ли смогу дать вменяемый ответ...
Добавлено: 26 фев 2014, 21:41


>> это ссылка на "Объект" который в форме документа
Ну, я так и подозревал. Реквизит "Объект" в форме документа - это специальный тип данных формы (ДанныеФормыКоллекция). В вашем случае скорее всего нужно задавать в качестве параметра Объект.Ссылка
Но это - только предположение

Теги: 8.2 Список Отбор 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск