Ошибка записи Владельца

1. tendercement 27.05.16 10:03 Сейчас в теме
Помогите разобраться где ошибка.
{Обработка.РасчетМатрасаПоНестандарту.Форма.Форма.Форма(270)}: Поле объекта недоступно для записи (Владелец)
Характеристика.Владелец = ЭлементыФормы.МодельМатраса.Значение.Ссылка;

ВОТ КОД:

Запрос.Текст = "ВЫБРАТЬ
		|   ХарактеристикиНоменклатуры.Наименование
		|ИЗ
		|   Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
		|ГДЕ
		|   ХарактеристикиНоменклатуры.Владелец = &Владелец
		|   И ХарактеристикиНоменклатуры.Наименование = &Наименование";
		Запрос.УстановитьПараметр("Наименование", Значение);
		Запрос.УстановитьПараметр("Владелец", МодельМатраса);
		
			
		Если Запрос.Выполнить().Выбрать().Количество()<=0 Тогда //Если нет, то задаем характеристику номенклатуре
			Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
			Характеристика.Владелец = ЭлементыФормы.МодельМатраса.Значение.Ссылка;
			Характеристика.Наименование = Значение;
			Характеристика.Записать();
			РегистрЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); //Записываем запись в регистр сведений
			РегистрЗначенияСвойствОбъектов.Значение = СвойствоСсылка;
			РегистрЗначенияСвойствОбъектов.Объект = Характеристика.Ссылка;
			РегистрЗначенияСвойствОбъектов.Свойство = ВладелецРазмер;
			РегистрЗначенияСвойствОбъектов.Записать();
		КонецЕсли;
Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alljoke 27.05.16 10:29 Сейчас в теме
ЭлементыФормы.МодельМатраса.Значение.Ссылка - здесь точно владелец?
+
4. tendercement 27.05.16 10:34 Сейчас в теме
а как это проверить?
+
5. tendercement 27.05.16 10:35 Сейчас в теме
Владелец = Это объект Номенклатура?
+
6. tendercement 27.05.16 10:39 Сейчас в теме
вот так пробую, таже самая ошибка:
Характеристика.Владелец = ЭлементыФормы.МодельМатраса.Значение.Ссылка;
+
7. tendercement 27.05.16 10:40 Сейчас в теме
вот так, т.е.:
Характеристика.Владелец = МодельМатраса.Ссылка;
+
8. tendercement 27.05.16 10:43 Сейчас в теме
и так тоже самое:
Характеристика.Владелец = МодельМатраса;
+
9. tendercement 27.05.16 10:45 Сейчас в теме
Вот скрин формы
Прикрепленные файлы:
+
10. alljoke 27.05.16 10:48 Сейчас в теме
Отладчиком остановитесь на строке и посмотрите что тут:
ЭлементыФормы.МодельМатраса.Значение.Ссылка
(выделяем и жмем Шифт+F9)
+
12. tendercement 27.05.16 10:58 Сейчас в теме
(10) alljoke,
Прикрепленные файлы:
+
11. tendercement 27.05.16 10:52 Сейчас в теме
ничего не происходит!
+
13. tendercement 27.05.16 11:05 Сейчас в теме
Получилось
Прикрепленные файлы:
+
14. tendercement 27.05.16 11:13 Сейчас в теме
вроде Тип правильный!

Может быть стоит запрет на редактирование Характеристика.Владелец?
+
15. tendercement 27.05.16 11:16 Сейчас в теме
Ведь именно поле не доступно в Характеристики.Владелец: Поле объекта недоступно для записи
+
17. config 187 27.05.16 11:24 Сейчас в теме
(15) tendercement, права у тек.пользователя есть на Справочник? Если попробовать создать элемент из программы, что получается?
+
20. config 187 27.05.16 11:28 Сейчас в теме
(17) config, еще попробуйте переименовать переменную Характеристика

НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); 
НоваяХарактеристика.Владелец = ЭлементыФормы.МодельМатраса.Значение.Ссылка; 
НоваяХарактеристика.Наименование = Значение; 
НоваяХарактеристика.Записать(); 
+
22. tendercement 27.05.16 11:30 Сейчас в теме
(20) config, СПАСИБО!!!!! Заработало!
+
23. tendercement 27.05.16 11:31 Сейчас в теме
(20) config, почему так? если не сложно ответь!
+
25. config 187 27.05.16 11:38 Сейчас в теме
(23) tendercement, такая же ошибка как здесь
Где-то уже есть такой реквизит
+
26. tendercement 27.05.16 11:38 Сейчас в теме
(20) config, Блин, ошибочка где-то: если у номенклатуры уже есть такая же Характеристика, то он меняет Значение свойства у нее, не создает новую!
+
27. config 187 27.05.16 11:41 Сейчас в теме
(26) tendercement, скорее всего в этом куске кода
   Если Выборка.Количество()<=0 Тогда //А если нет, то создаем
            Свойство = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
            Свойство.Наименование = Значение;
            Свойство.Владелец = ВладелецРазмер;
            Свойство.Записать();
            СвойствоСсылка = Свойство.Ссылка;
        Иначе
            Выборка.Следующий();
            СвойствоСсылка = Выборка.Ссылка;
        КонецЕсли;
Показать

Всегда идет попадание в Иначе
+
16. tendercement 27.05.16 11:23 Сейчас в теме
Вот полный код:

Процедура ОсновныеДействияФормыСоздатьХар(Кнопка)
	
	Значение = Формат(ЭлементыФормы.Ширина.Значение*10, "ЧГ=0") + "×" + Формат(ЭлементыФормы.Длина.Значение*10, "ЧГ=0") + "×" + Формат(Прав(ЭлементыФормы.Характеристика.Значение.Наименование,3), "ЧГ=0"); //(?(Прав(ЭлементыФормы.Характеристика.Значение.Наименование,3) = "000", 4, 3))); //Считываем характеристику из файла
	ВладелецРазмер = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("УТ0000011");
	
	Если ЭлементыФормы.Ширина.Значение > 0 И ЭлементыФормы.Длина.Значение > 0 Тогда // Если характеристика есть
		Запрос = Новый Запрос; // то запросом ищем, есть ли такая характеристика в справочнике. Если есть, то не будем ее по новой создавать
		Запрос.Текст = "ВЫБРАТЬ
		|   ЗначенияСвойствОбъектов.Ссылка
		|ИЗ
		|   Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		|ГДЕ
		|   ЗначенияСвойствОбъектов.Наименование = &Наименование";
		Запрос.УстановитьПараметр("Наименование", Значение);
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Количество()<=0 Тогда //А если нет, то создаем
			Свойство = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
			Свойство.Наименование = Значение;
			Свойство.Владелец = ВладелецРазмер;
			Свойство.Записать();
			СвойствоСсылка = Свойство.Ссылка;
		Иначе
			Выборка.Следующий();
			СвойствоСсылка = Выборка.Ссылка;
		КонецЕсли;
				
		//Следующим запросом ищем, может для данной номенклатуры уже задавалась такая характеристика                    
		Запрос.Текст = "ВЫБРАТЬ
		|   ХарактеристикиНоменклатуры.Наименование
		|ИЗ
		|   Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
		|ГДЕ
		|   ХарактеристикиНоменклатуры.Владелец = &Владелец
		|   И ХарактеристикиНоменклатуры.Наименование = &Наименование";
		Запрос.УстановитьПараметр("Наименование", Значение);
		Запрос.УстановитьПараметр("Владелец", ЭлементыФормы.МодельМатраса.Значение.Ссылка);
		
			
		Если Запрос.Выполнить().Выбрать().Количество()<=0 Тогда //Если нет, то задаем характеристику номенклатуре
			Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
			Характеристика.Владелец = ЭлементыФормы.МодельМатраса.Значение.Ссылка;
			Характеристика.Наименование = Значение;
			Характеристика.Записать();
			РегистрЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); //Записываем запись в регистр сведений
			РегистрЗначенияСвойствОбъектов.Значение = СвойствоСсылка;
			РегистрЗначенияСвойствОбъектов.Объект = Характеристика.Ссылка;
			РегистрЗначенияСвойствОбъектов.Свойство = ВладелецРазмер;
			РегистрЗначенияСвойствОбъектов.Записать();
		КонецЕсли;
		
		
	КонецЕсли;
	
КонецЦикла;

КонецПроцедуры
Показать
+
18. tendercement 27.05.16 11:25 Сейчас в теме
19. tendercement 27.05.16 11:25 Сейчас в теме
из программы все создается!
+
21. tendercement 27.05.16 11:28 Сейчас в теме
24. alljoke 27.05.16 11:34 Сейчас в теме
Скорей всего Характеристика на форме находилась. Реквизит формы.
+
28. tendercement 27.05.16 11:44 Сейчас в теме
Нашел ошибку:
Вот как надо: РегистрЗначенияСвойствОбъектов.Объект = ЭлементыФормы.МодельМатраса.Значение.Ссылка;

Но теперь он создает Характеристику, но не заполняет Значение
+
29. config 187 27.05.16 11:49 Сейчас в теме
(28) tendercement,
  РегистрЗначенияСвойствОбъектов.Значение = СвойствоСсылка;
            РегистрЗначенияСвойствОбъектов.Объект = Характеристика.Ссылка;
            РегистрЗначенияСвойствОбъектов.Свойство = ВладелецРазмер;

кажется тут путанница. Может
  РегистрЗначенияСвойствОбъектов.Значение = Значение; //Значение, а не СвойствоСсылка 
        РегистрЗначенияСвойствОбъектов.Объект = ЭлементыФормы.МодельМатраса.Значение.Ссылка;
        РегистрЗначенияСвойствОбъектов.Свойство = СвойствоСсылка; //СвойствоСсылка а не ВладелецРазмер
+
31. tendercement 27.05.16 11:52 Сейчас в теме
(29) config, ща попробую
+
32. tendercement 27.05.16 11:55 Сейчас в теме
(29) config, во что:

{Обработка.РасчетМатрасаПоНестандарту.Форма.Форма.Форма(278)}: Ошибка при вызове метода контекста (Записать)
РегистрЗначенияСвойствОбъектов.Записать();
по причине:
Запись не верна! Значение поля "Свойство" не может быть пустым!: ЗначенияСвойствОбъектов: Discovery (Дискавери) Sleep Style Askona Матрас, (Регистр сведений: Значения свойств объектов)
+
30. tendercement 27.05.16 11:51 Сейчас в теме
блин не могу найти,

Свойство найдено!
ЗначениеСвойтства - создано
Характеристика - создано
В характеристике не выбрано значение свойства

что те так, нужно выбрать как-то значение свойства в характеристике номенклатуры
+
33. config 187 27.05.16 12:07 Сейчас в теме
Значение поля "Свойство" не может быть пустым!

Ну тут уж куда яснее-то.
Что говорит отладчик на этой строчке?
+
34. tendercement 27.05.16 12:16 Сейчас в теме
(33) config,
Прикрепленные файлы:
+
35. tendercement 27.05.16 12:18 Сейчас в теме
(33) config,
Прикрепленные файлы:
+
36. config 187 27.05.16 12:22 Сейчас в теме
Ошибка поменялась с
Ошибка при вызове метода контекста (Записать)
на
Процедура или Функция не определена Записать()

Так где сейчас ошибка?
+
37. tendercement 27.05.16 12:37 Сейчас в теме
(36) config, (36) config,

на отладчике по строке Записать(): ошибка на фото

после продолжения ошибка в приложении:
{Обработка.РасчетМатрасаПоНестандарту.Форма.Форма.Форма(277)}: Ошибка при вызове метода контекста (Записать)
РегистрЗначенияСвойствОбъектов.Записать();
по причине:
Запись не верна! Значение поля "Свойство" не может быть пустым!: ЗначенияСвойствОбъектов: Discovery (Дискавери) Sleep Style Askona Матрас, (Регистр сведений: Значения свойств объектов)
Прикрепленные файлы:
+
38. config 187 27.05.16 13:26 Сейчас в теме
У Свойства должен быть тип ПланыВидовХарактеристик.СвойстваОбъектов
У Значения должен быть тип Справочники.ЗначенияСвойствОбъектов
+
39. tendercement 27.05.16 13:27 Сейчас в теме
(38) config, сейчас проверю
+
40. tendercement 27.05.16 13:31 Сейчас в теме
(38) config,
Прикрепленные файлы:
+
41. tendercement 27.05.16 13:31 Сейчас в теме
(38) config,
Прикрепленные файлы:
+
42. config 187 27.05.16 13:34 Сейчас в теме
У Свойства должен быть тип ПланыВидовХарактеристик.СвойстваОбъектов

У тебя это переменная ВладелецРазмер
Попробуй поменять
+
43. tendercement 27.05.16 14:27 Сейчас в теме
В ИТОГЕ РАБОТАЕТ по КОДУ:

Если Запрос.Выполнить().Выбрать().Количество()<=0 Тогда //Если нет, то задаем характеристику номенклатуре
			НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); 
			НоваяХарактеристика.Владелец = ЭлементыФормы.МодельМатраса.Значение.Ссылка; 
			НоваяХарактеристика.Наименование = Значение; 
			НоваяХарактеристика.Записать();
			нНоменклатура = ЭлементыФормы.МодельМатраса.Значение;
			РегистрЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); //Записываем запись в регистр сведений
			РегистрЗначенияСвойствОбъектов.Объект   = НоваяХарактеристика.Ссылка;
			РегистрЗначенияСвойствОбъектов.Свойство = ВладелецРазмер;
			РегистрЗначенияСвойствОбъектов.Значение = СвойствоСсылка;
			РегистрЗначенияСвойствОбъектов.Записать();
		КонецЕсли;
Показать
+
44. config 187 27.05.16 16:27 Сейчас в теме
(43) tendercement, пожалуйста.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот