|
1C 8.3.10. Не записывает регистр сведений в фоне | ☑ | ||
---|---|---|---|---|
0
holls
30.03.18
✎
11:01
|
Доброго дня. Регламентной задание обращается в привилегированной модуль, где запись в регистр сведений. Почему-то при выполнении в фоне запись не происходит. Если эту же процедуру запустить в режиме предприятия, то все отрабатывает нормально. В фоне задание в эту процедуру попадает, отрабатывает норм (проверено в отладчике), но по итогу запись в РС не меняется. Кто-то сталкивался может с такой темой?
Процедура оч простая: Процедура ЗаписатьРС(СтруктураДанных) экспорт НаборЗаписей = РегистрыСведений.ДокументыКОтправке.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Документ.Установить(СтруктураДанных.Документ); НаборЗаписей.Прочитать(); НаборЗаписей.Очистить(); НаборЗаписей.Добавить(); НаборЗаписей[0].Документ = СтруктураДанных.Документ; НаборЗаписей[0].Статус = СтруктураДанных.Статус; НаборЗаписей.Записывать=Истина; НаборЗаписей.Записать(); КонецПроцедуры |
|||
1
Cyberhawk
30.03.18
✎
11:03
|
Записывай в порпытке, в исключении запись в ЖР
|
|||
2
Cyberhawk
30.03.18
✎
11:04
|
(если отладить фоновое тямы не хватает)
|
|||
3
holls
30.03.18
✎
11:05
|
Пробовала в ЖР записывать. В попытке/исключение поставила запись и там, и там. Запись в ЖР показывает, что в исключение не попадает: отрабатывается норм.
|
|||
4
holls
30.03.18
✎
11:10
|
(1). Было как-то так:
Процедура ЗаписатьРС(СтруктураДанных) экспорт попытка НаборЗаписей = РегистрыСведений.ДокументыКОтправке.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Документ.Установить(СтруктураДанных.Документ); НаборЗаписей.Прочитать(); НаборЗаписей.Очистить(); НаборЗаписей.Добавить(); НаборЗаписей[0].Документ = СтруктураДанных.Документ; НаборЗаписей[0].Статус = СтруктураДанных.Статус; НаборЗаписей.Записывать=Истина; НаборЗаписей.Записать(); ЗаписьЖурналаРегистрации("Запись в РС", УровеньЖурналаРегистрации.Информация,,, "ОК"); Исключение ЗаписьЖурналаРегистрации("Запись в РС", УровеньЖурналаРегистрации.Ошибка,,, "Ошбибка " + ОписаниеОшибки()); КонецПопытки; КонецПроцедуры В ЖР было "ОК" |
|||
5
Cyberhawk
30.03.18
✎
11:35
|
"НаборЗаписей.Записывать=Истина" явно лишнее. Это свойство анализируется и применяется только при записи движений из коллекции движений документа, а у тебя набор записей "независимый" (не в составе коллекции двидений, а созданный явно)
|
|||
6
Cyberhawk
30.03.18
✎
11:36
|
Ну раз в ЖР было ОК, то все записывается. Отладчик в помощь. Может код в модуле набора записей отрабатывает и бороду прописывает.
|
|||
7
holls
30.03.18
✎
11:38
|
(5) это было дописано уже потом - до кучи, на всяк случай.
|
|||
8
holls
30.03.18
✎
11:39
|
(6) В отладчике все проходит без проблем. Причем сейчас точки останова стоят везде, где есть записи в этот регистр. Все отрабатывается норм. Значения ресурсов те, какие ожидаются. Но по факту набор записей не изменяется. И вообще раньше все это работало до вчерашнего дня без проблем.
|
|||
9
Cyberhawk
30.03.18
✎
11:41
|
"по факту набор записей не изменяется" // Как проверяешь?
|
|||
10
holls
30.03.18
✎
11:45
|
(9) в режиме предприятия после фонового задания РС без изменений. Так как сейчас точки останова стоят во всех местах кода, где есть запись в этот РС, и останова нет, то по идее набор должен быть измененным после фонового задания. Но нет.
|
|||
11
Cyberhawk
30.03.18
✎
11:48
|
Подписки / модуль НЗ
|
|||
12
Cyberhawk
30.03.18
✎
11:49
|
Проверять нужно не "после фонового задания", а в другом клиентском сеансе после того, как строка выполнения кода в отладчике прошла строчку в записью НЗ (и выполнения остановлено на следующей строке)
|
|||
13
holls
30.03.18
✎
11:57
|
(12) стою в отладчике - набор записи изменился. В другом клиентском сеансе нет
|
|||
14
Cyberhawk
30.03.18
✎
12:07
|
Значит транзакция?
|
|||
15
Cyberhawk
30.03.18
✎
12:08
|
Измениться-то должен не НЗ, а запись в РС
|
|||
16
holls
30.03.18
✎
12:10
|
(14) точно! вся обработка в одной транзакции происходит. Сейчас уберу, посмотрю.
|
|||
17
Cyberhawk
30.03.18
✎
12:20
|
Зачем убирать транзакцию? Если она откатывается, то наверное так и надо. А если внутри нее идет перезатирание одной и той же записи РС, то ее убирание не поможет.
|
|||
18
holls
30.03.18
✎
12:25
|
(14) нет. погодите. начатьтранзакцию - это в другом месте. тут процедура очень простая: прочитать данные и изменить РС. Добавила после записи код, чтобы перечитать записи:
МенеджерЗаписи=РегистрыСведений.ДокументыКОтправке.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Документ=СтруктураДанных.Документ; МенеджерЗаписи.Статус=СтруктураДанных.Статус; МенеджерЗаписи.Прочитать(); отладчик показывает статус = "отправлен". В клиентском сеансе одновременно статус по этим измерениям пустой не понимаю... |
|||
19
holls
30.03.18
✎
12:26
|
(18) опечатка: строка "МенеджерЗаписи.Статус=СтруктураДанных.Статус" лишняя
|
|||
20
Cyberhawk
30.03.18
✎
12:26
|
"отладчик показывает статус = "отправлен"" // Так надо смотреть не на статус, а на непустой НЗ
|
|||
21
holls
30.03.18
✎
12:34
|
(20) извини, не понимаю, что значит "непустой" НЗ.
скрин отладчика: https://www.dropbox.com/s/ufkp3ycdpzhgq0g/Отладчик.png?dl=0 скрин клиентского сеанса на точке останова тут: https://www.dropbox.com/s/cp0c5j1u35hak0p/Клиент.png?dl=0 |
|||
22
holls
30.03.18
✎
12:36
|
(21) измерения немного другие в теме указала - для упрощения, чтобы много не писать. В скринах исходный код.
|
|||
23
Cyberhawk
30.03.18
✎
12:42
|
С такими скринами Я пас
|
|||
24
holls
30.03.18
✎
12:42
|
(23) в смысле? что не так?
|
|||
25
holls
30.03.18
✎
12:50
|
(23) просто показала, что в отладчике набор записи (три измерения) соответствует просмотрю на клиенте. что отладчик показывает одно значение ресурса, а на клиенте иное.
|
|||
26
holls
30.03.18
✎
14:22
|
Проблема с правами была: добавила запись РС для базовых прав и все заработало. Фоновое задание вызывается без пользователя. Все перестало работать после ввода пользователей, у которых нет прав на запись РС.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |