1с получить адрес физического лица
Очень часто необходимо получать актуальные кадровые данные как для одного сотрудника, так и для списка сотрудников. Конечно же мы можем просто написать свой запрос и получить эти данные, но очень часто, после изменения структуры регистров, запрос перестает работать. Кроме того, для получения некоторых данных необходимо писать большие запросы в несколько сотен строк, особенно если необходимо получить данные для списка сотрудников. Поэтому лучше воспользоваться тем функционалом, который для нас создали разработчики библиотеки стандартных подсистем.
В данной статье рассматриваются только способы получения кадровой информации для сотрудников и физических лиц. Описанным способом можно получить следующую кадровую информацию: кадровые данные сотрудников (дата приема, текущее подразделение, должность, работает сотрудник, находится в отпуске или же на больничном), кадровые данные физических лиц (ФИО, информация о стаже, образовании и т.д.) и данные о начислениях.
Все примеры проверены на конфигурации ЗУП 3.1.10.135, версия 1C БСП 3.0.3.59.
Получение информации для одного сотрудника или физического лица
Рассмотрим получение текущей фамилии для сотрудника Боровой Дмитрий Валентинович. Для наглядности добавим ему в историю изменения ФИО фамилию Бонд и изменим отчество.
Для получения кадровой информации используется общий модуль КадровыйУчет. Для получения кадровых данных физических лиц используется функция КадровыеДанныеФизическихЛиц. Более подробно о принимаемых параметрах вы можете в описании к функции. Для нас важен параметр СписокФизическихЛиц, куда мы передаем ссылку на физическое лицо или массив ссылок на физические лица, параметр КадровыеДанные, в котором указываются те кадровые данные, которые мы хотим получить и параметр ДатаПолученияДанных – дата, на которую мы получаем данные.
Видов кадровых данных, которые мы можем получить, очень много, поэтому мы рассмотрим только несколько из них.
Чтобы узнать какие кадровые данные можно получить с помощью данной функции вы можете обратиться к описанию функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеФизическихЛиц.
Если мы выполним этот код, то получим следующую строку:
Т.е. функция нам вернет фамилию актуальную в период с 30.11.2019 по 01.01.2020. Если же указать дату получения данных не из этого периода, то функция вернет другую фамилию.
Кроме того, у данной функции есть еще один параметр, с помощью которого мы можем накладывать дополнительные отборы – ПоляОтбораПериодическихДанных. В данном параметре указывается коллекция отборов. Для примера мы можем наложить отбор на отчество:
В результате получим строку:
Т.е. мы получили другую фамилию, используя одну и ту же дату.
Для получения кадровых данных сотрудников используется функция КадровыеДанныеСотрудников из того же модуля. И, по аналогии, чтобы узнать список возможных кадровых данных можно посмотреть описание функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеСотрудников.
Для получения кадровой информации по списку сотрудников или списку физлиц можно использовать эти же функции. Только вместо ссылки на физическое лицо в параметр СписокФизическихЛиц передается массив физических лиц, а в параметр СписокСотрудников – массив сотрудников.
Получение информации для списка сотрудников с использованием временных таблиц
Иногда гораздо удобнее не получать данные в промежуточных переменных, а формировать временные таблицы и использовать эти временные таблицы в одном запросе. Для этого мы можем использовать функции СоздатьНаДатуВТКадровыеДанныеСотрудников и СоздатьНаДатуВТКадровыеДанныеФизическихЛиц из общего модуля КадровыйУчет. Данные функции отличаются тем, что не возвращают таблицу кадровых данных, а формируют временную таблицу в менеджере временных таблиц.
Для демонстрации можно использовать данный код.
После выполнения данного кода мы получим таблицу кадровых данных следующего вида:
В данном примере мы сначала подготовили кадровые данные сотрудника и кадровые данные физического лица во временных таблицах, и затем использовали их в одном запросе.
Получение кадровой информации для списка сотрудников на разные даты
Кроме получения кадровых данных на конкретную дату очень часто бывает нужно получить кадровые данные на разные даты. Это бывает нужно, например, в случае печати нескольких документов с разными датами. Когда для каждого документа на разные даты нужно получать отдельную кадровую информацию. Так как в цикле запросы выполнять не хорошо, то нужно сформировать один запрос сразу для всех документов. Для этого можно использовать функции ЗапросВТКадровыеДанныеФизическихЛиц и ЗапросВТКадровыеДанныеСотрудников все из того же общего модуля КадровыйУчет.
Для примера используем все того же сотрудника Борового Дмитрия Валентиновича и его таблицу изменения ФИО.
Чтобы продемонстрировать как работают данные функции подготовим таблицу физических лиц, которая содержит список физических лиц и дат. В нашем примере физическое лицо будет одно, но мы добавим несколько дат:
Во временной таблице будет три строки с разными датами.
Далее формируем описание нашей временной таблицы с физическими лицами:
Если колонка, содержащая ссылки на физические лица, будет называться не ФизическоеЛицо, необходимо указать это в функции ОписаниеВременнойТаблицыОтборовФизическихЛиц в параметре ИмяПоляФизическоеЛицо. Это же касается и колонки, содержащей даты, по умолчанию она должна называться Период.
Далее получим запрос и выполним его, чтобы сформировать временную таблицу, содержащую кадровые данные:
Ну и в конце мы можем использовать эту временную таблицу. В данном примере мы просто выведем ее в таблицу значений.
В результате мы получим следующую таблицу:
Как мы видим, запрос вернул нам актуальную информацию для всех дат указанных в исходной таблице ВТФизическиеЛица.
Всем привет! Данный материал посвящен описанию базовых возможностей работы с контактной информацией в конфигурациях, содержащих "Библиотеку стандартных подсистем" (БСП). Данная статья будет полезна для разработчиков, программистов и всех тех, кто решился не придумывать свои "разработки - велосипеды" для работы с контактной информацией, а взять уже готовое. Статья призвана экономить ваше время и повысить эффективность разработки.
Итак, перехожу к разделу получения контактной информации объектов с помощью БСП:
Получение контактной информации объектов
Чтобы получить полную контактную информацию контрагента, организации, партнера можно воспользоваться функцией:
КонтактнаяИнформацияОбъекта(СсылкаИлиОбъект, ВидКонтактнойИнформации = Неопределено, Дата = Неопределено, ТолькоПредставление = Истина) Экспорт
В данном примере, получаем полную контактную информацию на текущую дату. При установленном параметре ложь, будет возвращаться ТаблицаЗначений со всей контактной информацией.
В следующем примере вернем фактический адрес контрагента строкой:
Так же существует схожая функция, производящая получение контактной информации для нескольких ссылок или объектов одновременно:
Функция КонтактнаяИнформацияОбъектов(СсылкиИлиОбъекты, Знач ТипыКонтактнойИнформации = Неопределено, Знач ВидыКонтактнойИнформации = Неопределено, Дата = Неопределено) Экспорт
В данной функции ТипыКонтактнойИнформации и ВидыКонтактнойИнформации - массивы, содержащие необходимые типы и виды контактной информации. Функция возвращает таблицу значений по "фильтру" входящих параметров.
Пример использования такой:
Вышеперечисленные функции можно использовать в связке с "индивидуальными" функциями конфигураций по получению информации об организации и контрагентах. Частично об "индивидуальных" функциях я изложил материал вот здесь .
Теперь, давайте посмотрим немного глубже в результаты вышеуказанных функций. Строка возвращаемой таблицы значений выглядит вот так:
Рис.1. Строка таблицы значений контактной информации.
Обратим внимание на колонку Значение - это строка в формате json, выглядит она вот так:
Рис.2. Формат json в колонке Значение.
Сейчас, я хочу преобразовать эту json-строку в структуру для дальнейшего использования. Сделаю это стандартными методами БСП, воспользуюсь функцией:
Функция СтрокуJSONВСтруктуру(Значение) Экспорт
Доработанный код будет выглядеть вот так:
Переменная ААА - содержит структуру по входящей строке json. Выглядит это вот так:
Рис.3. Преобразованная json в структуру.
Здесь, я ничего не придумываю, использую только типовые функции и процедуры БСП и получаю требуемую контактную информацию "по полям" в удобном виде.
Пожалуй, с базовыми вариантами получения контактной информации мы разобрались - можем смело применять. Теперь, перейдем к разделу преобразование контактной информации объектов в разные форматы.
Преобразование контактной информации объектов
В данном разделе рассмотрим несколько полезных функций, позволяющих стандартно конвертировать контактную информацию в разные форматы - xml, json.
Сначала рассмотрим функцию, которая позволяет получить контактную информацию в формате xml
Функция КонтактнаяИнформацияВXML(Знач ЗначенияПолей, Знач Представление = "", Знач ОжидаемыйВид = Неопределено) Экспорт
В качестве входящего параметра ЗначенияПолей, я обычно передаю структуру по заполненным ключам. Представление я не заполняю, а в качестве ожидаемого вида - перечисление с типом контактной информации.
Рассмотрим пример работы с данной функцией, предварительно доработав предыдущий пример:
В качестве результата в переменную ККК возвращается XML-структура, согласно схемы пакетов КонтактнаяИнформация или Адрес.
Рис.4. Преобразованная структура в XML-строку.
Еще один пример с телефоном:
В переменную ТелефонXML возвращается XML строка вот такого содержания:
Рис.5. XML-строка с типом "Номер телефона".
Преобразование структуры "телефона" идет по такой типовой схеме:
Теперь, преобразуем полученную строку XML в строку JSON, доработаем код процедуры:
Полученный ТелефонJSON такой:
Рис.6. JSON-строка с типом "Номер телефона".
Его так же можно преобразовать в структуру с помощью вышеуказанной функции
Функция СтрокуJSONВСтруктуру(Значение) Экспорт
Так, базовые вещи с преобразованием контактной информации я описал. Теперь, переходим к разделу записи контактной информации объектов.
Запись контактной информации объектов
В данном разделе я рассмотрю базовую процедуру добавления контактной информации по ссылке
Процедура ДобавитьКонтактнуюИнформацию(СсылкаИлиОбъект, ЗначениеИлиПредставление, ВидКонтактнойИнформации, Дата = Неопределено, Замещать = Истина) Экспорт
Доработаем наш пример:
Данным кодом мы добавляем нужный нам телефон (Истина - замещает, Ложь - добавляет второй телефон). ТелефонJSON - ранее сформированная нами строка-json. Выглядит это вот так:
Рис.7. Результат добавления "Номера телефона" в карточку контрагента с помощью возможностей БСП.
В данном примере номер телефона "красиво разложен" по полям. Хорошо, переходим к заключению.
Заключение
В данной статье, я постарался обозначить основные правила и методы работы с контактной информацией в рамках библиотеки стандартных подсистем конфигурации. Я описал чтение, преобразование и запись контактной информации объектов.
Надеюсь, что данная информация будем вам полезна, применение данных стандартных методов позволит вам экономить ваше время на разработку ваших решений.
Примеры данной статьи я реализовывал на Платформе 1с 8.3.17.1549, конфигурации Розница 2.3.5 с включенной БСП 3.1.2.457.
Если вам интересен мой практический подход и информация, которую вы сможете реально использовать, если у вас есть желание, чтобы данный комплекс статей наполнялся практическими материалы для программистов - я не откажусь от поддержки как данной статьи, так и всего комплекса статей в целом.
Всем спасибо за прочтение, до новых встреч!
Предыдущие материалы
Так же, я прошу посмотреть мои предыдущие статьи, посвященные базовым возможностям типовых конфигураций:
Эта статья — шпаргалка об архитектуре и использовании «Контактная информация» из инструментария разработчика 1С:БСП (Библиотека стандартных подсистем). По моему мнению, основная задача этой подсистемы организовать простой с точки зрения заполнения и обмена, единый подход к управлению контактной информацией. Хотел бы обратить внимание, что подсистема очень хорошо и подробно описана на сайте ИТС.
Архитектура
В справочник или документ, который предполагает наличие контактной информации добавляется одноименная табличная часть. Поле «Тип» перечисление, которое может принимать следующие значения:
Поле «Вид» реквизит типа справочник «Виды контактной информации». Реквизит «ЗначенияПолей» — это строка, которая содержит XML, сформированный по схеме XDTO, реквизит «Значение» — это строка во внутреннем формате JSON. Как правило для всех типов документов есть предопределенные элементы. Все поля схемы XDTO (кроме составных) являются либо целыми либо строками, проверки на тип и корректность должны быть реализованы на уровне кода.
Такая структура довольна универсальна, хорошо подходит для обмена, но за счет вложенности сделать запрос вида: контрагенты с одинаковым номером дома становится сложнее, а скорость поиска увеличивается. Для решения такой задачи можно обратится к функции «АдресПоИдентификатору» общего модуля «РаботаСАдресами».
А также для работы с контактной информацией предусмотрено много функций в общих модулях БСП, например, функция общего модуля «УправлениеКонтактнойИнформацией»:
Для редактирования контактной информации используется обработка РасширенныйВводКонтактнойИнформации и ВводКонтактнойИнформации, для разбора записи используется функция из общего модуля БСП «УправлениеКонтактнойИнформациейСлужебный»
Пример возвращаемой структуры:
При преобразовании контактной информации в XDTO «АдресныйКлассификаторСлужебный» функция «ТипыОбъектовАдресацииАдресаРФ» преобразует Типы элементов адреса, уточняющих
местоположение адресуемого объекта (ДопАдрЭл) согласно Приказу от 31.08.2011 № ММВ-7-1/525.
Это не ошибка, для полей с названиями Адрес по прописке и Адрес места проживания адреса выводятся в таком формате во всех базах. Чтобы получить нормальное визуальное представление адреса, необходимо выбирать поле с названием адреса с припиской «представление». Например, Адрес по прописке представление и Адрес места проживания представление .
Для того, чтобы вывести в отчете данные поля (например, поле Адрес места проживания представление ) откроем настройки отчета по команде Еще – Прочее – Изменить вариант отчета .
Перейдем на вкладку Поля и в списке Доступных полей откроем группу Личные данные .
Найдем в ней и раскроем подгруппу Контактная информация и перенесем поле Адрес места проживания представление в список Выбранных полей (щелкнув два раза левой клавишей мыши по полю).
С помощью синих стрелок переместим добавленное поле в нужную позицию.
Для того, чтобы выводилось «красивое» название поля выделим поле и в контекстном меню (вызывается правой клавишей мыши) выберем команду Установить заголовок .
Введем необходимое название для поля.
В итоге адрес места проживания в отчете будет выводится в читаемом виде под «красивым» заголовком.
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Для формирования собственного отчета в 1С используется Универсальный отчет: раздел Отчеты — Стандартные отчеты — Универсальный отчет .
Заполнение шапки отчета
В шапке отчета укажите:
- Регистр сведений — тип источника данных, т. е. какой объект анализируется;
- Документы физических лиц — отчет будет формироваться по регистру документов физлиц;
- Срез последних — при формировании отчета будут браться только актуальные данные.
Настройка отчета
Откройте настройку отчета по кнопке Настройки . Выберите Вид — Расширенный.
Для отчета Данные по физлицам заполним вкладки:
Вкладка Поля и сортировки
На вкладке Поля и сортировки в окне Поля дополнительно к выставленным по умолчанию показателям по кнопке Добавить установите следующие показатели:
Аналогично добавьте данные:
Для удобства вывода информации сгруппируйте поля по команде Сгруппировать .
- Заголовок — произвольное наименование группы;
- Расположение — одно из указанных:
- Авто;
- Вертикально;
- Горизонтально;
- Вместе;
- Отдельная колонка.
Сгруппируйте данные физических лиц в папки:
Используя стрелки «вверх» и «вниз», расположите поля в указанном на рисунке порядке следования, оставив флажки только на следующих показателях:
В окне Сортировки по кнопке Добавить укажите порядок упорядочивания данных в отчете:
Заполненная вкладка Поля и сортировки выглядит следующим образом.
Вкладка Оформление
Для изменения отображения в заголовках составной информации, настроим вкладку Оформление по кнопке Добавить для полей:
Настройка вкладки Оформление делает отчет более «красивым», но не является обязательной для использования.
Заполненная вкладка Оформление .
Вкладка Структура
Исходная структура отчета содержит стандартную настройку по выбранному регистру. Для построения собственной структуры отчета удалите настройку, заданную по умолчанию, по кнопке Удалить .
По кнопке Добавить задайте группируемые поля, как показано на рисунке.
Формирование отчета
По кнопке Сформировать отчет будет построен по заданной настройками форме.
Чтобы каждый раз не пришлось настраивать отчет сначала, БухЭксперт8 советует сохранить настройки отчета в 1С по кнопке Сохранить вариант отчета .
После ввода наименования настройки, например, Данные по физлицам, нам не придется каждый раз настраивать отчет заново. По кнопке Выбрать настройки достаточно обратиться к сохраненной настройке.
Настройки можно выгрузить или передать по почте. Подробнее:
Настройку Универсального отчета можно загрузить на другие компьютеры и базы данных по кнопке ЕЩЕ — Прочее — Изменить вариант отчета . Для этого в открывшейся форме настроек выберите команду Загрузить настройки : кнопка ЕЩЕ — Загрузить настройки .
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Читайте также: