Рассмотрим ситуацию: Человек работает на предприятии с 2007 года. В начале 2009-ого года он сильно заболевает и постоянно вынужден находится на больничном в плоть до 2011 года. Стандартная обработка 1С 7.7 считает сумму выплат по больничному листу правильно в 2010 году, однако начиная с 2011 года выплаты сведутся на ноль, так как сотрудник не работал в 2010 году. Данный пример поможет исправить данный недочет.
Зайдем в 1С. Откроем конфигуратор и создадим новый «Внешний отчет».
На форму поместим поле для ввода, назовем его «ГодКор» и назначим ввод только числовых значений. Так же на форму поместим текст подсказку:
«Укажите отступ от текущего года назад, для больничных листков. Например сейчас 2011 год, тогда отступ на 1 выдаст расчет больничных листков за 2008 и 2009 года.»
Перейдем в «Модуль» и добавим в процедуру «Сформировать» следующий код:
Процедура Сформировать() ОткрытьФорму("Документ.БольничныйЛист", ГодКор); КонецПроцедуры
И добавим так же:
Процедура ПриОткрытии() ГодКор = 0; КонецПроцедуры
Сохраним нащу обработку, например как «БЛист.ert».
Теперь откроем «Конфигурацию» и найдем во вкладке «Документы» документ «БольничныйЛист».
Откроем его и перейдем в модуль документа. Здесь все вхождения переменной «глПолучитьДатуНачалаСобытияБЛ(Контекст)» нужно заменить на «Дата((ДатаГод(глПолучитьДатуНачалаСобытияБЛ(Контекст))-Форма.Параметр),ДатаМесяц(глПолучитьДатуНачалаСобытияБЛ(Контекст)),ДатаЧисло(глПолучитьДатуНачалаСобытияБЛ(Контекст)))». После этого сохраняем нашу конфигурацию.
В результате имеем что наш документ, как открывался до этого так и открывается сейчас. Однако если открыть нашу обработку «БЛист.ert» указать в поле, например, значение 1, и нажать «Сформировать», то откроется документ «Больничный лист», который будет считать начисления не за два последних года, а за предпоследний и пред-предпоследние года. В этом случае нашему больному человеку мы сможем зачислить нужную сумму, без всяких проблем.