При создании на сервере. Выводит подключенные команды в форме.
// Выводит подключенные команды в форме.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - форма, в которой необходимо разместить команды.
// ПараметрыРазмещения - Структура - параметры размещения команд.
// Используется, когда в форме несколько списков
// (в этом случае размещается несколько вызовов этой процедуры с указанием 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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПриСозданииНаСервереПользователя (БСП)
СоздаватьЭлектронныеПодписиНаСервере (БСП)
ПриСозданииНаСервереВариантыОтчетов (БСП)
ПечатьДокументовПриСозданииНаСервере (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)