Программно создать реквизит формы список значений

Не вижу пока того, что мне нужно. Еще раз повторю, необходимо (по нажатию на кнопку, она уже создана вместе с обработчиком) вывести список значений, не из справочника, а произвольного, который создается с помощью «новый СписокЗначений». С этим я справился, СписокЗначений заполнен необходимыми для меня значениями.

НУЖНО! Вывести этот список значений(не диалог с открытием файла, честно сказать связи не вижу) на форму, предоставив пользователю выбрать из него значение.

Добавлено через 6 минут

Цитата
Сообщение от DMV78
Посмотреть сообщение

так как сам человек не знает даже что «моя процедура» должна быть инициализирована

По поводу инициализаций процедур я в курсе а «МояПроцедура» служит в качестве примера, чтобы мне не писать весь код.

По поводу Вашего примера, что общего между списком значений и диалогом открытия файла?

Войти или зарегистрироваться

8.х Добавить на управляему форму список значений программно

Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем ЧКДзержинский, 28 июн 2019.




0/5,
Голосов: 0
  1. TopicStarter Overlay

    ЧКДзержинский

    Offline

    ЧКДзержинский
    Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    534
    Симпатии:
    3
    Баллы:
    29

    Это не вопрос, а просто опишу решение, которое я нашел — наверняка кому-то пригодится. Просто когда столкнулся, то в интернете не нашел.
    Задача: нужно программно добавить реквизит формы типа список значений и добавить поле на форму с путем к созданному реквизиту. Тип значения выбираемых элементов должен быть ограничен.

    Код:
        ДобавляемыеРеквизиты = Новый Массив;
        Реквизит_Номенклатура = Новый РеквизитФормы("НоменклатураСписок", Новый ОписаниеТипов("СписокЗначений"),, "Номенклатура");
        ДобавляемыеРеквизиты.Добавить(Реквизит_Номенклатура);       
        Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
        //!!!!!!!!!!!!ТипЗначения нужно задавать ПОСЛЕ добавления реквизита (Форма.ИзменитьРеквизиты)
        Форма.НоменклатураСписок.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
    
        НовыйЭлемент = Форма.Элементы.Добавить("НоменклатураСписок", Тип("ПолеФормы"), Форма.Элементы.Отборы);
        НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.ПутьКДанным = "НоменклатураСписок";
        НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх;
    
    

    ЧКДзержинский,
    28 июн 2019
    #1
(Вы должны войти или зарегистрироваться, чтобы ответить.)
Показать игнорируемое содержимое
Похожие темы

  1. Azamat

    8.х
    Как программно добавить реквизит в форму

    Azamat,
    5 дек 2011
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
    Ответов:
    5
    Просмотров:
    4.591
    BabySG
    21 дек 2011

  2. ЧКДзержинский

    [РЕШЕНО]
    Добавить программно элемент на форму

    ЧКДзержинский,
    8 апр 2014
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»
    Ответов:
    16
    Просмотров:
    16.333
    web.num
    21 янв 2016

Загрузка…
Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Поиск

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние сообщения

Больше…

Создать на форме элементы типа СписокЗначений и заполнить их

Автор 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С на форме

Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.

Размещения списка значений на управляемой форме

После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.

Выбор типа нового элемента

Если мы выберем тип Таблица, то будет размещен элемент с типом Таблица, где в качестве колонок можно размещать соответствующие свойства списка значений.

Размещение свойства списка в качестве колонки таблицы

Размещение свойства списка в качестве колонки таблицы

Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.

Работа со списком значений 1С на форме

С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Склады.Ссылка КАК Ссылка,
                   |    Склады.Представление КАК Представление
                   |ИЗ
                   |    Справочник.Склады КАК Склады
                   |ГДЕ
                   |    НЕ Склады.НеИспользовать";
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
        Список.Добавить(Выборка.Ссылка,Выборка.Представление);
    КонецЦикла;

КонецПроцедуры

В этом случае, список заполнится сразу при открытии формы.

Заполненный список значения 1С


Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 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

Понравилась статья? Поделить с друзьями:
  • Производственная компания вест отзывы сотрудников
  • Промед фармацевтическая компания официальный сайт
  • Программное добавление реквизита таблицы значений
  • Производственная компания геркулес алтайский край
  • Промежуточная вилка карданного вала газель бизнес