ПутьКДанным из реквизита формы типа таблица значений
По теме из базы знаний
- Создание множественного дополнительного реквизита. Управление торговлей 11
- Заполнение категорий статистического учета для формы ЗП-Образование, пр-366 от 8 марта 2021
- Обзор полезных методов БСП 3.1.4
- Программный вывод таблицы значений в таблицу на управляемой форме
- Визуализация таблицы значений на управляемой форме
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)(3)
вот только как путь указать???
пытаюсь сделать хотя бы для текущей строки вот так:
- не канает!
Причем строка пути "Элементы.ТаблицаСостояний.ТекущиеДанные.Значение"
взята в конфигураторе из пути данных другого поля формы
Обработка во вложении.
вот только как путь указать???
пытаюсь сделать хотя бы для текущей строки вот так:
ПолеТест = Элементы.Вставить("ПолеТест",Тип("ПолеФормы"),,Элементы.ТаблицаСостояний);
ПолеТест.Вид = ВидПоляФормы.ПолеВвода;
ПолеТест.ПутьКДанным = "Элементы.ТаблицаСостояний.ТекущиеДанные.Значение";
- не канает!
Причем строка пути "Элементы.ТаблицаСостояний.ТекущиеДанные.Значение"
взята в конфигураторе из пути данных другого поля формы
Обработка во вложении.
Прикрепленные файлы:
Тест82-1.epf
(5) sannt, я понимаю что так можно задать в конфигураторе...
в выложенной обработке как раз есть еще поле формы Реквизит1
для которого это так и сделано.
НО:
1. почему такой путь нельзя задавать при програмном добавлении элементов в форму?
2. и как же, наконец, проверить ваше предложение
Если нужна привязка именно к конкретной строке, а не к текущей, то только программно
т.е. какой путь нужно прописать свойству ПолеТест.ПутьКДанным ???
в выложенной обработке как раз есть еще поле формы Реквизит1
для которого это так и сделано.
НО:
1. почему такой путь нельзя задавать при програмном добавлении элементов в форму?
2. и как же, наконец, проверить ваше предложение
Если нужна привязка именно к конкретной строке, а не к текущей, то только программно
т.е. какой путь нужно прописать свойству ПолеТест.ПутьКДанным ???
(6) Rothschild, я не правильно выразился. Я имел ввиду программную установку значения в поле (реквизиту), а не привязку... Например:
с проверкой, что строка вообще есть. Другого способа не знаю.
По поводу программной установки ПутьКДанным с привязкой к текущей строке... не могу сказать почему нельзя.
Реквизит1 = ТаблицаСостояний[1].Представление;
По поводу программной установки ПутьКДанным с привязкой к текущей строке... не могу сказать почему нельзя.
Вот и я не смог найти. Я когда-то в 1С пришел из Visual FoxPro , а в VFP в аналогичной ситуации можно было использовать ЛЮБОЙ текст, который vfp может выполнить и получить значение. Иногда по аналогии пытаюсь заставить что-то работать... иногда помогает, а иногда и вот так...
(9) jigourt,
насколько я понял задача состоит в создании в форме
несколько полей формы,
привязанных к конкретной ячейке конкретных строк таблицы значений:
ПолеФормы0 - к ТаблицаСостояний[0].Значение
ПолеФормы1 - к ТаблицаСостояний[1].Значение
ПолеФормы2 - к ТаблицаСостояний[2].Значение
ну конечно привязывать надо после того, как эти строки добавлени в таблицу.
:)
насколько я понял задача состоит в создании в форме
несколько полей формы,
привязанных к конкретной ячейке конкретных строк таблицы значений:
ПолеФормы0 - к ТаблицаСостояний[0].Значение
ПолеФормы1 - к ТаблицаСостояний[1].Значение
ПолеФормы2 - к ТаблицаСостояний[2].Значение
ну конечно привязывать надо после того, как эти строки добавлени в таблицу.
:)
(9) jigourt
Да. Именно 100 и создавать. Хотя 100 их там скорее всего не будет.
Тип у реквизита строка неограниченной длины.
Нужно хотя- бы такое решение, которое позволит добавить ПолеВвода, добавить реквизит, присвоить ему значение, и связать данное полеВвода с реквизитом на форме, причем имя поля и реквизита ЗАРАНЕЕ НЕИЗВЕСТНО И ЗАДАЕТСЯ ПРИ добавлении на форму.
при использовании ИзменитьРеквизиты(....) в хелпе написано что к добавленному реквизиту можно обратиться ТОЛЬКО Этаформа.<ИмяДобавленногоРеквизита>
и действительно, отладчик реквизиты добавленные показывает, но через Этаформа["<ИмяДобавленногоРеквизита>"] обратиться к ним не удается.
ЗначениеВРеквизитФормы("значение", "<ИмяДобавленногоРеквизита>");
ЗначениеВРеквизитФормы("значение", "Этаформа.<ИмяДобавленногоРеквизита>") и пр. не проходят, им похоже не нравиться тип реквизита.
работает , ТОЛЬКО так:
Этаформа.<ИмяДобавленногоРеквизита> = "Значение",
ps. тестирую в тонком клиенте , ибо это для данного режима мне нужно.
Да. Именно 100 и создавать. Хотя 100 их там скорее всего не будет.
Тип у реквизита строка неограниченной длины.
Нужно хотя- бы такое решение, которое позволит добавить ПолеВвода, добавить реквизит, присвоить ему значение, и связать данное полеВвода с реквизитом на форме, причем имя поля и реквизита ЗАРАНЕЕ НЕИЗВЕСТНО И ЗАДАЕТСЯ ПРИ добавлении на форму.
при использовании ИзменитьРеквизиты(....) в хелпе написано что к добавленному реквизиту можно обратиться ТОЛЬКО Этаформа.<ИмяДобавленногоРеквизита>
и действительно, отладчик реквизиты добавленные показывает, но через Этаформа["<ИмяДобавленногоРеквизита>"] обратиться к ним не удается.
ЗначениеВРеквизитФормы("значение", "<ИмяДобавленногоРеквизита>");
ЗначениеВРеквизитФормы("значение", "Этаформа.<ИмяДобавленногоРеквизита>") и пр. не проходят, им похоже не нравиться тип реквизита.
работает , ТОЛЬКО так:
Этаформа.<ИмяДобавленногоРеквизита> = "Значение",
ps. тестирую в тонком клиенте , ибо это для данного режима мне нужно.
2 jigourt
9.
jigourt
12.01.14 15:21
(8) n_kremko, вот я например абсолютно не понял, что Вы хотите сделать. у разных строчек таблицы значений разные пути к данным?? только один вопрос, а зачем? чего Вы хотите добиться в целом?
В целом, в (1) и в (9) там написанно , чего я хочу добиться
15.
jigourt
16.01.14 10:28
(13) n_kremko, в силу того, что решение довольно-таки странное, почему нужно использовать поле ввода, а не например список значений?
Потому , что мне нужно поле ввода, а не список значений.
9.
jigourt
12.01.14 15:21
(8) n_kremko, вот я например абсолютно не понял, что Вы хотите сделать. у разных строчек таблицы значений разные пути к данным?? только один вопрос, а зачем? чего Вы хотите добиться в целом?
В целом, в (1) и в (9) там написанно , чего я хочу добиться
15.
jigourt
16.01.14 10:28
(13) n_kremko, в силу того, что решение довольно-таки странное, почему нужно использовать поле ввода, а не например список значений?
Потому , что мне нужно поле ввода, а не список значений.
Добрый день.
Ветка старая, но решения не содержит. Если кому интересно, публикую решение.
Тоже столкнулась с такой задачей в Документообороте для отображения на своей форме нескольких реквизитов для изменения.
При заполнении табличной части для каждой строки запускаю такую процедуру:
Ветка старая, но решения не содержит. Если кому интересно, публикую решение.
Тоже столкнулась с такой задачей в Документообороте для отображения на своей форме нескольких реквизитов для изменения.
При заполнении табличной части для каждой строки запускаю такую процедуру:
&НаСервере
Процедура СоздатьПолеРеквизита(СтрокаТЧ)
НомерстрокиТЧ = СтрокаТЧ.НомерСтроки-1;
ИдентификаторСтроки = "Строка"+СтрЗаменить(НомерстрокиТЧ,Символы.НПП,"");
Заголовок = СтрокаТЧ.Наименование;
ПутьКДанным="Объект.ЗначенияРеквизитов["+НомерстрокиТЧ+"].Значение";
// Добавляем поле ввода.
Если Элементы.Найти(ИдентификаторСтроки) <> Неопределено Тогда
Возврат;
КонецЕсли;
Поле = Элементы.Добавить("ИдентификаторСтроки, Тип("ПолеФормы"));
Поле.Заголовок = Заголовок;
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = ПутьКДанным;
//Поле.УстановитьДействие("ПриИзменении", "Подключаемый_хххПриИзменении");
Поле.Видимость = истина;
Если ЗначениеЗаполнено(СтрокаТЧ.ДополнительныйРеквизит) Тогда
ТипРеквизита = ПолучитьТипНаСервере(СтрокаТЧ.ДополнительныйРеквизит);
Иначе
ТипРеквизита = ПолучитьТипОснРеквизитаНаСервере(СтрокаТЧ.Наименование);
КонецЕсли;
Поле.ОграничениеТипа = ТипРеквизита;
Если ТипЗнч(СтрокаТЧ.Значение) = Тип("СправочникСсылка.ЗначенияСвойствОбъектов") Тогда
НовыйПараметр = Новый ПараметрВыбора("Отбор.Владелец", СтрокаТЧ.ДополнительныйРеквизит);
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НовыйПараметр);
НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
Поле.ПараметрыВыбора = НовыеПараметры;
Поле.КнопкаВыбора = Истина;
КонецЕсли;
Поле.ОграничениеТипа.ПривестиЗначение();
КонецПроцедуры
&НаСервере
Функция ПолучитьТипНаСервере(ДопРеквизит)
Возврат ДопРеквизит.ТипЗначения;
КонецФункции
&НаСервере
Функция ПолучитьТипОснРеквизитаНаСервере(ИмяРеквизита)
Возврат Метаданные.Справочники.ВнутренниеДокументы.Реквизиты[ИмяРеквизита].Тип;
КонецФункции
Показать
(17) Добрый день.
Не сдержался, столько ошибок в коде... Хоть и год уже сообщению
Не сдержался, столько ошибок в коде... Хоть и год уже сообщению
&НаСервере
Процедура СоздатьПолеРеквизита(СтрокаТЧ)
//НомерстрокиТЧ = СтрокаТЧ.НомерСтроки-1; //если индекс строки больше 999, будет ошибка при назначении пути к данным поля формы.
НомерстрокиТЧ = Формат(Объект.ЗначенияРеквизитов.Индекс(СтрокаТЧ),"ЧДЦ=; ЧН=; ЧГ="); //лучше воспользоваться функцией "Индекс" и преобразовать в строку.
//НомерстрокиТЧ = XMLСтрока(Объект.ЗначенияРеквизитов.Индекс(СтрокаТЧ)); //или можно так... надо бы сравнить быстродействие функций "Формат" и "XMLСтрока", но лень.
//ИдентификаторСтроки = "Строка"+СтрЗаменить(НомерстрокиТЧ,Символы.НПП,"");
ИдентификаторСтроки = "Строка"+НомерстрокиТЧ ; //там уже строка без НПП.
Заголовок = СтрокаТЧ.Наименование;
ПутьКДанным="Объект.ЗначенияРеквизитов["+НомерстрокиТЧ+"].Значение";
// Добавляем поле ввода.
Если Элементы.Найти(ИдентификаторСтроки) <> Неопределено Тогда
Возврат;
КонецЕсли;
//Поле = Элементы.Добавить("ИдентификаторСтроки, Тип("ПолеФормы")); //лишняя кавычка
Поле = Элементы.Добавить(ИдентификаторСтроки, Тип("ПолеФормы"));
.....
//Поле.ОграничениеТипа.ПривестиЗначение(); // это вообще к чему? функция ПривестиЗначение без параметра выдает значение по умолчанию для описания типов. Если Вам это требуется, то присвойте его чему нибудь...
// Возможно имелось в виду
СтрокаТЧ.Значение=Поле.ОграничениеТипа.ПривестиЗначение(СтрокаТЧ.Значение);
.....
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот