Версия для печати темы (https://pro1c.org.ua/index.php?s=71c180ec91976be6660f2fa8ab23ffda&showtopic=13358)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Метод Рассчитать() обнуляет результат записи в журнале рассчетов

Автор: Мичман Харитонов 15.07.13, 13:03

Доброго дня!

Конфигурация ЗиК (самописная), дописываю процедуру проведения документа "ПриказПоОтпуску", чтобы он, как теперь положено, формировал отчисления в Пенсионный фонд, если тип отпуска - ПоБеременностиИРодам.

В Процедуру ОбработкаПроведения() добавил вот такой кусок кода

    Если  ВидОтпуска = Перечисление.ВидыОтпуска.ПоБеременностиИРодам Тогда
                      //вводим 2% отчислений по ЕСВ с отпуска по беременности и родам
                                Пенс=0;
            Сообщить(Начислено);

                      Начало=ДатаНачала;
            Окончание=ДатаОкончания;
            ОблагаемоеПенс=Начислено;
            Льготы = глПолучитьЛьготыДляНалога(Сотрудник,"Пенсионный",Начало);
            тбШкалаПенс = глПолучитьШкалуДляНалога(Сотрудник,"Пенсионный",ДатаДок,Льготы);
            //берем 2% пенсионного
            тбШкалаПенс.ВыбратьСтроки(); i=1;
            Пока i<=тбШкалаПенс.КоличествоСтрок() цикл  
                тбШкалаПенс.ПолучитьСтрокуПоНомеру(i);
                если Сокрлп(тбШкалаПенс.Код)<>"ПенсЕСВбольн"   тогда
                    тбШкалаПенс.УдалитьСтроку();
                    ПРодолжить;
                КонецЕсли;
                i=i+1;
            КонецЦикла;    
            тбШкалаПенс.ПолучитьСтрокуПоНомеру(1);
            //Пенс = глРассчитатьНалогПоШкале(ОблагаемоеПенс, тбШкалаПенс, Льготы,"","Пенсионный");
            Пенс=ОблагаемоеПенс*тбШкалаПенс.Ставка;
            Сообщить(Пенс);
            СпрХО = СоздатьОбъект("Справочник.ХозОперации");  
            СпрХО.НайтиПоНаименованию("Пенсионный с больничного листа",0,1);
            Сообщить(СпрХО.Наименование);
            Зрп.УстановитьРеквизит("ХозОперация",СпрХО.ТекущийЭлемент());  
            //Зрп.ВВестиРасчет(Сотрудник, ВидРасчета.Пенсионный2004, ДатаДок,ДатаДок , Пенс);
            Зрп.ВВестиРасчет(Сотрудник, ВидРасчета.Пенсионный2004, ДатаНачала,ДатаОкончания, Пенс);
            
            //конец ЕСВ

    КонецЕсли;

И все бы ничего, но после того, как отрабатывает метод Рассчитать(),
в журназе расчетов из записей с пенсионными исчезает ХозОперация, и обнуляется результат.

Подскажите пожалуйста, в чем может быть причина? Гугл не помог ((


 ! 

Правила, 5
 

Автор: Мичман Харитонов 16.07.13, 16:25

Вопрос решен, спасибо всем, кто помог ))

Автор: Vofka 16.07.13, 16:32

Огласите решение для всех.

Автор: faiden 16.07.13, 20:52

Цитата(Мичман Харитонов @ 15.07.13, 14:03) *
Доброго дня!

Конфигурация ЗиК (самописная), дописываю процедуру проведения документа "ПриказПоОтпуску", чтобы он, как теперь положено, формировал отчисления в Пенсионный фонд, если тип отпуска - ПоБеременностиИРодам.

И все бы ничего, но после того, как отрабатывает метод Рассчитать(),
в журназе расчетов из записей с пенсионными исчезает ХозОперация, и обнуляется результат.

Подскажите пожалуйста, в чем может быть причина? Гугл не помог ((


1. Абсолютно правильно делает, ибо:
2. Почему вы решили, что документ "ПриказПоОтпуску" должен формировать какие-то записи в журнале расчетов? Насколько я знаю, ЕСВ и НДФЛ в журнал расчетов впихивет документ "РасчетЗарплаты". Правда все это в несамописной конфигурации.
3. Почему бы не воспользоваться штатными средствами, а именно "Группы расчетов" -> "БазаЕСВ". И если уж совсем не помогает, то ковырять модуль расчета ЕСВ, хотя мне вполне хватило групп расчетов. Правда конфигурация не самописная, но изрядно рихтованная.

Автор: Мичман Харитонов 17.07.13, 14:45

Цитата(faiden @ 16.07.13, 21:52) http://pro1c.org.ua/index.php?act=findpost&pid=72003
Огласите решение для всех.

Я не говорю, что нашел правильное решение, но это работает.

Добавил следующий кусок кода.
После расчета записей:
        Если  ВидОтпуска = Перечисление.ВидыОтпуска.ПоБеременностиИРодам Тогда
            Зрп.ВыбратьЗаписиПоДокументу(ТекущийДокумент());
    Зрп.ВыбратьЗаписиПоОбъекту(Сотрудник,ДатаНачала,ДатаОкончания);
               Пока Зрп.ПолучитьЗапись() = 1 Цикл
        Если (Зрп.ВидРасч=ВидРасчета.Пенсионный2004)И(Зрп.Результат=0) Тогда
        Зрп.Результат=Переменная(Зрп.ДатаНачала,Зрп.ДатаОкончания);
                    СпрХО = СоздатьОбъект("Справочник.ХозОперации");  
            СпрХО.НайтиПоНаименованию("Пенсионный с больничного листа",0,1);
            Зрп.УстановитьРеквизит("ХозОперация",СпрХО.ТекущийЭлемент());  
        Зрп.Записать();
        КонецЕсли;    
    КонецЦикла;
        КонецЕсли;

Документ нормально формирует записи в журнале расчетов.

Автор: mister-x 18.07.13, 9:52

Цитата(Мичман Харитонов @ 15.07.13, 13:03) *
дописываю процедуру проведения документа

тему в розділ програмісту icon_beer17.gif

Автор: Vofka 18.07.13, 10:13

mister-x, перенес, спасибо! smile.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua