|
Не добавляется запись в Регистр сведений... | ☑ | ||
---|---|---|---|---|
0
Trance_1C
20.09.12
✎
12:54
|
Все банально просто, но не могу понять почему записи не добавляются?
регистр сведений непереодический, независимый. НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); // пробовал с этим, не помогло... // НаборЗаписей.Записывать=Истина; НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Номенклатура = ТекущаяНоменклатура; НоваяЗапись.Свойство = ТекущееСвойство; НоваяЗапись.Значение = ТекущееЗначение; НаборЗаписей.Записать(); |
|||
1
aleks-id
20.09.12
✎
12:55
|
читать СП до посинения
|
|||
2
ChAlex
20.09.12
✎
12:56
|
НаборЗаписей.Прочитать()
|
|||
3
Trance_1C
20.09.12
✎
12:57
|
(2) плин я еще думал про Прочитать() но решил что таких записей нет, читать нечего :)
|
|||
4
Trance_1C
20.09.12
✎
12:59
|
т.е. мне же их не изменить надо а добавить, раньше вроде без Прочитать() нормально добавлялись, это с 8.2 что-то изменилось, или я путаю?
|
|||
5
ILM
гуру
20.09.12
✎
12:59
|
(1) Чтобы читать СП, нужно сначала купить СП.
(0) НаборЗаписей.Добавить(); - оригинально чё..., а семки есть? |
|||
6
Trance_1C
20.09.12
✎
13:17
|
(5) ILM давай по-существу, что не так с этим г-кодом, у меня уже 8 вечера, и домой давно пора... в СП ничего необычного про РСВ нет.
|
|||
7
Trance_1C
20.09.12
✎
13:19
|
(2) НаборЗаписей.Прочитать()
с этим тоже не добавляются... НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); НаборЗаписей.Прочитать(); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Номенклатура = ТекущаяНоменклатура; НоваяЗапись.Свойство = ТекущееСвойство; НоваяЗапись.Значение = ТекущееЗначение; НаборЗаписей.Записать(); |
|||
8
Irbis
20.09.12
✎
13:19
|
А менеджер записи чем не угодил?
|
|||
9
Trance_1C
20.09.12
✎
13:21
|
(8)Хммм, я абсолютно лоялен и к менеджеру и к набору, лишь бы запись появлялась :)
|
|||
10
Irbis
20.09.12
✎
13:22
|
(9) Так чего же тебе бродяга надо ещё?©
|
|||
11
Heckfy
20.09.12
✎
13:23
|
(7) Вот, выдрал из базульки одной. Под твой случай немного адаптировал:
НаборЗаписей=РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); НаборЗаписей.Прочитать(); ТЗ=НаборЗаписей.Выгрузить(); НоваяСтрока=ТЗ.Добавить(); НоваяСтрока.Номенклатура=ТекущаяНоменклатура; НоваяСтрока.Свойство=ТекущееСвойство; НоваяСтрока.Значение =ТекущееЗначение; НаборЗаписей.Загрузить(ТЗ); НаборЗаписей.Записать(); |
|||
12
Irbis
20.09.12
✎
13:24
|
РегистрКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
РегистрКурсыВалют.Период = ДатаКурса; РегистрКурсыВалют.Валюта = Валюта; РегистрКурсыВалют.Курс = 1; РегистрКурсыВалют.Кратность = 1; РегистрКурсыВалют.Записать(); |
|||
13
xard
20.09.12
✎
13:24
|
(11) тут они чтение из регистра делают чтобы не терять уже записанные данные.
|
|||
14
ChAlex
20.09.12
✎
13:25
|
(7) листинг верный - записи должны и наверное добавляются - может у вас какой отбор установлен, или не обновили форму списка и не видите изменений. Записать (вернее дописать) набор можно и без прочитать, но тогда .Записать(Истина) иначе затрете существующий
|
|||
15
ChAlex
20.09.12
✎
13:27
|
(11) - выгружать в таблицу, потом загружать - будет медленнее, и в данном простом случае необоснованно. Все работает - тут все просто как грабли, не ищите сложных путей
|
|||
16
ChAlex
20.09.12
✎
13:27
|
(7) кстати НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура,Истина);
НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство,Истина); |
|||
17
ChAlex
20.09.12
✎
13:29
|
(+7) хотя должно быть и одно и тоже, но не хочется зависеть от приходти разработчика (кто его знает в следующем релизе не появится ошибка в инициализации по умолчанию :))
|
|||
18
ChAlex
20.09.12
✎
13:31
|
(12) - черех менеджер записи добавлять стоит только единичные строки, иначе в целом запись будет происходить долго. Если несколько записей, то лучше все-таки через набор записей
|
|||
19
ILM
гуру
20.09.12
✎
13:31
|
(14) "-Золотые ваши слова, Юрий Бенедиктович, не бережёте вы себя."
Правильно что "Менеджер записи" применять нужно, а то "набором записей", да ещё и в РС непереодическом, независимом. Черевато. Любая запись набора будет стирать все записи и делать новые. |
|||
20
ChAlex
20.09.12
✎
13:33
|
(7) - уверен, что данный код работает. Смотрите что вы потом сравниваете или получаете (может вы данные записываете не те, которые ожидаете увидеть)
|
|||
21
Trance_1C
20.09.12
✎
13:33
|
(14) Засада в этом и есть, листинг верный, в другом месте в этой же конфиге работает такой же код, на этом регистре не работает :((
(16) смотрел в отладчике свойства набора записей, отборы используются после инициализации по дефолту (19) записи единичные, сейчас пробую менеджером |
|||
22
ChAlex
20.09.12
✎
13:37
|
(21) - да не может он не работать в одном месте, а в другом работать. Разве что назначить подписку на событие ПриЗаписи для данного регистра и там отменять ваши действия - другого нет, ну или действие производится в транзакции , которая не закрывается
|
|||
23
hhhh
20.09.12
✎
13:37
|
(21) 1. не нажимаешь обновить в списке регистра
2. установлен отбор, поэтому и не видишь. |
|||
24
Trance_1C
20.09.12
✎
13:50
|
у регистра вообще формы нет, она генерится никаких отборов там нет, обновлял переоткрывал уже не раз, тоже думаю в сторону незавершенной транзакции, руками записи в форме списка добавляются, программно нет
|
|||
25
Irbis
20.09.12
✎
13:57
|
(18) А если у записей разный набор измерений что делать?
|
|||
26
Ns33
20.09.12
✎
14:04
|
(0)
НаборЗаписей.Записать(ЛОЖЬ); //тогда можно без НаборЗаписей.Прочитать(); |
|||
27
Trance_1C
20.09.12
✎
14:10
|
(19) Так это мне и нужно "Любая запись набора будет стирать все записи и делать новые." каждая запись делается с отбором по всем измерениям, и каждая запись уникальна, других там и не должно быть.
Еще бы работало в моем случае :) |
|||
28
ChAlex
20.09.12
✎
14:13
|
(26) - ну да, правильно - я не тот аргумент поставил
|
|||
29
ChAlex
20.09.12
✎
14:14
|
(27) - да работает все. Ну если искать что, то отладчик и вперед. После записи набора ничто не мешает его опять прочитать и посмотреть что-почем
|
|||
30
ChAlex
20.09.12
✎
14:16
|
+(29) - то бишь набор до запис и набор повторно считанный после записи - уверен он будет одинаковый, а дальше уже будете искать почему вы его не видите где-то в другом измерении вселенной
|
|||
31
ChAlex
20.09.12
✎
14:18
|
ну или где потеряли зафиксироватьтранзакцию()
|
|||
32
Trance_1C
20.09.12
✎
14:31
|
В общем Менеджером тоже не получилось :(
И вот так не получилось НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Номенклатура = ТекущаяНоменклатура; НоваяЗапись.Свойство = ТекущееСвойство; НоваяЗапись.Значение = ТекущееЗначение; НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Записать(); Кстати речь идет о конфиге УПП 1.2, подписок на событие на этот регистр только одна при выгрузке на сайт, но обмена с сайтом нет, в этой конфигурации есть обработка ЗначенияСвойствОбъекта из нее запись происходит, и они появляются в списке регистра, а из модуля справочника подразделения откуда я пытаюсь добавить запись - нет. может все же не в транзакции дело |
|||
33
Heckfy
20.09.12
✎
14:40
|
Чем тебе (11) то не нравится.
|
|||
34
Trance_1C
20.09.12
✎
14:46
|
(33) мне очень нравится и (11),12 и вариант из 0, все они отрабатывают но записи не появляются.
может что-то с таблицей регистра, завтра буду смотреть. |
|||
35
hhhh
20.09.12
✎
14:53
|
(34) наверно, надо отладчиком копать в сторону ТекущаяНоменклатура и ТекущееСвойство. Похоже числа туда передаете. Или даты.
|
|||
36
Trance_1C
20.09.12
✎
15:11
|
(35) если бы все было так просто этой темы просто не было бы, я пересмотрел все свойства нового набора записей, перед записью и после все как и должно быть только период и регистратор не указаны т.к. не нужны.
|
|||
37
Aprobator
20.09.12
✎
15:15
|
модуль набора записей регистра отладчиком смотрел?
|
|||
38
Aprobator
20.09.12
✎
15:21
|
хотя в типовой он пустой.
|
|||
39
alexkv_m
20.09.12
✎
15:21
|
НаборЗаписей.Записывать = Истина;
попробуй дописать |
|||
40
hhhh
20.09.12
✎
15:22
|
(38) в типовой не бывает измерения Номенклатура. Это самописка у него типа.
|
|||
41
Aprobator
20.09.12
✎
15:24
|
(40) на это даже не поглядел. Вообще, как вариант, в ведущее измерение ничего не пишется (значение неправильное какое то) и все дела.
|
|||
42
Trance_1C
20.09.12
✎
15:28
|
(39) дописывал уже, модули регистра все пустые
(40) конфа типовая и регистр типовой, пример кода вначале привел с немного другими названиями свойств сути это не меняет. |
|||
43
Aprobator
20.09.12
✎
15:31
|
(42) тогда показывай значение и тип ТекущаяНомеклатура и тип измерения регистра.
|
|||
44
alexkv_m
20.09.12
✎
15:32
|
(42)
НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Прочитать() НаборЗаписей.Очистить() НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Объект = ТекущаяНоменклатура; НоваяЗапись.Свойство = ТекущееСвойство; НоваяЗапись.Значение = ТекущееЗначение; НаборЗаписей.Записывать = Истина; НаборЗаписей.Записать(); Т.е. ты так прописывал? |
|||
45
Aprobator
20.09.12
✎
15:32
|
впрочем, если типовая, то достаточно показать только ТекущаяНоменклатура. Вдруг туда объект вместо ссылки затесался?
|
|||
46
Aprobator
20.09.12
✎
15:32
|
(44)жуть то какая
|
|||
47
hhhh
20.09.12
✎
15:33
|
(42) да нет. Всё состоит из мелочей. Там недокрутил, тут не посмотрел, глядишь, а суть совсем другая.
|
|||
48
ChAlex
20.09.12
✎
16:22
|
Не ну нафиг итди простым путем, лучше будем догадки строить, в носу ковырятся, пивко посасывать глядишь и рассосется: ну что сложно стать отладчиком в точке
НаборЗаписей.Записать(); Проедварительно добавив строку после этого НаборЗаписей.Прочитать(); Посмотреть в отладчике содержимое набора перед записью в базу. Сделать 2 шага по тексту программы и посмотреть содержимое набора после записи в базу. Потом сделать выводы и дойти до понимания сути проблемы |
|||
49
Trance_1C
21.09.12
✎
03:38
|
Разобрался в чем была проблема (48) отладчик здесь не помог бы, если так сделать он показывал что записи есть и в наборе до записи и после.
Я бы это назвал подставой платформы не иначе, в УПП 1.2.17 есть справочник подразделения, из его модуля, в ПередЗаписью() я и пытался добавить свойство подразделению если такого не обнаруживалось, у справочника на форме элемента подключена обработка ЗначенияСвойствОбъекта, она при открытии передает в свою таблицу на форме элемента исходный набор записей и при записи сохраняет этот же набор из своей таблицы, получается сначала отрабатывала запись нового свойства из модуля справочника перед записью, а затем эта обработка сохраняла свой исходный набор с таблицы на форме, а он не менялся... вот такая засада, а я только потом ее заметил :) |
|||
50
alkov
21.09.12
✎
06:18
|
(49) И чем тебе платформа виновата, если ты в коде типовой не разобрался?
|
|||
51
Irbis
21.09.12
✎
07:02
|
Как всегда: "Дело было не в боббине...а в прокладке между монитором и креслом"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |