Сохранить данные из Документа в Справочник

1. rogovae 1 13.08.21 21:24 Сейчас в теме
Добрый день. Нужно сохранить в Справочник ОбъектыНедвижимости данные из Документы при его записи.
Последний шаг не выходит. Пробовал разные циклы, и выборка и ТЗ. Все Ок, но не сохраняет данные в Справочник.
В справочнике реквизиты такие-же.
Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ПриобретениеНедвижимости.Номер КАК Номер,
	|	ПриобретениеНедвижимости.Дата КАК Дата,
	|	ПриобретениеНедвижимости.ПолноеНаименование КАК ПолноеНаименование,
	|	ПриобретениеНедвижимости.АдресМестанахожджения КАК АдресМестанахожджения,
	|	ПриобретениеНедвижимости.ОбщаяПлощадь КАК ОбщаяПлощадь,
	|	ПриобретениеНедвижимости.ЖилаяПлощадь КАК ЖилаяПлощадь,
	|	ПриобретениеНедвижимости.ВидНедвижимости КАК ВидНедвижимости,
	|	ПриобретениеНедвижимости.Примечание КАК Примечание,
	|	ПриобретениеНедвижимости.ОбщаяСтоимость КАК ОбщаяСтоимость,
	|	ПриобретениеНедвижимости.СвоиСредства КАК СвоиСредства,
	|	ПриобретениеНедвижимости.КредитныеСредства КАК КредитныеСредства
	|ИЗ
	|	Документ.ПриобретениеНедвижимости КАК ПриобретениеНедвижимости";
	Запрос.УстановитьПараметр("Объект", Документы.ПриобретениеНедвижимости);
	РезультатЗапроса = Запрос.Выполнить();
	ТЗ = Новый ТаблицаЗначений;
	ТЗ = РезультатЗапроса.Выбрать();
	
	//Цикл для записи всправочник ОбъектыНедвижимости
	Для Каждого Элемент Из ТЗ.Следующий() Цикл
	//Пока ТЗ.Следующий() Цикл
		НовСтрокаСпрОбъекты = Справочники.ОбъектыНедвижимости.СоздатьЭлемент();
		ЗаполнитьЗначенияСвойств(Справочники.ОбъектыНедвижимости,ТЗ);
		//ЗачениеЗаполнено(Справочники.ОбъектыНедвижимости);
		
		
	КонецЦикла;
	    НовСтрокаСпрОбъекты.Записать();
Показать
По теме из базы знаний
Найденные решения
14. DJ_Codebase 13.08.21 22:00 Сейчас в теме
(11) Вообще этот ваш код ужастен, его замените на 2 строчки:

НовСтрокаСпрОбъекты = Справочники.ОбъектыНедвижимости.СоздатьЭлемент();
        ЗаполнитьЗначенияСвойств(НовСтрокаСпрОбъекты ,ЭтотОбъект);

и записать не забыть конечно
НовСтрокаСпрОбъекты.Записать();
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1534961 13.08.21 21:29 Сейчас в теме
//Цикл для записи всправочник ОбъектыНедвижимости
    Для Каждого Элемент Из ТЗ.Следующий() Цикл
    //Пока ТЗ.Следующий() Цикл
        НовСтрокаСпрОбъекты = Справочники.ОбъектыНедвижимости.СоздатьЭлемент();
        ЗаполнитьЗначенияСвойств(НовСтрокаСпрОбъекты ,ТЗ);
        //ЗачениеЗаполнено(Справочники.ОбъектыНедвижимости);
       НовСтрокаСпрОбъекты.Записать();
        
    КонецЦикла;
Показать
3. rogovae 1 13.08.21 21:34 Сейчас в теме
(2)
ЗаполнитьЗначенияСвойств(НовСтрокаСпрОбъекты ,ТЗ);


{Документ.ПриобретениеНедвижимости.МодульОбъекта(25)}: Итератор для значения не определен
Для Каждого Элемент Из ТЗ.Следующий() Цикл
Выдал ошибку итератора
4. DJ_Codebase 13.08.21 21:39 Сейчас в теме
Попробуйте так
...
ТЗ = Запрос.Выполнить().Выгрузить();
    
    //Цикл для записи всправочник ОбъектыНедвижимости
    Для Каждого Элемент Из ТЗ Цикл
    НовСтрокаСпрОбъекты = Справочники.ОбъектыНедвижимости.СоздатьЭлемент();
        ЗаполнитьЗначенияСвойств(НовСтрокаСпрОбъекты ,Элемент);
... и далее по тексту
Показать

у ТЗ нет метода Следующий()
5. rogovae 1 13.08.21 21:44 Сейчас в теме
(4)Пусто, не сохраняет.(((
6. DJ_Codebase 13.08.21 21:45 Сейчас в теме
(5) я изменил еще строчку
ЗаполнитьЗначенияСвойств(НовСтрокаСпрОбъекты ,Элемент);
сразу не заметил
7. rogovae 1 13.08.21 21:47 Сейчас в теме
(6)
ЗаполнитьЗначенияСвойств(Справочники.ОбъектыНедвижимости,Элемент);

Зараза, создает 2 пустые строки. в них только код заполнен
8. DJ_Codebase 13.08.21 21:50 Сейчас в теме
так вот тут тоже ошибка
Запрос.УстановитьПараметр("Объект", Документы.ПриобретениеНедвижимости);
//должно быть ссылка контретного документа
Запрос.УстановитьПараметр("Объект", ДокументыСсылка);

и в самом запросе нет секции ГДЕ Документ.ПриобретениеНедвижимости.Ссылка = &Объект

слишком много ошибок делаете
9. rogovae 1 13.08.21 21:51 Сейчас в теме
(8)У меня там была ссылка, это я пробовал поменять на Объект
12. DJ_Codebase 13.08.21 21:55 Сейчас в теме
(9) Объект нельзя. Только ссылка. Да и вместо ссылки вижу параметром менеджер документа
10. DJ_Codebase 13.08.21 21:53 Сейчас в теме
Вообще непонятно что вы вытворяете, установка параметра на записываемый документ нужна? и зачем вообще цикл? в выборке должны быть данные документа? я че то не совсем понял задумку
11. rogovae 1 13.08.21 21:54 Сейчас в теме
(10)Нужно все данные с документа покупки недвижимого имущества перенести в Справочник Объектов недвижимости.
14. DJ_Codebase 13.08.21 22:00 Сейчас в теме
(11) Вообще этот ваш код ужастен, его замените на 2 строчки:

НовСтрокаСпрОбъекты = Справочники.ОбъектыНедвижимости.СоздатьЭлемент();
        ЗаполнитьЗначенияСвойств(НовСтрокаСпрОбъекты ,ЭтотОбъект);

и записать не забыть конечно
НовСтрокаСпрОбъекты.Записать();
15. rogovae 1 13.08.21 22:04 Сейчас в теме
(14)
ЗаполнитьЗначенияСвойств(НовСтрокаСпрОбъекты ,ЭтотОбъект);

С циклом записал 2 строки, без цикла 1 строку.
Данные перешли в справочник, только адрес не попал. Буду копать дальше, возможно порядок Реквизитов другой.
Спасибо Вам)))
17. DJ_Codebase 13.08.21 22:07 Сейчас в теме
(15) а с чего 2 строки то? не пойму сути - документ то один? откуда 2я запись взялась? (в цикле)
20. rogovae 1 13.08.21 22:09 Сейчас в теме
(17)Сам не понял, но без цикла пишет в справочник. Теперь с реквизитами еще разобраться. И параметр уберу попробую.
22. DJ_Codebase 13.08.21 22:12 Сейчас в теме
(20) имена реквизитов должны называться одинаково, если пользуете ЗаполнитьЗначениеСвойств().
Пишет в справочник в любом случае, хоть в цикле, хоть без. Все от задачи зависит (сколько элементов в выборке)
24. rogovae 1 13.08.21 22:15 Сейчас в теме
(22)имена одинаковые. Может букву перепутал, перепроверю. Чуть позже гляну количество элементов. В душ схожу...
25. rogovae 1 13.08.21 22:38 Сейчас в теме
(22)
правочник в любом случае, хоть в цикле, хоть без. Все от задачи зависит (сколько

В Документе и в Справочнике разное количество реквизитов, реквизит Адрес сходится - привел к единому знаменателю. Но пока не выгружает в справочник. Видимо из-за даты документа. Надо еще будет дату подтянуть в справочник.
26. DJ_Codebase 13.08.21 22:42 Сейчас в теме
(25) Неважно какое количество реквизитов. Они должны быть одинакового типа (источник-приемник). Если адрес - это строка, тогда в приемнике тоже должна быть строка, и ее длина достаточной чтобы он туда поместился
27. rogovae 1 13.08.21 22:52 Сейчас в теме
(26)Да, так и было, только в справочнике был Адерс, вместо Адрес. Теперь пишет все. Только приходится справочник переоткрывать, чтобы увидеть запись.
28. DJ_Codebase 13.08.21 23:06 Сейчас в теме
(27) там есть кнопочка Обновить, чтобы не переоткрывать
29. rogovae 1 13.08.21 23:09 Сейчас в теме
(28)Утром буду допилить формы и код чистить. За одно в справочнике контрагентов подобное реализую для записи данных из одного справочника в другие. Спасибо Вам ещё раз)))
30. DJ_Codebase 13.08.21 23:14 Сейчас в теме
13. rogovae 1 13.08.21 21:58 Сейчас в теме
Вот изначальный код:

Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ПриобретениеНедвижимости.Номер КАК Номер,
	|	ПриобретениеНедвижимости.Дата КАК Дата,
	|	ПриобретениеНедвижимости.ПолноеНаименование КАК ПолноеНаименование,
	|	ПриобретениеНедвижимости.АдресМестанахожджения КАК АдресМестанахожджения,
	|	ПриобретениеНедвижимости.ОбщаяПлощадь КАК ОбщаяПлощадь,
	|	ПриобретениеНедвижимости.ЖилаяПлощадь КАК ЖилаяПлощадь,
	|	ПриобретениеНедвижимости.ВидНедвижимости КАК ВидНедвижимости,
	|	ПриобретениеНедвижимости.Примечание КАК Примечание,
	|	ПриобретениеНедвижимости.ОбщаяСтоимость КАК ОбщаяСтоимость,
	|	ПриобретениеНедвижимости.СвоиСредства КАК СвоиСредства,
	|	ПриобретениеНедвижимости.КредитныеСредства КАК КредитныеСредства
	|ИЗ
	|	Документ.ПриобретениеНедвижимости КАК ПриобретениеНедвижимости";
	Запрос.УстановитьПараметр("Ссылка", Документы.ПриобретениеНедвижимости);
	ТЗ = Запрос.Выполнить().Выгрузить();
	    
    //Цикл для записи всправочник ОбъектыНедвижимости
    Для Каждого Элемент Из ТЗ Цикл
    
        НовСтрокаСпрОбъекты = Справочники.ОбъектыНедвижимости.СоздатьЭлемент();
		//ЗаполнитьЗначенияСвойств(Справочники.ОбъектыНедвижимости,ТЗ);
		ЗаполнитьЗначенияСвойств(Справочники.ОбъектыНедвижимости,Элемент);
		
        НовСтрокаСпрОбъекты.Записать();
        
    КонецЦикла;
Показать
16. DJ_Codebase 13.08.21 22:04 Сейчас в теме
(13) в запросе нет секции ГДЕ - параметр для чего объявляете?
18. rogovae 1 13.08.21 22:07 Сейчас в теме
(16)Подглядел где-то, практикуюсь.
19. DJ_Codebase 13.08.21 22:08 Сейчас в теме
(18) ну понятно!)) ученье- свет, а неученье - чуть свет и на работу))
21. rogovae 1 13.08.21 22:12 Сейчас в теме
(19)Спасибо Вам за помощь. Буду дальше копать.
23. DJ_Codebase 13.08.21 22:14 Сейчас в теме
(21) Та немазашо)) учитесь ;-) никто ж ученым не родился)
Оставьте свое сообщение

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