В УТ11 в документе заказ товаров поставщику реализованы отборы.
Перетягиваю процедуры отбора на самописку под 8.2.
В отладчике "Список.Отбор.Элементы" - нет никаких данных, тогда как в УТ есть. Мое приложение вылетает с ошибкой Поле объекта недоступно для записи (Отбор). Что где какую галку поставить?
Перетягиваю процедуры отбора на самописку под 8.2.
&НаКлиенте
Процедура ТипВызоваПриИзменении(Элемент)
УстановитьЭлементОтбора(Список.Отбор, "ТипВызова", ТипВызова, ВидСравненияКомпоновкиДанных.Равно,, ЗначениеЗаполнено(ТипВызова));
КонецПроцедуры
В отладчике "Список.Отбор.Элементы" - нет никаких данных, тогда как в УТ есть. Мое приложение вылетает с ошибкой Поле объекта недоступно для записи (Отбор). Что где какую галку поставить?
По теме из базы знаний
- Помощник для написания запроса в тонком клиенте
- Размещение PDF в Поле HTML управляемой формы для просмотра веб-клиентом
- Удаление помеченных объектов, замена ссылок. Обычное и управляемое приложение. Не монопольно, включая рекурсивные ссылки, с отбором по метаданным и произвольным запросом
- Как ограничить поля отбора в динамическом списке и ничего не сломать
- Функция отбора элементов коллекции быстрым условием
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно попробовать установить отбор вручную вручную:
ОтборОбъект = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОбъект.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборОбъект.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект"); // Тут указываем имя поля для отбора
ОтборОбъект.ПравоеЗначение = Параметры.ВладелецФайла; // тут указываем ссылку для отбора
ОтборОбъект.Использование = Истина;
ОтборОбъект = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОбъект.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборОбъект.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект"); // Тут указываем имя поля для отбора
ОтборОбъект.ПравоеЗначение = Параметры.ВладелецФайла; // тут указываем ссылку для отбора
ОтборОбъект.Использование = Истина;
(4) frolov.dns, сделал так:
В итоге когда октрывается форма списка на тонком клинете - если не менять значения типа вызова- отображается весь полный список. Если указываю входящий-12(или исходящий-13) - то фильтрует по типу, но если я после еще раз ставлю фильтр или просто очищаю его - ничего в списке не отображается.
Какой параметр дописать?
&НаКлиенте
Процедура ТипВызоваПриИзменении(Элемент)
ОтборОбъект = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОбъект.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
ОтборОбъект.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборОбъект.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("DirEX"); // Тут указываем имя поля для отбора
ОтборОбъект.ПравоеЗначение = ПолучитьПеречисление();
//Параметры.ВладелецФайла; // тут указываем ссылку для отбора
ОтборОбъект.Использование = Истина;
КонецПроцедуры
Показать&НаСервере
Функция ПолучитьПеречисление()
Если ЭтаФорма.ТипВызова = Перечисления.ТипыВызова.Входящий Тогда
Фильтр = Справочники.ПоляDirEx.НайтиПоНаименованию("12");
ИначеЕсли ЭтаФорма.ТипВызова = Перечисления.ТипыВызова.Исходящий тогда
Фильтр = Справочники.ПоляDirEx.НайтиПоНаименованию("13");
Иначе Фильтр = Неопределено;
КонецЕсли;
Возврат Фильтр
КонецФункции // ПолучитьПеречисление()
ПоказатьВ итоге когда октрывается форма списка на тонком клинете - если не менять значения типа вызова- отображается весь полный список. Если указываю входящий-12(или исходящий-13) - то фильтрует по типу, но если я после еще раз ставлю фильтр или просто очищаю его - ничего в списке не отображается.
Какой параметр дописать?
(7) Diose, сбросить()- такого метода нет. По ссылке - там описано как устанавливать первоначально этот отбор, а вот как ПЕРЕустанавливать - нет(.
(8) visard2, Если ТипЗнч(ЭтаФорма.ВладелецФормы) = Тип("ПолеФормы") а для чего это условие? в отладчике ТипЗнч(ЭтаФорма.ВладелецФормы) = неопределено. Темболее это все делается раз при открытии. А у меня цель - чтобы группировалось при выюоре на форме типа вызова.
Функция ПолучитьСписокДоступныхСостояний Вы используете эту функцию для множественных параметров?
(8) visard2, Если ТипЗнч(ЭтаФорма.ВладелецФормы) = Тип("ПолеФормы") а для чего это условие? в отладчике ТипЗнч(ЭтаФорма.ВладелецФормы) = неопределено. Темболее это все делается раз при открытии. А у меня цель - чтобы группировалось при выюоре на форме типа вызова.
Функция ПолучитьСписокДоступныхСостояний Вы используете эту функцию для множественных параметров?
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ТипЗнч(ЭтаФорма.ВладелецФормы) = Тип("ПолеФормы") Тогда
СписокВыбора = ЭтаФорма.ВладелецФормы.СписокВыбора;
ЭлементОтбораДанных = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбораДанных.ПравоеЗначение = ПолучитьСписокДоступныхСостоянийНаСервере(СписокВыбора.Получить(0).Значение);
ЭлементОтбораДанных.Использование = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИТ_ппПолучитьСписокДоступныхСостояний(ТекСостояние, ИспользоватьПравилаПерехода = Неопределено,ПоУмолчанию = Неопределено, ПроверятьРоли = Истина) Экспорт
СписокДоступныхЗначений = Новый СписокЗначений;
//СписокДоступныхЗначений нужно заполнить тем, чем нужно!!!
КонецФункции;
Процедура ПриОткрытии(Отказ)
Если ТипЗнч(ЭтаФорма.ВладелецФормы) = Тип("ПолеФормы") Тогда
СписокВыбора = ЭтаФорма.ВладелецФормы.СписокВыбора;
ЭлементОтбораДанных = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбораДанных.ПравоеЗначение = ПолучитьСписокДоступныхСостоянийНаСервере(СписокВыбора.Получить(0).Значение);
ЭлементОтбораДанных.Использование = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИТ_ппПолучитьСписокДоступныхСостояний(ТекСостояние, ИспользоватьПравилаПерехода = Неопределено,ПоУмолчанию = Неопределено, ПроверятьРоли = Истина) Экспорт
СписокДоступныхЗначений = Новый СписокЗначений;
//СписокДоступныхЗначений нужно заполнить тем, чем нужно!!!
КонецФункции;
В ПолучитьСписокДоступныхСостоянийНаСервере передается любое значение, которое нельзя получить на клиенте, полученное на сервере
ТипЗнч(ЭтаФорма.ВладелецФормы) = Тип("ПолеФормы") - это условие вам не нужно, у меня там проверка была. Я просто скопировал код, как у меня это реализовано.
ТипЗнч(ЭтаФорма.ВладелецФормы) = Тип("ПолеФормы") - это условие вам не нужно, у меня там проверка была. Я просто скопировал код, как у меня это реализовано.
(13) Diose, да так очищает, но полностью от всего фильтра.
(12) visard2, в общем сделал так:
А как быть, если на пример на форме стоит более 3-х отборов? как тогда учитывать отбор по предыдущим? И соответственно очищать какой-то один отбор.
Поэтому я и взял сразу типовой мехенизм, но сразу загвоздка вышла с Список.Отбор.Элементы. Вероятно они как то программно ранее попадают в отбор, но откуда?
(12) visard2, в общем сделал так:
Список.Отбор.Элементы.Очистить();
ОтборОбъект = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОбъект.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
ОтборОбъект.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборОбъект.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("DirEX"); // Тут указываем имя поля для отбора
ОтборОбъект.ПравоеЗначение = ПолучитьПеречисление();
ОтборОбъект.Использование = Истина;
Элементы.Список.Обновить();
ПоказатьА как быть, если на пример на форме стоит более 3-х отборов? как тогда учитывать отбор по предыдущим? И соответственно очищать какой-то один отбор.
Поэтому я и взял сразу типовой мехенизм, но сразу загвоздка вышла с Список.Отбор.Элементы. Вероятно они как то программно ранее попадают в отбор, но откуда?
(15) visard2, Впринцыпе да, подходит. Только придется условий много понаставить. В типовой как я понял - все элемгнато через массив реализовано. А как проверит, что наш отбор - это ГруппаЭлементовОтбораКомпоновкиДанных.
Проверяю так:
&НаКлиенте
Список.Отбор.Элементы[0]=Тип("ГруппаЭлементовОтбораКомпоновкиДанных") - так тоже не принимает - пишет ложь
так ругается на обращение. В отладчике есть такие поля для доступа:
Проверяю так:
&НаКлиенте
Процедура ПользовательОчистка(Элемент, СтандартнаяОбработка)
Отборы = Список.Отбор.Элементы;
Для Каждого Отбор Из Отборы Цикл
//Если у нас Группа
Если Отбор = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") тогда
КонецЕсли;
КонецЦикла;
Список.Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
Элементы.Список.Обновить();
КонецПроцедуры
ПоказатьСписок.Отбор.Элементы[0]=Тип("ГруппаЭлементовОтбораКомпоновкиДанных") - так тоже не принимает - пишет ложь
так ругается на обращение. В отладчике есть такие поля для доступа:
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот