helpf.pro
Регистрация

v8: Вызов формы с отбором

stanislavyakuza
19.04.2012 09:32Прочитано: 5432
Добрые люди помогите пожалуйста.
Задача такова , есть управляемая форма у регистра сведений в которой кнопка - по кнопке открывается форма справочника вот кусочек кода -

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

- нужно открывать список справочника с отбором по реквизиту "Клиент" регистра сведений.
-В форме списка справочнике уже реализована возможность отбора добавлен реквизит "Клиент" при заполнении которого происходит отбор.
Возможно достаточно просто передать значение реквизита "Клиент" из регистра сведений в реквизит "Клиент" в форму списка спр. Пробовал написать(перед открытием формы) так -
-формаСписка.клиент = Элементы.Клиент; Ничего не происходит.

Возможно есть способ намного проще подойдет любой.
Yandex
Возможно, вас также заинтересует
Реклама на портале
Mokey
19.04.2012 10:29Ответ № 1
формаСписка =Справочники.цтоОборудованиеКлиента.ПолучитьФормуСписка("ФормаСписка", ЭтаФорма);

ПриОткрытии() в модуле формы списка:
Если НЕ ЭтаФорма.ВладелецФормы = Неопределено Тогда
ЭтаФорма.Клиент = ЭтаФорма.ВладелецФормы.Элементы.Клиент.Значение;
КонецЕсли;

пысы. это в 8.1, в управляемой форме не помню точно, но должно, по-моему, работать

или:
формаСписка =Справочники.цтоОборудованиеКлиента.ПолучитьФормуСписка("ФормаСписка");
формасписка.отбор.клиент.установить(элементы.клиент);
формаСписка.Открыть();
Изменено 19.04.12 10:32:09
stanislavyakuza
19.04.2012 10:57Ответ № 2
В первом случае ошибка - Поле объекта не обнаружено "Значение"
если убираю значение ничего не происходит.

Во втором варианте ошибка = Поле объекта не обнаружено "Отбор"

Даже закидывал стандартное поле списка отбор(ради интереса)
Mokey
19.04.2012 11:12Ответ № 3
в первом случае надо ещё запустить процедуру ПриИзменении() реквизита Клиент, иначе, естсесственно, ничего не будет происходить
stanislavyakuza
19.04.2012 11:26Ответ № 4
Вот эта процедура уже существует.И работает на ура


&НаКлиенте
Процедура КлиентПриИзменении(Элемент)

Если ПустаяСтрока(Клиент) Тогда
список.отбор.элементы.очистить();
Иначе
список.отбор.элементы.очистить();
ЭлементОтбора = Список.Отбор.элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Клиент;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
КонецЕсли;
КонецПроцедуры
Mokey
19.04.2012 11:31Ответ № 5
ПриОткрытии() в модуле формы списка:
Если НЕ ЭтаФорма.ВладелецФормы = Неопределено Тогда
ЭтаФорма.Клиент = ЭтаФорма.ВладелецФормы.Элементы.Клиент;
КлиентПриИзменении(ЭтаФорма.Элементы.Клиент);
КонецЕсли;
Изменено 19.04.12 11:32:11
stanislavyakuza
19.04.2012 11:39Ответ № 6
Блин и так ничего не происходит(то есть отбора нет).
Mokey
19.04.2012 11:44Ответ № 7
а что конкретно не отрабатывает? поле Клиент не заполняется или что? Подробнее можно описать проблему?
stanislavyakuza
19.04.2012 11:52Ответ № 8
Извиняюсь.Да форма открывается(без ошибок) но поле клиент не заполняется(ну и в следствии отбора нет)
Mokey
19.04.2012 11:55Ответ № 9
тогда надо копать тут:
ЭтаФорма.Клиент = ЭтаФорма.ВладелецФормы.Элементы.Клиент;
может, надо так:
ЭтаФорма.Элементы.Клиент.Значение = ЭтаФорма.ВладелецФормы.Элементы.Клиент.Значение;
stanislavyakuza
19.04.2012 16:58Ответ № 10
Может кому пригодиться
нашел решение проблемы -
формаСписка = Справочники.цтоОборудованиеКлиента.ПолучитьФормуСписка("ФормаСписка",этаФорма);
ЭлементОтбора = формаСписка.Список.Отбор.элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Запись.Клиент;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
формаСписка.Открыть();

Вариант номер 1 работает только на обычной форме как и метод "Значение",
Вариант номер 2 отработал бы если обращались не "элементы.клиент" а "Запись.Клиент"
Mokey
19.04.2012 17:00Ответ № 11
Так ведь надо было сразу оговаривать, что Вы из записи регистра вызываете))
Здесь никто не видит Вашей конфы, поэтому предлагают принципы решения задачи, а детали - это уж Вы сами подставляйте.
Изменено 19.04.12 17:01:33
stanislavyakuza
19.04.2012 17:08Ответ № 12
Добрые люди помогите пожалуйста.
Задача такова , есть управляемая форма у регистра сведений в которой кнопка - по кнопке открывается форма справочника вот кусочек кода -
-С этого я начал обращение

Спасибо за оказанную помощь!
Mokey
19.04.2012 17:50Ответ № 13
но не сказано, что Вы открываете из формы записи))
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.