|
v7: НазначитьТип() программно а не с формы | ☑ | ||
---|---|---|---|---|
0
MiracMC
22.09.18
✎
00:56
|
Добрый день.
Есть реквизит справочника с названием "Значение" неопределенного типа. При работе с формой элемента справочника в интерактивном режиме программно назначаю нужный мне вид... Как то так: Если Характеристика.ВидЗначения = Перечисление.ВыдЗначения.Цвет Тогда Процедура ПриВыбореХарактеристики() Если Характеристика.ВидЗначения = Перечисление.ВыдЗначения.Цвет Тогда Форма.Значение.НазначитьТип("Справочник.Цвета",,); КонецЕсли; Если Характеристика.ВидЗначения = Перечисление.ВыдЗначения.Текст Тогда Форма.Значение.НазначитьТип("Строка",100,); КонецЕслИ; КонецПроцедуры Но задача повернулась так что необходимо из обработки создавать новые элементы этого справочника и как то не получается назначить вид моему реквизиту... пробовал простую запись нужного мне значения, допустим : Значение = Перечисление.Вид.Товар или Значение = ТМЦ.ТекущийЭлемент(); Есть способы решить задачу кроме вызова самой формы справочника? |
|||
1
Злопчинский
22.09.18
✎
01:22
|
Ну, наверное у тебя проба была не так как ты в примере написал а примерно так
Спр.Значение = ..... Ну и пиши примерно как в форме Спр.Значение.НазначитьТип(...) |
|||
2
MiracMC
22.09.18
✎
01:39
|
(1) Привет.
НУ так и написал пример выше... В форме перед тем как пользователь внесет значение (или выберет его) он выбирает "тип" характеристики... отрабатывает процедура Процедура ПриВыбореХарактеристики() Если Характеристика.ВидЗначения = Перечисление.ВыдЗначения.Текст Тогда Форма.Значение.НазначитьТип("Строка",100,); КонецЕсли; Если Характеристика.ВидЗначения = Перечисление.ВыдЗначения.Число Тогда Форма.Значение.НазначитьТип("Число",10,0); КонецЕсли; Если Характеристика.ВидЗначения = Перечисление.ВыдЗначения.Цвет Тогда Форма.Значение.НазначитьТип("Справочник.Цвета",,); КонецЕслИ; Если Характеристика.ВидЗначения = Перечисление.ВыдЗначения.Размер Тогда Форма.Значение.НазначитьТип("Справочник.Размеры",,); КонецЕсли; ..... КонецПроцедуры Так все работает. Пользователь выбирает значение или вносит его... А когда программно создаю - делаю как то так: .... ХарПред.Новый(); ХарПред.Характеристика = Хар.ТекущийЭлемент(); ХарПред.Значение = ТМЦ.Модель; ХарПред.ЗначениеТекст = СокрЛП(ТМЦ.Модель); ХарПред.Записать(); .... Где ХарПред.Значение = ТМЦ.Модель; - это и есть попытка записи значения в неопределенный реквизит справочника... ЗначениеТекст - это просто текстовое поле для проверки. Сюда значение записывается без проблем.... |
|||
3
Мимохожий Однако
22.09.18
✎
07:59
|
Где в примере программного кода назначение типа?
|
|||
4
MiracMC
22.09.18
✎
12:46
|
(3) интерактивно
Форма.Значение.НазначитьТип("Строка",100,); написано ж... программно НазначитьТип() не работает отсюда и вопрос как это сделать программно? |
|||
5
HawkEye
22.09.18
✎
13:44
|
(4) читаем... думаем...
НазначитьТип(<?>,,,) Синтаксис: НазначитьТип(<ИмяРеквизита>,<ИмяТипа>,<Длина>,<Точность>) Назначение: Назначить тип для реквизита неопределенного типа. Параметры: <ИмяРеквизита> - строка с наименованием реквизита неопределенного типа, как он назван в конфигураторе. <ИмяТипа> - строковое выражение - название типа данных (или Вид субконто), который назначается реквизиту. Например, ''Строка'', ''Число'', ''Справочник.Товары'', ''Документ.РасходнаяНакладная'' и т.п. <Длина> - необязательный параметр. Число - длина поля представления данных. Имеет смысл только при задании числового или строкового типа. <Точность> - необязательный параметр. Число знаков после десятичной точки. Имеет смысл только при задании числового типа. |
|||
6
MiracMC
22.09.18
✎
16:05
|
(5)... коллега... ну не страдайте ерундой и сами дочитайте до конца... а там написано
Замечание: Доступ к методу возможен только в контексте Модуля формы через атрибут Форма. Подробнее см. в документации, глава 'Атрибуты и методы контекста Модуля формы И если пересмотреть что я выше пишу то там тоже видно что оно работает только в виде Форма.Значение.НазначитьТип("Справочник.Цвета",,); |
|||
7
MiracMC
22.09.18
✎
16:14
|
Так же НазначитьТип() может быть у:
1. Документ 2. Журнал 3. Константа 4. Контекст Формы - именно его я использую интерактивно 5. Операция и проводка 6. Периодический реквизит 7. Регистр 8. Справочник 9. Счет 10. Таблица Возможно я чего то не понимаю, но тут нет вариантов программного создания элемента справочника у которого один из аргументов имеет неопределенный тип... Из того что я пробовал не работает ничего... Видимо выход только такой: 1. Открывать форму нового элемента справочника и через атрибут Форма.Параметр передавать в нее все необходимые значения.. 2. Та уже в ПриОткрытии() заполнять все как надо и записывать 3. Закрывать форму... Просто в моем случае это приведет к сумашедшему мерцанию экрана пользователя... а не хотелось бы... |
|||
8
MiracMC
22.09.18
✎
16:59
|
(5)... сори... я не прав...
зациклился на одной формулировке про Элемент формы и не видел попросту остальных... всем спасибо... разобрался.. |
|||
9
Рэйв
22.09.18
✎
17:46
|
Какая прелесть...77..понастальгировал, спасибо.
|
|||
10
Эльниньо
24.09.18
✎
14:21
|
Спр.НазначитьТип("ЗначениеРеквизита", ТипЗначенияСтр(ТМЦ.ТекущийЭлемент()));
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |