Имя: Пароль:
1C
 
Изменение типа ячейки формы
0 Csar
 
24.01.13
10:13
Доброго дня, коллеги!
Подскажите, пожалуйста, начинающему 1Снику.
Суть: Имеется форма, на форме "поле ввода" с реквизитом типа "Произвольный" (назовем "ЗначениеВвод"). Соответственно на самой форме при выборе этого реквизита в палитре свойств поле "ТипЗначения" стало пустым и недоступным (т.к. я реквизит создал на странице реквизитов и там же присвоил тип, а на странице диалога просто выбрал реквизит).
В эту ячейку необходимо присваивать значение выбираемого измерения (реквизита или ресурса) выбираемого регистра из конкретного документа корректировки записей регистров. Регистр и измерение могут быть любыми в рамках выбираемого документа корректировки. Т.о. изначально ТипЗначения ЭлементаФормы "ЗначениеВвод" Неопределено, а значение отсутствует. При выборе измерения обработка смотрит значение этого измерения в документе и должна присвоить его в "ЗначениеВвод".
На просторах интерента нашел множество вариантом, но ни один не сработал у меня (видать руки кривые или я чего то не понимаю. Второе вероятнее). Вот как вариант:
ВидРегистра - например, РегистрыНакопления
Регистр - например, НДСПредъявленный
Измерение - например, Поставщик
Данные[0][Измерение] - строка, с выбранной колонкой "Измерение", т.е. фактически уже готовое значение, которое надо присвоить в "ЗначениеВвод" и типом, который также надо присвоить "ЗначениеВвод".

ОписаниеНашегоТипа = Метаданные[ВидРегистра][Регистр].Измерения[Измерение].Тип;
ЭлементыФормы.ЗначениеВвод.Значение = ОписаниеНашегоТипа.ПривестиЗначение(Данные[0][Измерение]);

Тем не менее после этого алгоритма в ячейку записывается текстовая(!) строка с значением равным Данные[0][Измерение]. Тип "ЗначениеВвод" не удается изменить. В задумке еще в зависимости от типа программно ставить кнопку "КнопкаВыбора", что бы вручную менять значение, выбирая из ФормыСписка, открывающейся по появившейся кнопке. Но это станет возможно, когда тип получится изменить.
Напрямую задать тип на форме нельзя, т.к. напрямую он не определен и может принимать очень много вариантов различных значений.

Помогите, пожалуйста, с кодом для присваивания значения и типаЗначения.
1 Wobland
 
24.01.13
10:15
что-то всё мутно. присваивание делается оператором =, задание типа - присваиванием пустого значения нужного типа
2 Csar
 
24.01.13
10:15
Прошу прощения. Это моя первая тема.
Вопрос стоит на 1С8.2 УПП, файловая
3 Csar
 
24.01.13
10:23
(1) Как вариант еще есть
ЭлементыФормы.ЗначениеВвод.ТипЗначения.ПривестиЗначение(Данные[0][Измерение]);
Но это также не работает.

Wobland, не могли бы вы пояснить как мне получить пустое значение нужного типа, при условии, что тип будет определяться тем, какое измерение выбрал пользователь?
Когда пустое значение будет получено, то код получится просто таким (?):
ЭлементыФормы.ЗначениеВвод.ТипЗначения = ПустоеЗначениеНашегоТипа;
ЭлементыФормы.ЗначениеВвод.Значение = Данные[0][Измерение];

Еще вопрос. Как красиво вставить сюда код 1С?
4 Wobland
 
24.01.13
10:24
(3) я мало что понял вообще. может, после второго раза дойдёт ;)
{1c}скобки квадратные{/1с}
5 Csar
 
24.01.13
10:30
(4) Если кратко, то надо присвоить значение определенного типа (которое до запуска обработки не известно, но становится известным как формируется ее значение) в ячейку на форме, тип которой "Произвольный".
6 samozvanec
 
24.01.13
10:30
вроде как реквизит произвольного типа и присваивай ему че хочешь, не?
7 Wobland
 
24.01.13
10:30
(5) =
8 Wobland
 
24.01.13
10:30
+(7) и всё
9 Csar
 
24.01.13
10:36
(6) (7) (8)
т.е. просто так?
ЭлементыФормы.ЗначениеВвод.Значение = Данные[0][Измерение];
10 Wobland
 
24.01.13
10:37
(9) КакойТоРеквизит=НужноеЗначение; - так кошерней. не путай данные с их представлением
11 Wobland
 
24.01.13
10:38
test
12 Wobland
 
24.01.13
10:38
(11) ветка не в той теме
13 Csar
 
24.01.13
10:40
сории за спам, тестирую тэги
ЭлементыФормы.ЗначениеВвод.Значение = Данные[0][Измерение];
ЭлементыФормы.ЗначениеВвод.Значение = Данные[0][Измерение];

(12) Я посотрел в списке веток - не нашел ничего, связанного с 1С. Подскажите, пожалуйста, какое название ветки для 1с?
14 Csar
 
24.01.13
10:41
(11) что то ни с русскими тегами ни с английскими тегами на выходит вставить код
15 Wobland
 
24.01.13
10:47
(13) видишь правильную тему для ветки?
http://screencast.com/t/t1GwgluW
16 Csar
 
24.01.13
10:48
(6) (12) Спасибо большое за помощь. Видимо проблема не в самом присваивании, а программном добавлении кнопки выбора. Задумка была, что бы программно создавать кнопку выбора и пользователь мог бы щелкнув по ней открыть формуВыбора и выбрать (если захочет) другое значение реквизита.
В итоге кнопка у меня создается, но она не работает (нажатие на нее не дает никакого результата).
В моем коде только кнопка создается:
ЭлементыФормы.ЗначениеВвод.КнопкаВыбора = Истина;

Как заставить кнопку работать? Чего ей не хватает? Реквизит содержит нужный тип, так как почему же кнопка не открывает форму выбора соответствующего справочника или журнала?
17 Csar
 
24.01.13
10:50
(15) 1Сv8 у меня стояла, а в окошке Секция я выбрал секцию Математика и алгоритмы, т.к. там нет 1С. Видимо в Секции ничего не надо выбирать, просто ее оставить и не трогать?
PS за скрин.
18 Wobland
 
24.01.13
10:51
(16) кнопка выбора добавляется одной галкой в свойствах поля ввода
19 Wobland
 
24.01.13
10:52
(18) не углядел, там всё прогораамно, пардон
20 Csar
 
24.01.13
10:55
(18) (19) я попробовал в палитре свойств включить и программно - результат один - кнопка есть, но при нажатии на нее форма выбора не открывается. Вообще ничего не происходит.
21 Csar
 
24.01.13
10:56
Разве кнопка выбора не открывает автоматически форму выбора соответствующего справочника или журнала, опираясь на тип реквизита? Например, если тип Справочники.Контрагенты, то открывать форму именно этого справочника?
22 Wobland
 
24.01.13
10:57
(20) а должно. при первом открытии что там? "Т" должно быть...
23 Csar
 
24.01.13
11:04
(22) Да, первоначально там кнопка выбора типа "Т", но она так же неактивная, т.е. при нажатии она кликается, но ничего не происходит. Вот скрин http://pikucha.ru/ia1Rh. События не назначены у ячейки
24 Wobland
 
24.01.13
11:06
(23) реквизит себе заведи. данные странные и тип данных
25 Csar
 
24.01.13
11:10
В данных сидит реквизит, созданный на вкладке Реквизиты http://pikucha.ru/ia1Rj
Тип данны у него по умолчанию Произвольный, но когда я присваиваю ему значение, то тип значения так же присваивается и в итоге реквизит получается со значением и типом.
26 Wobland
 
24.01.13
11:15
мда.. попробовал на практике. это всё от того, что тип произвольный
27 Wobland
 
24.01.13
11:15
(26) сделай нужный составной
28 Csar
 
24.01.13
11:19
(26) неужели мне придется проставить все галочки в типах?? С учетом того, что у меня будет много различных вариантов, то как то странно, что 1С так реализовала этот момент. Попробовал указать некоторые типы, в т.ч. справочники - их хорошо открывает.

[b]Wobland[/b], спасибо тебе огромное за помощь!
29 Wobland
 
24.01.13
11:20
(28) я тип произвольный даже не видел никогда. а зачем все галки? да и не так их много..
30 Wobland
 
24.01.13
11:20
@_Csar - подчерк убрать: Csar
31 Csar
 
24.01.13
11:21
(29) документ корректировок всевозможные регистры редактирует. Все измерения, реквизиты и ресурсы надо просмотреть и их типы указать.
32 hhhh
 
24.01.13
11:24
(23) а реквизит точно тип "Произвольный" задано?
33 Csar
 
24.01.13
11:27
(32) да, в (25) есть скрин. Я сначала создал реквизит на странице реквизитов, потом указал его в ячейке.
34 Wobland
 
24.01.13
11:27
(32) точно. не работает с произвольным