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

отбор в форме справочника 8.2

Автор 1cka, 13 авг 2014, 17:07

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

1cka

делаю внешнюю обработку заполнения ТЧ для документа УПП
В процедуре начала выбора пишу:
СтандартнаяОбработка = Ложь;
   
    Форма = Справочники.СпецификацииНоменклатуры.ПолучитьФормуВыбора();
    Форма.Заголовок = "Выбор спецификации для "+ ВыхИзд;
    Форма.Отбор.Ссылка.Использование = Истина;
    Форма.Отбор.Ссылка.ВидСравнения = ВидСравнения.Равно;
    Форма.Отбор.Ссылка.???ВыходноеИзделие???? = ВыхИзд;
    Форма.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;
   
    ВыбранноеЗначение = Форма.ОткрытьМодально();


хочу чтобы при выборе спецификации из списка отображались бы только спецификации конкретной номенклатуры, указанной в документе (ВыхИз)
Сейчас выдает ошибку Поле объекта ВыходноеИзделие не обнаружено
Где и как посмотреть как правильно называется реквизит номенклатуры. Пробывала просто Номенклатура - таже ошибка...


LexaK

наверно надо так
Форма.Отбор.Ссылка.Значение = ВыхИзд;

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

Форма.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
Форма.Отбор.Ссылка.Значение = СписокЗначений; //заполните по необходимому условию список
если помогло нажмите: Спасибо!

1cka

возник параллельный вопрос..
как в процедуре начала выбора обратиться к СписокЗначений?
т.е. сейчас пишу запрос и выгружаю результат в списокзначений в процедуре Инициализировать
СписокЗначений = Новый СписокЗначений();
СписокЗначений.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Спецификации"));


или
если писать запрос в процедуре началавыбора, то как обратиться к объекту из которого вызывается обработка для задания параметра в запросе?

cska-fanat-kz

Цитата: 1cka от 14 авг 2014, 09:27как обратиться к объекту из которого вызывается обработка для задания параметра в запросе?

Элемент.Значение
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

А вообще обычно при открытии в форму передается параметр
а уже в самой форме переданный параметр обрабатывается и "внутри" формы устанавливается отбор или что вам там надо.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

LexaK

да, в обычном приложении, на форме, в событии ...НачалоВыбора(Элемент, СтандартнаяОбработка)

встааляете примерно такой код

ФормаВыбора = ПланыСчетов.БУ.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.НачальноеЗначениеВыбора = Элемент.Значение;
ФормаВыбора.ПланСчетовСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
ФормаВыбора.ПланСчетовСписок.Отбор.Ссылка.Значение = лкСписокСчетовЗатрат;//здесь заполенный список значений
ФормаВыбора.ПланСчетовСписок.Отбор.Ссылка.Использование = Истина;            
ФормаВыбора.Открыть();
СтандартнаяОбработка = Ложь;
...

обратиться к текущим данным можно через переменную - ЭтотОбъект
если помогло нажмите: Спасибо!

1cka

Цитата: LexaK от 14 авг 2014, 10:19
да, в обычном приложении, на форме, в событии ...НачалоВыбора(Элемент, СтандартнаяОбработка)

встааляете примерно такой код

ФормаВыбора = ПланыСчетов.БУ.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.НачальноеЗначениеВыбора = Элемент.Значение;
ФормаВыбора.ПланСчетовСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
ФормаВыбора.ПланСчетовСписок.Отбор.Ссылка.Значение = лкСписокСчетовЗатрат;//здесь заполенный список значений
ФормаВыбора.ПланСчетовСписок.Отбор.Ссылка.Использование = Истина;            
ФормаВыбора.Открыть();
СтандартнаяОбработка = Ложь;
...

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

LexaK

лкСписокСчетовЗатрат - это переменная, тип = СписокЗначений

лкСписокСчетовЗатрат = Новый СписокЗначений;
чуть выше, его так надо создать и заполнить, как и чем это уже по требуемым условиям,
так как вызываете из формы документа, то вам доступны все данные документа для которого нужен этот выбор. 
если помогло нажмите: Спасибо!

1cka

Цитата: LexaK от 14 авг 2014, 11:49
лкСписокСчетовЗатрат - это переменная, тип = СписокЗначений

лкСписокСчетовЗатрат = Новый СписокЗначений;
чуть выше, его так надо создать и заполнить, как и чем это уже по требуемым условиям,
так как вызываете из формы документа, то вам доступны все данные документа для которого нужен этот выбор.
да я создаю:
лкСписокСчетовЗатрат = Новый СписокЗначений();
НО "не чуть выше", а в процедуре инициализации, а обращаюсь к ней получается в проц Начале выбора где она не прописана и система не понимает откуда я ее беру...вот в чем загвоздка!?!(((

LexaK

ни чего страшного, я тоже, уже ни чего не понимаю :xfbnsdfb:

сделайте по примеру из реальной базы
Бухгалтерия предприятия (базовая), редакция 2.0 (2.0.60.4)
документ
РасчетЕСН, форма

Процедура ОсновныеНачисленияВидДоходаНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора=Справочники.ДоходыПоСтраховымВзносам.ПолучитьФормуВыбора"ФормаВыбора",Элемент, "дляДокументаРасчетСтраховыхВзносов");
ФормаВыбора.НачальноеЗначениеВыбора = Элемент.Значение;
ФормаВыбора.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
ФормаВыбора.Отбор.Ссылка.Значение = мСписокВидовДляОсновныхНачислений;
ФормаВыбора.Отбор.Ссылка.Использование = Истина;
ФормаВыбора.Открыть();

КонецПроцедуры

переменная мСписокВидовДляОсновныхНачислений заполняется при открытии формы документа
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск