![]() |
![]() |
![]() |
|
При записи элемента справочника в регистр сведений | ☑ | ||
---|---|---|---|---|
0
Надежда25
29.09.11
✎
14:27
|
1сv8.2 У справочника Номенклатура есть табличная часть Свойства (реквизиты Свойство, Значение). Есть Регистр сведений непериодический, независимый ЗначенияСвойствНоменклатуры (измерения Номенклатура, Свойство; Ресурс - ЗначениеСвойства). Хочу, чтобы при записи элемента номенклатуры справочника в регистр сведений попадали данные из табличной части. Попытка:
&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) НаборЗаписей = РегистрыСведений.ЗначенияСвойствНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(Объект.Наименование); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись. Номенклатура = Объект.Наименование; Для Каждого Элементы.Свойства.ТекущиеДанные Из Объект Цикл НаборЗаписей.Отбор.Свойство.Установить(Свойство); НоваяЗапись.Свойство = Объект.Свойство; НоваяЗапись.Значение = Объект.Значение; НаборЗаписей.Записать(); КонецЦикла; КонецПроцедуры Ошибки.. |
|||
1
hhhh
29.09.11
✎
14:36
|
и кто автор этого чуда?
|
|||
2
Шапокляк
29.09.11
✎
14:38
|
жуть какая...
|
|||
3
aleks-id
29.09.11
✎
14:39
|
и фотки нет...
|
|||
4
Надежда25
29.09.11
✎
14:39
|
Если вопрос понятен, на текст можно не смотреть. Но писать собираюсь в
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи). Может кто подскажет, что на самом деле надо писать? |
|||
5
Жан Пердежон
29.09.11
✎
14:39
|
Процедура ОбновитьСвойство(Объект, Свойство, Значение);
Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Объект; Запись.Свойство = Свойство; Запись.Значение = Значение; Запись.Записать(); КонецПроцедуры |
|||
6
zladenuw
29.09.11
✎
14:39
|
та да
|
|||
7
Надежда25
29.09.11
✎
14:46
|
Свойство и Значение - реквизиты табличной части Свойства справочника Номенклатура. Как к ним обратиться? Иначе:
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(74,23)}: Переменная не определена (Свойство) Запись.Свойство = <<?>>Свойство; (Проверка: Сервер) |
|||
8
Шапокляк
29.09.11
✎
14:50
|
(7) Для Каждого Стр Из Объект.свойства Цикл
Свойство=Стр.свойство; Значение=Стр.значение; ОбновитьСвойство(Объект, Свойство,Значение); КонецЦикла; |
|||
9
Надежда25
29.09.11
✎
15:19
|
Спасибо большое! Почти работает, но измерение Номенклатура в Рег.Свед. не заполнено. Пробовала вместо Объекта Наименование (Номенклатура = Объект.Наименование;) - все равно Номенклатура пусто.
&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Для Каждого Стр Из Объект.Свойства Цикл Свойство=Стр.свойство; Значение=Стр.значение; ОбновитьСвойство(Объект, Свойство,Значение); КонецЦикла; КонецПроцедуры &НаСервере Процедура ОбновитьСвойство(Объект, Свойство, Значение); Запись = РегистрыСведений.ЗначенияСвойствНоменклатуры.СоздатьМенеджерЗаписи(); Запись.Номенклатура = Объект; Запись.Свойство = Свойство; Запись.ЗначениеСвойства = Значение; Запись.Записать(); КонецПроцедуры |
|||
10
Шапокляк
29.09.11
✎
15:24
|
Проверьте тип значения измерения "Номенклатура" в регистре сведений.
|
|||
11
Надежда25
29.09.11
✎
15:29
|
СправочникСсылка.Номенклатура
|
|||
12
catena
29.09.11
✎
15:31
|
А если это ПередЗаписью, Объект не будет пуст, случайно?
|
|||
13
catena
29.09.11
✎
15:31
|
Ну, в смысле, ссылки нет...
|
|||
14
hhhh
29.09.11
✎
15:39
|
(11) а чего же вы Наименование туда лепите? Ведь даже в детском саду детишки знают, что Наименование имее тип Строка.
|
|||
15
Надежда25
29.09.11
✎
15:40
|
В Отладчике открывала Объект: Наименование заполнено, но тип реквизита Наименование - строка. А в Регистре сведений Номенклатура имеет тип СправочникСсылка.Номенклатура. Как быть?
|
|||
16
catena
29.09.11
✎
15:41
|
(15)Записывать туда что-то с типом СправочникСсылка.Номенклатура...
|
|||
17
hhhh
29.09.11
✎
15:42
|
(15) Объект.Ссылка попробуйте
|
|||
18
Aprobator
29.09.11
✎
15:42
|
цикл прикольный однако. И где там обход табличной части то вообще?
|
|||
19
Шапокляк
29.09.11
✎
15:43
|
(15) А если еще раз записать, т.е. когда элемент справочника не новый? Все равно номенклатура в регистре пустая?
Судя по (9) вы записываете туда именно объект. (18) Где в (9) цикл? |
|||
20
Aprobator
29.09.11
✎
15:43
|
впрочем, там табличной части быть то и не должно.
|
|||
21
Aprobator
29.09.11
✎
15:44
|
(19) Для каждого ...
|
|||
22
Шапокляк
29.09.11
✎
15:45
|
(21) Там у ТС табличная часть Свойства, вот ее и шебуршат. Такой вот нестандартный подход к хранению свойств.
|
|||
23
Aprobator
29.09.11
✎
15:47
|
(22) опс - не иначе самопись.
|
|||
24
Надежда25
29.09.11
✎
15:52
|
Вообще-то это задача. (19) При повторной записи все равно номенклатура в регистре пустая. Возможно, надо указать текущий элемент, но как? Или это все так нелогично, что надо идти другим путем?
|
|||
25
Шапокляк
29.09.11
✎
15:54
|
(24) Я в управляемом приложении не сильна... Не пробовали
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Для Каждого Стр Из Объект.Свойства Цикл Свойство=Стр.свойство; Значение=Стр.значение; // ОбновитьСвойство(Объект, Свойство,Значение); ОбновитьСвойство(ТекущийОбъект, Свойство,Значение); КонецЦикла; КонецПроцедуры |
|||
26
Надежда25
29.09.11
✎
15:54
|
Вместо табличной части делать подчиненный справочник? Но если будет работать, меня и так все устроит.
|
|||
27
Надежда25
29.09.11
✎
15:57
|
(25) Спасибо, но все так же.
|
|||
28
Шапокляк
29.09.11
✎
15:57
|
(26) А зачем вообще такие приключения? Не проще непосредственно в форму вывести форму списка регистра сведений или содрать из типовой механизм использования обработки по заполнению свойств объектов?
|
|||
29
Надежда25
29.09.11
✎
16:09
|
Ой, не знаю. Неужели невозможно реализовать как у меня? Осталось только текущий элемент записать в регистр сведений.
|
|||
30
rutony
29.09.11
✎
16:37
|
Зачем такой вилосипед изобретать...
Кинуть на форму табличное поле, указать что данные из регистра и указать связь текущего объекта с регистром. Все, вся реализация 10 секунд... |
|||
31
Надежда25
30.09.11
✎
10:54
|
Спасибо за участие. Извините, если не все поняла. У меня Управляемое приложение (8.2). Пробовала и реквизит добавить, и элемент управления Поле, но при выборе типа данных регистров сведений в перечне вообще нет.? А в предложенном варианте (30) можно будет находясь в справочнике, заносить и записывать данные в регистр?
|
|||
32
Lexa_msk
30.09.11
✎
11:20
|
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТЗ = Объект.Свойства.Выгрузить(); ТЗ.Колонки.Добавить("Номенклатура"); ТЗ.ЗаполнитьЗначения(ТекущийОбъект.Ссылка, "Номенклатура"); НЗ = РегистрСведений.<ИмяРегистра>.СоздатьНаборЗаписей() НЗ.Отбор.Установить(ТекущийОбъект.Ссылка); Нз.Загрузить(ТЗ); Попытка НЗ.Записать(); Исключение Отказ = Истина; // вякнуть пользователю об ошибке КонецПопытки КонецПроцедуры а вообще не совсем понятно зачем дублировать данные. в справочнике и регистре...ну да ладно |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |