Имя: Пароль:
1C
1С v8
Вставка адреса электронной почты во внешнюю печатную форму
0 Djonc
 
25.11.22
08:50
Добрый день! Конфигурация "Управление торговлей", редакция 10.3
Есть задача вставит адрес электронной почты из справочника организации из контактной информации.
Сделал запрос на ТЧ результат пустой. Что может быть не так?
Запрос = Новый Запрос;
    
    Запрос.Текст =
        "ВЫБРАТЬ
    | КонтактнаяИнформация.Представление  
    |ИЗ
    | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |  КонтактнаяИнформация.Вид = &Вид
    |";
    
    Запрос.УстановитьПараметр("Вид", Справочники.Организации.НайтиПоНаименованию("АдресЭП"));
    АдресЭП = Запрос.Выполнить().Выбрать();
        
    ОбластьМакета.Параметры.АдресЭП = АдресЭП;
1 Kesim
 
25.11.22
08:58
(0) Запрос.Выполнить().Выбрать() - возвращает выборку , это еще не совсем адресЭП, нужно выборка.следующий()
2 Ryzeman
 
25.11.22
09:06
В УТ 10.3 нет в БСП что-нибудь вроде УправлениеКонтактнойИнформацией.АдресЭлектроннойПочты() ?
3 Serg_1960
 
25.11.22
09:09
Запрос в принципе кривой. "Справочники.Организации.НайтиПоНаименованию("АдресЭП")" - пятнично.
4 Ryzeman
 
25.11.22
09:10
(3) Сперва подумал что не так, а потом как понял 😃 Ну, ТС похоже только учится) Простительно)
5 Serg_1960
 
25.11.22
09:15
Если мне память неизменяет, то в УТ надо писать как-то вот так:

Запрос.УстановитьПараметр("Вид", Перечисления.ВидыОбъектовКонтактнойИнформации.Организации);
6 Kassern
 
25.11.22
09:16
(0) Откройте в предприятии этот регистр сведений КонтактнаяИнформация и гляньте, что там внутри. После осмотра у вас должно быть осознание, что он общий и там хранятся различные контактные данные не только вашей организации, а еще и адреса/телефоны/почты контрагентов и т.д.
Когда вы это заметите, то у вас должна появиться мысль, а как с отбором "КонтактнаяИнформация.Вид = &Вид " я получу почту именно нужной организации. На помощь придет измерение объект (или как-то так в ут10)
7 Kassern
 
25.11.22
09:17
(3) Человек хотел сделать отбор по организации КИ, а указал это для вида)
8 Guk
 
25.11.22
09:18
(5) и что такой запрос вернет?...
9 Djonc
 
25.11.22
09:20
Запрос = Новый Запрос;
    
    Запрос.Текст =
        "ВЫБРАТЬ
    | КонтактнаяИнформация.Представление  
    |ИЗ
    | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |  КонтактнаяИнформация.Вид = &Вид
    |";
    
    Запрос.УстановитьПараметр("Вид", Перечисления.ВидыОбъектовКонтактнойИнформации.Организации);
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          АдресЭП = ВыборкаДетальныеЗаписи;
    КонецЦикла;
Попробовал так, тоже пусто.
10 Kassern
 
25.11.22
09:20
(5) (8) Все же просто, открываешь конфу, щелк щелк и ты в нужном регистре, смотришь типы данных и делаешь правильные условия
11 Kassern
 
25.11.22
09:21
(9) Какой тип значения у измерения  "Вид" в РС КонтактнаяИнформация?
Где у вас отбор по нужному объекту КИ?
12 Ryzeman
 
25.11.22
09:22
(11) Я всё же голосую за то, что бы человека БСП сразу учить пользоваться) А потом уже можно подсказать как правильно запросы писать)
13 Kassern
 
25.11.22
09:23
(12) Имхо, джун должен уметь писать запросы, должен понимать как фильтровать таблицы и получать нужный результат.
14 Djonc
 
25.11.22
09:23
СправочникСсылка.ВидыКонтактнойИнформации, Строка
15 Kassern
 
25.11.22
09:23
Тут даже связей никаких не надо, просто обратиться к таблице и отобрать по колонкам (измерениям)
16 Kassern
 
25.11.22
09:24
(14) А вы, что в параметры пихаете?) Не находите, что ВидыОбъектовКонтактнойИнформации<>ВидыКонтактнойИнформации?
17 Dotoshin
 
25.11.22
09:24
(0) Это тестовое задание при приеме на работу?
18 Ryzeman
 
25.11.22
09:25
(14) Ну, а у тебя в (9)
Перечисления.ВидыОбъектовКонтактнойИнформации.Организации

ТЫ должен в запросе два условия делать раздельно. Одно - по виду контактной информации, другое по организации. Смотри таблицы, в которых отбираешь, и думай что куда
19 Ryzeman
 
25.11.22
09:25
(17) Для УТ 10.3?...
20 Kassern
 
25.11.22
09:26
сделайте, как я написал выше. Откройте этот регистр в предприятии и посмотрите как там инфа хранится. Вы можете прямо в предприятии сделать отбор списка и получить нужную строчку. А потом лишь повторить эти действия в конфигураторе.
21 Djonc
 
25.11.22
09:26
Ребята я самоучка, есть необходимость поправить внешнюю форму, вот экстренно и изучаю
22 Kassern
 
25.11.22
09:27
(21) Запросы осилите, дальше будет легче)
23 Dotoshin
 
25.11.22
09:27
(19) Ну а какая разница? У меня вообще как-то на собесе спросили что такое отладчик:))
24 Serg_1960
 
25.11.22
09:27
(9) Если поменять только эту одну строчку - тоже ничего не вернёт. Имхается мне что в УТ оно по другому перечислению работает. Да и что-то мне подсказывает, что владелец контактной информации - тоже нужен :)
25 Dotoshin
 
25.11.22
09:31
(21) Тогда держи https://www.youtube.com/playlist?list=PLkdnTy1CsgR1phYcN8Ts1HD2AugrAVgRd
и успехов тебе в этом нелегком деле
26 Dotoshin
 
25.11.22
09:32
+ (25) Там долго и нудно, но лучше день потерять, потом за 5 минут долететь (с)
27 Djonc
 
25.11.22
09:32
Спасибо! Изучу
28 ass1c
 
25.11.22
09:33
EmailОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ЭтотОбъект.Организация, Справочники.ВидыКонтактнойИнформации.EmailОрганизации, ТекущаяДата(), Истина);
29 Djonc
 
25.11.22
09:43
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (Организация)
30 Serg_1960
 
25.11.22
09:46
УТ нет, есть УПП (что почти одно и тоже :)

АдресЭП = УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(Справочники.Организации.НайтиПоНаименованию("ХХХ"));
31 Serg_1960
 
25.11.22
09:49
"ХХХ" - это наименование организации и оно точно не "АдресЭП" :)
32 Djonc
 
25.11.22
09:56
"ХХХ" сюда наверное не подойдет, необходимо выбирать из выбранной организации. Больше подходит ЭтотОбъект.Организация, но выдает ошибку не находит организацию
33 Dotoshin
 
25.11.22
09:56
Открой регистр контактная информация и посмотри, что и как в нем хранится. Может так легче будет понять, как запрос построить...
34 Serg_1960
 
25.11.22
09:59
(32) Мда... тяжелый случай, я - пас. Объяснять, что вместо "ХХХ" нужно указывать наименование организации или контрагента... нет, я - пас.
35 Ryzeman
 
25.11.22
10:04
36 Dotoshin
 
25.11.22
10:07
Вот здесь конкретно про запросы https://www.youtube.com/watch?v=IN6Zb75OnqU&t=1995s
Может чем-то поможет...
37 Ryzeman
 
25.11.22
10:09
(32) Оно ж по русски написано) Ну чуть чуть включи воображение и представь что может делать метод Справочники.Организации.НайтиПоНаименованию(). Ищет по наименованию ссылку на справочник, внезапно) Значит надо искать по наименованию организации)
38 Serg_1960
 
25.11.22
10:09
39 Dotoshin
 
25.11.22
10:31
(37) Что вы накинулись на человека? Может он там единственный технический специалист, вот его и попросили печатную форму поправить.
Помните была тема про программиста-геодезиста? :) Там тоже человек спрашивал, как в 1с что-то подправить, а потом выяснилось, что он вовсе геодезист :)))
40 Dotoshin
 
25.11.22
10:33
41 Djonc
 
25.11.22
10:38
(39) Спасибо за поддержку, я действительно только месяц как начал править конфигурацию. На специалиста денег не выделяется, приходится совмещать.
Спасибо всем за помощь. Видео уроки обязательно изучу и найду решение
42 Dotoshin
 
25.11.22
10:49
(41) А ты кем там работаешь, если не секрет?
43 Djonc
 
25.11.22
10:51
Менеджер по продажам
44 Djonc
 
25.11.22
10:53
А еще программист станков с ЧПУ и программист оборудования на базе Дельта электроникс.
45 Kesim
 
25.11.22
10:58
(41) практическое пособие разработчика 1с предприятие 8.3 нагугли, и сделай настольной книгой)
46 Мимохожий Однако
 
25.11.22
10:58
ОФФ. "Я еще вышивать могу. И на машинке.."© Кот Матроскин
47 Ryzeman
 
25.11.22
11:14
(40) Не, не видел. Я тогда ещё с 1с не работал) Блин, угарно) Спасибо))
48 Djonc
 
25.11.22
16:41
Столкнулся с новой ошибкой, подскажите, что тут не так?
Нельзя сравнивать поля  неограниченной длины и поля несовместимых типов.
(КонтактнаяИнформация.Объект <<?>>= &Объект)
49 Kassern
 
25.11.22
16:42
(48) Что в &Объект пихаете?
50 Djonc
 
25.11.22
16:44
Запрос.УстановитьПараметр("Объект", Справочники.Организации);
51 Kassern
 
25.11.22
16:54
(50) продолжайте изучение книжки по 1с. У вас не правильное значение параметра
52 Kassern
 
25.11.22
16:56
У вас должна быть ссылка на нужную организацию, а не СправочникМенеджер.Организации
53 Djonc
 
28.11.22
09:17
Заработало по команде-

АдресЭП = УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(СсылкаНаОбъект.Организация);
ОбластьМакета.Параметры.АдресЭП = АдресЭП;
54 Kassern
 
28.11.22
09:22
(53) Хотя бы перейдите по этой функции (F12 по ней) и посмотрите запрос. Сразу будет понятно, что вы делали не так
55 Serg_1960
 
28.11.22
10:13
(54) У автора базовых знаний, имхо, недостаточно, чтобы вот так "сразу станет понятно". Нашёл откуда ссылку на организацию подставить - и то хорошо. Главное работает.

«If it ain’t broke, don’t fix it»(с) - «Работает - не трогай»(с)
56 Djonc
 
28.11.22
17:20
С запросом разобрался. У меня заработал такой вариант.

Запрос = Новый Запрос;
    
    Запрос.УстановитьПараметр("Объект", СсылкаНаОбъект.Организация);
    Запрос.УстановитьПараметр("Тип"   , Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    КонтактнаяИнформация.Представление,
    |    КонтактнаяИнформация.ЗначениеПоУмолчанию
    |ИЗ
    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |    КонтактнаяИнформация.Объект = &Объект
    |    И
    |    КонтактнаяИнформация.Тип = &Тип
    |";
    
    АдресЭП = "";
    ТаблицаЗапроса = Запрос.Выполнить().Выгрузить();
    АдресЭП = ТаблицаЗапроса[0].Представление;
57 Kassern
 
28.11.22
17:23
(56) молодец, разобрался с параметрами.
58 ass1c
 
28.11.22
17:26
(56) Для организации без адреса электронной почты (отсутствие записи в регистре сведений КонтактнаяИнформация):
"Индекс находится за границами массива"
59 Kassern
 
28.11.22
17:27
(58) Пускай это будет сюрпризом)
После начнет проверки в коде делать на пустой запрос, либо пользоваться конструкцией Выборка.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда...
60 ass1c
 
28.11.22
17:30
(59) главное что бы это не был вопрос следующего поста от автора)