Имя: Пароль:
1C
1С v8
Удалить данные в строке таблицы значений
0 Alekzander
 
27.06.13
22:56
Задача такова: нужно почистить регистр накопления "ТоварыОрганизацийКПередаче" (УТ 11), убрав из строчек номера ГТД. Делаю запрос (на правильность кода не претендую):

Запрос = Новый Запрос;
   Запрос.Текст =
                         "ВЫБРАТЬ
                         |    ТоварыОрганизацийКПередаче.НомерГТД КАК НомерГТД,
                         |    ТоварыОрганизацийКПередаче.Регистратор КАК Регистратор
                         |ИЗ
                         |    РегистрНакопления.ТоварыОрганизацийКПередаче КАК ТоварыОрганизацийКПередаче";
                         
   Выборка = Запрос.Выполнить().Выбрать();
   НаборЗаписей = РегистрыНакопления.ТоварыОрганизацийКПередаче.СоздатьНаборЗаписей();
   Пока Выборка.Следующий() Цикл
   НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
   ТЗ = НаборЗаписей.Выгрузить();
   СтрокаПоиска = Новый Структура("НомерГТД", Выборка.НомерГТД);
   МассивТЗ = ТЗ.НайтиСтроки(СтрокаПоиска);
   Для Каждого СтрокаТЗ Из МассивТЗ Цикл
       // см. ниже - как правильно?
       СтрокаТЗ.НомерГТД.Очистить();
   КонецЦикла;
   НаборЗаписей.Загрузить(ТЗ);
   КонецЦикла;

   НаборЗаписей.Записать();


Собственно про строчку очищения у меня и вопрос: номера ГТД не очищаются, а значит, код неверный. Подскажите, как правильнее будет написать удаление данных в строке ТЗ?
1 philll
 
27.06.13
22:59
СтрокаТЗ.НомерГТД="";

может так?
2 Фокусник
 
27.06.13
22:59
(0) СтрокаТЗ.НомерГДТ = Неопределено;
3 zippygrill
 
27.06.13
23:00
НаборЗаписей = РегистрыНакопления.ТоварыОрганизацийКПередаче.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
4 Alekzander
 
27.06.13
23:01
(3) мне не весь регистр очистить надо, лишь значения одного измерения
5 Alekzander
 
27.06.13
23:05
(1) (2)  не получается, обоими способами попробовал. Может где ещё ошибка?
6 zippygrill
 
27.06.13
23:08
Выборка у тебя конечно какая-то странная и непонятно почему ставишь отбор по регистратору. Я бы на твоем месте взял бы все записи, прошелся бы по ним удадяя ГТД и обратно бы записал все целиком. Может быть я не прав;
7 Фокусник
 
27.06.13
23:10
(5) а что именно не получается? Сделай отладочные сообщения:

Сообщить(СтрокаТЗ.НомерГТД);
СтрокаТЗ.НомерГТД = Неопределено;
Сообщить(СтрокаТЗ.НомерГТД);

Что выводит?
8 Alekzander
 
27.06.13
23:11
(6) ругается обработка, мол, не установлен отбор по регистратору, если оный не установить.
9 Фокусник
 
27.06.13
23:11
(7)+ а может в цикл не заходит?
10 Alekzander
 
27.06.13
23:14
(9) оп-па, точняк, чёт в цикл Для Каждого не заходит (внутри которого как раз та строчка)