Имя: Пароль:
1C
1С v8
Как очистить реквизит и записать форму Элемента справочника
0 ejiki
 
13.05.14
07:07
Пропало значение реквизита. Объект не найден, при очистке и перезаписи справочника реквизит заново нормально заполняется. Просто в какой-то момент GUID поменялся.

Выручайте, не могу открыть в обработке собраные запросом элементы справочника. Поделитесь каким способом можно открыть форму каждого элемента, очистить значение реквизита, и записать?



Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Если ВыборкаДетальныеЗаписи.ЕдиницаХраненияОстатков = "<Объект не найден> (97:9d8a001e5848397d11dfcbab99a26aae)" Тогда
ТекЭлемент = ВыборкаДетальныеЗаписи.Ссылка;  
Форм = ТекЭлемент.ПолучитьФорму("ФормаЭлемента");              
        
Выборка1 = Форм.ЕдиницаХраненияОстатков.ПолучитьОбъект();
Выборка1.Наименование = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка();
Выборка1.Записать();

Выборка2 = Форм.ЕдиницаДляОтчетов.ПолучитьОбъект();
Выборка2.Наименование = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка();
Выборка2.Записать();

Форм.Записать();
КонецЕсли;

1 ejiki
 
13.05.14
07:08
Понимаю что еще многое низнаю и расчитываю на снисходительность.
2 Рэйв
 
13.05.14
07:09
не надо открывать форму. Объект прекрасно записывается и без открытия
3 Рэйв
 
13.05.14
07:10
Об=ТекЭлемент.Получитьобъект()

Об заполняй и записывай
4 Godofsin
 
13.05.14
07:10
И это, я бы для начала разобрался, куда делся объект. А то будешь всю жизнь битые ссылки править.
5 Рэйв
 
13.05.14
07:10
(4)+1
6 kosts
 
13.05.14
07:10
Можно групповой заменой сделать, но нужно тогда временно создать пропавший элемент с тем же GUID.
7 kosts
 
13.05.14
07:12
Вот так больше никогда не делай

Выборка1 = Форм.ЕдиницаХраненияОстатков.ПолучитьОбъект();

вот так можно

Об = Форм.ЕдиницаХраненияОстатков.ПолучитьОбъект();
8 ejiki
 
13.05.14
07:12
(2) пробовал без открытия формы. Нифига не вышло.

(3) я так пробовал, почему-то через отладку полученный объект видит, но дальше проскакивает часть с реквизитами.

(4) пологаю при одном из вторичных переносов из базы в базу.
9 Рэйв
 
13.05.14
07:12
(7)Я бы и через форму объект получать поостерегся:-)
10 ejiki
 
13.05.14
07:13
(7) ты просто изменил переменную которой присваиваешь значение ведь.
11 ejiki
 
13.05.14
07:14
(3) примерно овт так должно получиться?



Об=ТекЭлемент.Получитьобъект();         
Выборка1 = Об.ЕдиницаХраненияОстатков.ПолучитьОбъект();
Выборка1.Наименование = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка();
Выборка1.Записать();


12 Рэйв
 
13.05.14
07:14
(8)Так пробовал?


Об=ТекЭлемент.Получитьобъект()
Об.ЕдиницаХраненияОстатков="";
Об.Записать();
13 kosts
 
13.05.14
07:15
(10) Имя переменной "Выборка" имеет сакральное значение. Использование его в другом качестве вносит путаницу в и так обычно сильно запутанные программы...
14 ejiki
 
13.05.14
07:15
(12) может реально перемудрил) сейчас попробую
15 ejiki
 
13.05.14
07:16
(13) понятно было бы если это в коде моделя документов, в обработке мне уж точно ничего не усложняет. Но спасибо за замечание) буду стараться писать более грамотно впредь ;)
16 kosts
 
13.05.14
07:16
в общем. сделай ТиИ, с созданием битых ссылок. Потом зайди и групповой обработкой замени, если еще нужно будет.
17 ejiki
 
13.05.14
07:18
(16) как раз ссылки и появились в результате ТиИ)
18 ejiki
 
13.05.14
07:19
(16) в УПП если эти справочники использовались хотябы в одном движении, то так просто не изменить. Нашел и закоментил пока проверку на использование. Сейчас дальше вот обработку монстрячу)
19 Godofsin
 
13.05.14
07:19
(17) Да ладно...
20 Godofsin
 
13.05.14
07:20
(18) Тебе нужно восстановить объект
21 ejiki
 
13.05.14
07:22
(19) поправка. "Проявились!". Когда стал проверять GUID с тем справочником на который ссылается, то они не сошлись. в итоге нету объекта.
22 ejiki
 
13.05.14
07:26
(20) объект есть, GUID его изменился.
Хотя можно попробовать создать 2й, а затем объединить их в 1. Попробую сейчас еще так
.
23 Любопытная
 
13.05.14
07:28
(22)а ГУИД то каким образом изменился?
24 ejiki
 
13.05.14
07:29
(23) Вот тут и я голову ломаю. Но это просто случившийся факт. Могли при ТиИ измениться?
25 Рэйв
 
13.05.14
07:32
(22)Гуид не может у объекта измениться в принципе.Если другой гуид - это значит другой объект.
26 kosts
 
13.05.14
07:32
(24) Непосредственно удалили, потом другой создали.
27 Рэйв
 
13.05.14
07:32
(26)Создался бы все равно с тем же гуидом. что-то ТС мудрит и путает
28 Рэйв
 
13.05.14
07:33
Если через ТИИ конечно
29 kosts
 
13.05.14
07:33
(27) Имею ввиду руками создали. ТиИ само собой с тем же создаст.
Независимо от того, куда вы едете — это в гору и против ветра!