Имя: Пароль:
1C
1С v8
Редактирование общей формы в ЗУП 3.1
0 ArtAndBee
 
23.11.22
14:42
Всем привет! В ЗУП 3.1 есть общая форма ГрупповоеЗаполнениеПоказателейДокументов. Подскажите, пожалуйста, как сделать, чтобы эта форма заполняла показатели по формуле сумма*30% ?
1 SleepyHead
 
гуру
23.11.22
14:54
(0) Кури общую форму, там же есть процедуры добавления показателей.
2 SleepyHead
 
гуру
23.11.22
14:55
(0) "Процедура ДобавитьРеквизитыПоказателейИНачислений(ЭтоПоказатель, НаименованиеПоказателя, ДобавляемыеРеквизиты, Сч)"
3 ArtAndBee
 
23.11.22
19:22
(0) Нету там такой процедуры.
4 ArtAndBee
 
23.11.22
19:28
Есть такая процедура
Процедура ДополнитьФорму(МассивПоказателей)

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