Получение контактной информации из отбора

25.09.25

Задачи пользователя - Адаптация типовых решений

Универсальная функция получения контактной информации из отбора компоновки данных. Весь код в статье.

Понадобилось тут при создании рассылки отчетов получить электронные адреса из включенного пользователем отбора. Набросал универсальную функцию для конфигураций, основанных на БСП. Листинг функции с комментариями прилагаю.

Все действия выполняются на сервере. Версия БСП при тестировании 3.1.5. Ваша конфигурация должна включать в себя стандартную подсистему "Контактная информация" (СтандартныеПодсистемы.КонтактнаяИнформация).

На вход подается коллекция элементов отбора КД (обязательно), тип и вид КИ (если необходимо получить только определенные виды контактной информации) и дата (для объектов, хранящих историю КИ).

На выходе получаем таблицу значений,  повторяющую структуру типовой функции БСП, с полями:

  • Вид
  • Дата
  • Значение
  • ЗначенияПолей
  • ИдентификаторСтрокиТабличнойЧасти
  • НомерСтроки
  • Объект
  • Представление
  • Тип.

Если на входе не было объектов, способных хранить КИ, возвращается Неопределено.

 

Пример вызова

Отбор = КомпоновщикНастроек.ПолучитьНастройки().Отбор;
КонтактнаяИнформация = КонтактнаяИнформацияОбъектовИзОтбора(
		Отбор.Элементы,
		Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);

 

// Возвращает таблицу, содержащую контактную информацию нескольких объектов. 
//
// Параметры:
//  Отбор					 - КоллекцияЭлементовОтбораКомпоновкиДанных	 - элементы отбора
//  ТипКонтактнойИнформации	 - Массив, ПеречислениеСсылка.ТипыКонтактнойИнформации	 - Если указаны, то будет получена
//								контактная информация только этих типов.
//  ВидКонтактнойИнформации	 - Массив, СправочникСсылка.ВидыКонтактнойИнформации	 - Если указаны, то будет возвращена
//								контактная информация только этих видов контактной информации.
//  Дата                     - Дата   - необязательный, дата с которой действует запись контактной информации,
//                              используется при хранении истории изменения контактной информации.
//                              Если владелец хранит историю изменений, то при несоответствии параметра
//                              дате будет вызвано исключение.
// 
// Возвращаемое значение:
//  ТаблицаЗначений, Неопределено - возвращает Неопределено, если контакты не могут иметь КИ
//
Функция КонтактнаяИнформацияОбъектовИзОтбора(Отбор, ТипКонтактнойИнформации = Неопределено, ВидКонтактнойИнформации = Неопределено, Дата = '00010101') Экспорт
	
	// Подготовим массив с типами объектов, поддерживающих работу с КИ
	ТипыОбъектов = Новый Массив;
	Для Каждого Объект Из УправлениеКонтактнойИнформациейСлужебный.ОбъектыСодержащиеКонтактнуюИнформацию() Цикл
		ТипыОбъектов.Добавить(ТипЗнч(Объект));
	КонецЦикла;
	
	// Соберем ссылки из отбора
	Контакты = Новый Массив;
	ПолучитьКонтактыИзОтбораСлужебный(Отбор, Контакты, ТипыОбъектов);
	
	// При наличии ссылок можем получить КИ
	Если Контакты.Количество() > 0 Тогда
		Если Не ЗначениеЗаполнено(Дата) Тогда
			Дата = ТекущаяДатаСеанса();
		КонецЕсли;
		Возврат УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(Контакты, ТипКонтактнойИнформации, ВидКонтактнойИнформации, Дата);
	КонецЕсли;
	
	Возврат Неопределено;
	
КонецФункции

Функция ПолучитьКонтактыИзОтбораСлужебный(Отбор, Контакты = Неопределено, ТипыОбъектов = Неопределено)
	
	Для Каждого Элемент Из Отбор Цикл
		
		Если Не Элемент.Использование Тогда
			// Отключённые отборы пропускаем
			
		ИначеЕсли ТипЗнч(Элемент) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
			// Преобразуем значение отбора в массив и добавляем к контактам, если у объекта может быть КИ
			Объекты = ?(ТипЗнч(Элемент.ПравоеЗначение) = Тип("СписокЗначений"), Элемент.ПравоеЗначение.ВыгрузитьЗначения(), ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Элемент.ПравоеЗначение));
			Для Каждого Объект Из Объекты Цикл
				Если ТипыОбъектов.Найти(ТипЗнч(Объект)) <> Неопределено Тогда
					Контакты.Добавить(Объект);
				КонецЕсли;
			КонецЦикла;
			
		ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
			// рекурсивно обходим группу
			ПолучитьКонтактыИзОтбораСлужебный(Элемент.Элементы, Контакты, ТипыОбъектов);
			
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Контакты;
	
КонецФункции

 

 

На тему БСП и смежные темы см. также публикации:

Сохранение настроек в базах на БСП без доработки конфигурации

СКД. Использование Менеджера временных таблиц в системе компоновки

Вступайте в нашу телеграмм-группу Инфостарт

БСП КИ контактная информация

См. также

Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

32330 руб.

29.06.2023    11355    34    15    

41

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

5500 руб.

07.02.2023    12181    114    20    

70

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    6533    2    2    

6

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

3254 руб.

21.11.2024    11947    46    24    

52

Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    850    1    8    

2

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.

9760 руб.

17.06.2025    2747    8    0    

8

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.

9150 руб.

02.08.2023    7621    25    5    

41

Адаптация типовых решений 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    919    1    0    

1
Для отправки сообщения требуется регистрация/авторизация