1с получить телефон физлица
Преимущества использования консоли запросов в любой задаче Программиста 1С
В 1с Предприятии запустим обработку "Консоль запросов". консоль позволяет конструировать и отлаживать запросы прямо в режиме 1с Предприятие, без Конфигуратора. Это очень полезно. Любые разработки я начинаю с тестирования данных с помощью запросов. Это позволяет решить сразу несколько задач:
- Получить выборки данных по интересующим меня критериям
- Отладить запрос, сделать его рабочим, выполняющим возложенную задачу
- Быть уверенным в работе запроса, что он получает нужные данные от Базы Данных.
- Быть уверенным, что в базе данных нужные данные содержатся. Бывает так, что запрос работает, а данных для него просто нет. Вот такие ситуации сразу отслеживаются.
- После отладки запроса его можно сразу применить в отчете, модуле, в конфигураторе.
Отладка запросов и получение данных в режиме 1с Предприятие
Итак, в консоли запросов я создаю новую строку, запускаю конструктор запросов (в последнее время иногда пишу руками - так проще) и формирую текст запроса. После задания параметров запроса прямо в консоли запросов, его можно выполнить и получить таблицу-результат.
1. Запрос по юридическим и фактическим адресам Контрагентов.jpg В результатах запроса мы видим таблицу с колонками "Контрагент", "Тип", "Вид", "Адрес". |
1.1. Запрос по юридическим и фактическим адресам - Параметры запроса |
Текст запроса ( УБРАЛ параметры, как просили комментаторы статьи ):
2. Запрос по телефонам физических лиц |
2.1. Запрос по телефонам физических лиц - параметры запроса |
Текст запроса ( УБРАЛ параметры, как просили комментаторы статьи ) :
3. Запрос Юр. и Факт. адрес контрагента + телефон |
3.1. Параметры Запроса Юр. и Факт. адрес контрагента + телефон |
Текст запроса ( УБРАЛ параметры, как просили комментаторы статьи ) :
4. Запрос Юр. Факт. Адрес Контрагента + телефон + Почт. Адрес |
Текст запроса ( УБРАЛ параметры, как просили комментаторы статьи) :
Оформление запроса в виде отчета в консоли СКД
После этого запрос можно красиво оформить в виде отчета в Конфигураторе и предоставить в пользование. Чаще всего, я пользуюсь СКД (Система кмпоновки данных), для оформления простых запросов в виде отчетов. Я зашел в конфигуратор, написал простейший отчет на СКД, с использованием запроса, описанного выше.
и какое то поле из регистра (кажется "Представление") и содержит телефон - добавляешь поле в запрос:
ЕСТЬNULL(КонтактнаяИнформация.Представление, ""?"") КАК Телефон,
(3) a_alenkin, а если мне нужно в договор на ДМС там два поля моб тел и домашний тел, кадровики в поле телефон кому что вносили кому домашний кому мобильный, можно же проверку сделать, чтобы он из одного поля в разные столбцы выводил? да - там по уму надо было Максимум значения ставить - чтоб он взял первое не пустое - а так вроде в контактной информации в измерении есть тип - перечисление - а еще вид - ссылка справочника, в котором опять же есть типСобственно, неплохо было бы и конфигурацию указывать - в УТ 11, например контактная информация не в регистре а в табличной части справочников и тогда, например, будет такой запрос:
Запрос=Новый Запрос;
Запрос.Текст ;
Запрос.УстановитьПараметр("Адрес",Перечисления.ТипыКонтактнойИнформации.Адрес);
Запрос.УстановитьПараметр("АдрПоПрописке",Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица);
Запрос.УстановитьПараметр("ВидТелеф",Справочники.ВидыКонтактнойИнформации.ТелефонФизЛица);
Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон);
Результат = Запрос.Выполнить();
Результат = Результат.Выбрать();
Пока Результат.Следующий() Цикл
// обработка
параметром передавать только ссылку на физлицо - чтоб только по нему найти.
и что то много соединений (12) a_alenkin, я хотела только часть использовать в свой добавить телефон
вот так должно работать - подставляешь параметр &Ссылка - ссылка на элемент справочника "Физические лица" - и в любом случае будет выборка из одной строки, правда адрес и телефон в выборке могут быть незаполнены если нет данных в регистре "Контактная информация"
(14) a_alenkin, я пытаюсь уже в свой существующий вставить, там выбираются данные и выводятся в excel (16) a_alenkin, в том что не работает, он мне почему-то в адрес выводит одной строкой а телефон нет( тогда весь изначальный запрос в студию - только через теги CODEнадо два раза соединять с таблицей "Контактная информация"
вот это просто ничего не даст:
Условие просто невыполнимо - Вид контактной информации - либо адрес - либо телефон
(20) a_alenkin, я так сделала, он вопросы выдает в екселе (20) a_alenkin, надо два раза соединять с таблицей "Контактная информация"вот это просто ничего не даст: - не совсем поняла еще один запрос отдельный сделать?
ну вот так то уж должно работать
а вот с Екселем уже надо смотреть код где обрабатывается результат и как он в Ексель пишет (26) a_alenkin, с екселем проблем не было, туда я думаю запишу(26) a_alenkin, : Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
<(35, 40)>: Не задано значение параметра "ВидТелефонФизЛица"
И (КонтактнаяИнформация.Вид = <<?>>&ВидТелефонФизЛица
ВидАдресаРегистрации = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица, может быть это не ВидТелефонфизЛица
(26) a_alenkin, либо вот : Ошибка при вызове метода контекста (Выполнить)Результат = Запрос.Выполнить();
по причине:
<(32, 42)>: Поле не найдено "КонтактнаяИнформация.Объект"
ПО СотрудникиОрганизаций.Физлицо = <<?>>КонтактнаяИнформация.Объект (26) a_alenkin, заработало!! спасибо)))) только теперь он выводит не телефон а район, например если человек живет в селе то выводит район алтайского края (26) a_alenkin, либо вопросы, я сформировала универсальный отчет по регистру сведений, в поле три у те кто проживает в сельской местности в это поле район, а у тех кто в городе номер телефона
элементарно открыть список и посмотреть в каком поле телефон указывается
(32) a_alenkin, он пишет ошибку на строчку ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияАдрес если убераю слово адрес, все хорошо куда нужно выводит но не то (32) a_alenkin, я в 1с не давно программирую, поэтому задаю очень много наверное глупых вопросов)(32) a_alenkin, : Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
<(32, 38)>: Поле не найдено "КонтактнаяИнформация.Объект"
ПО СотрудникиОрганизаций.Физлицо = <<?>>КонтактнаяИнформация.Объект
Рассмотрена подсистема Контактная информация из библиотеки стандартных подсистем (БСП) 3.1.3.
Примеры приведены на конфигурации Управление торговлей 11.4.13.
В пользовательском режиме
Виды контактной информации
Виды контактной информации настраиваются в разделе НСИ и администрирование -> Общие настройки -> Контактная информация -> Виды контактной информации:
Здесь перечислены те объекты, у которых можно добавлять контактную информацию и возможные виды для каждого объекта:
С помощью стрелок можно регулировать последовательность расположения контактной информации:
Также можно создать новый вид контактной информации:
Для каждого вида нужно указать тип контактной информации. Всего есть 7 типов:
- Адрес
- Телефон
- Адрес электронной почты
- Skype
- Веб страница
- Факс
- Другое
Настройки видов контактной информации
Большинство настроек понятны из названия, рассмотрим основные:
Для адреса можно ввести произвольный комментарий, а также показать адрес на гугл или яндекс картах:
Контактную информацию можно выводить в формах списка или в отчетах через поле Ссылка. Для этого нужно выбрать в меню Еще -> Изменить форму и добавить нужную контактную информацию:
В конфигураторе
Получение контактной информации
Для получения контактной информации объекта можно использовать функцию ПредставлениеКонтактнойИнформацииОбъекта из общего модуля УправлениеКонтактнойИнформацией. Данная функция вернет контактную информацию в виде строки:
Очень часто необходимо получать актуальные кадровые данные как для одного сотрудника, так и для списка сотрудников. Конечно же мы можем просто написать свой запрос и получить эти данные, но очень часто, после изменения структуры регистров, запрос перестает работать. Кроме того, для получения некоторых данных необходимо писать большие запросы в несколько сотен строк, особенно если необходимо получить данные для списка сотрудников. Поэтому лучше воспользоваться тем функционалом, который для нас создали разработчики библиотеки стандартных подсистем.
В данной статье рассматриваются только способы получения кадровой информации для сотрудников и физических лиц. Описанным способом можно получить следующую кадровую информацию: кадровые данные сотрудников (дата приема, текущее подразделение, должность, работает сотрудник, находится в отпуске или же на больничном), кадровые данные физических лиц (ФИО, информация о стаже, образовании и т.д.) и данные о начислениях.
Все примеры проверены на конфигурации ЗУП 3.1.10.135, версия 1C БСП 3.0.3.59.
Получение информации для одного сотрудника или физического лица
Рассмотрим получение текущей фамилии для сотрудника Боровой Дмитрий Валентинович. Для наглядности добавим ему в историю изменения ФИО фамилию Бонд и изменим отчество.
Для получения кадровой информации используется общий модуль КадровыйУчет. Для получения кадровых данных физических лиц используется функция КадровыеДанныеФизическихЛиц. Более подробно о принимаемых параметрах вы можете в описании к функции. Для нас важен параметр СписокФизическихЛиц, куда мы передаем ссылку на физическое лицо или массив ссылок на физические лица, параметр КадровыеДанные, в котором указываются те кадровые данные, которые мы хотим получить и параметр ДатаПолученияДанных – дата, на которую мы получаем данные.
Видов кадровых данных, которые мы можем получить, очень много, поэтому мы рассмотрим только несколько из них.
Чтобы узнать какие кадровые данные можно получить с помощью данной функции вы можете обратиться к описанию функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеФизическихЛиц.
Если мы выполним этот код, то получим следующую строку:
Т.е. функция нам вернет фамилию актуальную в период с 30.11.2019 по 01.01.2020. Если же указать дату получения данных не из этого периода, то функция вернет другую фамилию.
Кроме того, у данной функции есть еще один параметр, с помощью которого мы можем накладывать дополнительные отборы – ПоляОтбораПериодическихДанных. В данном параметре указывается коллекция отборов. Для примера мы можем наложить отбор на отчество:
В результате получим строку:
Т.е. мы получили другую фамилию, используя одну и ту же дату.
Для получения кадровых данных сотрудников используется функция КадровыеДанныеСотрудников из того же модуля. И, по аналогии, чтобы узнать список возможных кадровых данных можно посмотреть описание функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеСотрудников.
Для получения кадровой информации по списку сотрудников или списку физлиц можно использовать эти же функции. Только вместо ссылки на физическое лицо в параметр СписокФизическихЛиц передается массив физических лиц, а в параметр СписокСотрудников – массив сотрудников.
Получение информации для списка сотрудников с использованием временных таблиц
Иногда гораздо удобнее не получать данные в промежуточных переменных, а формировать временные таблицы и использовать эти временные таблицы в одном запросе. Для этого мы можем использовать функции СоздатьНаДатуВТКадровыеДанныеСотрудников и СоздатьНаДатуВТКадровыеДанныеФизическихЛиц из общего модуля КадровыйУчет. Данные функции отличаются тем, что не возвращают таблицу кадровых данных, а формируют временную таблицу в менеджере временных таблиц.
Для демонстрации можно использовать данный код.
После выполнения данного кода мы получим таблицу кадровых данных следующего вида:
В данном примере мы сначала подготовили кадровые данные сотрудника и кадровые данные физического лица во временных таблицах, и затем использовали их в одном запросе.
Получение кадровой информации для списка сотрудников на разные даты
Кроме получения кадровых данных на конкретную дату очень часто бывает нужно получить кадровые данные на разные даты. Это бывает нужно, например, в случае печати нескольких документов с разными датами. Когда для каждого документа на разные даты нужно получать отдельную кадровую информацию. Так как в цикле запросы выполнять не хорошо, то нужно сформировать один запрос сразу для всех документов. Для этого можно использовать функции ЗапросВТКадровыеДанныеФизическихЛиц и ЗапросВТКадровыеДанныеСотрудников все из того же общего модуля КадровыйУчет.
Для примера используем все того же сотрудника Борового Дмитрия Валентиновича и его таблицу изменения ФИО.
Чтобы продемонстрировать как работают данные функции подготовим таблицу физических лиц, которая содержит список физических лиц и дат. В нашем примере физическое лицо будет одно, но мы добавим несколько дат:
Во временной таблице будет три строки с разными датами.
Далее формируем описание нашей временной таблицы с физическими лицами:
Если колонка, содержащая ссылки на физические лица, будет называться не ФизическоеЛицо, необходимо указать это в функции ОписаниеВременнойТаблицыОтборовФизическихЛиц в параметре ИмяПоляФизическоеЛицо. Это же касается и колонки, содержащей даты, по умолчанию она должна называться Период.
Далее получим запрос и выполним его, чтобы сформировать временную таблицу, содержащую кадровые данные:
Ну и в конце мы можем использовать эту временную таблицу. В данном примере мы просто выведем ее в таблицу значений.
В результате мы получим следующую таблицу:
Как мы видим, запрос вернул нам актуальную информацию для всех дат указанных в исходной таблице ВТФизическиеЛица.
Читайте также: