Форма выбора с отбором по строке ТЧ

1. HaIIpuKoJIe 17.06.20 08:42 Сейчас в теме
Добрый день. На форме внешней обработки есть ТЧ "Материалы" с реквизитами "Номенклатура", "Характеристика", "Спецификация". Как вызвать форму выбора спецификации с отбором по Номенклатуре и характеристике? У справочника "Спецификации" основное изделие тоже в ТЧ Выходные изделия, в моем случае всегда одно.
ERP 2.4
По теме из базы знаний
Найденные решения
3. independ 1542 17.06.20 10:57 Сейчас в теме
(1) если отбор делать по ТЧ справочника, то примерно:
Запросом получить список значений ссылок спр спец, с отбором по ТЧ, Ном+ХН и вставить в отбор формы выбора
Примерно так, запрос я думаю сами сделаете

ТекущиеДанные=Элементы.Материалы.ТекущиеДанные;

Список=ПолучитьСписок(ТекущиеДанные.Номенклатура,ТекущиеДанные.Характеристика);

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

Функция ПолучитьСписок(Номенклатура,Характеристика)
Запрос=...
Запрос.УстановитьПараметр
....
Запрос.Текст
Список=Новый СписокЗначений;
Список.Загрузить(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат Список;
КонецФункции
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. andy_zhav 197 17.06.20 10:38 Сейчас в теме
(1)
Если ТЧ на форме выведена в виде динамического списка - можно сделать так:

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

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


В динамическом списке поля номенклатура и характеристика должны быть выведены на форму и видимые или в свойствах этих колонок должно быть установлено свойство "ИспользоватьВсегда"
3. independ 1542 17.06.20 10:57 Сейчас в теме
(1) если отбор делать по ТЧ справочника, то примерно:
Запросом получить список значений ссылок спр спец, с отбором по ТЧ, Ном+ХН и вставить в отбор формы выбора
Примерно так, запрос я думаю сами сделаете

ТекущиеДанные=Элементы.Материалы.ТекущиеДанные;

Список=ПолучитьСписок(ТекущиеДанные.Номенклатура,ТекущиеДанные.Характеристика);

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

Функция ПолучитьСписок(Номенклатура,Характеристика)
Запрос=...
Запрос.УстановитьПараметр
....
Запрос.Текст
Список=Новый СписокЗначений;
Список.Загрузить(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат Список;
КонецФункции
Показать
4. HaIIpuKoJIe 17.06.20 12:21 Сейчас в теме
(3)
Функция ПолучитьСписок(Номенклатура,Характеристика)
Запрос=...
Запрос.УстановитьПараметр
....
Запрос.Текст
Список=Новый СписокЗначений;
Список.Загрузить(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат Список;
КонецФункции

Спасибо. Так работает.
//Отбор
&НаКлиенте
Процедура МатериалыСпецификацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	
ТекущиеДанные=Элементы.Материалы.ТекущиеДанные;

Список=ПолучитьСписок(ТекущиеДанные.Номенклатура,ТекущиеДанные.Характеристика);

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

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

Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Характеристика", Характеристика);


Список=Новый СписокЗначений;
Список.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат Список;

КонецФункции
Показать

А почему открывается две формы, одна с отбором а другая пустая?
5. independ 1542 17.06.20 12:47 Сейчас в теме
(4)
СтандартнаяОбработка=Ложь;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот