БСП, обновление контактной информации на форме программно

28.04.26

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

Задача: На клиенте формы элемента получен массив структур, содержащих сведения о контактной информации. Состав ключей структур массива идентичен составу реквизитов табличной части «КонтактнаяИнформация» объекта. Нужно отобразить данные массива структур с контактной информацией на форме элемента без закрытия формы элемента.

Дано:

БСП 3.1.11.461 и корректно интегрированная подсистема «УправлениеКонтактнойИнформацией».

 

Решения:

Решение №1.

Поиск «в лоб» приводит к варианту, когда необходимо провести корректное перезаполнение программно создаваемой на форме элемента алгоритмами БСП коллекции «КонтактнаяИнформацияОписаниеДополнительныхРеквизитов». Хорошее описание данного подхода можно посмотреть тут: https://infoblog.mywebguide.ru/articles/page_000133.html?ysclid=mogr43o4wc571334297

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

Решение №2.

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

  1. Наполнить коллекцию объекта «КонтактнаяИнформация» импортируемыми сведениями:
Объект.КонтактнаяИнформация.Очистить();
Для каждого мКонтакт из МассивСтруктур цикл
    НСТР = Объект.КонтактнаяИнформация.Добавить();
    ЗаполнитьЗначенияСвойств(НСТР, мКонтакт);
КонецЦикла;

 

  1. Отсортировать полученный набор по Виду контактной информации:
Объект.КонтактнаяИнформация.Сортировать("Вид");

 

  1. Удалить все программно созданные БСП реквизиты:
ВсеРеквизиты = ЭтотОбъект.ПолучитьРеквизиты();
УдаляемыеРеквизиты = Новый Массив;  
Для каждого мРеквизит из ВсеРеквизиты цикл
    Если СтрНайти(мРеквизит.Имя, "КонтактнаяИнформация") = 0 тогда
        Продолжить;
    КонецЕсли;       
    УдаляемыеРеквизиты.Добавить(мРеквизит.Имя);
КонецЦикла;   
ЭтотОбъект.ИзменитьРеквизиты(, УдаляемыеРеквизиты);

 

  1. Удалить все программно созданные БСП группы контактной информации:
ЭтотОбъект.Элементы.Удалить(ЭтотОбъект.Элементы["#НаименованиеВашейГруппыДляКИНаФормеЭлемента#"].ПодчиненныеЭлементы[0]);

 

  1. Удалить все программно созданные БСП команды управления контактной информацией:
УдаляемыеКоманды = Новый Массив;
Для каждого мКоманда из ЭтотОбъект.Команды цикл
    Если СтрНайти(мКоманда.Имя, "КонтактнаяИнформация") = 0 тогда
        Продолжить;
    КонецЕсли;       
    УдаляемыеКоманды.Добавить(мКоманда);
КонецЦикла;   
Для каждого мКоманда из УдаляемыеКоманды цикл
    ЭтотОбъект.Команды.Удалить(мКоманда);
КонецЦикла;

               

  1. Вызвать процедуру БСП, которая заново наполнит форму элемента и отобразит контактную информацию на форме:

               

// СтандартныеПодсистемы.КонтактнаяИнформация
ДополнительныеПараметры = УправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации();
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", ["#НаименованиеВашейГруппыДляКИНаФормеЭлемента#");
УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, ДополнительныеПараметры);

 

 

Весь код в сборе:

&НаКлиенте
Процедура КонтактнаяИнформацияЗаполнениеНаКлиенте(МассивСтруктур)       

    Объект.КонтактнаяИнформация.Очистить();
    Для каждого мКонтакт из МассивСтруктур цикл
        НСТР = Объект.КонтактнаяИнформация.Добавить();
        ЗаполнитьЗначенияСвойств(НСТР, мКонтакт);                                              
    КонецЦикла;
    Объект.КонтактнаяИнформация.Сортировать("Вид");
    КонтактнаяИнформацияЗаполнениеНаСервере();

КонецПроцедуры

&НаСервере
Процедура КонтактнаяИнформацияЗаполнениеНаСервере()

    ВсеРеквизиты = ЭтотОбъект.ПолучитьРеквизиты();
    УдаляемыеРеквизиты = Новый Массив; 
    Для каждого мРеквизит из ВсеРеквизиты цикл
        Если СтрНайти(мРеквизит.Имя, "КонтактнаяИнформация") = 0 тогда
            Продолжить;
        КонецЕсли;       
        УдаляемыеРеквизиты.Добавить(мРеквизит.Имя);
    КонецЦикла;   
    ЭтотОбъект.ИзменитьРеквизиты(, УдаляемыеРеквизиты);
    ЭтотОбъект.Элементы.Удалить(ЭтотОбъект.Элементы["#НаименованиеВашейГруппыДляКИНаФормеЭлемента#"].ПодчиненныеЭлементы[0]);
    УдаляемыеКоманды = Новый Массив;
    Для каждого мКоманда из ЭтотОбъект.Команды цикл
        Если СтрНайти(мКоманда.Имя, "КонтактнаяИнформация") = 0 тогда
            Продолжить;
        КонецЕсли;       
        УдаляемыеКоманды.Добавить(мКоманда);
    КонецЦикла;   
    Для каждого мКоманда из УдаляемыеКоманды цикл
        ЭтотОбъект.Команды.Удалить(мКоманда);
    КонецЦикла;
    // СтандартныеПодсистемы.КонтактнаяИнформация
    ДополнительныеПараметры = УправлениеКонтактнойИнформацией.ПараметрыКонтактнойИнформации();
    ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "#НаименованиеВашейГруппыДляКИНаФормеЭлемента#");
    УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, ДополнительныеПараметры);

КонецПроцедуры

 

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

БСП УправлениеКонтактнойИнформацией Контактная информация

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

3254 руб.

21.11.2024    12791    46    24    

52

БСП (Библиотека стандартных подсистем) Универсальные функции Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Когда появляется необходимость сделать подключаемую внешнюю обработку, будь это печатная форма или отчет - нам всегда приходится прописывать сведения о внешней обработке для подключения их в соответствующий справочник. И это занимает некоторое время, что не очень удобно. Как для себя, так и для вас - я подготовил ряд примеров использования этой функции, можете выбрать один из них, чтобы в дальнейшем использовать их в шаблонах текста. Комментарии по дополнению и исправлению статьи - приветствуются.

06.02.2026    8025    manul1c    6    

23

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Использование Библиотеки стандартных подсистем позволяет разработчикам 1С значительно ускорить процесс создания решений за счет готового универсального кода, поддерживаемого и обновляемого официальным вендором. В статье рассказывается про роль и применение «Библиотеки стандартных подсистем» (БСП), примеры интеграции и подключения подсистем.

23.09.2025    12130    AlexeyPROSTO_1C    1    

18

БСП (Библиотека стандартных подсистем) Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Уже заезженная тема с выводом в Word макетов при помощи БСП, но некоторые коллеги все равно спрашивают. Поэтому размещаю тут материал, как это сделать за три простых шага. Решение, которым я успешно пользуюсь в случаях, когда не нужна универсальность подключаемых внешних печатных форм.

16.09.2025    6111    _seerco2002    0    

34

Нейросети БСП (Библиотека стандартных подсистем) Инструментарий разработчика Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Telegram-бот для разработчиков 1С, работающих с БСП. Если не знаете нужный под задачу метод или не помните название, то опишите боту задачу и получите список подходящих экспортных методов из общих модулей БСП.

02.09.2025    7302    krasnov322    25    

43

Анализ учета БСП (Библиотека стандартных подсистем) 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Расширение для конфигураций на базе БСП 3.х. Позволяет создавать новые отчеты путем соединения или объединения других отчетов.

22.05.2025    5747    242    seperblunt    9    

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