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

28.02.25

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

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

Добрый день! 

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

1800 руб.

21.11.2024    4440    17    15    

21

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Добавим метки в новый документ средствами БСП.

10.02.2025    4264    John_d    24    

48

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

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

27.12.2024    4649    PROSTO-1C    16    

48

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

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

11.12.2024    4451    gorenski    0    

8

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Некоторые нюансы, если вы захотите создавать свои расширения. Доработка отчета "Связанные документы" для отражения документов расширения. Печатные формы с шаблоном Word.

20.11.2024    3854    milkers    3    

13

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

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

24.10.2024    2125    PROSTO-1C    0    

19

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    1603    PROSTO-1C    4    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. romandredan 28.02.25 17:16 Сейчас в теме
Подождите, а в наименовании поля указать "Товары.Номенклатура" не удается?
Оставьте свое сообщение