Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Наложение ограничения на список выбора из доп.реквизита формы

Наложение ограничения на список выбора из доп.реквизита формы
Я
   Stanislav_134
 
06.03.20 - 15:50
Всем привет!

Большая просьба - подсказать. Всю голову уже сломал. Задача в следующем: на форму элемента справочника в пользовательском режиме добавлен доп.реквизит, отображается на форме в виде поля выбора. Так вот надо при выборе из этого поля выбора наложить на открываемую форму выбора определенные условия.

Вроде бы, поизучав информацию пришел к выводу, что это делается через программное добавление действия. Так как это доп.реквизит, я нашел процедуру в общем модуле, где добавляются доп.реквизиты. В конце процедуры сделал проверку на наличие на форме необходимого мне реквизита, и, если поле существует, то ему устанавливается действие "НачалоВыбора"

Если Форма.Элементы.Найти("ДополнительныйРеквизитЗначение_5978F255x9BE5x11E8x82ADx88B111D596E7_8FC65A3Cx5F94x11EAx80EFx00259035DDA8") <> Неопределено Тогда
Форма.Элементы.ДополнительныйРеквизитЗначение_5978F255x9BE5x11E8x82ADx88B111D596E7_8FC65A3Cx5F94x11EAx80EFx00259035DDA8.УстановитьДействие("НачалоВыбораИзСписка", "ПриВыбореКонтрагента");
КонецЕсли;


В модуле формы элемента прописываю эту процедуру "ПриВыбореКонтрагента". Но код туда "не заходит".

Подскажите, пожалуйста, что я делаю неправильно.
   Stanislav_134
 
1 - 06.03.20 - 15:51
НачалоВыбора или НачалоВыбораИзСписка  ничего не меняет
   runoff_runoff
 
2 - 06.03.20 - 16:18
ПараметрыВыбора = Новый Массив;
ПараметрыВыбора.Добавить(Новый ПараметрВыбора("Отбор.ВидНоменклатуры", НапримерВидМатериал));
    
Элементы.Номенклатура.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора);
   Stanislav_134
 
3 - 06.03.20 - 16:31
(2) Так а куда этот код вставлять?
   Stanislav_134
 
4 - 06.03.20 - 16:32
То есть я понимаю, что это параметры отбора, но в какой момент и где передавать эти параметры в выбор?
   runoff_runoff
 
5 - 06.03.20 - 17:22
Форма.Элементы.ДополнительныйРеквизитЗначение_5978F255x9BE5x11E8x82ADx88B111D596E7_8FC65A3Cx5F94x11EAx80EFx00259035DDA8.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора); // в той же процедуре, предположительно, ПриСозданииНаСервере
   Stanislav_134
 
6 - 06.03.20 - 17:45
(5) Дело в том, что это Дополнительные реквизиты. Они появляются на форме не в "ПриСозданииНаСервере", а в момент открытия раздела "Дополнительно" через процедуру общего модуля
   Stanislav_134
 
7 - 06.03.20 - 17:51
В принципе, попробую сейчас посмотреть в какую процедуру модуля формы код возвращается из этого общего модуля, и там добавить параметры выбора
   runoff_runoff
 
8 - 06.03.20 - 18:23
еще бы название и версию конфы озвучить и имя справочника
   Stanislav_134
 
9 - 06.03.20 - 19:04
(8) УТ 11.4.6.188 Справочник "КонтактныеЛицаПартнеров".

Получилось. Нашел в какое место модуля формы элемента возвращается код после выполнения в общем модуле кода по добавления на форму общих реквизитов и уже здесь разместил код по отбору:

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


&НаСервереБезКонтекста
Функция ПолучитьСсылкиНаПартнеров(Партнер)

    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Контрагенты.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    Контрагенты.Партнер В ИЕРАРХИИ(&Партнер)";
    
    Запрос.УстановитьПараметр("Партнер", Партнер);
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        МассивПартнеров = Новый Массив;
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            МассивПартнеров.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
        КонецЦикла;
        Возврат МассивПартнеров;
    КонецЕсли;

КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСсылкиНаПартнеров(Партнер)

    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Контрагенты.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    Контрагенты.Партнер В ИЕРАРХИИ(&Партнер)";
    
    Запрос.УстановитьПараметр("Партнер", Партнер);
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        МассивПартнеров = Новый Массив;
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            МассивПартнеров.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
        КонецЦикла;
        Возврат МассивПартнеров;
    КонецЕсли;

КонецФункции


Спасибо за помощь!
   Stanislav_134
 
10 - 06.03.20 - 19:05
Сорри, случайно дважды одну и ту же функцию вставил

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.