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

Форма списка справочника

Автор Кот_Леопольд, 11 фев 2019, 07:29

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

Кот_Леопольд

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

    Запрос.УстановитьПараметр("Родитель", СсылкаНаРодителя);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаКонтрагентов = РезультатЗапроса.Выбрать();

    Пока ВыборкаКонтрагентов.Следующий() Цикл
        Сообщить (ВыборкаКонтрагентов.Наименование);
    КонецЦикла;
 
КонецПроцедуры


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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОтобратьЗаказчика();
КонецПроцедуры


Помогите пожалуйста разобраться, пока еще деревянный в написании кода

bsn-chita

Из первого варианта:

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

Из второго варианта:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
УстановитьОтборПоРодителю();
КонецПроцедуры

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

&НаСервере
Функция ПолучитьРодителя()
Возврат Справочники.Контрагенты.НайтиПоНаименованию("Покупатели");
КонецФункции

Кот_Леопольд

Большое спасибо!!! Второй вариант отлично работает!!! А вот с первым ошибка есть при запуске программы выдает сообщение "Внутренняя ошибка динамического списка. Не найдена информация связанной таблицы" Не подскажите что нужно сделать?
Цитата: bsn-chita от 12 фев 2019, 03:08

Из первого варианта:

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

Теги:

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

Рейтинг@Mail.ru

Поиск