|   |   | 
| 
 | Изменить поле регистра сведений | ☑ | ||
|---|---|---|---|---|
| 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 | 
        если записей немного - прочитать весь РС, выгрузить в ТЗ, отобрать строки, изменить, загрузить снова в РС     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |