|
Не появляется запись в регистре сведений ЗначенияСвойствОбъектов. Чяднт? | ☑ | ||
---|---|---|---|---|
0
PCcomCat
29.02.16
✎
15:59
|
Доброго времени, уважаемые!
Где-то туплю, но где? Комплексная автоматизация, редакция 1.1 (1.1.55.2), платформа 8.3.7.1831. Нужно сделать запись в регистр сведений ЗначенияСвойствОбъектов. В модуле объекта справочника "Контрагенты" ПриЗаписи() пишу: Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Дата оформления"); НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Запись = НаборЗаписейЗначенияСвойств.Добавить(); Запись.Объект = Ссылка; Запись.Свойство = Свойство; Запись.Значение = ТекущаяДата(); НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Ссылка); НаборЗаписейЗначенияСвойств.Записать(); Но запись не появляется! Через обработку всё нормально записывается. Что я делаю не так? Уже сдаюсь! |
|||
1
Лефмихалыч
29.02.16
✎
16:01
|
>Но запись не появляется!
как ты это установил? |
|||
2
PCcomCat
29.02.16
✎
16:02
|
Глазками в регистре сведений, через форму просмотра значений, запросом. Может я схожу с ума?
|
|||
3
ptiz
29.02.16
✎
16:09
|
(2) Всё там появляется, только ты таким кодом всегда только 1 свойство пишешь, а остальные затираешь.
|
|||
4
Access granted
29.02.16
✎
16:09
|
(0) Зачем набор для одной записи? Используй менеджер записи.
|
|||
5
PCcomCat
29.02.16
✎
16:10
|
(3) Где я туплю???
|
|||
6
PCcomCat
29.02.16
✎
16:11
|
(4)Через менеджер записи тоже самое получаю.
|
|||
7
Access granted
29.02.16
✎
16:12
|
(6) Не может быть такого.
|
|||
8
PCcomCat
29.02.16
✎
16:14
|
Чего нужно: чтобы при записи нового контрагента записывалась дата его создания. Черти когда добавила свойство объекта "Дата оформления", назначение - Справочник "Контрагенты", тип значения - дата (Дата и время), текст, указанный выше, в модуль объекта в процедуру ПриЗаписи(). При тестировании всё было нормально. Опять же черти когда внешней обработкой достала из журнала регистрации дату создания элементов, записала таким кодом. А сейчас стали говорить, что даты нет. И реально нет и не пишется. Код сравнила со стандартным из модуля объекта обработки ЗначенияСвойствОбъектов. Я чекнусь скоро!
|
|||
9
PCcomCat
29.02.16
✎
16:14
|
Те записи, которые были раньше, они на месте.
|
|||
10
PCcomCat
29.02.16
✎
16:17
|
Да, обнаружилось это сегодня. Менеджеры утверждают, что у одного контрагента забивали уже дважды контактную информацию, а она исчезла. Может что-то с базой? SQL-2012.
|
|||
11
Лефмихалыч
29.02.16
✎
16:20
|
(10) да, конечно, база виновата.
Не умеешь наборами пользоваться, пользуйся менеджером записи. И на продуктиве лучше не гоняй свои поделки |
|||
12
PCcomCat
29.02.16
✎
16:23
|
(11)
Из стандартного кода: // Функция записывает значения свойств в информационную базу. // // Параметры: // Нет. // // Возвращаемое значение: // Истина - если значения свойств были записаны, или их не требуется записывать // Ложь - если значения свойств не удалось записать. // Функция ЗаписатьЗначенияСвойств() Экспорт НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Для каждого Строка Из СвойстваИЗначения Цикл Если ЗначениеЗаполнено(Строка.Значение) Тогда Запись = НаборЗаписейЗначенияСвойств.Добавить(); Запись.Объект = ОбъектОтбораЗначений; Запись.Свойство = Строка.Свойство; Запись.Значение = Строка.Значение; КонецЕсли; КонецЦикла; НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(ОбъектОтбораЗначений); Попытка НаборЗаписейЗначенияСвойств.Записать(); Исключение #Если Клиент Тогда Предупреждение("Не удалось записать значения свойств:" + Символы.ПС + ОписаниеОшибки()); #КонецЕсли Возврат Ложь; КонецПопытки; Возврат Истина; КонецФункции Ну ткните, пожалуйста, где у меня руки кривые? |
|||
13
Лефмихалыч
29.02.16
✎
16:24
|
(12) да хрен тебя разберет, кгде не так у тебя. Код рабочий. Если не работает, значит ты где-то привираешь
|
|||
14
PCcomCat
29.02.16
✎
16:25
|
(13) В том-то и дело, что я знаю, что он рабочий. И такое!
|
|||
15
Лефмихалыч
29.02.16
✎
16:27
|
(14) протри спиртом
|
|||
16
PCcomCat
29.02.16
✎
16:30
|
Стоит начать?
|
|||
17
PCcomCat
29.02.16
✎
16:34
|
Весь мой код:
//РС*** Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Дата оформления"); Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект | И ЗначенияСвойствОбъектов.Свойство = &Свойство"; Запрос.УстановитьПараметр("Свойство", Свойство); Запрос.УстановитьПараметр("Объект", Ссылка); РезЗапроса = Запрос.Выполнить(); Если РезЗапроса.Пустой() тогда // //НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); // //Запись = НаборЗаписейЗначенияСвойств.Добавить(); // //Запись.Объект = Ссылка; //Запись.Свойство = Свойство; //Запись.Значение = ТекущаяДата(); // //НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Ссылка); // //НаборЗаписейЗначенияСвойств.Записать(); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = Ссылка; Запись.Свойство = Свойство; Запись.Значение = ТекущаяДата(); Запись.Записать(); КонецЕсли; //РС |
|||
18
Лефмихалыч
29.02.16
✎
16:36
|
(17) и чо?
|
|||
19
PCcomCat
29.02.16
✎
16:38
|
Я и спрашиваю: чо?
|
|||
20
Лефмихалыч
29.02.16
✎
16:39
|
(19) мне норм
|
|||
21
hhhh
29.02.16
✎
16:41
|
(19) может Объект не тот
|
|||
22
PCcomCat
29.02.16
✎
16:41
|
Чего базе не хватает???
|
|||
23
PCcomCat
29.02.16
✎
16:42
|
Через обработку работает, проверила. А модуле объекта справочника заходит, выполняет (отладчиком смотрю), но записи нет.
|
|||
24
Лефмихалыч
29.02.16
✎
16:42
|
(22) или код не тот запускаешь, который показываешь, или методика проверки результата у тебя корявая, или вообще запускаешь в одной базе, а смотришь в другой
|
|||
25
Лефмихалыч
29.02.16
✎
16:43
|
(23) посмотри в журнал регистрации, нет ли там отмены транзакции?
А то може там где Отказ=истина... |
|||
26
hhhh
29.02.16
✎
16:44
|
(23) может партнеров смотришь, а не контрагентов?
|
|||
27
PCcomCat
29.02.16
✎
16:49
|
Смотрю у контрагента через стандартную форму просмотра доп. реквизитов, смотрю регистр сведений без отбора. В журнале регистрации запись зафиксирована. Через обработку тот же код всё записывает. Мозги набекрень...
|
|||
28
ptiz
29.02.16
✎
16:51
|
(23) Встань отладчиком в модуль набора записей регистра сведений, когда остановка сработает - смотри стек вызовов (ctl-alt-c)
|
|||
29
ptiz
29.02.16
✎
16:51
|
Тогда найдешь, откуда у тебя набор очищается (если это так).
|
|||
30
PCcomCat
29.02.16
✎
16:54
|
В модуле набора записей регистра пусто. И в модуле менеджера регистра пусто.
|
|||
31
del123
29.02.16
✎
16:55
|
(23) А объект справочника новый или уже записан в базу?
|
|||
32
del123
29.02.16
✎
16:56
|
а то может быть записываешь туда ссылку на еще не существующий объект.
|
|||
33
PCcomCat
29.02.16
✎
16:59
|
И нового создавала, и с записанным экспериментировала. У меня проверка на отсутствие записи стоит. И ее проходит, т.к. записи нет. В журнале говорит, что Регистр сведений. Значения свойств объектов транзакция зафиксирована.
|
|||
34
PCcomCat
29.02.16
✎
17:00
|
(32) Не до такой степени дура, естественно ссылка есть - отладчик подтверждает.
|
|||
35
PCcomCat
29.02.16
✎
17:02
|
Было бы не обидно, если в первый раз бы писала.
|
|||
36
del123
29.02.16
✎
17:04
|
(35) не хотел обидеть, просто перечисляю возможные варианты.
|
|||
37
PCcomCat
29.02.16
✎
17:05
|
(36) Я не обижаюсь. Я схожу с ума!
|
|||
38
del123
29.02.16
✎
17:08
|
А какой код в обработке, который выполняется корректно
|
|||
39
PCcomCat
29.02.16
✎
17:10
|
Если РезПоиска.Количество()>0 тогда
//НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); // //Запись = НаборЗаписейЗначенияСвойств.Добавить(); Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Запись.Объект = ВыборкаКонтрагентов.Ссылка; Запись.Свойство = Свойство; Запись.Значение = РезПоиска[0].Дата; Запись.Записать(); // //НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(ВыборкаКонтрагентов.Ссылка); // //НаборЗаписейЗначенияСвойств.Записать(); Сообщить(СокрЛП(РезПоиска[0].Данные) + " - Нужно записать из ЖР - " + СокрЛП(РезПоиска[0].Дата)); Иначе КонецЕсли; |
|||
40
PCcomCat
29.02.16
✎
17:11
|
И через менеджер, и через набор записей работает.
|
|||
41
PCcomCat
29.02.16
✎
17:13
|
Отлучусь. До дома доеду, продолжу.
|
|||
42
alle68
29.02.16
✎
17:24
|
(19) 1С пишет в набор ВСЕ непустые свойства, а ты всего лишь одну запись. Вот и потёрлись свойства чуть-чуть... Менеджер сейчас такого не делает.
|
|||
43
lera01
29.02.16
✎
18:29
|
А свойство, пусть даже пустое, видно в списке свойств у этого контрагента? Дело в том, что, если у свойства заполнено назначение, то само свойство видно только у тех, кому назначено.
|
|||
44
PCcomCat
29.02.16
✎
20:49
|
(43) Контрагента вообще нет в регистре.
|
|||
45
PCcomCat
29.02.16
✎
20:51
|
(42) Хоть через менеджер, хоть через набор - результат один - нет записи. Это, если через модуль объекта справочника писать, а через обработку всё нормально записывается обоими способами.
|
|||
46
Сильф
29.02.16
✎
20:56
|
А нет ли какой-нибудь подписки на событие ПриЗаписи спр-ка Контрагенты, в котором происходит кака?
|
|||
47
PCcomCat
29.02.16
✎
21:07
|
Да вот, буду искать. А то есть один сторонний разработчик...
|
|||
48
PCcomCat
29.02.16
✎
22:31
|
Всё, дятел я. При интерактивной записи у формы элемента есть реквизит типа обработка, в которой при открытии формы заполнен набор данных из регистра. А там нет моей записи. Не знала.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |