Обход результат запроса с подстановкой полученных данных

1. Dmitry888 41 08.02.21 13:34 Сейчас в теме
Помогите обойти результат запроса и подставить в реквизит справочника то, что я получил в запросе.
А именно:
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		Объект = Справочники.ФизическиеЛица.ТекущиеДанные();
		Объект.КонтактнаяИнформация.АдресЭП = ВыборкаДетальныеЗаписи.Представление;
		
	КонецЦикла;
Показать

Например, у нас реквизит "АдресЭП" пустой и я хочу туда записать то, что получил в запросе в поле "Представление". Что я не так указал?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 08.02.21 13:49 Сейчас в теме
(1)
Объект = Справочники.ФизическиеЛица.ТекущиеДанные();
Объект.КонтактнаяИнформация.АдресЭП = ВыборкаДетальныеЗаписи.Представление;

Что за метод ТекущиеДанные() ?
КонтактнаяИнформация это табличная часть. Нельзя колонке ТЧ присваивать значения. Или добавить строку табличной части или найти существующую.
VAAngelov; +1 Ответить
3. Dmitry888 41 08.02.21 14:02 Сейчас в теме
(2) немного не правильно написал. Без скобочек хотел. Но все равно это наверно не правильно.
4. spacecraft 08.02.21 14:07 Сейчас в теме
(3) я даже не понимаю что в итоге нужно?
Если создать новый элемент справочника, тогда Объект = Справочники.ФизическиеЛица.СоздатьЭлемент();
Если добавить в уже существующий, тогда нужно найти ссылку и получить объект по ссылке.

С табличной частью то же самое. Или добавить новую строку ТЧ и ее заполнить, или предварительно найти нужную.
6. Dmitry888 41 08.02.21 14:16 Сейчас в теме
(4)Перезаписать существующий. пустой реквизит табличной части "КонтактнаяИнформация" Справочника ФизическиеЛица, на то, что я получил в запросе в реквизите "Представление". И там и там тип "строка" и думаю проблем не будет.
9. spacecraft 08.02.21 14:21 Сейчас в теме
(6) алгоритм я выше привел.
И там и там тип "строка" и думаю проблем не будет.

хоть там и там строка, только АдресЭП это Строка(100), а Представление скорее всего строка неограниченной длины. Но подставиться должно с обрезанием до Строка(100).
22. Dmitry888 41 08.02.21 15:23 Сейчас в теме
(9)С данным алгоритмом не получается записать объект.
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		СсылкаОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();;
		ТЧОбъекта = СсылкаОбъект.КонтактнаяИнформация; 
		
		ТЧОбъекта.АдресЭП = ВыборкаДетальныеЗаписи.Представление;
		
	КонецЦикла
Показать

Не работает такая затея.
23. spacecraft 08.02.21 15:30 Сейчас в теме
(22)
Не работает такая затея.

а должна?
Я же говорил, что нельзя колонке ТЧ что-то присваивать.
24. spacecraft 08.02.21 15:42 Сейчас в теме
(22) как-то так:
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ФизЛицоОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
	СтрТЧ = ФизЛицоОбъект.КонтактнаяИнформация.Добавить();
	СтрТЧ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
	СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EmailФизическогоЛица;
	АдресЭП = ВыборкаДетальныеЗаписи.Представление;
	СтрТЧ.АдресЭП = АдресЭП;
	СтрТЧ.Представление = АдресЭП;
	ФизЛицоОбъект.Записать();
    КонецЦикла;

Показать
25. Dmitry888 41 08.02.21 16:12 Сейчас в теме
(24)
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ФизЛицоОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
СтрТЧ = ФизЛицоОбъект.КонтактнаяИнформация.Добавить();
СтрТЧ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EmailФизическогоЛица;
АдресЭП = ВыборкаДетальныеЗаписи.Представление;
СтрТЧ.АдресЭП = АдресЭП;
СтрТЧ.Представление = АдресЭП;
ФизЛицоОбъект.Записать();
КонецЦикла;


два нюанса: 1. Название предопределенного реквизита "EMailФизическиеЛица" должно быть так
СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица; или же это отличие КОРП и ПРОФ версий ЗУП3.1 и 2.После выполнения обработки, вроде в справочнике в поле отображается нужный адрес, но данные не записаны , то есть нужно еще раз записать справочник.

В общем спасибо, все получилось.
26. spacecraft 08.02.21 16:14 Сейчас в теме
(25) просто у меня нет ЗУП. Это с УТ. Просто названия предопределенных элементов отличается.
27. Dmitry888 41 08.02.21 16:36 Сейчас в теме
(26)даже так. А каким образом можно перезаписать список объектов справочника "Физические лица". А то этот метод ФизЛицоОбъект.Записать(); вроде и записывает на форму значение, а в таблице данных нет.
28. spacecraft 08.02.21 16:43 Сейчас в теме
(27) что значит "в таблице данных нет"? Может просто отображение данных не обновилось? Или эти данные просто выбраны и не обновляются динамически?
29. Dmitry888 41 08.02.21 16:53 Сейчас в теме
(28) захожу в карточку - реквизит заполнен, открывают через консоль данную таблицу - реквизит пустой.Если перезаписать справочник, то в консоле также отображается почта. Как-то странно себя ведет этот метод "Записать();"
30. spacecraft 08.02.21 16:55 Сейчас в теме
(29)
открывают через консоль данную таблицу

какую данную таблицу?
31. Dmitry888 41 08.02.21 16:58 Сейчас в теме
(30)ФизическиеЛица в связи с КонтактнаяИнформация
32. spacecraft 08.02.21 17:02 Сейчас в теме
(31) мне это мало что сказало. нет у меня зуп.
Тут 2 варианта. Или просто не обновляются данные по мере изменения справочника. Попробовать обновить форму.
Или при сохранении из формы происходит еще куда-то запись.
33. Dmitry888 41 08.02.21 17:23 Сейчас в теме
(32) Как раз в форме все норм, а вот при проверке таблицы было пусто, построил по другому запрос и все отображается в таблице. Но когда я удаляю теперь из формы , то в таблице все отображается. Короче не понятно ничего. Главное что реквизит заполнился и теперь рассылка доступна. Спасибо.
35. Dmitry888 41 09.02.21 13:48 Сейчас в теме
(32) Вроде все сделал правильно, но теперь не открывается ни одна печатная форма из карточки справочника сотрудники. Возникает данная ошибка
Неверное значение для массива владельцев контактной информации.
{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(951)}: ВызватьИсключение НСтр("ru = 'Неверное значение для массива владельцев контактной информации.'");
{ОбщийМодуль.УправлениеКонтактнойИнформациейЗарплатаКадры.Модуль(70)}: УправлениеКонтактнойИнформацией.СоздатьВТКонтактнаяИнформация(Запрос.МенеджерВременныхТаблиц, МассивСсылок, , ВидыАдресов, ДатаАктуальности);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.МодульОбъекта(183)}: АдресаОрганизаций = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(РезультатЗапросаПоШапке.Выгрузить().ВыгрузитьКолонку("Организация"));
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(49)}: Возврат ВнешняяОбработкаОбъект.ДанныеДляПечатиСоглашенияОРасторженииТрудовогоДоговора(МассивОбъектов,);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(19)}: ДанныеДоговоров = ДанныеДоговоровПолучитьДанныеДоговоровНаСервере(МассивОбъектов);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(12)}: ПечатьДокументаВWord(ОбъектыНазначения);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(446)}: ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(258)}: ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}: МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}: ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(245)}: ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}: ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Справочник.Сотрудники.Форма.ФормаЭлемента.Форма(412)}: ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Сотрудник);
36. spacecraft 09.02.21 14:09 Сейчас в теме
(35) в коде ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(951) выше ВызватьИсключение что-то же проверяется. Смотреть.
Проверить ТЧ КонтактнаяИнформация.
По приведенной ошибке мало что можно сказать.
37. Dmitry888 41 09.02.21 14:46 Сейчас в теме
(36)Я кажется понял в чем дело. В моей базе нет документов, по которым вытягивается информация во внешней печатной форме, а нет их потому-то я сделал переход с ЗУП 2.5 на ЗУП 3.1 (остатками)
38. spacecraft 09.02.21 14:48 Сейчас в теме
39. Dmitry888 41 09.02.21 15:11 Сейчас в теме
(38)я бы сказал по другому)). Это жесть. и тут 2 варианта или переписывать обработку или добавить в базу эти документы приема. И если выбрать 2 вариант, то не будет неразберихи и конфликта с начальной штатной расстановкой, которая была сформирована при переносе хмм...
Сейчас создам теме на форму, может кто-то такое уже делал.
5. keyn5565` 18 08.02.21 14:12 Сейчас в теме
Какой тип у элемента справочника "КонтактнаяИнформация"?
7. Dmitry888 41 08.02.21 14:16 Сейчас в теме
(5)"КонтактнаяИнформация" это табличная часть справочника "ФизичисескиеЛица".
8. keyn5565` 18 08.02.21 14:19 Сейчас в теме
(7)
Конкретно тип табличная часть?
Тогда какой набор реквизитов?
10. keyn5565` 18 08.02.21 14:21 Сейчас в теме
(7)
если это табличная часть справочника, тогда пробуй так
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();//ссылка на элемент справочника (должна быть в запросе)
        ТЧОбъекта = Объект.КонтактнаяИнформация; 
        ТЧОбъекта.Очистить();//если надо очистить
        АдресЭП = ВыборкаДетальныеЗаписи.Представление;
        НоваяСтрока = ТЧОбъекта.Добавить();
        НоваяСтрока.АдресЭП  = АдресЭП ;
        Объект.Записать();
        
    КонецЦикла;
Показать
12. Dmitry888 41 08.02.21 14:33 Сейчас в теме
(10) в этот момент Объект = Справочники.ФизическиеЛица.ПолучитьОбъект() выходит ошибка метод не обнаружен.
13. keyn5565` 18 08.02.21 14:40 Сейчас в теме
(12)
Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
14. Dmitry888 41 08.02.21 14:43 Сейчас в теме
(13)вот так теперь "Нельзя изменять поле, содержащее объект данных формы"
16. keyn5565` 18 08.02.21 14:47 Сейчас в теме
(14)
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        СсылкаОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();//ссылка на элемент справочника (должна быть в запросе)
        ТЧОбъекта = СсылкаОбъект.КонтактнаяИнформация; 
        ТЧОбъекта.Очистить();//если надо очистить
        АдресЭП = ВыборкаДетальныеЗаписи.Представление;
        НоваяСтрока = ТЧОбъекта.Добавить();
        НоваяСтрока.АдресЭП  = АдресЭП ;
        СсылкаОбъект.Записать();
        
    КонецЦикла;
Показать
17. Dmitry888 41 08.02.21 14:58 Сейчас в теме
(16)Уже лучше. В отладке данные попадают, но почему-то не записываются в справочник.
18. keyn5565` 18 08.02.21 15:04 Сейчас в теме
(17)
Еще раз. КонтактнаяИнформация - это таблица? А не ссылка на регистр?
19. Dmitry888 41 08.02.21 15:08 Сейчас в теме
(18)Это табличная часть справочника "ФизичесткиеЛица" То есть просто таблица.
20. keyn5565` 18 08.02.21 15:08 Сейчас в теме
(19)ок. просто у нас подобная информация хранится в регистре
11. ls600 08.02.21 14:30 Сейчас в теме
Помогал как то в одной задачи, нужно было заполнить адрес электронной почты контрагентов.
&НаСервере
Процедура ПочтаДляВсехНаСервере()
	
	 	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Контрагенты.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Контрагенты КАК Контрагенты
		|ГДЕ
		|	Контрагенты.ЭтоГруппа = ЛОЖЬ";
	
	Запрос.УстановитьПараметр("Тип",  Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
	
	Результат = Запрос.Выполнить().Выгрузить();
	
	Для Каждого Строка ИЗ Результат Цикл
		
		ТЗКонтрагент = Строка.Ссылка;
		
		НовыйАдрес = "new2021@mail.ru";
		Вид = Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты;
		УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ТЗКонтрагент,НовыйАдрес,Вид,ТекущаяДата(),Истина); 
		
		Сообщить(ТЗКонтрагент);
		
	КонецЦикла;		
		
	
КонецПроцедуры
Показать

&НаКлиенте
Процедура ПочтаДляВсех(Команда)
ПочтаДляВсехНаСервере();
КонецПроцедуры



В типовых конфигурациях ERP, БП 3 есть общий модуль с процедурой добавления контактной информации.
Для примера как то так., может что то и поможет.
15. keyn5565` 18 08.02.21 14:45 Сейчас в теме
(14)
Замени "Объект = " на "СсылкаОбъект ="
21. Dmitry888 41 08.02.21 15:17 Сейчас в теме
(15)получается этот метод не тот, что нам нужен СсылкаОбъект.Записать();? И как тогда перезаписать то. что было в реквизите таблицы, на то что мы получили в запросе. Как выяснилось просто присвоить значение не получается.( знаком =)
34. rule_2 47 09.02.21 12:22 Сейчас в теме
Если еще актуально. Можете запрос приложить и информацию о конфигурации (какая конфа и версия)?
Оставьте свое сообщение

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