|
Как правильно записать данные в независимый РС.ЗначенияСвойствОбъектов | ☑ | ||
---|---|---|---|---|
0
ultrannge89
27.10.14
✎
09:57
|
Сейчас пишу так:
Если НЕ Результат.Пустой() Тогда Выборка =Результат.Выбрать(); Попытка НачатьТранзакцию(); НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Пока Выборка.Следующий() Цикл НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка.ДоговорКонтрагента); Запись = НаборЗаписейЗначенияСвойств.Добавить(); Запись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ"); Запись.Объект = Выборка.ДоговорКонтрагента; Запись.Значение = Выборка.СнижениеДДУ; КонецЦикла; НаборЗаписейЗначенияСвойств.Записать(); ЗафиксироватьТранзакцию(); ВывестиДанныеНаФорму(); Сообщить("Готово"); Исключение ОтменитьТранзакцию(); Сообщить(ОписаниеОшибки()); КонецПопытки; Иначе Сообщить("Изменений характеристик не найдено"); КонецЕсли; Но проблема в том что у меня этот объект имеет несколько характеристик. и когда я устанавливаю эту, предыдущие затираются, как мне правильно установить отбор и на объект и на свойство? |
|||
1
mergan
27.10.14
✎
09:58
|
прочитать надо перед добавлением
|
|||
2
ultrannge89
27.10.14
✎
09:59
|
Пробовал:
НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка.ДоговорКонтрагента); НаборЗаписейЗначенияСвойств.Отбор.Свойство.Установить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ")); Начинают лететь ошибки... |
|||
3
ultrannge89
27.10.14
✎
10:01
|
пробовал и так :
НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка.ДоговорКонтрагента); НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка.ДоговорКонтрагента); НаборЗаписейЗначенияСвойств.Отбор.Свойство.Установить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ")); НаборЗаписейЗначенияСвойств.Прочитать(); |
|||
4
ultrannge89
27.10.14
✎
10:02
|
Без первой
|
|||
5
Крошка Ру
27.10.14
✎
10:02
|
(3)Записать() - это то же самое, что и Записать(Истина), затирает все предыдущие записи(если есть отбор, то только по отбору затирает)
Пиши Записать(Ложь) |
|||
6
ultrannge89
27.10.14
✎
10:04
|
А можно вообще отбор установить и на объект и на свойство?
|
|||
7
ultrannge89
27.10.14
✎
10:07
|
{Форма.Форма.Форма(54)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : ЗначенияСвойствОбъектов: ДДУ №А-28/14 от 19.06.14г, Снижение ДДУ (Регистр сведений: Значения дополнительных реквизитов)
Это когда так: Если НЕ Результат.Пустой() Тогда Выборка =Результат.Выбрать(); Попытка НачатьТранзакцию(); НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Пока Выборка.Следующий() Цикл //НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка.ДоговорКонтрагента); //НаборЗаписейЗначенияСвойств.Отбор.Свойство.Значение = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ"); //НаборЗаписейЗначенияСвойств.Прочитать(); Запись = НаборЗаписейЗначенияСвойств.Добавить(); Запись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ"); Запись.Объект = Выборка.ДоговорКонтрагента; Запись.Значение = Выборка.СнижениеДДУ; КонецЦикла; НаборЗаписейЗначенияСвойств.Записать(Ложь); ЗафиксироватьТранзакцию(); ВывестиДанныеНаФорму(); Сообщить("Готово"); Исключение ОтменитьТранзакцию(); Сообщить(ОписаниеОшибки()); КонецПопытки; Иначе Сообщить("Изменений характеристик не найдено"); КонецЕсли; |
|||
8
Зеленый пень
27.10.14
✎
10:08
|
(7) Устанавливай 2 отбор, но убери .Прочитать()
|
|||
9
Зеленый пень
27.10.14
✎
10:08
|
"2 отбора"
|
|||
10
ultrannge89
27.10.14
✎
10:12
|
(9), Так второй отбор не срабатывает, видимо надо его тоже через установить писать
|
|||
11
ultrannge89
27.10.14
✎
10:20
|
Эх, за пол года первый раз столкнулся с тем чтобы писать данные в независимый РС, вот те на...)
|
|||
12
ultrannge89
27.10.14
✎
10:21
|
Если НЕ Результат.Пустой() Тогда
Выборка =Результат.Выбрать(); Попытка НачатьТранзакцию(); НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Пока Выборка.Следующий() Цикл НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка.ДоговорКонтрагента); НаборЗаписейЗначенияСвойств.Отбор.Свойство.Установить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ")); Запись = НаборЗаписейЗначенияСвойств.Добавить(); Запись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ"); Запись.Объект = Выборка.ДоговорКонтрагента; Запись.Значение = Выборка.СнижениеДДУ; КонецЦикла; НаборЗаписейЗначенияСвойств.Записать(); ЗафиксироватьТранзакцию(); ВывестиДанныеНаФорму(); Сообщить("Готово"); Исключение ОтменитьТранзакцию(); Сообщить(ОписаниеОшибки()); КонецПопытки; Иначе Сообщить("Изменений характеристик не найдено"); КонецЕсли; Ошибка: {Форма.Форма.Форма(54)}: Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля не соответствует установленному отбору: ЗначенияСвойствОбъектов: ДДУ хххххххххххххх, Снижение ДДУ (Регистр сведений: Значения дополнительных реквизитов; Поле: Объект |
|||
13
ultrannge89
27.10.14
✎
10:25
|
Все работает:
Если НЕ Результат.Пустой() Тогда Выборка =Результат.Выбрать(); Попытка НачатьТранзакцию(); Пока Выборка.Следующий() Цикл НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка.ДоговорКонтрагента); НаборЗаписейЗначенияСвойств.Отбор.Свойство.Установить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ")); Запись = НаборЗаписейЗначенияСвойств.Добавить(); Запись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Снижение ДДУ"); Запись.Объект = Выборка.ДоговорКонтрагента; Запись.Значение = Выборка.СнижениеДДУ; НаборЗаписейЗначенияСвойств.Записать(); КонецЦикла; ЗафиксироватьТранзакцию(); ВывестиДанныеНаФорму(); Сообщить("Готово"); Исключение ОтменитьТранзакцию(); Сообщить(ОписаниеОшибки()); КонецПопытки; Иначе Сообщить("Изменений характеристик не найдено"); КонецЕсли; |
|||
14
ultrannge89
27.10.14
✎
10:26
|
Просто я думал что можно надобавлять кучу записей в один набор а потом его записать...
|
|||
15
ultrannge89
27.10.14
✎
10:26
|
И чтобы у набора при этом для каждой записи были свои отборы, но нет...)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |