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