Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 сен 2021, 15:37

Программно выбрать ссылку для строки табличной части

Автор Gigi Spoke, 22 мая 2017, 15:52

0 Пользователей и 1 гость просматривают эту тему.

Gigi Spoke

Уважаемые форумчане.
Проблема очень простая.... не подскажете как назначить ссылку для строки табличной части формы программно на клиенте.
Когда тип реквизита строка, то текст без проблем вставляется. Ну на пример так:

Элементы.Таб_Точка.ТекущиеДанные.Реквизит2="ТЕКСТ";

Аналогичным способом не получается с реквизитом в данном случае на пример с "Реквизит1". Ибо тип этого реквизита Ссылка.

Вот варианты:
Элементы.Таб_Точка.ТекущиеДанные.Реквизит1="ТекстНаименованияСсылки";
Элементы.Таб_Точка.ТекущиеДанные.Реквизит1.Наименование="ТекстНаименованияСсылки";


пробовал через команду ПолучитьОбъект но он для сервера.
И дело в том, что текст той ссылки которую нужно вбить в строку ТЧ он списке точно будет присутствовать... в противном случае сделаю через попытку, что бы не было ошибки.

Нужно просто следующее:
На пример, когда как обычно... открываешь форму с реквизитом тип которой ссылка. Нажимаешь на кнопку... и выходит список выбора. Потом нажимаешь на кнопку выбрать. И текст наименования выбранного вставляется в реквизит ссылки.
Мне нужна, та же самая операция только программно, для реквизита ссылки табличной части.

Буду признателен за помощь.

wise

(0) если &НаКлиенте
Элементы.Таб_Точка.ТекущиеДанные.Реквизит1 = ПредопределенноеЗначение("Переречисление.Точки.Зелёная");
ИЛИ
Элементы.Таб_Точка.ТекущиеДанные.НаименованиеОрганизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Организация, "Наименование")
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Gigi Spoke

Цитата: wise от 22 мая 2017, 16:29Элементы.Таб_Точка.ТекущиеДанные.Реквизит1 = ПредопределенноеЗначение("Переречисление.Точки.Зелёная");

Че-то не получается ...
Адресс ссылки "Справочники.ТОЧКА_тест1.Наименование"
А поле табличной части куда нужно вклинить эту "многострадальную" ссылку такая ... "Элементы.Таб_Точка.ТекущиеДанные.Точка"
Поэтому пробовал так:
Элементы.Таб_Точка.ТекущиеДанные.Точка = ПредопределенноеЗначение("СправочникСсылка.ТОЧКА_тест1.Наименование.ТЕКСТвставки");

Выдает ошибку и пишет, что адрес не найден, хотя он ЕСТЬ!!!!

Буду опять признателен!



wise

(2) ЧТО Вы, Gigi пишите..??? :xfbnsdfb:
Вы знаете, что такое - ПредопределенноеЗначение..? Загляните в синтаксис-помощник..!

Цитата: Gigi Spoke от 22 мая 2017, 17:38СправочникСсылка.ТОЧКА_тест1.Наименование.ТЕКСТвставки

ЧТО это ..?
[ТЕКСТвставки] это свойство реквизита "Наименование"..?? :xfbnsdfb: ИЛИ "Наименование" - это предопределённый элемент, "ТЕКСТвставки" - это реквизит элемента...


Цитата: Gigi Spoke от 22 мая 2017, 17:38Адресс ссылки "Справочники.ТОЧКА_тест1.Наименование"
вот ДАВАЙТЕ, попробуем РАЗОБРАТЬСЯ...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Gigi Spoke

Цитата: wise от 22 мая 2017, 17:52
ЧТО это ..?
[ТЕКСТвставки] это свойство реквизита "Наименование"..??  ИЛИ "Наименование" - это предопределённый элемент, "ТЕКСТвставки" - это реквизит элемента...

Ладно! Объясню еще раз... удивляюсь почему никак не понят.
Но прежде всего спасибо за ответ!
Поэтому лучше приведу работающий простой пример:

Элементы.Таб_Точка.ТекущиеДанные.Реквизит2="ТЕКСТвставки";

Данная команда что сделала?
Она взяла КОНСТАНТУ: "ТЕКСТвставки" и просто вставила значение:"ТЕКСТвставки" в текущую строку табличной части: "Таб_Точка" в реквизит: "Реквизит2"
Но тип "Реквизит2" это строка.

Теперь рассмотрим другой пример. и возьмем уже на пример; "Реквизит1" тип которого ССЫЛКА!!! при той же самой табличной части.
Т.е. его расположение в той же форме элемента:
Элементы.Таб_Точка.ТекущиеДанные.Реквизит1="ТЕКСТвставки";
Что нужно!
НУЖНО В ТЕКУЩЕЙ СТРОКЕ ТАБЛИЧНОЙ ЧАСТИ (Элементы.Таб_Точка.ТекущиеДанные) реквизиту: "Реквизит1" ПРИСВОИТЬ ССЫЛКУ. ДА... ССЫЛКУ ... ВСЕГО ЛИШЬ ДА И ТОЛЬКО!
ЧТО ТУТ НЕ ПОНЯТНОГО!?
ТУ ССЫЛКУ НА ТОТ ОБЪЕКТ КОТОРАЯ СУЩЕСТВУЕТ!!!!
Элементы.Таб_Точка.ТекущиеДанные.Реквизит1="НаименованиеОбъектаСсылки";
И в случае такой команды ничего не происходит. Тогда как при типе срока без проблем.

Ну ладно ..о ставим в покое конфигуратор и на время перенесемся в пользовательский режим.
Допустим открываем формуЭлемента справочника и в табличной части нажимаем на добавить и в новой строке нажимаем на "реквизит1" с типом ссылка.
Появляется форма выбора, выбираем любой элемент другого справочника и жмем. И в результате в поле "реквизит1", ЧТО ВСТАВЛЯЕТСЯ?
ТЕКСТ НАИМЕНОВАНИЯ выбранного элемента. И это то, что бывает как результат выбора.
МНЕ НУЖНО ТО ЖЕ САМОЕ ТОЛЬКО П-Р-О-О-Г-Р-А-А-А-М-Н-О-О-О!
Извините за эмоции :D:D ... это так для выразительности. :D:D

Т.е. допустим адрес ссылки: "реквизит1" в табличной части:  (Элементы.Таб_Точка.ТекущиеДанные) следующий: СправочникСсылка.ТОЧКА_тест1
Это то, как указанно во вкладке "данные" в пункте "тип".
И допустим в справочнике: "ТОЧКА_тест1" создан элемент списка с наименованием: "ВАСЯ", "ПЕТЯ" или "БУЙВОЛ". Опять пардон за последнее :D:D:D:D:D
Так вот, НУЖНО В ТАБЛИЧНОЙ ЧАСТИ Элементы.Таб_Точка.ТекущиеДанные РЕКВИЗИТУ: "Реквизит1" ПРИСВОИТЬ ССЫЛКУ НА УЖЕ СОЗДАННЫЙ И СУЩЕСТВУЮЩИЙ ЭЛЕМЕНТ ОБЪЕКТА: "Справочник.ТОЧКА_тест1". Т.Е. НА ТОТ САМЫЙ "БУЙВОЛ". Последнее это одно из значений реквизита "Наименование", справочника: "ТОЧКА_тест1". :D:D:D:D
Теперь я надеюсь понят?
Все это нужно сделать кодовым способом.
А командой:
Элементы.Таб_Точка.ТекущиеДанные.Реквизит1="БУЙВОЛ"; естественно не получаеться...в отличае от случая "Реквизита2", у которого тип строка.

Ладно! еще раз извините за эмоции :D:D:D:D
Просто сколько форумов уже облазил и почему то не правильно понят. А речь то не о сильно сложном.
Поэтому, если проблему с Вашей помощи смогу решить то, наверно открою бутылку шампанского и отпразную.

И БУДУ УЖАС КАК ПРИЗНАТЕЛЕН ВАМ!





















ilnur75

Цитата: Gigi Spoke от 22 мая 2017, 21:31Тогда как при типе срока без проблем.
а что здесь работает? неужели появляется форма выбора со списком? верно только одно-тип должен быть строка, а не ссылка!
далее Вам надо создать форму выбора, а обработчиком НачалоВыбора получать СписокЗначений из справочника и связать список с формой выбора и прописать процесс выбора для запоминания.
Это сделать не так то просто!
проще использовать функционал платформы в закладках Свойства-Использования-СвязиПоПараметрам и т.п.


wise

(4) Вы хотите на клиенте работать с ссылочными данными - так НЕЛЬЗЯ!
Элементы.Таб_Точка.ТекущиеДанные.Реквизит1="БУЙВОЛ";
в данном случае Вам НЕОБХОДИМО сначала получить ЭТОГО "буйвола" допустим из константы...
ИЛИ серверной функцией

&НаСервереБезКонтекста
Функция ПолучитьБуйвола()
    Возврат Справочники.ТОЧКА_тест1.НайтиПоНаименованию("БУЙВОЛ");
КонецФункции
//***********************
&НаКлиенте
Процедура УстановкаРеквизита()
    Элементы.Таб_Точка.ТекущиеДанные.Реквизит1=ПолучитьБуйвола();
КонецПроцедуры
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск