|
Не удаётся программно измент владельца элемента справочника | ☑ | ||
---|---|---|---|---|
0
NikePopov
01.02.13
✎
10:52
|
Доброго всем дня.
Столкнулся с проблемой: БГУ 8(1.0.15.4), требуется массово изменить организацию для ЦМО(владелец справочника ЦМО - Организации). Код простой: Процедура ИзменитьОрганизациюЭлемента(Элемент) Если НЕ Элемент.Пустая() Тогда ОбъектЭлемента = Элемент.ПолучитьОбъект(); ОбъектЭлемента.Владелец = Организация; Попытка ОбъектЭлемента.Записать(); Сообщить("Элемент справочника """ + Элемент.Метаданные().Синоним + """ удачно записан(""" + Элемент.Наименование + """)"); Исключение Сообщить("Элемент справочника """ + Элемент.Метаданные().Синоним + """ не удалось записать(""" + Элемент.Наименование + """)"); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецПроцедуры Но вход процедуры подаётся элемент справочника "ЦМО". Организация - реквизит Обработки. Но при выполнении такой незамысловатой операции Получаю такое сообщение: {ВнешняяОбработка.ИзменитьВладельцевЦМОИСотрудников.МодульОбъекта(6)}: Ошибка при вызове метода контекста (Записать): Значение поля "Владелец" не заполнено или заполнено неверно Сразу исключаю варианты: 1. Организация - 100% заполненный реквизит. 2. Элемент - не пустой элемент справочника ЦМО(у которого Владелец - Справочник "Организации"). Перед "Записать()" останавливался в отладчике значение "Владелец" изменено на нужную мне. Есть у кого-нибудь идеи? Я все свои исчерпал. |
|||
1
salvator
01.02.13
✎
10:53
|
Ссылку точно пихаешь? Не объект?
|
|||
2
NikePopov
01.02.13
✎
10:54
|
Да, точно. "СправочникСсылка.Организации"
|
|||
3
Godofsin
01.02.13
✎
10:54
|
(0) Ну и как, скажи мне, у тебя ошибка выходит, если ты запись в попытку запихал?
|
|||
4
Godofsin
01.02.13
✎
10:55
|
а все, туплю =)
|
|||
5
Godofsin
01.02.13
✎
10:57
|
проверь отладчиком перед записью, что у тебя во Владелец
|
|||
6
salvator
01.02.13
✎
10:57
|
(5) В (0) написано, что все ок
|
|||
7
NikePopov
01.02.13
✎
10:59
|
Забыл написать. В Процедуре "ПередЗаписью" в модуле объекта Справочника "ЦМО" никаких подвохов нет. Там нет проверки.
|
|||
8
NikePopov
01.02.13
✎
11:00
|
Там есть проверки, но на другие реквизиты
|
|||
9
NikePopov
01.02.13
✎
11:00
|
Вообщем "ПередЗаписью" Отказ = Ложь, что хорошо
|
|||
10
NikePopov
01.02.13
✎
11:01
|
И чтобы задачка была ещё интереснее, Групповая обработка объектов возвращает тот же результат.
|
|||
11
salvator
01.02.13
✎
11:02
|
А нужно изменить принципиально этой обработкой? Групповое изменение спр и док не катит?
|
|||
12
salvator
01.02.13
✎
11:02
|
(10) Опередил. Ха, прикольно.
|
|||
13
NikePopov
01.02.13
✎
11:02
|
(11) Не забываю написать (10). С неё то всё и началось.
|
|||
14
НЕА123
01.02.13
✎
11:02
|
(10)
ПриЗаписи() Отказ = Ложь ? |
|||
15
NikePopov
01.02.13
✎
11:02
|
Тьфу, то есть забываю
|
|||
16
NikePopov
01.02.13
✎
11:03
|
(14) Да.
|
|||
17
BlackJack
01.02.13
✎
11:04
|
В отладчике по F11 до самого конца правильный владелец? Может какая-то подписка на события портит?
|
|||
18
NikePopov
01.02.13
✎
11:05
|
Само БГУ без подвохов. Самая обычная, не включена возможность изменений.
|
|||
19
NikePopov
01.02.13
✎
11:06
|
(17)Проходил. Нет. Он переходит(подписка на событие "ПередЗаписьюЭлементаСправочника"), но там в первом же "Если" выходит из процедуры без каких-либо изменений.
|
|||
20
Godofsin
01.02.13
✎
11:07
|
чудеса, чо. А создай еще одного и попробуй ему владельца сменить
|
|||
21
BlackJack
01.02.13
✎
11:07
|
В свойствах реквизита никаких условий не наложено?
|
|||
22
NikePopov
01.02.13
✎
11:10
|
(20) С новым Элементом(Только что созданным и записанным) отработал корректно - заменил владельца.
|
|||
23
NikePopov
01.02.13
✎
11:10
|
(21) Проверка на заполненное значение - но это условие выполняется.
|
|||
24
Godofsin
01.02.13
✎
11:11
|
(22) ТиИ?
|
|||
25
cw014
01.02.13
✎
11:13
|
Попробуй Объект.ОбменДанными.Загрузка = Истина;
|
|||
26
NikePopov
01.02.13
✎
11:14
|
(25) Благодарю. Странно, что не удалось отследить отладчиком где он на это натыкается. Теперь отлично работает. Всем огромное спасибо.
|
|||
27
Мимо Проходил
01.02.13
✎
11:15
|
Проверь, нет ли проверки на наличие движений по данному элементу перед записью.
|
|||
28
NikePopov
01.02.13
✎
11:16
|
(27) Это уже вторая часть работы.
|
|||
29
Мимо Проходил
01.02.13
✎
11:18
|
Это из модуля справочника "ДоговорыКонтрагентов" БП
Процедура ПередЗаписью(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ПроверитьПередЗаписью(Отказ, Истина); КонецПроцедуры // ПередЗаписью() |
|||
30
BlackJack
01.02.13
✎
11:44
|
(25) Понятно, что так скорее всего заработает. Но корректно ли это будет? Всё таки где-то проверка есть и она не проходит.
|
|||
31
lordmb
01.02.13
✎
12:08
|
(30) Подписка на событие
|
|||
32
NikePopov
01.02.13
✎
17:27
|
(30) Это понятно. В целом конечно требуется искать "корень зла", но для текущей задачи это не обязательно. В данном случае МОЛы были перегружены из другой программы с одной организацией. Требуется раскидать их по некому принципу по нужным. Учёта никакого нет не текущий момент. Все попутные справочники переходят в организацию вместе с ЦМО.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |