ЗиК ТК 7.70. 269 Начисление отпуска
10.10.2006
13:48
#1
Есть ли возможность по документу ПриказПоОтпуску сразу и всегда формировать документ НачислениеОтпуска?
Сейчас он создается как "ввести на основании" приказа, и остается возможность просто забыть его создать. Приказ на отпуск создается в отделе кадров, начисление отпуска - в расчетном отделе.
Спасибо.
Сейчас он создается как "ввести на основании" приказа, и остается возможность просто забыть его создать. Приказ на отпуск создается в отделе кадров, начисление отпуска - в расчетном отделе.
Спасибо.
10.10.2006
22:52
#4
Вообще то за начисление отпуска ответственность несет расчетчик,
и он имеет право начислять только после того, как получит приказ подписанный всеми ответственными лицами.
А Приказ созданный отделом кадров могут и не подписать.
Поэтому создавать расчет безусловия - нельзя.
и он имеет право начислять только после того, как получит приказ подписанный всеми ответственными лицами.
А Приказ созданный отделом кадров могут и не подписать.
Поэтому создавать расчет безусловия - нельзя.
11.10.2006
03:15
#5
Я для некоторых клиентов (по их просьбе) сделал, чтобы при проведении "ПриказПоОтпуску" создавался, но не проводился соотв. "НачислениеОтпуска". Почему нельзя автоматически проводить - надеюсь, понятно (см. выше).
11.10.2006
23:18
#6
Интересная идея.
И расчетчик сразу видит, какие документы должны принести да забыли.
Может уточнить.
И расчетчик сразу видит, какие документы должны принести да забыли.
Может уточнить.
14.05.2007
17:24
#7
<<Я для некоторых клиентов (по их просьбе) сделал, чтобы при проведении "ПриказПоОтпуску" создавался, но не проводился соотв. "НачислениеОтпуска". Почему нельзя автоматически проводить - надеюсь, понятно (см. выше).
Если не трудно!!!!
Подскажите ПЛИЗ как вы енто сделали!!!
ТОЖЕ ХОЧУ!!!!
Заранее БЛАГОДАРЕН!!!!
Если не трудно!!!!
Подскажите ПЛИЗ как вы енто сделали!!!
ТОЖЕ ХОЧУ!!!!
Заранее БЛАГОДАРЕН!!!!
15.05.2007
09:46
#8
"Форма-документ.ПриказПоОтпуску:
Процедура ПровестиИзФормы(НажатаКнопкаОК=0)
Записать();
Если Проверка()=1 Тогда
Если Провести(,ОбработчикСообщений)=0 Тогда
глДобавитьСообщение(ОбработчикСообщений, "Документ не проведен.",ТекущийДокумент());
КонецЕсли;
КонецЕсли;
глОткрытьОбработчик(ОбработчикСообщений, Вид()+НомерДок);
// изменение для создания док-та НачислениеОтпуска
Права = НазваниеНабораПрав(0);
Если (Права = "Расчетчик") или (Права= "Полные права") Тогда
Документы = СоздатьОбъект("Документ");
//среди подчиненных могут быть: начисление з-ты, начисление компенсаци отпуска, выходное пособие
БылаКомпенсация=0;
Если Документы.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент()) = 1 Тогда
//подчиненные нашлись, надо определить конкретнее
Пока Документы.ПолучитьДокумент()=1 Цикл
Если Документы.Вид()="НачислениеОтпуска" Тогда
БылаКомпенсация=1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если (БылаКомпенсация=0) Тогда
Если Вопрос("Можно сформировать документ Начисление отпуска."+РазделительСтрок +
"Вы хотите сделать это сейчас?","Да+Нет") = "Да" тогда
ОписаниеНачислений = "Начисление отпускных";
ПараметрыКоманды = СоздатьОбъект("СписокЗначений");
ПараметрыКоманды.Установить("Сотрудник",Сотрудник);
ПараметрыКоманды.Установить("Дата",ДатаДок);
ПараметрыКоманды.Установить("Документ",ТекущийДокумент());
ПараметрыКоманды.Установить("Дней",КоличествоДнейОтпуска);
глОткрытьФормуИВыполнитьКоманду("Документ.НачислениеОтпуска","ПриказНаОтпуск",ПараметрыКоманды);
КонецЕсли;
КонецЕсли;
КонецЕсли;
// если вызвали через кнопку ОК, то закроем форму
// и обработчик соообщений пуст
Если (НажатаКнопкаОК=1)и(глПустойОбработчик(ОбработчикСообщений)=1) Тогда
Форма.Закрыть();
КонецЕсли;
КонецПроцедуры // ПровестиИзФормы
В Форма-Документ.НачислениеОтпуска:
Процедура ПриОткрытии()
Перем ПараметрыКоманды; // параметры команды при открытии
// если открыли для заполнения
Если глВыполнитьКомандуФормы(Контекст,"Заполнить",ПараметрыКоманды)=1 Тогда
глЗаполнитьДокумент(ПараметрыКоманды, Контекст);
ИначеЕсли глВыполнитьКомандуФормы(Контекст, "ЗаполнитьИзПомощника", ПараметрыКоманды) = 1 Тогда
глЗаполнитьДокументИзПомощника(Контекст, ПараметрыКоманды);
Записать();
Открыть = ПараметрыКоманды.Получить("СтатусВозврата");
СтатусВозврата(Открыть);
ИначеЕсли глВыполнитьКомандуФормы(Контекст,"КомпенсацияОтпуска",ПараметрыКоманды)=1 Тогда // если открыли на основании увольнения (компенсация отпуска при увольнении)
ДатаДок = ПараметрыКоманды.Получить("Дата");
УстановитьНовыйНомер();
Сотрудник = ПараметрыКоманды.Получить("Сотрудник");
ДокОснование = ПараметрыКоманды.Получить("Документ");
Если ДокОснование.ДнейКомпенсацииОтпуска >= 0 Тогда
ВидОтпуска = ВидРасчета.КомпенсацияОтпуска;
Иначе
ВидОтпуска = ВидРасчета.УдержаниеЗаНеотработанныйОтпуск
КонецЕсли;
Если глПолучитьПорядокРасчетаСреднегоЗаработка(ДатаДок)=2 Тогда
КоличествоМесяцев = 2;
Иначе
КоличествоМесяцев = 1;
КонецЕсли;
// изменение для вызова из ПриказНаОтпуск
ИначеЕсли глВыполнитьКомандуФормы(Контекст,"ПриказНаОтпуск",ПараметрыКоманды)=1 Тогда // если открыли на основании увольнения (компенсация отпуска при увольнении)
ДатаДок = ПараметрыКоманды.Получить("Дата");
УстановитьНовыйНомер();
Сотрудник = ПараметрыКоманды.Получить("Сотрудник");
ДокОснование = ПараметрыКоманды.Получить("Документ");
ВидОтпуска = ДокОснование.ВидОтпуска;
Начало = ДокОснование.Начало;
Окончание = ДокОснование.Окончание;
ТипРасчетаОтпуска = ДокОснование.ТипРасчетаОтпуска;
ТипРасчетаДополнительногоОтпуска = ДокОснование.ТипРасчетаДополнительногоОтпуска;
ДатаВыходаНаРаботу = ДокОснование.ДатаВыходаНаРаботу;
ДатаРожденияРебенка = ДокОснование.ДатаРожденияРебенка;
ПроцентУчебногоОтпуска = ДокОснование.ПроцентУчебногоОтпуска;
КоличествоДнейОтпуска = ДокОснование.КоличествоДнейОтпуска;
КоличествоДнейДополнительногоОтпуска = ДокОснование.КоличествоДнейДополнительногоОтпуска;
// изменение для вызова из ПриказНаОтпуск
Иначе
КонецЕсли;
// инициализация обработчика сообщений
ОбработчикСообщений = глСоздатьОбработчикСообщений(глПредставлениеДокумента(Контекст));
.................
"
Процедура ПровестиИзФормы(НажатаКнопкаОК=0)
Записать();
Если Проверка()=1 Тогда
Если Провести(,ОбработчикСообщений)=0 Тогда
глДобавитьСообщение(ОбработчикСообщений, "Документ не проведен.",ТекущийДокумент());
КонецЕсли;
КонецЕсли;
глОткрытьОбработчик(ОбработчикСообщений, Вид()+НомерДок);
// изменение для создания док-та НачислениеОтпуска
Права = НазваниеНабораПрав(0);
Если (Права = "Расчетчик") или (Права= "Полные права") Тогда
Документы = СоздатьОбъект("Документ");
//среди подчиненных могут быть: начисление з-ты, начисление компенсаци отпуска, выходное пособие
БылаКомпенсация=0;
Если Документы.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент()) = 1 Тогда
//подчиненные нашлись, надо определить конкретнее
Пока Документы.ПолучитьДокумент()=1 Цикл
Если Документы.Вид()="НачислениеОтпуска" Тогда
БылаКомпенсация=1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если (БылаКомпенсация=0) Тогда
Если Вопрос("Можно сформировать документ Начисление отпуска."+РазделительСтрок +
"Вы хотите сделать это сейчас?","Да+Нет") = "Да" тогда
ОписаниеНачислений = "Начисление отпускных";
ПараметрыКоманды = СоздатьОбъект("СписокЗначений");
ПараметрыКоманды.Установить("Сотрудник",Сотрудник);
ПараметрыКоманды.Установить("Дата",ДатаДок);
ПараметрыКоманды.Установить("Документ",ТекущийДокумент());
ПараметрыКоманды.Установить("Дней",КоличествоДнейОтпуска);
глОткрытьФормуИВыполнитьКоманду("Документ.НачислениеОтпуска","ПриказНаОтпуск",ПараметрыКоманды);
КонецЕсли;
КонецЕсли;
КонецЕсли;
// если вызвали через кнопку ОК, то закроем форму
// и обработчик соообщений пуст
Если (НажатаКнопкаОК=1)и(глПустойОбработчик(ОбработчикСообщений)=1) Тогда
Форма.Закрыть();
КонецЕсли;
КонецПроцедуры // ПровестиИзФормы
В Форма-Документ.НачислениеОтпуска:
Процедура ПриОткрытии()
Перем ПараметрыКоманды; // параметры команды при открытии
// если открыли для заполнения
Если глВыполнитьКомандуФормы(Контекст,"Заполнить",ПараметрыКоманды)=1 Тогда
глЗаполнитьДокумент(ПараметрыКоманды, Контекст);
ИначеЕсли глВыполнитьКомандуФормы(Контекст, "ЗаполнитьИзПомощника", ПараметрыКоманды) = 1 Тогда
глЗаполнитьДокументИзПомощника(Контекст, ПараметрыКоманды);
Записать();
Открыть = ПараметрыКоманды.Получить("СтатусВозврата");
СтатусВозврата(Открыть);
ИначеЕсли глВыполнитьКомандуФормы(Контекст,"КомпенсацияОтпуска",ПараметрыКоманды)=1 Тогда // если открыли на основании увольнения (компенсация отпуска при увольнении)
ДатаДок = ПараметрыКоманды.Получить("Дата");
УстановитьНовыйНомер();
Сотрудник = ПараметрыКоманды.Получить("Сотрудник");
ДокОснование = ПараметрыКоманды.Получить("Документ");
Если ДокОснование.ДнейКомпенсацииОтпуска >= 0 Тогда
ВидОтпуска = ВидРасчета.КомпенсацияОтпуска;
Иначе
ВидОтпуска = ВидРасчета.УдержаниеЗаНеотработанныйОтпуск
КонецЕсли;
Если глПолучитьПорядокРасчетаСреднегоЗаработка(ДатаДок)=2 Тогда
КоличествоМесяцев = 2;
Иначе
КоличествоМесяцев = 1;
КонецЕсли;
// изменение для вызова из ПриказНаОтпуск
ИначеЕсли глВыполнитьКомандуФормы(Контекст,"ПриказНаОтпуск",ПараметрыКоманды)=1 Тогда // если открыли на основании увольнения (компенсация отпуска при увольнении)
ДатаДок = ПараметрыКоманды.Получить("Дата");
УстановитьНовыйНомер();
Сотрудник = ПараметрыКоманды.Получить("Сотрудник");
ДокОснование = ПараметрыКоманды.Получить("Документ");
ВидОтпуска = ДокОснование.ВидОтпуска;
Начало = ДокОснование.Начало;
Окончание = ДокОснование.Окончание;
ТипРасчетаОтпуска = ДокОснование.ТипРасчетаОтпуска;
ТипРасчетаДополнительногоОтпуска = ДокОснование.ТипРасчетаДополнительногоОтпуска;
ДатаВыходаНаРаботу = ДокОснование.ДатаВыходаНаРаботу;
ДатаРожденияРебенка = ДокОснование.ДатаРожденияРебенка;
ПроцентУчебногоОтпуска = ДокОснование.ПроцентУчебногоОтпуска;
КоличествоДнейОтпуска = ДокОснование.КоличествоДнейОтпуска;
КоличествоДнейДополнительногоОтпуска = ДокОснование.КоличествоДнейДополнительногоОтпуска;
// изменение для вызова из ПриказНаОтпуск
Иначе
КонецЕсли;
// инициализация обработчика сообщений
ОбработчикСообщений = глСоздатьОбработчикСообщений(глПредставлениеДокумента(Контекст));
.................
"
Читают тему
(гостей: 1)