Версия для печати темы (https://pro1c.org.ua/index.php?s=dfb7cc128bed8eef45d88483e4100915&showtopic=41743)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Мобильная платформа 1С _ Отбор по владельцу в колонке табличной части

Автор: Bernet 08.11.17, 12:44

Добрый день.

Платформа 8.3.9
При разработке мобильного приложения возник такой вопрос: на мобильном устройстве не срабатывает отбор по владельцу в колонке табличной части, при чем если смотреть через десктопную версию (просто тонкий клиент, не через мобильное приложение) то все срабатывает отлично.

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

Вопрос: Как сделать так чтобы список выбора значений свойств ограничивался текущим свойством на мобильной платформе?

Пробовал ещё сделать программный отбор, вот так:

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

&НаСервере
Функция ПолучитьДоступныеЗначения(Свойство)
    
    СписокДоступныхЗначений = Новый СписокЗначений;
    
    ВыборкаЗнч = Справочники.ЗначенияСвойствОбъектов.Выбрать(,Свойство);
    Пока ВыборкаЗнч.Следующий() Цикл
        СписокДоступныхЗначений.Добавить(ВыборкаЗнч.Ссылка);
    КонецЦикла;
    
    Возврат СписокДоступныхЗначений;
    
КонецФункции


но оно также не срабатывает на мобильной платформе. Есть подозрение что когда на мобильной платформе добавляешь строку в таб. часть она открывается как в отдельной форме, может из-за этого все эти события и не срабатывают?
Помогите кто сталкивался с подобной проблемой

Автор: Bernet 08.11.17, 14:50

Судя по активности с мобильной платформой только я играюсь smile.gif
На будущее может кому пригодится, удалось решить вопрос таким образом:

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

Автор: uanr81 29.11.17, 19:52

Bernet @ 08.11.17, 15:50 * ,
Судя по коду элемент можно выбрать только из формы выбора справочника, если нужно из любой формы выбрать можно так

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

&НаКлиенте
Процедура ЦепляемаяЭкспортируемаяПроцедура(Результат, Параметры) Экспорт// в Результат залетит выбор, в Параметры
//мы засунули элемент поля выбора
Если не Результат = Неопределено Тогда
Параметры = Результат;
КонецЕсли;
КонецПроцедуры // ЦепляемаяЭкспортируемаяПроцедура()

Это на тот случай когда можно использовать любую форму для выбора значения

Цитата(uanr81 @ 29.11.17, 20:14) *
МодульГдеРасположПроцедура

В данном случае в параметре нужно передать ЭтаФорма

Цитата(uanr81 @ 29.11.17, 20:47) *
Параметры

А здесь нужно указать реквизит табличной части например
Параметры.Родитель.ТекущиеДанные.Источник = Результат;// Здесь Источник это имя поля табличной части, нужно заменить на ваш

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua