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