| 
    
        
     
     | 
    
  | 
Изменить поле регистра сведений | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Nzzzz    
     30.03.21 
            ✎
    08:36 
 | 
         
        Здравствуйте! Как мне в регистре сведений поменять у каждой записи только одно поле?
 
        как делалось: создаю набор записей, делаю отбор, читаю, далее изменяю поле в этой записи, далее набор.Записать() Что в итоге: строка удаляется полностью из регистра..  | 
|||
| 
    1
    
        Волшебник    
     30.03.21 
            ✎
    08:37 
 | 
         
        нужно не менять, а удалять старую запись и создавать новую     
         | 
|||
| 
    2
    
        Chameleon1980    
     30.03.21 
            ✎
    08:38 
 | 
         
        выгрузить - поменять - загрузить
 
        (1) почему?  | 
|||
| 
    3
    
        Волшебник    
     30.03.21 
            ✎
    08:41 
 | 
         
        (2) записи регистра сведений независимы. Если идёт речь об изменении поля-измерения, то суть именно в этом.     
         | 
|||
| 
    4
    
        Мимохожий Однако    
     30.03.21 
            ✎
    08:42 
 | 
         
        код показывай )     
         | 
|||
| 
    5
    
        Chameleon1980    
     30.03.21 
            ✎
    08:43 
 | 
         
        (3) соглашусь при условии, что изменяемое поле является измерением     
         | 
|||
| 
    6
    
        Nzzzz    
     30.03.21 
            ✎
    08:44 
 | 
         
        (5) Реквизит     
         | 
|||
| 
    7
    
        Nzzzz    
     30.03.21 
            ✎
    08:46 
 | 
         
        (4) мНаборЗаписей = РегистрыСведений.ПрикрепленныеПациентыСоглашений.СоздатьНаборЗаписей();
 
        // установили в нем отбор по измерениям мНаборЗаписей.Отбор.Соглашение.Установить(Справочники.СоглашенияСКлиентами.НайтиПоНаименованию(Соглашение)); // прочитали то, что есть в базе мНаборЗаписей.Прочитать(); Для каждого Запись из мНаборЗаписей Цикл Запись.Полис = СсылкаНаПолисИзЗапроса(СсылкаНаПациента, ПолисНомер, ПолисСрокДействия,Соглашение,ПолисДатаНачала); КонецЦикла; мНаборЗаписей.Записать();  | 
|||
| 
    8
    
        Nzzzz    
     30.03.21 
            ✎
    08:47 
 | 
         
        (2) Это мне нужно сделать так?
 
        ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); НаборЗаписей = РегистрыСведений.ПрикрепленныеПациентыСоглашений.СоздатьНаборЗаписей(); НаборЗаписей.Загрузить(ТаблицаРезультат); Для Каждого Запись Из НаборЗаписей Цикл Запись.Полис= СсылкаНаПолисИзЗапроса(СсылкаНаПациента, ПолисНомер, ПолисСрокДействия,Соглашение,ПолисДатаНачала); КонецЕсли; КонецЦикла; НаборЗаписей.Записать();  | 
|||
| 
    9
    
        Малыш Джон    
     30.03.21 
            ✎
    08:54 
 | 
         
        (8) каждый хоть раз в жизни должен затереть регистр сведений записью набора записей без отбора     
         | 
|||
| 
    10
    
        Nzzzz    
     30.03.21 
            ✎
    08:57 
 | 
         
        (9) Отбор в цикле ставить?
 
        ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); НаборЗаписей = РегистрыСведений.ПрикрепленныеПациентыСоглашений.СоздатьНаборЗаписей(); НаборЗаписей.Загрузить(ТаблицаРезультат); Для Каждого Запись Из НаборЗаписей Цикл НаборЗаписей.Отбор.Соглашение.Установить(Справочники.СоглашенияСКлиентами.НайтиПоНаименованию(Соглашение)); Запись.Полис= СсылкаНаПолисИзЗапроса(СсылкаНаПациента, ПолисНомер, ПолисСрокДействия,Соглашение,ПолисДатаНачала); КонецЕсли; КонецЦикла; НаборЗаписей.Записать();  | 
|||
| 
    11
    
        Ненавижу 1С    
     гуру 
    30.03.21 
            ✎
    09:00 
 | 
         
        (10) 
 
        Плохо: 1. НайтиПоНаименованию 2. Запрос в цикле  | 
|||
| 
    12
    
        Nzzzz    
     30.03.21 
            ✎
    09:03 
 | 
         
        (11) 1 и 2 - ну мне как бы исправить то 1000 записей и один раз, больше мне это не понадобится. Но всё равно интересно, а как правильно сделать? Чтобы было Хорошо?) Ну на будущее.     
         | 
|||
| 
    13
    
        Волшебник    
     30.03.21 
            ✎
    09:18 
 | 
         
        (12) Используй МенеджерЗаписи     
         | 
|||
| 
    14
    
        minsk1s    
     30.03.21 
            ✎
    11:20 
 | 
         
        (0) Поиск и программное изменение записи документа в регистр сведений в 1С 8.3:
 
        &НаСервере Процедура ПоискИИзменениеЗаписи() УстановкаЦенСсылка = Документы.УстановкаЦен.НайтиПоНомеру("ПТО-00000001", '20201231'); УстановкаЦен = УстановкаЦенСсылка.ПолучитьОбъект(); // Получение набора записей документа Установка цен № ПТО-00000001 от 31.12.20 в регистр "ЦеныРеализации" НаборЗаписей = УстановкаЦен.Движения.ЦеныРеализации; // Чтение набора записей из базы данных. НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // Получение старых значений Сообщить(" по " + Запись.Организация + ", " + Запись.Контрагент + ", " + Запись.Номенклатура + " = " + Запись.Цена); // Проведение удорожания на 30% Запись.Цена = Запись.Цена + (Запись.Цена * (30/100)); КонецЦикла; // Добавление новой записи НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Период = ТекущаяДата(); НоваяЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ"""); НоваяЗапись.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО ""БелИмпортТорг"""); НоваяЗапись.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%"); НоваяЗапись.Цена = 3; // Замещение старых записей и запись новых НаборЗаписей.Записать(Истина); КонецПроцедуры  | 
|||
| 
    15
    
        mikecool    
     30.03.21 
            ✎
    11:45 
 | 
         
        если записей немного - прочитать весь РС, выгрузить в ТЗ, отобрать строки, изменить, загрузить снова в РС     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |