Имя: Пароль:
1C
1С v8
Как программно изменить измерение Регистра сведений
,
0 idw
 
08.11.23
11:32
Собственно надо программно изменить измерение независимого не периодического Регистра сведений Штрихкоды.

Вот код:
    НовыйНаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
    Пока Выборка.Следующий() Цикл  
        НовыйНаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
        НовыйНаборЗаписей.Записать(Истина);
        
        НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить();
        НоваяЗаписьНабора.Номенклатура = Выборка.Номенклатура;
        НоваяЗаписьНабора.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
        НоваяЗаписьНабора.Штрихкод = Выборка.Штрихкод;
    КонецЦикла;  
    
    НовыйНаборЗаписей.Записать(Истина);

Выдает ошибку:
Запись не верна! Значение поля не соответствует установленному отбору:
1 mikecool
 
08.11.23
11:33
два набора с разными отборами
2 mikecool
 
08.11.23
11:34
либо у набора меняешь отбор
3 idw
 
08.11.23
11:38
(1) делаю так:
НовыйНаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
    Пока Выборка.Следующий() Цикл  
        НовыйНаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
        НовыйНаборЗаписей.Записать(Истина);
        
        НовыйНаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
        НоваяЗаписьНабора = НовыйНаборЗаписей.Добавить();
        НоваяЗаписьНабора.Номенклатура = Выборка.Номенклатура;
        НоваяЗаписьНабора.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
        НоваяЗаписьНабора.Штрихкод = Выборка.Штрихкод;
    КонецЦикла;  
    
    НовыйНаборЗаписей.Записать(Истина);

Та же ошибка.
4 KJlag
 
08.11.23
11:45
5 rphosts
 
08.11.23
12:04
(3) тебе-же написали что 2 набора (в первом удалил не нужное, во втором записал новое)!
и да, код с твоим циклом - содержит алгоритмическую ошибку, даже если не было-бы ошибки ран-тайма в топку этот код!
6 Жан Пердежон
 
08.11.23
14:47
(1) (3) это пздц, а не код
7 СвинТуз
 
08.11.23
16:12
это бот ? )))
8 yopQua
 
08.11.23
16:40
(0) гм.. набор.записать() поставить внутри цикла?
9 majkk
 
08.11.23
16:43
(0) Удалить старую запись. Ввести новую. Иначе никак
10 yopQua
 
08.11.23
16:52
но в целом как в (6)
11 idw
 
09.11.23
10:22
Так правильно?

Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл        
        НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
        НаборЗаписей.Прочитать();
        
        ВременнаяТаблица = НаборЗаписей.Выгрузить();
        ВременнаяТаблица.ЗаполнитьЗначения(Выборка.ЕдиницаИзмерения, "ЕдиницаИзмерения");
        
        НовыйНабор = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
        НовыйНабор.Отбор.Номенклатура.Установить(Выборка.Номенклатура);
        НовыйНабор.Загрузить(ВременнаяТаблица);  
        
        НаборЗаписей.Очистить();
        НаборЗаписей.Записать();
        НовыйНабор.Записать();  
        
    КонецЦикла;      


Прохожусь по регистру сведений запросом и ставлю единицу измерения.
12 СвинТуз
 
09.11.23
12:19
(11)
Дименция во сколько начинается?
После 16 лет такой великолепный код )))

Кто наши аккаунты взламывает? Какие боты?
13 Смотрящий
 
09.11.23
12:37
(12) передали по наследству акк скорее всего
14 Волшебник
 
09.11.23
12:40
(11) Добавьте транзакцию
15 AlexeyKh
 
09.11.23
12:47
(11) и добавьте сохранение в файл! (обязательно, можно выгрузку в Ексель)
16 Волшебник
 
09.11.23
12:47
(15) Лучше сначала сделать бэкап всей базы
17 idw
 
09.11.23
16:16
(14)(16) спасибо.