Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Динамический список выбора в поле ввода на управляемых формах          
info230a02 Подменю пользователя
сообщение 18.11.18, 4:20
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 56
Спасибо сказали: 3 раз
Рейтинг: 0

Платформа: 8.3 (8.3.8.2322)
Конфигурация: самописная, на упрравляемых формах
Задача в целом:
Нужно прочитать csv-файл, вывести его в на форму таблицей (тут все норм: в серверной процедуре считываю построчно файл, формирую ТЗ, создаю программно реквизит формы и элементы формы - ТаблицуФормы передаю в реквизит формы ТЗ ... Все хорошо работает). Потом пользователь должен указать в кокой колонке этой таблицы что находится (напимер: Код - Колонка1, наименование- Колонка 2... и т.д. и т.п.) csv-файлы разные, разной структуры (для этого пользователь и указывает, что в какой колонке находится)
На форме создаю нужные рекфизиты (код, наименование...) размешаю на форме элементы управления - поле ввода. Теперь для этих елементов нужно задать (программно) СписокВыбора (перечислить все колонки из полученной таблицы). Для этого создал реквизит формы с типом СписокЗначений, в него и загоняю перечень всех колонок в той же серверной процедуре, где и формирую саму таблицу:
    ЭтаФорма.СписокВыбораКолонок.Очистить();
    Для Каждого Колонка Из ТЗПрочитано.Колонки Цикл
        МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТаблицаПрочитано"));
        ЭтаФорма.СписокВыбораКолонок.Добавить(Колонка.Имя);
    КонецЦикла;

А теперь собственно сам вопрос:
Где (в каком обработчике) или как задать задать элементам (код, наименование...) СписокВыбора?
Если это делаю это присерно так:
    Элементы.Код.СписокВыбора.Очистить();
    ДЛя Каждого ЭлементСписка Из СписокВыбораКолонок Цикл
        Элементы.Код.СписокВыбора.Добавить(ЭлементСписка);
    КонецЦикла;

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

И даже моя таблица на форму не выводится.
Если для элемента управления выбираю КнопкуВыпадающегоСписка, и либо ставлю либо не ставлю "галку" в Режим выбораИзСписка И Содаю обработчик события НачалоВыбораИзСписка с кодом уже приведенным выше (но повторюсь):
    Элементы.Код.СписокВыбора.Очистить();
    ДЛя Каждого ЭлементСписка Из СписокВыбораКолонок Цикл
        Элементы.Код.СписокВыбора.Добавить(ЭлементСписка);
    КонецЦикла;

то в этот боработчик даже не заходит...
Если же ставлю КнопкуВыбора и отмечаю РежимВыбораИзСписка вобработчике НачалоВыбора пишу тот же код, то список формируется, но значение не выбирается (в пое ввода остается пустота)
Если снять РежимВыбораиИзСписка, то в обработчик заходит, но ни список, ни, само-собой, значение не отображаются
А если выбрать и КнопкуВыбора и КнопкуВыбораИзСписка, то: Сначала по КнопкеВыбора получаем список, а потом по КнопкеВыбораИзСписка выбираем нужное значение (Но это же БРЕД! Это ж какой догадливый пользователь должен быть, чтоб разгадать такой ребус?)

Подскажите, знающие люди, что я делаю не так?

P.S.: Спасибо всем, у кого хватило терпения дочитать до конца. И Еще большее спасибо, тем кто раскажет/покажет, где я заблуждаюсь
И еще: после того как добился спискавыбора и выбранного значения, при нажатии на кнопку, которая запускает процедуру прочтения файла - вылазит та же ошибка (см. выше). А тут уже что не так?
Еще раз всем (заранее) огромное спасибо за помощь


Signature
В теорії, теорія і практика нерроздільні. На практиці це не так.
Yoggi Berra

alx389d Подменю пользователя
сообщение 18.11.18, 14:27
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 13 раз
Рейтинг: 0

info230a02 @ Сегодня, 4:20 * ,
В ошибке пишет, что отсутствует представление для отображения типа ЭлементСпискаЗначений
какие-то строки в список выбора нужно добавлять, очевидно. так типа ЭлементСписка.Значение, в зависимости что там

Спасибо сказали: info230a02,

info230a02 Подменю пользователя
сообщение 18.11.18, 16:39
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 56
Спасибо сказали: 3 раз
Рейтинг: 0

alx389d @ Сегодня, 14:27 * ,
Писал и так:
    ЭтаФорма.СписокВыбораКолонок.Очистить();
    Для Каждого Колонка Из ТЗПрочитано.Колонки Цикл
        МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТаблицаПрочитано"));
        ЭтаФорма.СписокВыбораКолонок.Добавить(Колонка.Имя, Колонка.Имя);
    КонецЦикла;


Из справки:

СписокЗначений (ValueList)
Добавить (Add)
Синтаксис:

Добавить(<Значение>, <Представление>, <Пометка>, <Картинка>)
Параметры:

<Значение> (необязательный)

Тип: Произвольный.
Значение, которое необходимо добавить.
<Представление> (необязательный)

Тип: Строка; ФорматированнаяСтрока.
Строковое выражение, содержащее представление добавляемого значения.
Значение по умолчанию: Пустая строка.
<Пометка> (необязательный)

Тип: Булево.
Определяет, создавать новое значение с установленной пометкой или без пометки.
Значение по умолчанию: Ложь.
<Картинка> (необязательный)

Тип: Картинка.
Визуальное представление значения.
Значение по умолчанию: Пустая картинка.
Возвращаемое значение:

Тип: ЭлементСпискаЗначений.


Ошибка никуда не исчяезает...


Signature
В теорії, теорія і практика нерроздільні. На практиці це не так.
Yoggi Berra

alx389d Подменю пользователя
сообщение 18.11.18, 17:10
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 13 раз
Рейтинг: 0

info230a02 @ Сегодня, 16:39 * ,
вместо вот этого
    Элементы.Код.СписокВыбора.Очистить();
    ДЛя Каждого ЭлементСписка Из СписокВыбораКолонок Цикл
        Элементы.Код.СписокВыбора.Добавить(ЭлементСписка);
    КонецЦикла;


напишите вот это
    Элементы.Код.СписокВыбора.Очистить();
    ДЛя Каждого ЭлементСписка Из СписокВыбораКолонок Цикл
        Элементы.Код.СписокВыбора.Добавить(ЭлементСписка.Значение);
    КонецЦикла;


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

увидите ту же ошибку.


 ! 

Правила: 1
 


Сообщение отредактировал Vofka - 19.11.18, 9:54

Спасибо сказали: info230a02,

info230a02 Подменю пользователя
сообщение 18.11.18, 17:53
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 56
Спасибо сказали: 3 раз
Рейтинг: 0

alx389d @ Сегодня, 17:10 * ,
Спасибо!!! Заработало!!!
Причем работает и так:
Элементы.Код.СписокВыбора.Добавить(Строка(ЭлементСписка.Значение));

и так:
Элементы.Код.СписокВыбора.Добавить(ЭлементСписка.Значение);

И поля ввода ведут себя адекватно (если не забыть включить РежимВыбораИзСписка).
Еще раз СПАСИБО (как всегда: управляем высокими материями, а на элементарном сыпимся smile.gif)


Signature
В теорії, теорія і практика нерроздільні. На практиці це не так.
Yoggi Berra

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 4:11
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!