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

28.02.25

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

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

Добрый день! 

Работаю с конфигурацией ЗУП 3.1 на этапе внедрения. Столкнулся с одной задачей. Необходимо было разработать печатную форму для документа Кадровый перевод. Многие кадровики знают, что документ обладает большим количеством условий. Это и перевод на другую должность/подразделение, смена вида занятости, смена источника финансирования и т.д.

Также есть его многострочный вариант Кадровый перевод списком. Здесь для каждого сотрудника заводится строка в табличной части Сотрудники. И те же условия хранятся уже в не как реквизиты документа, а виде полей табличной части.

Так вот при формировании печатной формы, мне было необходимо проанализировать все возможные условия перед печатью. Для документа Кадровый перевод я воспользовался очень удобной функцией из общего модуля ОбщегоНазначения "ЗначенияРеквизитовОбъекта".

После, когда печатная форма была адаптирована для документа "Кадровый перевод", необходимо, чтобы эта печатная форма запустилась и через документ "Кадровый перевод списком". И вот тут столкнулся с тем, что аналогичной функции в БСП нет. Не могу утверждать на 100%, но вот в подсистеме базовой функциональности я не нашел.

Пришлось на скорую руку написать свою функцию. Пример кода приведен ниже:

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

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

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

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

Конечно, нет предела совершенству, но в любом случае, вопрос я закрыл и печатная форма взлетела и для документа "Кадровый перевод списком".  

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

Статья написана впервые. Опыт работы с редактором на начальном уровне, но есть чем делиться с сообществом, поэтому по мере возможности будут оттачивать навыки публикации статей.

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

Пример кода ЗУП 3.1 БСП доработки

См. также

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

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

3254 руб.

21.11.2024    12237    46    24    

52

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

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

06.02.2026    4264    manul1c    6    

20

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

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

23.09.2025    10691    AlexeyPROSTO_1C    1    

18

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

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

16.09.2025    5560    _seerco2002    0    

34

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

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

02.09.2025    6919    krasnov322    22    

43

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

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

22.05.2025    5440    230    seperblunt    9    

30
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. romandredan 28.02.25 17:16 Сейчас в теме
Подождите, а в наименовании поля указать "Товары.Номенклатура" не удается?
asg.aleks; +1 Ответить
2. ONLYTILT 26 03.03.25 23:11 Сейчас в теме
ВидИзменитьПолеКоллекция = ПолучитьРеквизитыТЧСписочногоДокумента(ДанныеДетальныхЗаписей.СсылкаНаОбъект.Сотрудники,СписокКомандИзменить);

Обращение к свойствам ссылки (в данном примере к табличной части) через точку повлечет полное получение объекта из бд если его нет в кэше, включая все реквизиты и табличные части. По этому табличную часть по хорошему читать так же с помощью ЗначениеРеквизитаОбъекта:
ТаблицаЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеДетальныхЗаписей.СсылкаНаОбъект, "Сотрудники").Выгрузить() // получение таблицы значений
МассивСтруктур = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаЗначений); // Это если надо вернуть в тонкий клиент
Cmapnep; VyacheslavShilov; +2 Ответить
Для отправки сообщения требуется регистрация/авторизация