|
Не записывается регистр сведений | ☑ | ||
---|---|---|---|---|
0
БукинГена
04.08.15
✎
12:55
|
Из модуля справочника номенклатура в событии ПриЗаписи() хочу записать в регистр сведений "Значения свойств объектов"
Почему то не записывается. А во внешнем отчете например записывает. В чем может быть дело? РС = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); РС.Объект = Ссылка; РС.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Для переноса в УПП"); РС.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Истина"); РС.Записать(); |
|||
1
mikecool
04.08.15
✎
12:57
|
плохо, и ошибки никакой?
|
|||
2
БукинГена
04.08.15
✎
12:57
|
(1) нет
|
|||
3
lera01
04.08.15
✎
13:08
|
"РС.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Истина");" прикольно.
(0) Не записывается даже при перезаписи существующего элемента? Может, в ПослеЗаписи() эту запись регистра перенести? |
|||
4
NcSteel
04.08.15
✎
13:09
|
(0) Все записывается, просто:
ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Для переноса в УПП") И/ИЛИ Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Истина") Возвращают пустые ссылки. Посмотри непосредственно в регистре с отбором по объекту. Возможно и Ссылка не заполнена |
|||
5
БукинГена
04.08.15
✎
13:14
|
(3) "Может, в ПослеЗаписи() эту запись регистра перенести?"
У модуля объекта справочника нету такого события. |
|||
6
БукинГена
04.08.15
✎
13:15
|
(4) в отладчике все реквизиты записи заполнены
|
|||
7
lera01
04.08.15
✎
13:19
|
(5) Значит, получи и установи ссылку нового. Или через подписку регистр пиши.
|
|||
8
БукинГена
04.08.15
✎
13:20
|
(7) существуюшие справочники тоже не пишет
|
|||
9
vhl
04.08.15
✎
13:20
|
(0) Почему думаешь не записывается?
|
|||
10
NcSteel
04.08.15
✎
13:22
|
(9) Вера, глубокая вера.
|
|||
11
БукинГена
04.08.15
✎
13:24
|
(9) хз
|
|||
12
vhl
04.08.15
✎
13:26
|
(11) Сделай запросик - проверь:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект"; Запрос.УстановитьПараметр("Объект", МойСпр); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить("" + Выборка.Свойство+" "+Выборка.Значение); КонецЦикла; |
|||
13
AllJoke
04.08.15
✎
13:28
|
А ссылка точно не пустая?
|
|||
14
NcSteel
04.08.15
✎
13:33
|
(13) Никто не знает, автор тоже, он не умеет пользоваться отладчиком
|
|||
15
БукинГена
04.08.15
✎
13:33
|
||||
16
БукинГена
04.08.15
✎
13:37
|
может кто нить попробует это у себя?
|
|||
17
БукинГена
04.08.15
✎
13:39
|
(12) Самое интересное.
Я этот код добавил в модуле справочника после "РС.Записать()". Сообщение выводится |
|||
18
NcSteel
04.08.15
✎
13:40
|
(17) Значит все записалось
|
|||
19
БукинГена
04.08.15
✎
13:41
|
(18) но после записи в консоле запроса все пусто!
|
|||
20
Nuobu
04.08.15
✎
13:42
|
(19) Отборы проверял?
|
|||
21
NcSteel
04.08.15
✎
13:42
|
(19) Проверяй свою консоль.
И естественно проверь, что справочник записался полностью |
|||
22
БукинГена
04.08.15
✎
13:43
|
(20) в запросе отобрал все записи регистра. вооще пусто
|
|||
23
Nuobu
04.08.15
✎
13:45
|
(22) Перед "Записать()" добавь "Прочитать()"
|
|||
24
Мимохожий Однако
04.08.15
✎
13:45
|
Запрос покажи
|
|||
25
БукинГена
04.08.15
✎
13:45
|
||||
26
БукинГена
04.08.15
✎
13:46
|
(24)
ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект, ЗначенияСвойствОбъектов.Свойство, ЗначенияСвойствОбъектов.Значение ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |
|||
27
БукинГена
04.08.15
✎
13:46
|
(23) пробовал. безнадега
|
|||
28
Nuobu
04.08.15
✎
13:48
|
Может, РЛС?
|
|||
29
Мимохожий Однако
04.08.15
✎
13:48
|
Фрагмент кода покажи. Может быть, ты без отбора пишешь и стираешь напрочь весь регистр
|
|||
30
БукинГена
04.08.15
✎
13:49
|
(28) У админа с полными правами?
|
|||
31
БукинГена
04.08.15
✎
13:51
|
(15) в (29)
|
|||
32
NcSteel
04.08.15
✎
13:51
|
(25) Тебе все говорит что зафиксировано, но ты упорно утверждаешь что нет....
|
|||
33
NcSteel
04.08.15
✎
13:52
|
(23) Никогда больше не пытайся открывать рот, а иначе засмеют
|
|||
34
Мимохожий Однако
04.08.15
✎
13:52
|
(31)Сначала надо сделать отбор, потом прочитать, а потом только записывать. У тебя вместо новой записи стирается весь регистр.
|
|||
35
NcSteel
04.08.15
✎
13:53
|
(34) рукалицо....
|
|||
36
Nuobu
04.08.15
✎
13:53
|
(34) Это для набора записей, а не для менеджера записей.
|
|||
37
Мимохожий Однако
04.08.15
✎
13:54
|
Например
Набор = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей(); Набор.Прочитать(); НовЗапись = Набор.Добавить(); НовЗапись.МоёИзмерение1= КакоетоЗначение1; НовЗапись.МоёИзмерение2= КакоетоЗначение2; НовЗапись.МойРесурс = КакоетоЧисло; Набор.Записать(); |
|||
38
NcSteel
04.08.15
✎
13:54
|
(37) Причем тут набор записей?
Зачем прочитать? мда... люди вы что курите? |
|||
39
Мимохожий Однако
04.08.15
✎
13:56
|
Наконец-то пришёл МАСТЕР. Он нам всё покажет ))
|
|||
40
БукинГена
04.08.15
✎
13:59
|
кто нибуд пробовал у себя?
|
|||
41
Mitriy
04.08.15
✎
13:59
|
(39) ну да, для того, чтобы прочитать в набор пару десятков миллионов записей и записать их обратно, добавив одну самую любимую, мастером быть не надо...
|
|||
42
NcSteel
04.08.15
✎
14:00
|
(40) Просто регистр сведений записывать, естественно
|
|||
43
gigi789
04.08.15
✎
14:01
|
(40) каждый день рс пишу
|
|||
44
Timon1405
04.08.15
✎
14:01
|
(0) Такое ощущение, что у вас несколько таких объектов Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Истина") и пишется не тот, который нужен. попробуйте указать правильного владельца в этом методе последним параметром
|
|||
45
Мимохожий Однако
04.08.15
✎
14:01
|
Попробуй
Процедура ЗагрузитьСвойстваПоСсылкеСвойства(Номенклатура, СвойствоСсылка, ЗначениеСвойства) Если Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(ЗначениеСвойства) Тогда Возврат; КонецЕсли; Если СвойствоСсылка = ПланыВидовХарактеристик.СвойстваОбъектов.ПустаяСсылка() Тогда Возврат; КонецЕсли; // Готовим свойство, заполняем его назначение // Если подходящего свойства нет - создаем его, и прописываем все необходимые реквизиты // Если есть подходящее свойство, то берём его в качестве ПВХ Назначение = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СвойстваОбъектов.Ссылка |ИЗ | ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов |ГДЕ | СвойстваОбъектов.Ссылка = &СвойствоСсылка | И СвойстваОбъектов.НазначениеСвойства = &НазначениеСвойства"; Запрос.УстановитьПараметр("СвойствоСсылка", СвойствоСсылка); Запрос.УстановитьПараметр("НазначениеСвойства", Назначение); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда ОбъектПВХ = ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент(); ОбъектПВХ.УстановитьНовыйКод(); ОбъектПВХ.Наименование = СвойствоСсылка.Наименование; ОбъектПВХ.НазначениеСвойства = Назначение; ОбъектПВХ.Записать(); ПВХ = ОбъектПВХ.Ссылка; Иначе Выборка = Результат.Выбрать(); Выборка.Следующий(); ПВХ = Выборка.Ссылка; КонецЕсли; // Готовим значение свойства // Если подходящего значения свойства нет - создаем его, и прописываем все необходимые реквизиты // Если есть подходящее значение свойства, то берём его в качестве Значения Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Ссылка |ИЗ | Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Владелец = &Владелец | И ЗначенияСвойствОбъектов.Наименование = &Наименование"; Запрос.УстановитьПараметр("Владелец", ПВХ); Запрос.УстановитьПараметр("Наименование", ЗначениеСвойства); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда ОбъектЗначения = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); ОбъектЗначения.УстановитьНовыйКод(); ОбъектЗначения.Наименование = ЗначениеСвойства; ОбъектЗначения.Владелец = ПВХ; ОбъектЗначения.Записать(); Значение = ОбъектЗначения.Ссылка; Иначе Выборка = Результат.Выбрать(); Выборка.Следующий(); Значение = Выборка.Ссылка; КонецЕсли; // Делаем записи в регистре "Значения свойств объектов" // Чтобы связать номенклатуру, свойство и значения свойства. Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Номенклатура; Запись.Свойство = ПВХ; Запись.Значение = Значение; Запись.Записать(); КонецПроцедуры // ЗагрузитьСвойстваПоСсылкеСвойства() |
|||
46
БукинГена
04.08.15
✎
14:04
|
(44) проверил, там один
|
|||
47
lera01
04.08.15
✎
14:06
|
(46) В журнале регистрации написано что все записалось. С чего ты вообще взял, что это не так? Где-то не видишь это что ли?
|
|||
48
NcSteel
04.08.15
✎
14:07
|
(46) Совет один, позови специалиста, он тыкнет носом.
|
|||
49
Мимохожий Однако
04.08.15
✎
14:11
|
(46)Операции - Регистры сведений - Значения свойств объектов открой. Там что видишь?
|
|||
50
БукинГена
04.08.15
✎
14:17
|
(49) там вообще пусто
|
|||
51
hhhh
04.08.15
✎
14:18
|
(50) покажи скрин
|
|||
52
Мимохожий Однако
04.08.15
✎
14:18
|
(50)Ч.т.д.
Сделай отдельную обработку и проверь (45). я это выдрал из обработки, которая работает и записывает. |
|||
53
БукинГена
04.08.15
✎
14:19
|
||||
54
hhhh
04.08.15
✎
14:20
|
(470 журнал еще ни о чем не говорит. Может был откат транзакции.
|
|||
55
NcSteel
04.08.15
✎
14:21
|
(53) ты уверен что справочник записался без ошибки? И не было отказа в записи?
|
|||
56
БукинГена
04.08.15
✎
14:22
|
(55) смотри здесь (25)
|
|||
57
hhhh
04.08.15
✎
14:23
|
(56) а почему там два раза в журнале запись. Покажи, где второй раз пишешь?
|
|||
58
Nuobu
04.08.15
✎
14:25
|
(57) Там один раз запись.
Предыдущая - на три минуты раньше. |
|||
59
БукинГена
04.08.15
✎
14:25
|
(57) второй раз записал из обработки. Там нормально. регистр записывается
|
|||
60
Nuobu
04.08.15
✎
14:25
|
(59) Значит идёт откат транзакции.
Смотри (55) |
|||
61
БукинГена
04.08.15
✎
14:27
|
(60) но в журнале регистрации транзакция зафиксировано
|
|||
62
БукинГена
04.08.15
✎
14:33
|
(60) В справочнике изменил реквизит, этот реквизит записался. Значить отката не было получается
|
|||
63
vhl
04.08.15
✎
14:54
|
Посмотри что в модуле набора записей регистра?
|
|||
64
lera01
04.08.15
✎
14:56
|
Вот что интересно. В (17) написано, что отладочное сообщение не выводится. Значит, этот фрагмент кода вообще не работает. В ЖР есть записи, что регистр пишется - значит, еще есть какое-то место, откуда это происходит.
|
|||
65
БукинГена
04.08.15
✎
15:02
|
(63)
Процедура ПередЗаписью(Отказ, Замещение) Если (Не ОбменДанными.Загрузка) И (ПланыОбмена.ГлавныйУзел() <> Неопределено) И НЕ Константы.РазрешитьРедактированиеДанныхВПериферийныхИБ.Получить() Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры Но там условия дают ложь |
|||
66
БукинГена
04.08.15
✎
15:02
|
(64) врал, ща выходит сообщение
|
|||
67
vhl
04.08.15
✎
15:10
|
(66) Закоментируй в спр. "номенклатура" все что до кода в (0) и все что после.
|
|||
68
БукинГена
04.08.15
✎
15:12
|
(67) зачем?
|
|||
69
vhl
04.08.15
✎
15:14
|
(68) у тебя есть получше идеи?
|
|||
70
vhl
04.08.15
✎
15:15
|
Кстати, что выдает:
Сообщить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Для переноса в УПП")); Сообщить(Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Истина")); |
|||
71
БукинГена
04.08.15
✎
15:16
|
Кажется понял.
В форме справочника есть закладка "свойства", а там это свойство пусто. Соответсвтенно при записи справочника если в форме это свойство пусто, тогда запись регистра удаляется. Какой же я дурень! |
|||
72
БукинГена
04.08.15
✎
15:17
|
все спасибо за внимание
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |