Имя: Пароль:
1C
 
Изменение значений ресурса у регистра сведений.
0 KattyMix
 
24.05.11
13:40
Привет.Необходимо во всех записях регистра сведений ЦеныПоставщиков изменить ресурс ОтклонениеПлюс.

  НаборЗаписей = РегистрыСведений.ЦеныПоставщиков.СоздатьНаборЗаписей();
  НаборЗаписей.Прочитать();
  Для каждого Запись Из НаборЗаписей Цикл
     Запись.ОтклонениеПлюс = 0.1;    
  КонецЦикла;
  НаборЗаписей.Записать();


При таком коде возникает ошибка -Не хватает памяти и вылетает из программы...
1 mikecool
 
24.05.11
13:41
при таком коде ты очищаешь весь РС
2 mikecool
 
24.05.11
13:41
+1 а нет, брешу
3 vicof
 
24.05.11
13:41
Читай порциями.
4 vmv
 
24.05.11
13:41
отбор установить надо для набора, а так читает все записи.

там сколько - 10 в 8 степени уже?
5 dimoff
 
24.05.11
13:41
Отбор делай по каждому поставщику отдельно. Кстати этот регистр не привязан к регистратору ли?
6 vmv
 
24.05.11
13:42
+ 4 тоже брехня)
7 KattyMix
 
24.05.11
13:51
Независимый регистр.Необходимо во всём регистре этот ресурс изменить.
8 vmv
 
24.05.11
13:54
(7) выбери уникальные измерения и делай порции выборок наборов записей и устанавливать значение для всего набора вроде можно и без перебора
9 Alexandr Puzakov
 
24.05.11
13:54
КлючЗаписи!
10 Alexandr Puzakov
 
24.05.11
13:56
И используй метод менеджера регистра сведений Выбрать().
11 KattyMix
 
24.05.11
13:58
Выборка = РегистрыСведений.ЦеныПоставщиков.Выбрать();
 Пока Выборка.Следующий() Цикл
   
   
 Выборка.ОтклонениеПлюс = 0.1;
конеццикла;

Ошибка-Поле недоступно для записи
12 vicof
 
24.05.11
13:58
ВЫБРАТЬ ПЕРВЫЕ 300
|    ЦеныПоставщиков.ОтклонениеПлюс
|ИЗ
|    РегистрСведений.ЦеныПоставщиков КАК ЦеныПоставщиков |ГДЕ
|    ЦеныНоменклатуры.ОтклонениеПлюс = 0

Запрос.ПараметрыюУстановить("ПустаяСсылка", )
дарю.
Фотку поставь.
13 vmv
 
24.05.11
13:59
ЗагрузитьКолонку(<Массив>, <ИмяПоля>)

проще сформировать массив и загрузить колонку в набор, чем дергать каждую запись в цикле со всеми потрохами)
14 vicof
 
24.05.11
13:59
+(12) без предпоследней строчки
15 vicof
 
24.05.11
14:03
(11) Здесь объект надо получать, а у тебя ссылка
16 vmv
 
24.05.11
14:05
запросом типа (12) ВЫБРАТЬ Различные

Контрагент

потом цикл по выборке Контрагентов с записями по отбору Контрагент и закачка через массив значений в колонку.

все
17 Alexandr Puzakov
 
24.05.11
14:05
(11) используй в цикле перебора выборки КлючЗаписи...
18 vmv
 
24.05.11
14:10
(17) если регистр огромен, то вполне возможно ситуация фаталерор, пару раз было. Надо дробить выборку набора, да и обход записей тормозной
19 KattyMix
 
24.05.11
14:12
и у меня 8.0  стоит...
20 Эстет хренов
 
24.05.11
14:19
(19) троллфейс
21 vmv
 
24.05.11
14:31
под 8.2 работает, под 8.0 можно подпилить

Функция ПолучитьПоставщикДляОтбораЗаписей()
   
   Запрос = Новый Запрос;
   ТекстЗапроса = "
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ЦеныПоставщиков.Поставщик Как Поставщик
   |ИЗ
   |    РегистрСведений.ЦеныЦеныПоставщиков КАК ЦеныПоставщиков";    
   Запрос.Текст = ТекстЗапроса;
   РезультатЗапроса = Запрос.Выполнить();
   Возврат РезультатЗапроса.Выгрузить();
   
КонецФункции

Процедура УчтановитьРесурПорциямиПоПостащикам()
   
   НаборЗаписей = РегистрыСведений.ЦеныПоставщиков.СоздатьНаборЗаписей();
   ТзПоставщики = ПолучитьПоставщикДляОтбораЗаписей();
   Для Каждого СтрокаТзПоставщики Из ТзПоставщики Цикл
       НаборЗаписей.Отбор.Поставщик.Установить(СтрокаТзПоставщики.Поставщики);
       НаборЗаписей.Прочитать();
       мОтклонениеПлюс = НаборЗаписей.ВыгрузитьКолонку("ОтклонениеПлюс");
       Для Инд = 0 По мОтклонениеПлюс.ВГраница() Цикл
           мОтклонениеПлюс[Инд] = 0.1;
       КонецЦикла;
       НаборЗаписей.ЗагрузитьКолонку(мОтклонениеПлюс, "ОтклонениеПлюс");
       НаборЗаписей.Записать(Истина);
   КонецЦикла;
   
КонецПроцедуры
22 KattyMix
 
24.05.11
15:49
Спасибо)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс