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