Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Изменить поле регистра сведений

Изменить поле регистра сведений
Я
   Nzzzz
 
30.03.21 - 08:36
Здравствуйте! Как мне в регистре сведений поменять у каждой записи только одно поле?
как делалось: создаю набор записей, делаю отбор, читаю, далее изменяю поле в этой записи, далее набор.Записать()
Что в итоге: строка удаляется полностью из регистра..
   Волшебник
 
1 - 30.03.21 - 08:37
нужно не менять, а удалять старую запись и создавать новую
   Chameleon1980
 
2 - 30.03.21 - 08:38
выгрузить - поменять - загрузить
(1) почему?
   Волшебник
 
3 - 30.03.21 - 08:41
(2) записи регистра сведений независимы. Если идёт речь об изменении поля-измерения, то суть именно в этом.
   МимохожийОднако
 
4 - 30.03.21 - 08:42
код показывай )
   Chameleon1980
 
5 - 30.03.21 - 08:43
(3) соглашусь при условии, что изменяемое поле является измерением
   Nzzzz
 
6 - 30.03.21 - 08:44
(5) Реквизит
   Nzzzz
 
7 - 30.03.21 - 08:46
(4) мНаборЗаписей = РегистрыСведений.ПрикрепленныеПациентыСоглашений.СоздатьНаборЗаписей();
        
        // установили в нем отбор по измерениям

        мНаборЗаписей.Отбор.Соглашение.Установить(Справочники.СоглашенияСКлиентами.НайтиПоНаименованию(Соглашение));
        
        // прочитали то, что есть в базе

        мНаборЗаписей.Прочитать();
        Для каждого Запись из мНаборЗаписей Цикл
            Запись.Полис = СсылкаНаПолисИзЗапроса(СсылкаНаПациента, ПолисНомер, ПолисСрокДействия,Соглашение,ПолисДатаНачала);
        КонецЦикла;
        мНаборЗаписей.Записать();
   Nzzzz
 
8 - 30.03.21 - 08:47
(2) Это мне нужно сделать так?

ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
  
  НаборЗаписей = РегистрыСведений.ПрикрепленныеПациентыСоглашений.СоздатьНаборЗаписей();
  НаборЗаписей.Загрузить(ТаблицаРезультат);
  Для Каждого Запись Из НаборЗаписей Цикл 
          Запись.Полис= СсылкаНаПолисИзЗапроса(СсылкаНаПациента, ПолисНомер, ПолисСрокДействия,Соглашение,ПолисДатаНачала);
      КонецЕсли;    
 КонецЦикла;   
 НаборЗаписей.Записать();
   Малыш Джон
 
9 - 30.03.21 - 08:54
(8) каждый хоть раз в жизни должен затереть регистр сведений записью набора записей без отбора
   Nzzzz
 
10 - 30.03.21 - 08:57
(9) Отбор в цикле ставить?

ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
  
  НаборЗаписей = РегистрыСведений.ПрикрепленныеПациентыСоглашений.СоздатьНаборЗаписей();
  НаборЗаписей.Загрузить(ТаблицаРезультат);
  Для Каждого Запись Из НаборЗаписей Цикл
          НаборЗаписей.Отбор.Соглашение.Установить(Справочники.СоглашенияСКлиентами.НайтиПоНаименованию(Соглашение)); 
          Запись.Полис= СсылкаНаПолисИзЗапроса(СсылкаНаПациента, ПолисНомер, ПолисСрокДействия,Соглашение,ПолисДатаНачала);
      КонецЕсли;    
 КонецЦикла;   
 НаборЗаписей.Записать();
   Ненавижу 1С
 
11 - 30.03.21 - 09:00
(10)
Плохо:
1. НайтиПоНаименованию
2. Запрос в цикле
   Nzzzz
 
12 - 30.03.21 - 09:03
(11) 1 и 2 - ну мне как бы исправить то 1000 записей и один раз, больше мне это не понадобится. Но всё равно интересно, а как правильно сделать? Чтобы было Хорошо?) Ну на будущее.
   Волшебник
 
13 - 30.03.21 - 09:18
(12) Используй МенеджерЗаписи
   minsk1s
 
14 - 30.03.21 - 11:20
(0) Поиск и программное изменение записи документа в регистр сведений в 1С 8.3:
&НаСервере
Процедура ПоискИИзменениеЗаписи()

    УстановкаЦенСсылка = Документы.УстановкаЦен.НайтиПоНомеру("ПТО-00000001", '20201231');
    УстановкаЦен = УстановкаЦенСсылка.ПолучитьОбъект();

    // Получение набора записей документа Установка цен № ПТО-00000001 от 31.12.20 в регистр "ЦеныРеализации"

    НаборЗаписей = УстановкаЦен.Движения.ЦеныРеализации;

    // Чтение набора записей из базы данных.

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

    Для Каждого Запись Из НаборЗаписей Цикл

        // Получение старых значений

        Сообщить(" по " + Запись.Организация + ", " + Запись.Контрагент + ", " + Запись.Номенклатура + " = " + Запись.Цена);
        // Проведение удорожания на 30%

        Запись.Цена = Запись.Цена + (Запись.Цена * (30/100));

    КонецЦикла;

    // Добавление новой записи

    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Период = ТекущаяДата();
    НоваяЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ""");
    НоваяЗапись.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО ""БелИмпортТорг""");
    НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%");
    НоваяЗапись.Цена = 3;

    // Замещение старых записей и запись новых

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

КонецПроцедуры
   mikecool
 
15 - 30.03.21 - 11:45
если записей немного - прочитать весь РС, выгрузить в ТЗ, отобрать строки, изменить, загрузить снова в РС

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.