ПриСозданииНаСервере (БСП)

Автор: 1С
ОбщийМодуль.ПодключаемыеКоманды
БСП

При создании на сервере. Выводит подключенные команды в форме.

// Выводит подключенные команды в форме.
//
// Параметры:
//   Форма - ФормаКлиентскогоПриложения - форма, в которой необходимо разместить команды.
//   ПараметрыРазмещения - Структура - параметры размещения команд.
//       Используется, когда в форме несколько списков
//       (в этом случае размещается несколько вызовов этой процедуры с указанием 2го параметра),
//       или когда типы источников зависят от параметров открытия формы.
//       Состав ключей см. в функции ПараметрыРазмещения().
//
Процедура ПриСозданииНаСервере(Форма, ПараметрыРазмещения = Неопределено) Экспорт
	ИмяФормы = Форма.ИмяФормы;
	
	ИсточникиЧерезЗапятую = "";
	Если ПараметрыРазмещения = Неопределено Тогда
		ПараметрыРазмещения = ПараметрыРазмещения();
	Иначе
		Если ТипЗнч(ПараметрыРазмещения.Источники) = Тип("ОписаниеТипов") Тогда
			Типы = ПараметрыРазмещения.Источники.Типы();
			Для Каждого Тип Из Типы Цикл
				ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
				Если ОбъектМетаданных <> Неопределено Тогда
					ИсточникиЧерезЗапятую = ИсточникиЧерезЗапятую + ?(ИсточникиЧерезЗапятую = "", "", ",") + ОбъектМетаданных.ПолноеИмя();
				КонецЕсли;
			КонецЦикла;
		ИначеЕсли ТипЗнч(ПараметрыРазмещения.Источники) = Тип("Массив") Тогда
			Для Каждого ОбъектМетаданных Из ПараметрыРазмещения.Источники Цикл
				Если ТипЗнч(ОбъектМетаданных) = Тип("ОбъектМетаданных") Тогда
					ИсточникиЧерезЗапятую = ИсточникиЧерезЗапятую + ?(ИсточникиЧерезЗапятую = "", "", ",") + ОбъектМетаданных.ПолноеИмя();
				ИначеЕсли ОбъектМетаданных <> Неопределено Тогда
					ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
						"ПодключаемыеКоманды.ПриСозданииНаСервере",
						"ПараметрыРазмещения.Источники[...]",
						ОбъектМетаданных,
						Новый ОписаниеТипов("ОбъектМетаданных"));
				КонецЕсли;
			КонецЦикла;
		ИначеЕсли ПараметрыРазмещения.Источники <> Неопределено Тогда
			ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(
				"ПодключаемыеКоманды.ПриСозданииНаСервере",
				"ПараметрыРазмещения.Источники",
				ПараметрыРазмещения.Источники,
				Новый ОписаниеТипов("ОписаниеТипов, Массив"));
		КонецЕсли;
	КонецЕсли;
	
	ЭтоФормаОбъекта = Неопределено;
	Параметры = Форма.Параметры;
	ЕстьПараметрыСписка  = Параметры.Свойство("Отбор") И Параметры.Свойство("ТекущаяСтрока");
	ЕстьПараметрыОбъекта = Параметры.Свойство("Ключ")  И Параметры.Свойство("Основание");
	Если ЕстьПараметрыСписка <> ЕстьПараметрыОбъекта Тогда
		ЭтоФормаОбъекта = ЕстьПараметрыОбъекта;
	КонецЕсли;
	// Для форм внешних отчетов и обработок невозможно получить метаданные имея только имя формы,
	// поэтому определение источников команд выполняется до вызова ПовтИсп.
	Если ИсточникиЧерезЗапятую = "" И ТребуетсяУказаниеИсточниковКоманд(ИмяФормы) Тогда
		Если ЕстьПараметрыОбъекта Тогда
			ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(Параметры.Ключ));
			Если ОбъектМетаданных <> Неопределено Тогда
				ИсточникиЧерезЗапятую = ОбъектМетаданных.ПолноеИмя();
			КонецЕсли;
		КонецЕсли;
		Если ИсточникиЧерезЗапятую = "" Тогда
			ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'В формах отчетов, обработок и в общих формах
					|при вызове процедуры ""%1""
					|требуется явно указывать параметр ""%2""'"),
				"ПодключаемыеКоманды.ПриСозданииНаСервере",
				"ПараметрыРазмещения.Источники");
		КонецЕсли;
	КонецЕсли;
	
	КэшФормы = ПодключаемыеКомандыПовтИсп.КэшФормы(ИмяФормы, ИсточникиЧерезЗапятую, ЭтоФормаОбъекта);
	ПараметрыРазмещения.Вставить("ЕстьУсловияВидимости", КэшФормы.ЕстьУсловияВидимости);
	ПараметрыРазмещения.Вставить("ЭтоФормаОбъекта", КэшФормы.ЭтоФормаОбъекта);
	
	Если КэшФормы.ФункциональныеОпции.Количество() > 0 Тогда
		Форма.УстановитьПараметрыФункциональныхОпцийФормы(КэшФормы.ФункциональныеОпции);
	КонецЕсли;
	
	Команды = КэшФормы.Команды.Скопировать();
	ВывестиКоманды(Форма, Команды, ПараметрыРазмещения);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПриСозданииНаСервереПользователя (БСП)

СоздаватьЭлектронныеПодписиНаСервере (БСП)

ПодготовитьОповещения (БСП)

ПриСозданииНаСервере (БСП)

ПриСозданииНаСервереВариантыОтчетов (БСП)

ПечатьДокументовПриСозданииНаСервере (БСП)

ПриСозданииНаСервереТекущиеДела (БСП)

ОбновитьНазначениеПриСозданииНаСервере (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом