Обход результат запроса с подстановкой полученных данных
Помогите обойти результат запроса и подставить в реквизит справочника то, что я получил в запросе.
А именно:
Например, у нас реквизит "АдресЭП" пустой и я хочу туда записать то, что получил в запросе в поле "Представление". Что я не так указал?
А именно:
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект = Справочники.ФизическиеЛица.ТекущиеДанные();
Объект.КонтактнаяИнформация.АдресЭП = ВыборкаДетальныеЗаписи.Представление;
КонецЦикла;
ПоказатьНапример, у нас реквизит "АдресЭП" пустой и я хочу туда записать то, что получил в запросе в поле "Представление". Что я не так указал?
По теме из базы знаний
- Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3
- Выгрузка и загрузка данных XML с гибкими отборами
- Универсальная загрузка данных формата Excel
- Экспертный взгляд на оптимизацию производительности на примере исправления и декомпозиции запроса
- Модель запроса SQL
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Что за метод ТекущиеДанные() ?
КонтактнаяИнформация это табличная часть. Нельзя колонке ТЧ присваивать значения. Или добавить строку табличной части или найти существующую.
Объект = Справочники.ФизическиеЛица.ТекущиеДанные();
Объект.КонтактнаяИнформация.АдресЭП = ВыборкаДетальныеЗаписи.Представление;
Объект.КонтактнаяИнформация.АдресЭП = ВыборкаДетальныеЗаписи.Представление;
Что за метод ТекущиеДанные() ?
КонтактнаяИнформация это табличная часть. Нельзя колонке ТЧ присваивать значения. Или добавить строку табличной части или найти существующую.
(3) я даже не понимаю что в итоге нужно?
Если создать новый элемент справочника, тогда Объект = Справочники.ФизическиеЛица.СоздатьЭлемент();
Если добавить в уже существующий, тогда нужно найти ссылку и получить объект по ссылке.
С табличной частью то же самое. Или добавить новую строку ТЧ и ее заполнить, или предварительно найти нужную.
Если создать новый элемент справочника, тогда Объект = Справочники.ФизическиеЛица.СоздатьЭлемент();
Если добавить в уже существующий, тогда нужно найти ссылку и получить объект по ссылке.
С табличной частью то же самое. Или добавить новую строку ТЧ и ее заполнить, или предварительно найти нужную.
(9)С данным алгоритмом не получается записать объект.
Не работает такая затея.
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СсылкаОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();;
ТЧОбъекта = СсылкаОбъект.КонтактнаяИнформация;
ТЧОбъекта.АдресЭП = ВыборкаДетальныеЗаписи.Представление;
КонецЦикла
ПоказатьНе работает такая затея.
(22) как-то так:
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ФизЛицоОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
СтрТЧ = ФизЛицоОбъект.КонтактнаяИнформация.Добавить();
СтрТЧ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EmailФизическогоЛица;
АдресЭП = ВыборкаДетальныеЗаписи.Представление;
СтрТЧ.АдресЭП = АдресЭП;
СтрТЧ.Представление = АдресЭП;
ФизЛицоОбъект.Записать();
КонецЦикла;
Показать
(24)
два нюанса: 1. Название предопределенного реквизита "EMailФизическиеЛица" должно быть так
СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица; или же это отличие КОРП и ПРОФ версий ЗУП3.1 и 2.После выполнения обработки, вроде в справочнике в поле отображается нужный адрес, но данные не записаны , то есть нужно еще раз записать справочник.
В общем спасибо, все получилось.
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ФизЛицоОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
СтрТЧ = ФизЛицоОбъект.КонтактнаяИнформация.Добавить();
СтрТЧ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EmailФизическогоЛица;
АдресЭП = ВыборкаДетальныеЗаписи.Представление;
СтрТЧ.АдресЭП = АдресЭП;
СтрТЧ.Представление = АдресЭП;
ФизЛицоОбъект.Записать();
КонецЦикла;
ФизЛицоОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
СтрТЧ = ФизЛицоОбъект.КонтактнаяИнформация.Добавить();
СтрТЧ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EmailФизическогоЛица;
АдресЭП = ВыборкаДетальныеЗаписи.Представление;
СтрТЧ.АдресЭП = АдресЭП;
СтрТЧ.Представление = АдресЭП;
ФизЛицоОбъект.Записать();
КонецЦикла;
два нюанса: 1. Название предопределенного реквизита "EMailФизическиеЛица" должно быть так
СтрТЧ.Вид = Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица; или же это отличие КОРП и ПРОФ версий ЗУП3.1 и 2.После выполнения обработки, вроде в справочнике в поле отображается нужный адрес, но данные не записаны , то есть нужно еще раз записать справочник.
В общем спасибо, все получилось.
(32) Как раз в форме все норм, а вот при проверке таблицы было пусто, построил по другому запрос и все отображается в таблице. Но когда я удаляю теперь из формы , то в таблице все отображается. Короче не понятно ничего. Главное что реквизит заполнился и теперь рассылка доступна. Спасибо.
(32) Вроде все сделал правильно, но теперь не открывается ни одна печатная форма из карточки справочника сотрудники. Возникает данная ошибка
Неверное значение для массива владельцев контактной информации.
{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(951)}: ВызватьИсключение НСтр("ru = 'Неверное значение для массива владельцев контактной информации.'");
{ОбщийМодуль.УправлениеКонтактнойИнформациейЗарплатаКадры.Модуль(70)}: УправлениеКонтактнойИнформацией.СоздатьВТКонтактнаяИнформация(Запрос.МенеджерВременныхТаблиц, МассивСсылок, , ВидыАдресов, ДатаАктуальности);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.МодульОбъекта(183)}: АдресаОрганизаций = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(РезультатЗапросаПоШапке.Выгрузить().ВыгрузитьКолонку("Организация"));
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(49)}: Возврат ВнешняяОбработкаОбъект.ДанныеДляПечатиСоглашенияОРасторженииТрудовогоДоговора(МассивОбъектов,);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(19)}: ДанныеДоговоров = ДанныеДоговоровПолучитьДанныеДоговоровНаСервере(МассивОбъектов);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(12)}: ПечатьДокументаВWord(ОбъектыНазначения);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(446)}: ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(258)}: ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}: МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}: ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(245)}: ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}: ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Справочник.Сотрудники.Форма.ФормаЭлемента.Форма(412)}: ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Сотрудник);
Неверное значение для массива владельцев контактной информации.
{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(951)}: ВызватьИсключение НСтр("ru = 'Неверное значение для массива владельцев контактной информации.'");
{ОбщийМодуль.УправлениеКонтактнойИнформациейЗарплатаКадры.Модуль(70)}: УправлениеКонтактнойИнформацией.СоздатьВТКонтактнаяИнформация(Запрос.МенеджерВременныхТаблиц, МассивСсылок, , ВидыАдресов, ДатаАктуальности);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.МодульОбъекта(183)}: АдресаОрганизаций = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(РезультатЗапросаПоШапке.Выгрузить().ВыгрузитьКолонку("Организация"));
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(49)}: Возврат ВнешняяОбработкаОбъект.ДанныеДляПечатиСоглашенияОРасторженииТрудовогоДоговора(МассивОбъектов,);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(19)}: ДанныеДоговоров = ДанныеДоговоровПолучитьДанныеДоговоровНаСервере(МассивОбъектов);
{ВнешняяОбработка.ПечатьРасторженияТрудовойДоговор_УФ.Форма.Форма.Форма(12)}: ПечатьДокументаВWord(ОбъектыНазначения);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(446)}: ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(258)}: ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}: МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}: ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(245)}: ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}: ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Справочник.Сотрудники.Форма.ФормаЭлемента.Форма(412)}: ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Сотрудник);
(38)я бы сказал по другому)). Это жесть. и тут 2 варианта или переписывать обработку или добавить в базу эти документы приема. И если выбрать 2 вариант, то не будет неразберихи и конфликта с начальной штатной расстановкой, которая была сформирована при переносе хмм...
Сейчас создам теме на форму, может кто-то такое уже делал.
Сейчас создам теме на форму, может кто-то такое уже делал.
(7)
если это табличная часть справочника, тогда пробуй так
если это табличная часть справочника, тогда пробуй так
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Объект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();//ссылка на элемент справочника (должна быть в запросе)
ТЧОбъекта = Объект.КонтактнаяИнформация;
ТЧОбъекта.Очистить();//если надо очистить
АдресЭП = ВыборкаДетальныеЗаписи.Представление;
НоваяСтрока = ТЧОбъекта.Добавить();
НоваяСтрока.АдресЭП = АдресЭП ;
Объект.Записать();
КонецЦикла;
Показать
(14)
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СсылкаОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();//ссылка на элемент справочника (должна быть в запросе)
ТЧОбъекта = СсылкаОбъект.КонтактнаяИнформация;
ТЧОбъекта.Очистить();//если надо очистить
АдресЭП = ВыборкаДетальныеЗаписи.Представление;
НоваяСтрока = ТЧОбъекта.Добавить();
НоваяСтрока.АдресЭП = АдресЭП ;
СсылкаОбъект.Записать();
КонецЦикла;
Показать
Помогал как то в одной задачи, нужно было заполнить адрес электронной почты контрагентов.
&НаКлиенте
Процедура ПочтаДляВсех(Команда)
ПочтаДляВсехНаСервере();
КонецПроцедуры
В типовых конфигурациях ERP, БП 3 есть общий модуль с процедурой добавления контактной информации.
Для примера как то так., может что то и поможет.
&НаСервере
Процедура ПочтаДляВсехНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЭтоГруппа = ЛОЖЬ";
Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка ИЗ Результат Цикл
ТЗКонтрагент = Строка.Ссылка;
НовыйАдрес = "new2021@mail.ru";
Вид = Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты;
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ТЗКонтрагент,НовыйАдрес,Вид,ТекущаяДата(),Истина);
Сообщить(ТЗКонтрагент);
КонецЦикла;
КонецПроцедуры
Показать&НаКлиенте
Процедура ПочтаДляВсех(Команда)
ПочтаДляВсехНаСервере();
КонецПроцедуры
В типовых конфигурациях ERP, БП 3 есть общий модуль с процедурой добавления контактной информации.
Для примера как то так., может что то и поможет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот