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