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