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