Параметры выбора счета по организации в банковских документах. УНФ 1.6
В УНФ довольно таки интересная настройка отбора в списках, в том числе и в списке банковских документов:
Пользователь ожидает, что при выборе организации выбор банковских счетов будет ограничен только счетами данной организации. Но это не реализовано.
Приходится доработать расширением модуль РаботаСОтборами:
&После("УстановитьОтборСписка") Процедура дор_УстановитьОтборСписка(Форма, СписокОтбора, ИмяПоляОтбора, ИмяСписка, ИспользованиеОтбора, ИмяТЧДанныеМеток, ИмяОтбора, ИмяТЧДанныеОтборов) //Настраиваем параметры отбора Если Форма.ИмяФормы = "Обработка.БанкИКасса.Форма.ФормаСписка" Тогда //Если Форма.Элементы.Найти("ОтборСчетИКасса") <> Неопределено Тогда СписокОрганизаций = Новый СписокЗначений(); Для Каждого ЭлементОтбора ИЗ СписокОтбора.Отбор.Элементы Цикл Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") И ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОрганизацияДляОтбора") Тогда СписокОрганизацийОтбора = ЭлементОтбора.ПравоеЗначение; Если ТипЗнч(СписокОрганизацийОтбора) = Тип("СписокЗначений") Тогда Для Каждого Эл ИЗ СписокОрганизацийОтбора Цикл СписокОрганизаций.Добавить(Эл.Значение); КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; //Заполняем заново списки отбора ПрочитатьРасчетныеСчетаИКассы(Форма, СписокОрганизаций); //Через параметры выбора не работает - там список выбора организаций нужен //ПараметрыВыбораМ = Новый Массив(); //Если СписокОрганизаций.Количество() > 0 Тогда // ЗначенияОтбораМ = СписокОрганизаций.ВыгрузитьЗначения(); //Все отобранные организации // ЗначенияОтбораФМ = Новый ФиксированныйМассив(ЗначенияОтбораМ); // ПараметрОтбора = Новый ПараметрВыбора("Отбор.Владелец", ЗначенияОтбораФМ); // ПараметрыВыбораМ.Добавить(ПараметрОтбора); //КонецЕсли; //ПараметрыВыбораФМ = Новый ФиксированныйМассив(ПараметрыВыбораМ); //Форма.Элементы.ОтборСчетИКасса.ПараметрыВыбора = ПараметрыВыбораФМ; КонецЕсли; КонецПроцедуры &НаСервере Процедура ПрочитатьРасчетныеСчетаИКассы(Форма, СписокОрганизаций) //Скопировано из обработки БанкИКасса Перем Элементы; Элементы = Форма.Элементы; //ДОбавлено Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Кассы.Ссылка, | ПРЕДСТАВЛЕНИЕ(Кассы.Ссылка) КАК Представление |ИЗ | Справочник.Кассы КАК Кассы | |УПОРЯДОЧИТЬ ПО | Кассы.Наименование |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | БанковскиеСчета.Ссылка, | ПРЕДСТАВЛЕНИЕ(БанковскиеСчета.Ссылка) КАК Представление |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации | ПО БанковскиеСчета.Владелец = Организации.Ссылка"; //Осипов - добавил отбор Если СписокОрганизаций.Количество() > 0 Тогда Запрос.Текст = Запрос.Текст + " ГДЕ БанковскиеСчета.Владелец В (&СписокОрганизаций) "; Запрос.УстановитьПараметр("СписокОрганизаций", СписокОрганизаций); КонецЕсли; МассивРезультатов = Запрос.ВыполнитьПакет(); ВыборкаКасс = МассивРезультатов[0].Выбрать(); ВыборкаСчетов = МассивРезультатов[1].Выбрать(); Элементы.ОтборСчетИКасса.СписокВыбора.Очистить(); Элементы.ОтборСчетПП.СписокВыбора.Очистить(); Пока ВыборкаСчетов.Следующий() Цикл Элементы.ОтборСчетИКасса.СписокВыбора.Добавить(ВыборкаСчетов.Ссылка, ВыборкаСчетов.Представление,, БиблиотекаКартинок.Банк); КонецЦикла; ВыборкаСчетов.Сбросить(); Пока ВыборкаСчетов.Следующий() Цикл Элементы.ОтборСчетПП.СписокВыбора.Добавить(ВыборкаСчетов.Ссылка,,, БиблиотекаКартинок.Банк); КонецЦикла; Пока ВыборкаКасс.Следующий() Цикл Элементы.ОтборСчетИКасса.СписокВыбора.Добавить(ВыборкаКасс.Ссылка, ВыборкаКасс.Представление,, БиблиотекаКартинок.Касса); КонецЦикла; КонецПроцедуры
Первоначально я думал сделать через параметры выбора, но не работало. Начал разбираться почему — понял, что используется список выбора. Пришлось копировать типовую процедуру заполнения списка выбора счетов и касс.
Среда: УНФ 1.6.27.167. Объем: 1 час.
Свежие комментарии