Добрый день пытаюсь сделать загрузку из буфера для отбора списка документов. Не могу достучаться до формы список значений в отборе. Т.е. что то уже работает - но только со ссылочными типами, а вот текст загрузить не получается
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ТипЗнч(ВладелецФормы) = Тип("ТаблицаФормы") Тогда
Для Каждого м Из ВладелецФормы.ТекущийЭлемент.ПараметрыВыбора Цикл
эк = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
эк.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(СтрЗаменить(м.Имя, "Отбор.", ""));
эк.ПравоеЗначение = м.Значение;
эк.ВидСравнения = ?(ТипЗнч(м.Значение) = Тип("СписокЗначений"), ВидСравненияКомпоновкиДанных.ВСписке, ВидСравненияКомпоновкиДанных.Равно);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
Список значений заполняется из массива, полученного из строки с разделителями в буфере
(3) Я не совсем понимаю в чем затруднение. Есть общая форма СписокЗначенийОтбора
У формы есть параметры (Нас интересует параметр "Значение)
Основная процедура где происходит "Магия" - БухгалтерскиеОтчетыКлиент.ОтборОбработатьВыборЗначения
Но можно немного изменить в ПриСозданииНаСервере Формы СписокЗначенийОтбора и дополнить "Вилку"
Если ТипЗнч(Значение) = Тип("СписокЗначений") Тогда
Список.ЗагрузитьЗначения(Значение.ВыгрузитьЗначения());
ИначеЕсли ЗначениеЗаполнено(Значение) Тогда
Список.Добавить(Значение);
КонецЕсли;
Показать
условием
Например что если на входе строка с определенным разделителем (из буфера) , скажем ";" то мы преобразовываем строку в массив и его уже грузим в список значений. Разделитель может быть любым, хоть перевод строки, если столбик номеров вы планируете вставлять из столбика экселя. Нет смысла манипулировать с правой половиной значения отбора формы, гораздо проще корректно заполнить список значений формы любым удобным способом и потом это стандартной кнопкой закинуть в отбор
(4) А Вы попробуйте стать отладчиком БухгалтерскиеОтчетыКлиент.ОтборОбработатьВыборЗначения
и вызовете не отчет, а список документов ПоступлениеТоваровУслуг. Не отрабатывает
(1) Вообще, платформенная форма редактирования списка значения имеет имя ValueListForm. К ней можно обратиться на клиенте и к ее реквизиту ValueList типа СписокЗначений. Но судя по скрину у вас не платформенная форма списка.
(8) Вызывается платформой же. Обратиться можно через перебор открытых форм:
ФормаСпискаЗначений = Неопределено;
Для Каждого ОткрытоеОкно Из ПолучитьОкна() Цикл
Для Каждого Форма Из ОткрытоеОкно.Содержимое Цикл
Если Форма.ИмяФормы = "ValueListForm" Тогда
ФормаСпискаЗначений = Форма;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ФормаСпискаЗначений <> Неопределено Тогда
Для Сч = 1 по 10 Цикл
ФормаСпискаЗначений.ValueList.Добавить(Сч);
КонецЦикла;
КонецЕсли;
Именно платформенную форму списка значений переопределить невозможно, но можно переопределить событие НачалоВыбора поля ввода, связанного со списком значений.
(11) Как саму форму переопределить? И все-таки как пройти отладчиком где вызывается - к примеру
встал на список отбора нажал и попал в отладчик. Не могу поймать точку входа
на первом рисунке показана переопределяемая форма точка входа настроить список
на втором стандартный отбор
(12) Мне кажется вы достаточно однозначно устремились к единственному варианту решения
Допустим вам нужна форма выбора из списка с возможностью вставки из буфера. По каким то причинам не получается изменить стандартную
как это делал я - расширением добавляется новая общая команда, "Загрузить из табличного документа". Открывается табличный документ, куда пользователь просто вставляет колонку из Экселя (чаще всего с нужными номерами, реже - с суммами), и дальше все это грузилось в список значений и попадало в текущий активный правый реквизит отбора
Вот вы неоднократно пишете что с документами (ссылками) у вас получилось, а просто со строками - нет, а можно посмотреть на реализация с документами?