|
Очистить реквизиты ссылочного типа | ☑ | ||
---|---|---|---|---|
0
yozza
15.04.13
✎
13:11
|
Поможите кто чем может!
Требуется очищать реквизиты типа "документ" во всех табличных частях документа произвольного типа. Написала такой код: Процедура ДокументПриИзменении(Элемент) ОбъектДокумента = Документ.ПолучитьОбъект(); Модифицированность = ЛОЖЬ; ТабличныеЧасти = ОбъектДОкумента.Метаданные().ТабличныеЧасти; Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл ТЧ = ОбъектДокумента[ТабличнаяЧасть.Имя]; Для Каждого Строка Из ТЧ Цикл Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл Ссылка = Строка[Реквизит.Имя]; Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) И ЗначениеЗаполнено(Ссылка) Тогда Если Ссылка.Дата<Дата(2013, 01,01) Тогда Ссылка = ""; Модифицированность = Истина; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Если Модифицированность Тогда ОбъектДокумента.Записать(РежимЗаписиДокумента.Запись) КонецЕсли; КонецПроцедуры |
|||
1
yozza
15.04.13
✎
13:13
|
Сорри, случайно отправила, не дописав. Короче, не работает код. Не ругается, но и не очищает. ЧЯДНТ?
|
|||
2
Frost616
15.04.13
✎
13:14
|
а что мешает групповой обработкой делать?
|
|||
3
ДенисЧ
15.04.13
✎
13:14
|
Дык, может очищать реквизит документа, а не скопированное из него значение?
|
|||
4
1Сергей
15.04.13
✎
13:16
|
В условие заходит?
|
|||
5
cw014
15.04.13
✎
13:17
|
Ссылка = Строка[Реквизит.Имя];
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) И ЗначениеЗаполнено(Ссылка) Тогда Если Ссылка.Дата<Дата(2013, 01,01) Тогда Ссылка = ""; Модифицированность = Истина; КонецЕсли; КонецЕсли; Вот тут делается не так |
|||
6
yozza
15.04.13
✎
13:18
|
(2) Там слишком до фига, планируется по всем документам конфиги за период. Это-то тренировочный вариант
(4) И заходит, и все правильно определяет. Но не меняет. (5) А как правильно? |
|||
7
yozza
15.04.13
✎
13:19
|
(3) Вот я догадываюсь, что здесь и порылась. Но как это сделать, не зная имениТтЧ и реквизита?
|
|||
8
whitedi
15.04.13
✎
13:19
|
поробуй так
Строка[Реквизит.Имя] = ""; |
|||
9
yozza
15.04.13
✎
13:23
|
(8) Охренеть, сработало! Ребята, вы чудо!
|
|||
10
mikecool
15.04.13
✎
13:26
|
(9) давай фотку в личку!
|
|||
11
mzelensky
15.04.13
✎
13:31
|
(9) Мне вот просто интересно, ты что СИ-шница?! Почему ты думала, что так будет работать?!
" Ссылка = "";" ?!?! |
|||
12
Aleksey
15.04.13
✎
13:32
|
(11) в соседней ветки обсуждали это. типа так нельзя, особенно если составной тип. Типа NULL туда попадёт, совсем плохо будет
|
|||
13
mzelensky
15.04.13
✎
13:37
|
(12) сумбурный набор мыслей. Что и куда попадет, при каких условиях?!
В какой ветке?! |
|||
14
whitedi
15.04.13
✎
14:04
|
(11) насколько я помню, все же такое наследование имеет место быть в случае ТаблицыЗначений, поэтому делается так:
ТЗ1 = ТЗ.Скопировать(); а не ТЗ1 = ТЗ; |
|||
15
mzelensky
15.04.13
✎
14:10
|
(14) в плане ТЗ, да!
но не в случае: Ссылка = Строка[Реквизит.Имя]; Ссылка = ""; |
|||
16
1Сергей
15.04.13
✎
14:12
|
Стоит признать, что в 1С иногда возникает путаница с тем, когда объект передаётся по ссылке, а когда по значению. Особенно у новичков
|
|||
17
Rovan
гуру
15.04.13
✎
14:19
|
быстрее так:
1. выгрузить ТЧ в ТЗ 2. прбежать по реквизитам узнать какие ссылочные 3. сделать по колонкам ЗаполнитьЗначения("", <Колонки>) 4. заггрузить ТЗ в ТЧ |
|||
18
Eugene_life
15.04.13
✎
14:26
|
(17) + или: Выгрузить ТЧ в ТЗ, удалить колонку со ссылками, загрузить в ТЧ.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |