8.х ВПФ, Получить контактную информацию пользователя

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем John911, 4 фев 2010.

  1. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Создал внешнюю печатную форму в которой необходимо вывести имя пользователя и некоторую контактную информацию (телефон, e-mail).
    Пользователя я получаю легко, буквально так:
    Пользак = ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнойОтветственный");

    А вот с мылом и телефоном возникла проблема. Если кто сталкивался, помогите пожалуйста или :unsure: За ранее спасибо.
  2. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Может есть и встроенная функция. Стоит поискать, а так:
    Код:
    	Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Объект", Пользак);	
    Запрос.Текст = 
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |	КонтактнаяИнформация.Представление,
    |	КонтактнаяИнформация.Тип,
    |	КонтактнаяИнформация.Вид
    |ИЗ
    |	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |	КонтактнаяИнформация.Объект = &Объект";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
    Сообщить("" + Выборка.Тип + " " + Выборка.Вид + " " + Выборка.Представление);
    КонецЦикла;
    
  3. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Спасибо. Попробую, о результате сообщу :)
  4. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Не получается. Судя по отладчику в переменной "Сообщить" пусто, такое ощущение, что или запрос не срабатывает либо туда не поподают данные по причине отсутствия (хотя я туда подставлял) или по причине несовместимости. Но совместимость отпадает т.к. ошибки при выполнении не возникает.
    Попутно вопрос, а может подставленные мной данные попадают в регистр? Если да то как мне их от туда извлечь?

    В общем суть дела: На картинке мы видим пользователя и физическое лицо которое является данным пользователем, так вот как мне получить контактные сведения этого физ.лица или как вариант контактные сведения заполненные на вкладке "Адреса и телефоны" ???

    Вложения:

  5. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    А-а-а-а-а-а-а, братцы и сестрицы, выручайте. Подскажите хоть что нибудь по моему случаю или поправьте если что я недопонял.
  6. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Вот тебе внешняя обработочка. Там всего навсего одна процедура, которую я тебе написал.

    Вложения:

  7. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Вы не указали конфигурацию с которой работаете.
    Если это УТ тогда воспользуйтесь отчетом "Отчет о контактной информации", который позволяет получить контактную информацию: организации, контрагентов, пользователи, контактные лица, физические лица, контактные лица контрагентов, личные контакты.
    Возьмите отчёт за основу, и на основании отчёта напишите то что хотите, используя типовые функции, не надо изобретать велосипеды.
    Если конфигурация не УТ, тогда отпишитесь, найду подходящее типовое решенгие.
    Удачи!
  8. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Конфа УПП, буду благодарен за любые наметки.
  9. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Я посмотрел, да таким образом работает и я конечно допустил одну оплошность не создал реквизита с именем "Объект", но у меня есть один нюанс, я не использую форм, т.е. обработка содержит только печатную форму, а вывожу я все используя макет. В приведенном примере "Сообщить" прекрасно выводит в табло сообщений, я хотел знать как мне это присвоить переменной для дальнейшего использования и не выводить в табло сообщений?

    Еще я пробовал переменной присвоить представление и таки получил желаемое но не в полном объеме т.е. в задачу входит присвоение отдельной переменной адреса, отдельно телефона и т.д.

    Прошу извинить меня за назойливость, просто на 8-ку пересел после длительного перерыва с 7-ки, чувствую себя - :unsure:
  10. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    В УПП редакции 1.2.26 есть отчёт с аналогичным названием, используйте его запрос для получения нужных Вам данных.
  11. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    У меня, Управление производственным предприятием, редакция 1.2 (1.2.4.1). Как называется тот отчет? Его надо найти, если он конечно у меня есть. Обновиться пока не могу т.к. еще не знаю всех изменений внесенных "внедренцами", да еще по договоренности без обследования предприятия, без проектной документации и без приемо-сдаточной документации. По принципу, мы вам навертели, а вы расхлебывайте сами.
  12. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    "Отчет о контактной информации"
  13. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    mialord, Ок посмотрю, хотя берет меня смутное сомнение что это больше к контрагентам имеет отношение чем к Пользователям или Физ.лицам.
  14. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Stack_G, используя запрос получилось только использовать последнее значение "Представление".

    Код:
    Пока Выборка.Следующий() Цикл
    Сообщить("" + Выборка.Тип + " " + Выборка.Вид + " " + Выборка.Представление);
    Если Выборка.Тип = "Телефон" Тогда
    Тело = Выборка.Представление;
    Если Выборка.Тип = "E-Mail" Тогда
    Мыло = Выборка.Представление;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    
    Пробовал так, все равно в результате вижу только последнее "представление".
  15. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    ну во первых всетаки так логичнее:
    Код:
    Пока Выборка.Следующий() Цикл
    Сообщить("" + Выборка.Тип + " " + Выборка.Вид + " " + Выборка.Представление);
    Если Выборка.Тип = "Телефон" Тогда
    Тело = Выборка.Представление;
    ИначеЕсли Выборка.Тип = "E-Mail" Тогда
    Мыло = Выборка.Представление;
    КонецЕсли;
    КонецЦикла;
    
    А какое еще представление кроме последнего Вы хотите получить? Регистр то не периодический.

    ЗЫ Выборка.Тип это не строковый параметр, а перечисление :)
  16. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Попробуй этот запрос:
    Код:
    ВЫБРАТЬ
    КонтактнаяИнформация.Представление,
    КонтактнаяИнформация.Объект
    ПОМЕСТИТЬ ПерваяИнформация
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/и')">	И КонтактнаяИнформация.Тип = &ПервыйТип;</span>
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    КонтактнаяИнформация.Представление,
    КонтактнаяИнформация.Объект
    ПОМЕСТИТЬ ВтораяИнформация
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/и')">	И КонтактнаяИнформация.Тип = &ВторойТип;</span>
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВтораяИнформация.Представление КАК Первая,
    ПерваяИнформация.Представление КАК Вторая
    ИЗ
    ВтораяИнформация КАК ВтораяИнформация
    ПОЛНОЕ СОЕДИНЕНИЕ ПерваяИнформация КАК ПерваяИнформация
    ПО ВтораяИнформация.Объект = ПерваяИнформация.Объект
    
  17. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Мне не надо ИЛИ, мне надо И. Т.е. надо в процессе выполнения цикла представление присвоить и переменной "Тело" и переменной "Мыло", естественно в каждую переменную должно быть записано свое представление. :unsure:

    Прокомментируй пожалуйста, что данный запрос даст? Позволит ли каждое представление записать в отдельную переменную?
  18. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Я поступил подобным образом:
    Код:
        Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Объект", Пользак);
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    КонтактнаяИнформация.Представление,
    |    КонтактнаяИнформация.Тип,
    |    КонтактнаяИнформация.Вид
    |ИЗ
    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |    КонтактнаяИнформация.Объект = &Объект";
    
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    Тело = Выборка.Представление;
    Выборка.Следующий();
    Мыло = Выборка.Представление;
    
    
    
    
    И получил желаемое, но это смешно, т.е. так не должно быть, т.к. любое новое значение внесенное в справочник может записаться вместо ожидаемого.
  19. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Вот так всегда, хотят решение, а делать ничего не хотят. Изобретают тут велосипеды.
    Если у Вас УПП, то Вамнадо собирать данные не пользователей, а физических лиц. Вот типовой запрос

    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    КонтактнаяИнформация.ОбъектВнутр        КАК Объект,
    КонтактнаяИнформация.ВидВнутр           КАК Вид,
    КонтактнаяИнформация.ТипВнутр           КАК Тип,
    КонтактнаяИнформация.ПредставлениеВнутр КАК Представление
    {ВЫБРАТЬ
    КонтактнаяИнформация.ОбъектВнутр.*      КАК Объект
    
    }
    
    ИЗ
    (ВЫБРАТЬ
    ВЫРАЗИТЬ(КонтактнаяИнформацияВнутр.Объект КАК Справочник.ФизическиеЛица) КАК ОбъектВнутр,
    КонтактнаяИнформацияВнутр.Вид           КАК ВидВнутр,
    КонтактнаяИнформацияВнутр.Тип           КАК ТипВнутр,
    ВЫРАЗИТЬ(КонтактнаяИнформацияВнутр.Представление КАК СТРОКА(1000)) КАК ПредставлениеВнутр
    
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияВнутр
    
    ГДЕ
    
    КонтактнаяИнформацияВнутр.Объект ССЫЛКА Справочник.ФизическиеЛица
    И
    ((&ОбрабатыватьПерсональныеВидыКИ = Истина И (ВЫРАЗИТЬ (КонтактнаяИнформацияВнутр.Вид КАК СТРОКА) ПОДОБНО &ВыбСтрокаВида))
    ИЛИ
    КонтактнаяИнформацияВнутр.Вид В (&СписокВидовКИ))
    
    {ГДЕ
    Объект.* КАК Объект}
    
    ) КАК КонтактнаяИнформация
    
    {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК Категории0
    ПО Категории0.Объект = КонтактнаяИнформация.ОбъектВнутр
    И  Категории0.Категория В (&ПараметрКатегории0)}
    
    {ГДЕ
    КонтактнаяИнформация.ОбъектВнутр.* КАК Объект
    
    ,
    ЕСТЬNULL(Категории0.Категория, КонтактнаяИнформация.ОбъектВнутр) КАК Категории0Категория
    }
    
    {УПОРЯДОЧИТЬ ПО
    КонтактнаяИнформация.ОбъектВнутр.* КАК Объект
    
    }
    ИТОГИ ПО
    Вид
    {ИТОГИ ПО
    КонтактнаяИнформация.ОбъектВнутр.* КАК Объект
    }
    
    
    а лучше всего, скопируйте код, и можете сделать вывод любой контактной информации о любых объектах базы данных используя построитель отчёта для формирования текста запроса.
    Удачи!
  20. TopicStarter Overlay
    John911
    Offline

    John911

    Регистрация:
    15 дек 2009
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Тут не совсем велосипед. Мне нужно получить контактные данные имея в распоряжении только пользователя. Можно конечно связать его с физ.лицом и получить данные уже у физ.лица, но как это сделать пока не представляю. В вопросе написания я сильно отстал т.к. перерыв был приличный, когда перестал писать в семерке, то о восьмерке даже речи не было :) и многое я уже забыл за этот промежуток. Прошу сильно не пинать. Буду рад кускам кода с пояснениями что-зачем :)
    Заранее спасибо.

Поделиться этой страницей