|
Планы видов характеристик | ☑ | ||
---|---|---|---|---|
0
AlexeyVM
15.06.17
✎
08:22
|
Добрый день.
Мне нужно сделать возможность добавления дополнительного реквизита для на форму пользователю(кнопка, при нажатии на которую пользователь может создать новый реквизит, задать его имя, список значений). После этого реквизит всегда отображается на форме и в него возможно выбрать значение. Например, пользователь может создать для элемента справочника реквизит "Цвет" со значениями "Черный", "Белый". После создания реквизита в поле ввода должно выбираться одно из этих значения. Пользователь может выбрать те значения, которые соответствуют созданной характеристике. Я думаю это будет примерно так, нажимаешь на кнопку, открывается ПВХ, там создаю запись, по которой должен создаться реквизит, задаю значения (которые будут храниться в справочнике с владельцем - ПВХ), эти значения как-то должны передаться в поле ввода. Но я только новичок, поэтому пока не могу разобраться как это реализовать, пока что создал справочник "ЗначенияСвойств" (владелец - ПВХ.Свойства), ПВХ "Свойства" (тип значения - СправочникСсылка.ЗначенияСвойств), так же сделал кнопку на форме элемента справочника (при нажатии открывается форма списка ПВХ). А дальше не могу понять как мне передать созданный элемент ПВХ в Реквизит справочника и как потом в поле ввода засунуть значения из справочника для данного вида характеристики. Подскажите пожалуйста, или скиньте хотя бы подобные примеры. Ищу в интернете, не могу найти подобного (где при нажатии на кнопку создается реквизит и берет откуда-нибудь значения) |
|||
1
2dolist
15.06.17
✎
08:56
|
Проще всего через дополнительные реквизиты идти. Там не надо пилить механизм добавления реквизитов на форму - он уже есть.
|
|||
2
AlexeyVM
15.06.17
✎
08:58
|
(1) ну такое условие задачи
|
|||
3
yzimin
15.06.17
✎
09:24
|
(0) если делаешь свой велосипед, то сделай у объекта табличную часть с реквизитами: свойство, значение.
На форму выведи эту ТЧ |
|||
4
yzimin
15.06.17
✎
09:25
|
(0) >Подскажите пожалуйста, или скиньте хотя бы подобные примеры. Ищу в интернете, не могу найти подобного
БСП 3.49. Свойства https://its.1c.ru/db/bspdoc#content:2385:1 |
|||
5
AlexeyVM
15.06.17
✎
10:01
|
(4) Почитал, но как я понял, это не то, что мне нужно. Мне надо чтобы пользователь просто нажал на кнопку, создал вид характеристики, задал ее значение и на основе этого создался реквизит, в поле ввода которого я мог выбирать
созданные значения для этого вида характеристики. |
|||
6
Мимохожий Однако
15.06.17
✎
10:09
|
(0) Бери за основу типовые конфигурации или БСП.
(5) То, что не смог разобраться с типовым велосипедом не повод отказываться. |
|||
7
Sinderlok
15.06.17
✎
10:15
|
У меня такое же задание. Дополнительные реквизиты тут не нужны. Поясню как это примерно должно выглядит. Есть кнопка, нажимая на которую пользователь может создать новый реквизит, задать его имя и тип. Задается через произвольную форму. Но передать заданные имя и тип в код ниже не получается.(с типом отдельная тема, не знаю как сделать выбор из списка типов и передать)
НовыеРеквизиты = Новый Массив; НовыйРеквизит = Новый РеквизитФормы("имя",Новый ОписаниеТипов ("тип"),,"заголовок",Истина); НовыеРеквизиты.Добавить(НовыйРеквизит); ИзменитьРеквизиты (НовыеРеквизиты); |
|||
8
Мимохожий Однако
15.06.17
✎
10:48
|
Можно просто добавить в справочник табличную часть с нужными реквизитами.
|
|||
9
AlexeyVM
16.06.17
✎
07:59
|
Думал, думал и решил сделать так.
Напишу сначала, что у меня есть. 1)справочник Кошельки 2)ПВХ СвойстваКошельков (тип значения - СправочникСсылка.ДполнительныеСвойстваКошельков ; Дополнительные значения - ДполнительныеСвойстваКошельков ) 3) Справочник ДполнительныеСвойстваКошельков (Владелец - ПВХ) 4) Регистр сведений ЗначенияСвойствКошельков(независимый): измерение - ВидСвойства (тип - ПВХСсылка.СвойстваКошельков) ресурс - Значение (тип - Характеристика.СвойстваКошельков). Хочу сделать так: На форме элемента справочника Кошельки есть кнопка "Добавить реквизит", при нажатии на нее открывается форма элемента ПВХ. На форме создаю запись, открываю справочник "Доп.значения" Там для этого вида характеристики записываю возможные значения. Все это записывается в регистр сведений и потом уже передается с регистра на форму элемента справочника кошельки. Но тут сразу несколько непонятных моментов. 1) при записи в регистр сведений (пробовал вручную) ошибка "запись с такими ключевыми полями уже существует: цвет" (например, у меня вид характеристики цвет, значения черный и белый; я записываю одну запись в РС Цвет черный, при записи Цвет белый эта ошибка). 2) Как мне передать записи из справочника в РС, а потом на форму. При передаче в РС будет ошибка 1 |
|||
10
AlexeyVM
16.06.17
✎
08:08
|
Пока писал, понял, что неправильно делаю.
В регистр сведений добавлю измерение кошелек, при создании записи пвх имя и тип будут передаваться на форму, по ним будет создаватся реквизит, а при записи элемента справочника, все будет записываться в РС |
|||
11
AlexeyVM
16.06.17
✎
08:12
|
Возникла проблема,
При нажатии на кнопку добавить реквизит открывается форма элемента ПВХ, добавляю запись и при закрытии формы, параметры передаются на форму справочника и создается реквизит и элемент привязанный к этому реквизиту. Проблема в том, что при следующем открытии формы реквизита уже нет. Не смог найти как сохранить его на форме, чтобы при открытии любого кошелька уже был этот реквизит |
|||
12
AlexeyVM
16.06.17
✎
08:14
|
вот код формы элемента ПВХ
&НаКлиенте
Вот код формы элемента справочника &НаКлиенте
|
|||
13
AlexeyVM
16.06.17
✎
08:35
|
И еще заметил ошибку, если я в наименование ПВХ пишу начиная с цифры, вылазит ошибка "недопустимое значение параметра 1" вот в этой строке НовыйРеквизит = Новый РеквизитФормы(Результат.Имя,Новый ОписаниеТипов (Результат.Тип),,,Истина);
А если сначала поставлю букву, то все работает. В чем может быть проблема? |
|||
14
sFAQer
16.06.17
✎
08:45
|
(13) В том что реквизиты формы не могут начинаться с цифры, очевидно же
|
|||
15
sFAQer
16.06.17
✎
08:45
|
(14) * Имя реквизита формы не может начинаться с цифры
|
|||
16
AlexeyVM
16.06.17
✎
10:42
|
(15) Понял, спасибо
|
|||
17
AlexeyVM
16.06.17
✎
11:14
|
Проблема в том, что при следующем открытии формы реквизита уже нет. Не смог найти как сохранить его на форме, чтобы при открытии любого кошелька уже был этот реквизит.
Подскажите пожалуйста как это исправить. |
|||
18
AlexeyVM
16.06.17
✎
11:45
|
Кажется я понял, буду записывать все в РС, а потом при открытии формы буду проверять наличие записей в РС и на основе их создавать реквизиты, правильно так делать?
|
|||
19
mexanik_96
16.06.17
✎
11:49
|
(0)автор ты что 1с деньги дорабатываешь?
(18)нет |
|||
20
AlexeyVM
16.06.17
✎
12:22
|
(19)Я только учусь, прочитал радченко, сделал все по нему, теперь делаю собственную по разным задачам.
|
|||
21
AlexeyVM
16.06.17
✎
12:23
|
(19) Что-то типа учета личных денежных средств
|
|||
22
AlexeyVM
16.06.17
✎
12:25
|
Возникла проблема:В регистр сведений не пойму как записать. В процедуру ОписаниеЗакрытия добавил вот эти строки:
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствКошельков.СоздатьМенеджерЗаписи();
В отладчике кошелек = Объект.Ссылка записывается нормально, В видСвойства должно записываться значение параметра из ПВХ. В результат.имя записывается оно а в видсвойства не передается (у видсвойства тип - ПВХСсылка.Свойства), как записать значение параметра не пойму. И вместо "?????" как мне записать значение поля ввода? |
|||
23
mexanik_96
16.06.17
✎
12:26
|
(21)посмотри 1с деньги тогда(уметь читать код(и от поставщика в том числе) важно, очень важно)(ато потом будет там где должен быть справочник окажется документ, и все в таком духе(я про продакшен))
|
|||
24
AlexeyVM
19.06.17
✎
06:11
|
Немножко подправил, теперь только не могу понять, как передать значение поля ввода? Или его можно получить только на клиенте? тогда как мне это сделать?
Код модуля формы элемента справочника:
|
|||
25
craxx
19.06.17
✎
06:19
|
(0) Если 8.3 платформа - используй ОпределяемыйТип.
ПВХ - устаревший костыль, нафиг не нужный. |
|||
26
sFAQer
19.06.17
✎
07:28
|
(25) Наркоман? Как определяемые типы заменят доп. реквизиты?
|
|||
27
AlexeyVM
19.06.17
✎
11:05
|
&НаКлиенте
Решил создать реквизит формы не программно, в него записать данные, а потом уже записать их в РС, но все равно ничего не получилось. Главная проблема в том - как мне получить значение созданного программно реквизита формы?? |
|||
28
AlexeyVM
19.06.17
✎
11:07
|
&НаКлиенте
немного корявый код в [27] выложил, вот правильный |
|||
29
Buster007
19.06.17
✎
11:29
|
Значения нет что ли реквизита?
|
|||
30
AlexeyVM
19.06.17
✎
11:35
|
(29) не понимаю как обратиться к этому значению.
Если бы я сразу знал имя реквизита (например: цвет), то я бы обратился в процедуре ЗаписьВрегистр Этаформа.цвет, а поскольку я не знаю имя реквизита, он приходит из ПВХ, я не могу понять как к нему обратиться. (имя реквизита из ПВХ же получается "результат.имя") т.е. имя я получаю РеквизитДляРС.Вставить("Имя", Результат.Имя); а вот как получить значение этого реквизита |
|||
31
Новиков
19.06.17
✎
11:45
|
(30) для этого в типовых написано некое "api" соотв. подсистемы БСП, где есть то, о чем ты вопрошаешь.
|
|||
32
AlexeyVM
19.06.17
✎
11:50
|
(31) я меньше месяца программирую, не знаю еще очень многих моментов, в типовые не заглядывал, там мне пока не очень понятно. Я пишу свою конфигурацию. Изучил учебник Радченко и начал писать конфу по задачам. Поэтому можно поподробнее или хотя бы ссылочку какую-нибудь
|
|||
33
h-sp
19.06.17
✎
12:17
|
(30) ЭтаФорма[Результат.Имя]
|
|||
34
AlexeyVM
19.06.17
✎
12:25
|
(33)
Я так понял это надо в процедуре Описание закрытия писать? РеквизитДляРС.Вставить("Значение", ЭтаФорма[Результат.Имя]);
Ошибка: Получение элемента по индексу для значения не определено |
|||
35
h-sp
19.06.17
✎
12:35
|
(34) что-то вы какой-то странный велосипед пишете. Вот на хрена понадобилось какое-то описание закрытия? Миллионы программистов пишут программы, никому еще такая фигня не понадобилась.
|
|||
36
AlexeyVM
19.06.17
✎
12:37
|
(35)
Ну это описание оповещения, передаю параметры с ПВХ через оповеститьовыборе |
|||
37
h-sp
19.06.17
✎
12:42
|
(36) но результат выбора - это должна быть ссылка на какой-то элемент. А туда какую-то фигню вставляете?
|
|||
38
h-sp
19.06.17
✎
12:44
|
(36) эачем вам имя передавать, если у вас уже сам элемент готов, вы его можете вернуть.
А вы какую-то фигню творите. У вас есть элемент. Вы у него берете имя. Потом по этому имени опять ищете этот элемент. Зачем его второй раз искать, когда уже он есть, есть на него ссылка? |
|||
39
AlexeyVM
19.06.17
✎
12:48
|
(37) Туда вставляю ссылку и тип
ВыбранноеЗначение = Новый Структура;
|
|||
40
AlexeyVM
19.06.17
✎
12:49
|
(38) Вы про "РеквизитДляРС"? я просто не знал как вытащить значение с этой процедуры, пробовал через "левый" реквизит, но не получилось
|
|||
41
h-sp
19.06.17
✎
12:50
|
(39) ну а процедуру ОбработкаВыбора покажите. Как там вытаскиваете это значение.
|
|||
42
AlexeyVM
19.06.17
✎
12:53
|
(41)
&НаКлиенте
Я на форме элемента ПВХ это делаю, при закрытии формы |
|||
43
h-sp
19.06.17
✎
12:58
|
(42) ну а ОбработкаВыбора? Как обрабатываете это опопвещение в основной форме?
|
|||
44
AlexeyVM
20.06.17
✎
05:07
|
(43)
&НаКлиенте
|
|||
45
h-sp
20.06.17
✎
06:21
|
(44) вы чего? Когда пишете ОповеститьОВыборе, значит в вызывающей форме возникает событие ОбработкаВыбора. Вот вы эту процедуру свою сюда киньте, что вы какой-то бред копипастите.
|
|||
46
AlexeyVM
20.06.17
✎
06:31
|
(45) Может я делаю не так, но у меня при закрытии происходит ОповеститьОВыборе, события ОбработкаВыбора у меня нет
|
|||
47
AlexeyVM
20.06.17
✎
06:53
|
(45)
Короче, эту проблему кажется я решил (все переделав). Теперь при нажатии кнопки открываю форму РС вместо ПВХ, передаю оттуда параметры. &НаКлиенте
|
|||
48
AlexeyVM
20.06.17
✎
06:54
|
Ой, процедуру добавитьреквизит не ту скопировал
|
|||
49
AlexeyVM
20.06.17
✎
07:02
|
(47)
&НаКлиенте
|
|||
50
AlexeyVM
20.06.17
✎
07:06
|
А в форме записи РС написал вот-так
|
|||
51
AlexeyVM
20.06.17
✎
07:54
|
Все доделал, все работает вроде бы. Вот кода, если кому надо:
Все-таки, Ваша подсказка (33) помогла, долго искал в интернете как взять значение, но не могу найти. Спасибо за совет Модуль формы элемента справочника:
Модуль формы записи регистра сведений:
|
|||
52
h-sp
20.06.17
✎
08:17
|
(46) Оповестить о выборе передает результат в процедуру Обработка Выбора.
А в процедуру Закрытие ваше, оно ничего не передает. Наверно поэтому и не получалось. Или вы сами туда этот Результат передавали? |
|||
53
AlexeyVM
20.06.17
✎
08:27
|
(52) Сам передавал
|
|||
54
AlexeyVM
20.06.17
✎
12:56
|
Теперь возникла другая проблема, как мне при изменении созданного реквизита отображать список значений, которые подходят для данного реквизита (т.е. если я создал реквизит цвет,а в справочнике Дополнительные свойства создал "черный" и "белый", то в поле ввода этого реквизита должны быть только они, а у меня выходит, что отображаются значения всего справчника) попробовал сделать так
&НаСервере
Создал список значений "добавленныеРеквизиты", попытался сделать отбор через СвязьПараметровВыбора, но не получилось. Не получилось, т.к. в ДобавленныеРеквизиты записываются имена всех реквизитов, далее в поле выбора каждого реквизита я вижу характеристики, которые соответствуют всем этим созданным реквизитам. Работает правильно, только если я создаю 1 реквизит, как мне это исправить? |
|||
55
h-sp
20.06.17
✎
13:10
|
(54) непонятно "Отбор.Владелец", "ДобавленныеРеквизиты" - к чему это?
|
|||
56
AlexeyVM
21.06.17
✎
03:11
|
(55) У справочника доп. реквизиты стоит владелец ПВХ, а добавленные реквизиты это список значений, созданный на форме
|
|||
57
h-sp
21.06.17
✎
06:33
|
вроле один должен быть владелец, а на список. Проверьте там ы документации
|
|||
58
AlexeyVM
21.06.17
✎
06:53
|
(57) Не совсем Вас понял.
У меня просто в добавленные реквизиты записываются все новые реквизиты: Цвет;Тип карты, а потом при открытии поля ввода там выводятся значения для обоих этих реквизитов (черный, белый, виза, мастеркард), т.к. в доп справочнике записаны: Значение | Владелец Белый | Цвет Черный | Цвет Виза | Тип карты Мастеркард | Тип карты |
|||
59
AlexeyVM
22.06.17
✎
05:56
|
Попробовал через установить действие, но тоже не вышло
Добавил в цикл Элемент.УстановитьДействие("ПриИзменении","МойОбработчикПриИзменении");
Создал процедуру &НаКлиенте
Не пойму как передать параметр. Если пишу так как написано, то передается строка, а на форме тип ПВХСсылка. Попробовал написать вот так ПараметрыОткрытия.Вставить("Владелец",ПланыВидовХарактеристикСсылка.СвойстваКошельков.НайтиПоНаименованию(Элемент.Имя));
Результат - Переменная не определена ПланыВидовХарактеристикСсылка Пробовал вот так:
ПараметрыОткрытия.Вставить("Владелец", ТипЗнч(ЭтаФорма.ТекущийЭлемент.Имя) = Новый ОписаниеТипов("ПланыВидовХарактеристикСсылка.СвойстваКошельков"));
Выдает ошибку параметра у описания типов И пробовал вот так ПараметрыОткрытия.Вставить("Владелец", ТипЗнч(ЭтаФорма.ТекущийЭлемент.Имя) = Новый ОписаниеТипов("ПланыВидовХарактеристик.СвойстваКошельков.НайтиПоНаименованию(Элемент.Имя)"));
Та же ошибка, как и в предыдущем |
|||
60
h-sp
22.06.17
✎
06:17
|
(59) тип не может быть равен описанию типов. Чего вы нас путаете?
Уже посмотрите наконец какую-нибудь типовую конфигурацию для устранения пробелов в знаниях. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |