Имя: Пароль:
1C
 
Как изменить записи независимого непериодического регистра сведений.
0 Dizel
 
23.09.09
00:49
В конфигурации УТ есть регистр сведений Штрихкоды. Я хочу у всех записей поменять значение измерения качества. Такой код не работает

НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗапистей();
НаборЗаписей.Отбор.Качество.Установить(Справочники.Качество.Новый);
НаборЗаписей.Прочитать();

Для Каждого Запись Из НаборЗаписей Цикл
 Запись.Качество = Справочники.Качество.НайтиПоКоду("00002");
КонецЦикла;

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

Выдает собщение: "Штрихкод: 2988888600186 уже имеет владельца Валенки"
и на записи вылетает с ошибкой.
Что не так делаю?
1 ТелепатБот
 
гуру
23.09.09
00:49
2 korolar
 
23.09.09
00:55
модуль набора записей регистра смотри
3 Dizel
 
23.09.09
08:21
А как же правильно сделать
4 butterbean
 
23.09.09
08:28
(3) чего у тебя в модуле набора записей написано??
5 Dizel
 
23.09.09
08:30
Для Каждого ТекущаяЗапись Из ЭтотОбъект Цикл
           Если ЗначениеЗаполнено(ТекущаяЗапись.ШтрихКод) Тогда
               Запрос = Новый Запрос("
               |ВЫБРАТЬ ПЕРВЫЕ 1
               |    РегШтрихкоды.Владелец КАК Владелец,
               |    РегШтрихкоды.ШтрихКод КАК Штрихкод
               |ИЗ
               |    РегистрСведений.Штрихкоды КАК РегШтрихкоды
               |ГДЕ
               |    РегШтрихкоды.ШтрихКод = &ШтрихКод
               |");

               Запрос.УстановитьПараметр("ШтрихКод", ТекущаяЗапись.ШтрихКод);

               РезультатЗапроса = Запрос.Выполнить();
               Если Не РезультатЗапроса.Пустой() Тогда
                   Выборка = РезультатЗапроса.Выбрать();
                   Выборка.Следующий();

                   Сообщить("Штрихкод: " + Выборка.ШтрихКод + " уже имеет владельца """ + СокрЛП(Выборка.Владелец) + """.");
                   Отказ = Истина;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
6 butterbean
 
23.09.09
08:33
ну воткни проверку на владельца еще
7 butterbean
 
23.09.09
08:34
(6)+ типа
|ГДЕ
  |    РегШтрихкоды.ШтрихКод = &ШтрихКод
  |    И РегШтрихкоды.Владелец <> &Владелец
8 Dizel
 
23.09.09
08:35
У меня задача сделать это во внешней обработке
9 butterbean
 
23.09.09
08:36
(8) по другому не обойдешь имхо
10 butterbean
 
23.09.09
08:37
(9) ну еще как вариант - сбросить все в таблицу значений, очистить регистр, а потом загрузить в набор из этой таблицы
11 SuperMario
 
23.09.09
08:57
(10) ну весь рег то чистить не стоит. Достаточно удалить предварительно записи, которые нужно изменить, а потом повторно заполнить. Ест- но все значения, кроме "качество" нужно помнить.
12 ASU_Diamond
 
23.09.09
09:09
(8)
НД=РегистрыСведений.Регистр1.СоздатьНаборЗаписей();
выборка нужных записей
перебор записей и их изменение
НД.Записать()

как-то так
13 ASU_Diamond
 
23.09.09
09:11
(+12) хотя я делал через ТЗ как предлагает (10)
НД=РегистрыСведений.Регистр1.СоздатьНаборЗаписей();
выборка нужных записей
ТЗ=НД.Выгрузить();
Для каждой Стр из ТЗ
тут правим
КонецЦикла
НД.Загрузить(ТЗ);
НД.Записать()
14 Dizel
 
23.09.09
10:39
Спасибо. Сделал через ТЗ
Ошибка? Это не ошибка, это системная функция.