Не вижу пока того, что мне нужно. Еще раз повторю, необходимо (по нажатию на кнопку, она уже создана вместе с обработчиком) вывести список значений, не из справочника, а произвольного, который создается с помощью «новый СписокЗначений». С этим я справился, СписокЗначений заполнен необходимыми для меня значениями.
НУЖНО! Вывести этот список значений(не диалог с открытием файла, честно сказать связи не вижу) на форму, предоставив пользователю выбрать из него значение.
Добавлено через 6 минут
Сообщение от DMV78
так как сам человек не знает даже что «моя процедура» должна быть инициализирована
По поводу инициализаций процедур я в курсе а «МояПроцедура» служит в качестве примера, чтобы мне не писать весь код.
По поводу Вашего примера, что общего между списком значений и диалогом открытия файла?
Войти или зарегистрироваться
8.х Добавить на управляему форму список значений программно
Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем ЧКДзержинский, 28 июн 2019.
-
0/5,
Голосов: 0
-
Offline
ЧКДзержинский
Опытный в 1С- Регистрация:
- 7 дек 2006
- Сообщения:
- 534
- Симпатии:
- 3
- Баллы:
- 29
Это не вопрос, а просто опишу решение, которое я нашел — наверняка кому-то пригодится. Просто когда столкнулся, то в интернете не нашел.
Задача: нужно программно добавить реквизит формы типа список значений и добавить поле на форму с путем к созданному реквизиту. Тип значения выбираемых элементов должен быть ограничен.Код:ДобавляемыеРеквизиты = Новый Массив; Реквизит_Номенклатура = Новый РеквизитФормы("НоменклатураСписок", Новый ОписаниеТипов("СписокЗначений"),, "Номенклатура"); ДобавляемыеРеквизиты.Добавить(Реквизит_Номенклатура); Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); //!!!!!!!!!!!!ТипЗначения нужно задавать ПОСЛЕ добавления реквизита (Форма.ИзменитьРеквизиты) Форма.НоменклатураСписок.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура"); НовыйЭлемент = Форма.Элементы.Добавить("НоменклатураСписок", Тип("ПолеФормы"), Форма.Элементы.Отборы); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = "НоменклатураСписок"; НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх;
ЧКДзержинский,
28 июн 2019
#1
- Похожие темы
-
8.х
Как программно добавить реквизит в форму
Azamat,
5 дек 2011, в разделе: Конфигурирование на платформе «1С:Предприятие 8»
- Ответов:
- 5
- Просмотров:
- 4.591
- BabySG
- 21 дек 2011
-
[РЕШЕНО]
Добавить программно элемент на форму
ЧКДзержинский,
8 апр 2014, в разделе: Конфигурирование на платформе «1С:Предприятие 8»
- Ответов:
- 16
- Просмотров:
- 16.333
- web.num
- 21 янв 2016
- Ваше имя или e-mail:
- У Вас уже есть учётная запись?
-
- Нет, зарегистрироваться сейчас.
- Да, мой пароль:
-
Забыли пароль?
-
Запомнить меня
-
- Искать только в заголовках
- Сообщения пользователя:
-
Имена участников (разделяйте запятой).
- Новее чем:
-
- Искать только в этой теме
- Искать только в этом разделе
- Отображать результаты в виде тем
-
Быстрый поиск
- Последние сообщения
Больше…
Создать на форме элементы типа СписокЗначений и заполнить их
Автор RagnarLodbrok, 02 окт 2017, 21:50
0 Пользователей и 1 гость просматривают эту тему.
Приветсвую всех форумчан!
Я недавно начал изучать 1с программирование и сейчас делаю следующее задание: необходимо в 1с создать тестирование пользователей(анкетирование). Мне необходимо, чтоб на форму последовательно выводились вопросы и варианты ответов из соответсвующих справочников. Для вывода теста программно создаю реквизиты типа СписокЗначений и добавляю на форму поля ввода. Но не могу понять как заполнить эти поля своими данными. Очень надеюсь на вашу помощь. Фрагмент кода прилагаю. Компилятор жалуется на: {Обработка.ПройтиТест.Форма.Форма.Форма(226)}: Значение не является значением объектного типа (Добавить)
РеквизитВО.Добавить(Выб.Ссылка,Выб.Ссылка.Наименование);
Я так понимаю, это потому что я в РеквизитВО передаю не объект, а строку. Как это правильно реализовать? Спасибо.
Счетчик = 1;
Пока Счетчик < 10 Цикл
//Выводим номер вопроса и его формулировку
Группа = Элементы.Добавить("ИмяГруппы" + Счетчик, Тип("ГруппаФормы"), ЭтаФорма);
Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
НоваяНадпись = Элементы.Добавить("Надпись1" + Счетчик, Тип("ДекорацияФормы"), Группа);
НоваяНадпись.Заголовок = "Вопрос №" + Счетчик;
НоваяНадпись1 = Элементы.Добавить("Надпись2" + Счетчик, Тип("ДекорацияФормы"), Группа);
НоваяНадпись1.Заголовок = ВопросыОтветы[Счетчик].Вопрос.ТекстВопроса;
//Добавляем реквизит
РеквизитВО = "ВариантОтвета" + Счетчик;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Новый РеквизитФормы(РеквизитВО, Новый ОписаниеТипов("СписокЗначений"), ,"", Истина));
ИзменитьРеквизиты(МассивРеквизитов);
//Добавляем поле ввода
ОбластьОтветов = Элементы.Добавить("Таблица" + Счетчик, Тип("ТаблицаФормы"), Группа);
ОбластьОтветов.ПутьКДанным = РеквизитВО;
ОбластьОтветов.Отображение = ОтображениеТаблицы.Список;
ОтветЗначение = Элементы.Добавить("Поле" + Счетчик, Тип("ПолеФормы"), ОбластьОтветов);
ОтветЗначение.ПутьКДанным = РеквизитВО + ".Значение";
ОтветЗначение.Вид = ВидПоляФормы.ПолеНадписи;
ОтветПометка = Элементы.Добавить("Пометка" + Счетчик, Тип("ПолеФормы"), ОбластьОтветов);
ОтветПометка.ПутьКДанным = РеквизитВО + ".Пометка";
ОтветПометка.Вид = ВидПоляФормы.ПолеФлажка;
//Заполняем реквизит
Стр=ВопросыОтветы.Получить(Счетчик-1);
З=Новый Запрос;
З.Текст="
|ВЫБРАТЬ
| Ссылка
|ИЗ
| Справочник.Ответы
|ГДЕ Владелец=&Вопрос
|УПОРЯДОЧИТЬ ПО КОД";
З.УстановитьПараметр("Вопрос",Стр.Вопрос);
Выб=З.Выполнить().Выбрать();
Пока Выб.Следующий() Цикл
РеквизитВО.Добавить(Выб.Ссылка,Выб.Ссылка.Наименование);
КонецЦикла;
Если НЕ Стр.Ответ.Пустая() Тогда
Зн=РеквизитВО.НайтиПоЗначению(Стр.Ответ);
Зн.Пометка=Истина;
КонецЕсли;
Счетчик = Счетчик + 1;
КонецЦикла;
РеквизитВО — это переменная, имеющая тип Строка. У таких переменных нет метода «Добавить()». Копайте в сторону
ЭтотОбъект.ВариантОтвета.Добавить()
Приведённый код не будет работать т.к. у вас не «ВариантОтвета», а «ВариантОтвета» + Счетчик. А, чуть не забыл. Странно, что ошибка не появилась ещё на этой строке
РеквизитВО = "ВариантОтвета" + Счетчик;
Тут не должно работать ни сложение, ни конкатенация. Сначала нужно преобразовать число к строке
РеквизитВО = "ВариантОтвета" + Строка(Счетчик)
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению … рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.
Спасибо за Сказать спасибо
Цитата: alex0402 от 04 окт 2017, 12:21не нужно — выполняется неявное преобразование.
Человек только начал заниматься 1С. Нужно, иначе однажды будет ломать голову что за ошибка преобразования к типу Число.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению … рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.
- Главная
- О сайте
- Главная
- Содержание
Категории
—>
рубрики: Работа с формами | Дата: 22 января, 2016
Скачать обработку с примерами из статьи: professia1c_ListValue.epf
Платформа: 8.3; Тип формы: управляемая.
Рассмотрим как разместить выпадающий список значений на форме. Практиковаться будем на платформе 1С:Предприятие 8.3 на управляемых формах. Предположим, что нам надо разместить на форме список значений как показано на рисунке.
Итак, создаем внешнюю обработку. Создаем для формы реквизит в котором будет содержаться выбранное из списка значение.
Назовем его к примеру – СписокВариантов. Выберем для него тип значения. В нашем случае это будет строка, хотя в зависимости от задачи это может быть и СправочникСсылка, ПеречислениеСсылка и т.д. Хочется только подчеркнуть, что тип не список значений, что на первый взгляд кажется логичным, а именно тот тип, значения которого будут в этом списке отображаться. Далее размещаем наш реквизит на форме как поле ввода.
А для работы со списком значений будем использовать свойство поля ввода – СписокВыбора.
Для этого в свойствах поля ввода включаем флажок РежимВыбораИзСписка
И программно заполняем СписокВыбора нужными нам значениями:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список = Новый СписокЗначений;
Список.Добавить("Вариант 1");
Список.Добавить("Вариант 2");
Список.Добавить("Вариант 3");
Элементы.СписокВариантов.СписокВыбора.ЗагрузитьЗначения(Список.ВыгрузитьЗначения());
СписокВариантов = Элементы.СписокВариантов.СписокВыбора[0].Значение;
КонецПроцедуры
Для обычной (не управляемой формы) принцип реализации точно такой же.
Всем привет, подскажите как правильно можно заполнить программно созданный реквизит с типом (Список значений) он у меня будет привязан к элементу с полем. В режиме 1с предприятия он ссылается на Справочник для выбора нескольких значений. Но мне нужно заранее заполнить часть данных из массива. Как это можно сделать?
[IMG]https://i.ibb.co/nBStTRL/image.jpg[/IMG]
Я пробую хотя бы приравнять его к одному значению приравняв к [B]Администратор[/B], которое можно выбрать из списка в режиме 1с предприятие, но у меня так не выходит это сделать, что при открытии в поле ввода у меня было уже прописано [B]Администратор[/B]. Возможно ли такое сделать?
Вот как я пытаюсь добавить значение к реквизиту [B]МойРеквизит[/B] где я в цикле нахожу все возможные реквизиты с этим названием а у меня их несколько.
ЭтаФорма[ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя] = "Администратор";
Для Каждого РеквизитФормы Из ЭтаФорма.ПолучитьРеквизиты() Цикл ЛевыйРеквит = Лев(ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя,11); Если "МойРеквизит" = ЛевыйРеквит Тогда ЭтаФорма[ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя] = "Администратор"; КонецЕсли; Счч = Счч + 1; КонецЦикла;
Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.
Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.
Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()
ЭлементыФормы.ВыборЗначения.СписокВыбора.Очистить();
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(0, "Создать документ");
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(1, "Изменить документ");
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(2, "Удалить документ");
ЭлементыФормы.ВыборЗначения.Значение = 0;
КонецПроцедуры
Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)
- Включим кнопку выбора списка
- В свойстве «Список выбора» нажмите «…» и введите варианты
- Результат выбора будет сохранен в выбранном реквизите
Выпадающий список значений 1С на форме — Вариант 2)
- Включим кнопку выбора списка
- Добавим обработчик «НачалоВыбораИзСписка»
&НаКлиенте
Процедура ВыбранноеЗначениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Добавить документ");
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Редактировать документ");
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Удалить документ");
КонецПроцедуры
Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.
Выпадающий список значений 1С на форме — Вариант 3)
Данный вариант работает аналогично, но интерфейсно выглядит по другому.
Проголосовать за этот пост:
Загрузка…
Posted in Язык 1С
В предыдущей статье «Изучаем список значений 1С» я показал, каким образом можно программного работать со списком значений. Мы научились добавлять, вставлять и загружать нужные элементы в список. Но со списком значений можно работать на управляемой форме 1С, когда он используется в качестве реквизита этой формы. В этой статье мы разберем вопросы работы со списком значений на форме.
На управляемой форме 1С список значений можно разместить в качестве реквизита управляемой формы.
Мы уже знаем, что каждый элемент списка значений содержит значения типа Элемент списка значений, но можно задать тип данных, которые будут содержаться в этом элементе. Делается это при помощи свойства реквизита – тип значения. В этом случае, все элементы заданного списка значений будут одного типа.
Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.
После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.
Если мы выберем тип Таблица, то будет размещен элемент с типом Таблица, где в качестве колонок можно размещать соответствующие свойства списка значений.
Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.
С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Склады.Ссылка КАК Ссылка, | Склады.Представление КАК Представление |ИЗ | Справочник.Склады КАК Склады |ГДЕ | НЕ Склады.НеИспользовать"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Список.Добавить(Выборка.Ссылка,Выборка.Представление); КонецЦикла; КонецПроцедуры
В этом случае, список заполнится сразу при открытии формы.
Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009