Имя: Пароль:
1C
1С v8
Выбор значения из РС
,
0 AlohaBoy
 
18.12.19
15:11
Приветствую всех участников форума!

Необходимо сделать чтобы при нажатии на кнопку (которая находится на ОФ) открывалась форма выбора определённого значения ("Тема", которая находится в Ресурсах) непериодического и независимого РС.

Пробовал создавать ФормуСписка в РС и в ОФ вписывать такой вот код:
СтандартнаяОбработка = Ложь;
ФормаВыбора = РегистрыСведений.СписокУч.ПолучитьФорму("ФормаСписка");
ФормаВыбора.Открыть();

Но при открытии формы нету возможности выбрать значение, только добавить или удалить
1 Momus
 
18.12.19
15:49
Если я правильно понял задачу, то нужна не форма регистра (тем более форма списка), а форма выбора объекта "Тема".
2 Strogg
 
18.12.19
15:52
У тебя нет понимания сущности регистра сведений.
Нет такого понятия "элемент регистра сведений". Есть понятие записи. А в самой архитектуре регистра может быть ссылка на сущность, к которой тебе необходимо прицепить эту запись.
Короче, задача в текущей постановке нереализуема.
3 dka80
 
18.12.19
15:52
Выбрать можно конкретную ссылку. Запись регистра сведений не представляет собой конкретную ссылку - это набор ссылок. Поэтому выбрать не получится. Предварительно выбери из регистра сведений нужные тебе данные и сформируй список значений, например. А вот этот список значений уже подсовывай в форму выбора
4 runoff_runoff
 
18.12.19
15:55
ОткрытьЗначение(Элементы.Список.ТекущиеДанные.Тема)
5 AlohaBoy
 
19.12.19
11:07
Видел, что возможен выбор значение через выборку, но не совсем понимаю как это реализовать в конечном итоге
6 AlohaBoy
 
19.12.19
13:56
Получилось найти и сделать что-то такое, но вылезает ошибка -
{Обработка.СУО_Обсуждение.Форма.ФормаУчастников.Форма(83)}: Значение не является значением объектного типа (Добавить)
Для Каждого Эл Из ВыбранныйЭлемент.Тема Цикл Стр = Тема.Добавить();

Сама процедура:

Процедура КоманднаяПанель3Действие(Кнопка)
    
    Тема = Неопределено;
    ФормаВыбора = РегистрыСведений.СУО_Обсуждения.ПолучитьФорму("ФормаСписка");
    ФормаВыбора.ВладелецФормы = ЭтаФорма;
    ФормаВыбора.РежимВыбора = Истина;
    ФормаВыбора.ЗакрыватьПриЗакрытииВладельца = Истина;
    ФормаВыбора.ЗакрыватьПриВыборе = Истина;
    ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально();
    Для Каждого Эл Из ВыбранныйЭлемент.Тема Цикл Стр = Тема.Добавить();
    Стр.Тема = Эл.Тема;
    КонецЦикла;
    
КонецПроцедуры
7 AlohaBoy
 
19.12.19
14:06
В ФормеСписка РС прописана данная процедура:

Процедура РегистрСведенийСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    Стр=Новый Структура;
    Стр.Вставить("Тема",Элемент.ВыделенныеСтроки);
    ОповеститьОВыборе(Стр);
    СтандартнаяОбработка=Ложь;
КонецПроцедуры
8 dka80
 
19.12.19
14:24
Тема = Неопределено
и
Тема.Добавить()
9 AlohaBoy
 
19.12.19
14:27
(8) Как понимаю, т.к. тема находится в ресурсах РС, то она не является объектом
Потому что та же ошибка:

{Обработка.СУО_Обсуждение.Форма.ФормаУчастников.Форма(77)}: Значение не является значением объектного типа (Добавить)
Тема.Добавить();
10 unbred
 
19.12.19
14:28
"ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально();" //может не надо?)
11 dka80
 
19.12.19
14:29
(9) неправильно понимаешь.
Для Каждого Эл Из ВыбранныйЭлемент.Тема Цикл
Стр = Тема.Добавить();
Стр.Тема = Эл.Тема;
КонецЦикла

Поставь точку останова на строчке Стр = Тема.Добавить() и посмотри чему равно "тема"

(10) у него обычные формы
12 AlohaBoy
 
19.12.19
14:51
(11) Сделал остановку на Для Каждого Эл Из ВыбранныйЭлемент.Тема Цикл Стр = Тема.Добавить();
Но чему равна Тема не показывает
13 hhhh
 
19.12.19
15:03
(12) тема у вас

   Тема = Неопределено;


чуть выше по программе. Поэтому к ней и нельзя добавить(). К неопределену нельзя добавлять.
14 AlohaBoy
 
19.12.19
15:07
(13) Пробовал менять на Тема = "", абсолютно тоже, что значение не является значением объектного типа (Добавить)
15 Momus
 
19.12.19
15:18
(0) открывалась форма выбора определённого значения ("Тема", которая находится в Ресурсах)
(6) Процедура КоманднаяПанель3Действие(Кнопка)    
    Тема = Неопределено;

(14) "Тема" в коде - это имя переменной, а не ресурс регистра
16 AlohaBoy
 
19.12.19
15:27
(15) То есть необходимо - Тема = РегистрыСведений.СУО_Обсуждения.Выбрать(); так вот указать?
17 Momus
 
19.12.19
15:35
"открывалась форма выбора определённого значения ("Тема", которая находится в Ресурсах)" - тебе нужно открыть форму элемента-ресурса регистра, или открыть форму списка определенного типа, выбрать один и вернуть/поместить куда-либо?
18 Momus
 
19.12.19
15:38
Скрин бы твоей формы, потому что, если честно, я так не понял что ты хочешь сделать. Напиши текстом алгоритм твоей операции без использования языка 1с, мб понятней станет.
19 AlohaBoy
 
19.12.19
15:43
(18) Имеется КоманднаяПанельДействие при нажатии на которую мне необходимо открытие формы выбора значения "Тема" из РС№1 и позже запись в РС№2.
20 Momus
 
19.12.19
15:45
(19) т.е. у тебя на форме есть некая таблица значений, на командной панели которой располагается кнопка, при нажатии на которую необходимо открыть форму выбора значения?
21 Momus
 
19.12.19
15:47
(19) какой тип значения имеет ресурс "Тема" регистра? Это поле ссылочного типа или примитивного (строка, например)?
22 AlohaBoy
 
19.12.19
15:51
Ресурс Тема имеет тип Строка

https://prnt.sc/qd1z6d

На Форме имеется ТабличноеПоле, которое отображает как раз записи из РС№2
23 pechkin
 
19.12.19
15:53
ФормаВыбора.РежимВыбра = Истина;
ФормаВыбора.Открыть()
24 Momus
 
19.12.19
15:55
(22) Тогда нужно запросом заполнить список значений значениями из РС2 и при нажатии кнопки выбрать нужное значение из списка.
25 AlohaBoy
 
19.12.19
15:57
(24) ТабличноеПоле у меня и так заполняется из РС№2. Мне необходимо при нажатии выбор значения "Тема" из РС№1
26 Momus
 
19.12.19
15:59
(25) тогда из РС1, ошибся. Вообще вместо РС1 нужно справочник использовать
27 AlohaBoy
 
19.12.19
16:01
(26) С удовольствием бы использовал давным давно Справочник, но по условию необходим именно РС
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.