|
Правильный порядок записи регистра сведений | ☑ | ||
---|---|---|---|---|
0
alexshape
15.11.17
✎
16:37
|
Привет Всем, есть регистр сведений в котором нужно изменить данные:
1. Я отбираю данные из регистра Через конструкцию вида набор.Отбор.Измерение1.Установить(Значение); 2. Далее я изменяю в этом наборе значение "Измерение1" 3. Выдает ошибку что нельзя изменять значения Измерений которые участвуют в отборе. Как обойти данную проблему? |
|||
1
Cyberhawk
15.11.17
✎
16:48
|
Создать набор с нужными данными, записать, а ненужные данные удалить
|
|||
2
SeregaMW
15.11.17
✎
17:09
|
(1) Не согласен с начало надо удалить а потом создать! ;-)
|
|||
3
Cyberhawk
15.11.17
✎
17:10
|
(2) Садись, два. Если сначала удалить, а потом при создании будет ошибка, то повторно создать уже не получится.
Это если без транзакции, конечно же. |
|||
4
SeregaMW
15.11.17
✎
17:25
|
(3) Прекрасно работает! НаборЗапПлощадь = РегистрыСведений.ГУТА_ИнформацияОПомещениях.СоздатьНаборЗаписей();
НаборЗапПлощадь.Отбор.Период.Установить(НаДату); НаборЗапПлощадь.Отбор.Помещение.Установить(НовыйЭлементСпрПом.Ссылка); НаборЗапПлощадь.Прочитать(); НаборЗапПлощадь.Очистить(); НовЗапись = НаборЗапПлощадь.Добавить(); НовЗапись.Период = НаДату; НовЗапись.Помещение = НовыйЭлементСпрПом.Ссылка; НовЗапись.Площадь = СтрТаб.ПлощадьПомещенияПоБТИ; НовЗапись.ТипПомещения = СтрТаб.ТипПомещения; НаборЗапПлощадь.Записать(); |
|||
5
Ненавижу 1С
гуру
15.11.17
✎
17:29
|
(4) так не сработает, у тебя ошибка будет: "нельзя изменять значения Измерений которые участвуют в отборе"
|
|||
6
Мыш
15.11.17
✎
17:30
|
(0) Нужно удалить запись с одним значением измерения и затем создать запись с другим значением измерения.
|
|||
7
Ненавижу 1С
гуру
15.11.17
✎
17:31
|
1. создать набор записей со старым отбором и прочитать его
2. создать другой набор записей с новым отбором 3. скопировать данные из старого в новый, изменяя данные касательные отбора 4. записать новый набор 5. создать набор записей со старым отбором и не читая записать его (то есть удалить!) |
|||
8
Cyberhawk
15.11.17
✎
17:32
|
(4) Помимо сказанного в (5) не ясно, зачем ты читаешь набор перед его очисткой
|
|||
9
SeregaMW
15.11.17
✎
17:33
|
(5,6,7,8) Согласен!
|
|||
10
Cyberhawk
15.11.17
✎
17:33
|
Хотя... без Прочитать() в нем записей и не будет, ничего не очистится по идее
|
|||
11
Мыш
15.11.17
✎
17:34
|
(10) Очистится
|
|||
12
SeregaMW
15.11.17
✎
17:51
|
Прекрасно работает вот такой код!
Процедура КнопкаВыполнитьНажатие(Кнопка) НаборЗапПлощадь = РегистрыСведений.ГУТА_ИнформацияОПомещениях.СоздатьНаборЗаписей(); // НаборЗапПлощадь.Отбор.Период.Установить(НаДату); НаборЗапПлощадь.Отбор.Помещение.Установить(НовыйЭлементСпрПом.Ссылка); НаборЗапПлощадь.Записать(); НовЗапись = НаборЗапПлощадь.Добавить(); НовЗапись.Период = НаДату; НовЗапись.Помещение = НовыйЭлементСпрПом.Ссылка; НовЗапись.Площадь = ПлощадьПомещенияПоБТИ; НовЗапись.ТипПомещения = ТипПомещения; Попытка НаборЗапПлощадь.Записать(); Сообщить("Элемент справочника ""Помещения для сдачи в аренду"" с наименованием - " + НовыйЭлементСпрПом.Наименование + " успешно записан."); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
13
SeregaMW
15.11.17
✎
17:51
|
(0) Покажи листинг!
|
|||
14
Chameleon1980
15.11.17
✎
17:55
|
отбор
прочитать кукуку записать |
|||
15
alexshape
15.11.17
✎
18:10
|
(12) Мне не нужно создавать новую запись, а нужно исправить старую
|
|||
16
Chameleon1980
15.11.17
✎
18:22
|
(15) в (14) что не понятно?
|
|||
17
breezee
15.11.17
✎
18:32
|
(15) А в чем разница? Вы знаете что у записей регистров нет ссылок на себя?
|
|||
18
alexshape
16.11.17
✎
10:33
|
Разобрался, Всем спасибо, Итог такой:
1. Выбираю записи 2. Копирую текущую запись 3. Изменяю что нужно 4. Удаляю старый набор 5. Записываю новый набор в режиме "Не замещать" Код: НаборЗаписей = РегистрыСведений.МОЭСК_КомментарииКДокументам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ОтветПолучен.Установить(Ложь); НаборЗаписей.Отбор.РуководителиПроинформированыОПросрочке.Установить(Ложь); НаборЗаписей.Отбор.КлиентПроинформирован.Установить(Ложь); НаборЗаписей.Прочитать(); Для каждого Запись Из НаборЗаписей Цикл НовыйНаборДляЗаписи = РегистрыСведений.МОЭСК_КомментарииКДокументам.СоздатьНаборЗаписей(); НоваяЗапись = НовыйНаборДляЗаписи.Добавить(); ЗаполнитьЗначенияСвойств(НоваяЗапись, Запись); Если УсловиеВыполняется Тогда НоваяЗапись.РуководителиПроинформированыОПросрочке = Истина; НоваяЗапись.ОтветПолучен = Истина; НоваяЗапись.ТекстОтвета = "Это Победа"; КонецЕсли; КонецЦикла; Если НаборЗаписей.Количество() > 0 Тогда НаборЗаписей.Очистить(); НаборЗаписей.Записать(); НовыйНаборДляЗаписи.Записать(Ложь); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |