×
Показано с 1 по 6 из 6
  1. Клерк
    Регистрация
    22.05.2013
    Сообщений
    9

    Внешняя Обработка Зарплата и Управление персооналом 8.2 ред 2.5

    сложилась такая ситуация, нужно написать обработку котороя могла бы считать сколько должен сотрудник за питания из расчета по формуле
    если сумма до 100 рублей то опла происходит 50% работник 50% предприятие
    если сумма свыше 100 рублей то 50р оплачивает предприятие а все остальное работник,
    Это я сделал но вопрос тепересь состоит что бы внести 3 должности в исключение которое оплачивает полностью предприятие, немогу и все как связать должность с обработкой
    Поделиться с друзьями

  2. Клерк Аватар для OlgaK
    Регистрация
    30.03.2004
    Адрес
    Раменское
    Сообщений
    12,058
    добавить сотруднику должность
    Влюбленность в себя не бывает мимолетной.

  3. Клерк
    Регистрация
    22.05.2013
    Сообщений
    9
    Цитата Сообщение от OlgaK Посмотреть сообщение
    добавить сотруднику должность
    в зарплате как раз таки есть "должность" как прописать её в модуль? не разу не делал этого.

  4. Клерк
    Регистрация
    22.05.2013
    Сообщений
    9
    Функция Печать(Режим) Экспорт
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");

    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Вставить(1,"Сотрудник",,"Сотрудник");
    ТЗ.Колонки.Вставить(2,"Сумма",,"Сумма");
    ТЗ.Колонки.Вставить(3,"Подразделение",,"Подразделение");
    ТЗ.Колонки.Вставить(4,"Счет",,"Счет");
    ТЗ.Колонки.Вставить(5,"Пред",,"Предприятие");
    ТЗ.Колонки.Вставить(6,"Раб",,"Работник");
    Нач = День(НачалоМесяца(Дата));
    Кон = День(КонецМесяца(Дата));

    Для Ин = Нач По Кон Цикл
    ИмяФайла = Строка(Ин) + Формат(Дата,"ДФ=ММгггг");
    База = ВосстановитьЗначение("База");
    Файл = Новый XBase;
    Файл.ОткрытьФайл(База + "\" + ИмяФайла + ".dbf",База + "\" + ИмяФайла + ".cdx");

    Если Файл.Открыта() Тогда
    Пока Не Файл.ВКонце() Цикл
    Стр = ТЗ.Добавить();
    Наим = Файл.ПолучитьЗначениеПоля("Sotr");
    Спр = Справочники.ФизическиеЛица;
    Стр.Сотрудник = Спр.НайтиПоНаименованию(Наим);
    Стр.Сумма = Файл.ПолучитьЗначениеПоля("Sum");
    Наим = Файл.ПолучитьЗначениеПоля("Pod");
    Спр = Справочники.ПодразделенияОрганизаций;
    Стр.Подразделение = Спр.НайтиПоНаименованию(Наим);
    Код = Файл.ПолучитьЗначениеПоля("Sch");
    Спр = ПланыСчетов.Хозрасчетный;
    Стр.Счет = Спр.НайтиПоКоду(Код);
    Если Дата < '20120417000000' Тогда
    Стр.Пред = 0;
    Стр.Раб = Стр.Сумма;
    Иначе
    Если Стр.Сумма <= 100 Тогда
    Стр.Пред = Стр.Сумма / 2;
    Стр.Раб = Стр.Сумма / 2;
    Иначе
    Стр.Пред = 50;
    Стр.Раб = Стр.Сумма - 50;
    КонецЕсли;
    КонецЕсли;
    Файл.Следующая();
    КонецЦикла;
    Файл.ЗакрытьФайл();
    КонецЕсли;
    КонецЦикла;
    Если Режим = 0 Тогда
    Область = Макет.ПолучитьОбласть("Шапка");
    Область.Параметры.Месяц = "За " + Формат(Дата,"ДФ=ММММ");
    ТабДок.Вывести(Область);

    ТабЗн = ТЗ.Скопировать();
    ТабЗн.Свернуть("Сотрудник","Сумма,Пред,Раб");
    Область = Макет.ПолучитьОбласть("Строка");
    Для Каждого Эл Из ТабЗн Цикл
    Область.Параметры.Сотр = Эл.Сотрудник;
    Область.Параметры.Сум = Эл.Сумма;
    Область.Параметры.Пред = Формат(Эл.Пред,"ЧДЦ=2");
    Область.Параметры.Раб = Формат(Эл.Раб,"ЧДЦ=2");
    ТабДок.Вывести(Область);
    КонецЦикла;

    Область = Макет.ПолучитьОбласть("Итоги");
    Область.Параметры.ИтогСум = ТабЗн.Итог("Сумма");
    Область.Параметры.ИтогПред = Формат(ТабЗн.Итог("Пред"),"ЧДЦ=2");
    Область.Параметры.ИтогРаб = Формат(ТабЗн.Итог("Раб"),"ЧДЦ=2");
    ТабДок.Вывести(Область);
    ИначеЕсли Режим = 1 Тогда
    Область = Макет.ПолучитьОбласть("ШапкаПод");
    Область.Параметры.Месяц = "За " + Формат(Дата,"ДФ=ММММ");
    ТабДок.Вывести(Область);

    ПодТЗ = ТЗ.Скопировать();
    ПодТЗ.Свернуть("Подразделение","Сумма,Пред,Раб");
    Область = Макет.ПолучитьОбласть("СтрокаПод");

    Для Каждого Под Из ПодТЗ Цикл
    СчТЗ = ТЗ.Скопировать();
    Область = Макет.ПолучитьОбласть("ШапкаТаб");
    Область.Параметры.Подр = Под.Подразделение;
    ТабДок.Вывести(Область);
    ОтТЗ = СчТЗ.СкопироватьКолонки();
    Для Каждого Сч Из СчТЗ Цикл
    Если Сч.Подразделение = Под.Подразделение Тогда
    Стр = ОтТЗ.Добавить();
    Стр.Счет = Сч.Счет;
    Стр.Сумма = Сч.Сумма;
    Стр.Пред = Сч.Пред;
    Стр.Раб = Сч.Раб;
    КонецЕсли;
    КонецЦикла;
    Область = Макет.ПолучитьОбласть("СтрокаПод");
    ОтТЗ.Свернуть("Счет","Сумма,Пред,Раб");
    Для Каждого От Из ОтТЗ Цикл
    Область.Параметры.Сотр = От.Счет;
    Область.Параметры.Сум = От.Сумма;
    Область.Параметры.Пред = От.Пред;
    Область.Параметры.Раб = От.Раб;
    ТабДок.Вывести(Область);
    КонецЦикла;
    Область = Макет.ПолучитьОбласть("ИтогиПод");
    Область.Параметры.ИтогСум = ОтТЗ.Итог("Сумма");
    Область.Параметры.ИтогПред = ОтТЗ.Итог("Пред");
    Область.Параметры.ИтогРаб = ОтТЗ.Итог("Раб");
    ТабДок.Вывести(Область);
    Область = Макет.ПолучитьОбласть("Разделитель");
    ТабДок.Вывести(Область);
    КонецЦикла;
    Область = Макет.ПолучитьОбласть("ИтогиОбщ");
    Область.Параметры.ИтогСум = ТЗ.Итог("Сумма");
    Область.Параметры.ИтогПред = ТЗ.Итог("Пред");
    Область.Параметры.ИтогРаб = ТЗ.Итог("Раб");
    ТабДок.Вывести(Область);
    Иначе
    Таб = Новый ТаблицаЗначений;
    Таб.Колонки.Вставить(1,"Сотрудник",,"Сотрудник");
    Таб.Колонки.Вставить(2,"Сумма",,"Сумма");
    Таб.Колонки.Вставить(3,"Пред",,"Предприятие");
    Таб.Колонки.Вставить(4,"Раб",,"Работник");

    ИмяФайла = Формат(Дата,"ДФ=дММгггг");
    База = ВосстановитьЗначение("База");
    Файл = Новый XBase;
    Файл.ОткрытьФайл(База + "\" + ИмяФайла + ".dbf",База + "\" + ИмяФайла + ".cdx");

    Если Файл.Открыта() Тогда
    Пока Не Файл.ВКонце() Цикл
    Стр = Таб.Добавить();
    Наим = Файл.ПолучитьЗначениеПоля("Sotr");
    Спр = Справочники.ФизическиеЛица;
    Стр.Сотрудник = Спр.НайтиПоНаименованию(Наим);
    Стр.Сумма = Файл.ПолучитьЗначениеПоля("Sum");
    Если Дата < '20120417000000' Тогда
    Стр.Пред = 0;
    Стр.Раб = Стр.Сумма;
    Иначе
    Если Стр.Сумма <= 100 Тогда
    Стр.Пред = Стр.Сумма / 2;
    Стр.Раб = Стр.Сумма / 2;
    Иначе
    Стр.Пред = Стр.Сумма - 50 ;
    Стр.Раб = Стр.Сумма * 0.5;
    КонецЕсли;
    КонецЕсли;
    Файл.Следующая();
    КонецЦикла;
    Файл.ЗакрытьФайл();
    КонецЕсли;
    Таб.Свернуть("Сотрудник","Сумма,Пред,Раб");
    Область = Макет.ПолучитьОбласть("Строка");
    Для Каждого Эл Из Таб Цикл
    Область.Параметры.Сотр = Эл.Сотрудник;
    Область.Параметры.Сум = Эл.Сумма;
    Область.Параметры.Пред = Формат(Эл.Пред,"ЧДЦ=2");
    Область.Параметры.Раб = Формат(Эл.Раб,"ЧДЦ=2");
    ТабДок.Вывести(Область);
    КонецЦикла;

    Область = Макет.ПолучитьОбласть("Итоги");
    Область.Параметры.ИтогСум = Формат(Таб.Итог("Сумма"),"ЧДЦ=2");
    Область.Параметры.ИтогПред = Формат(Таб.Итог("Пред"),"ЧДЦ=2");
    Область.Параметры.ИтогРаб = Формат(Таб.Итог("Раб"),"ЧДЦ=2");
    ТабДок.Вывести(Область);
    КонецЕсли;

    ТабДок.ТолькоПросмотр = Истина;
    Возврат ТабДок;
    КонецФункции


    Вот Обработку выглядит таким образом, как добавить пару должностей например сантехника и уборщицу в исключения?

  5. Клерк
    Регистрация
    24.05.2013
    Сообщений
    7
    МассивДолжностейИсключений = Новый Массив;
    МассивДолжностейИсключений .Добавить(Справочники.ДолжностиОрганизаций.НайтиПоНаименованию("Дворник"));
    МассивДолжностейИсключений .Добавить(Справочники.ДолжностиОрганизаций.НайтиПоНаименованию("Строитель"));

    Сотрудник = Спр.НайтиПоНаименованию(Наим);
    Если МассивДолжностейИсключений .Найти(Сотрудник.Должность) <> Неопределено Тогда
    Продолжить;
    КонецЕсли;

    Стр = ТЗ.Добавить();
    Стр.Сотрудник = Сотрудник ;

    Создаем список должностей исключений, затем проверяем относится ли должность нашего сотрудника к этому списску
    Таким образом сначала проверка, потом добавления сотрудника в таблицу значений

  6. Клерк
    Регистрация
    22.05.2013
    Сообщений
    9
    Спасибо большое выручил в понедельник проверю

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)