зарплата и кадры 7.7, создание внешней обработки
26.07.2010
16:22
#1
"здравствуйте
создаю внешнийо отчет для конфигурации ЗиК
отчет по зарплате за выбранный преиод
вид должен принять такой: столбцы(слева -направо)
подразделение; должность; фио; начисленная зарплата; налоги с зарплаты; ндфл; выплаченная зарплата
вобщем вся таблица у меня заполняется, кроме столбца налоги с зарплаты
Вот Запрос на основе которого заполняю таблицу
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|С Дата1 по Дата2;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|Рез = ЖурналРасчетов.Зарплата.Результат;
|Расчет = ЖурналРасчетов.Зарплата.ВидРасч;
|Подразделение = ЖурналРасчетов.Зарплата.Объект.Подразделение;
|Группировка Подразделение;
|Группировка Сотрудник;
|
|Функция СуммаНачисления = Сумма(Рез) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
|Функция СуммаУдержания = Сумма(Рез) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=1);
|Функция СуммаВыплаты = Сумма(Рез) когда (Расчет = ВидРасчета.ВыплатаЗарплаты );
|"//}}ЗАПРОС
;
Подскажите пожалуйста, что делать, чтоб заполнялась вся таблица!
Создавать еще один запрос для заполнения столбца налоги?
то есть вообще не представляю откуда брать данные для заполнения этого столбца
"
создаю внешнийо отчет для конфигурации ЗиК
отчет по зарплате за выбранный преиод
вид должен принять такой: столбцы(слева -направо)
подразделение; должность; фио; начисленная зарплата; налоги с зарплаты; ндфл; выплаченная зарплата
вобщем вся таблица у меня заполняется, кроме столбца налоги с зарплаты
Вот Запрос на основе которого заполняю таблицу
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|С Дата1 по Дата2;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|Рез = ЖурналРасчетов.Зарплата.Результат;
|Расчет = ЖурналРасчетов.Зарплата.ВидРасч;
|Подразделение = ЖурналРасчетов.Зарплата.Объект.Подразделение;
|Группировка Подразделение;
|Группировка Сотрудник;
|
|Функция СуммаНачисления = Сумма(Рез) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
|Функция СуммаУдержания = Сумма(Рез) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=1);
|Функция СуммаВыплаты = Сумма(Рез) когда (Расчет = ВидРасчета.ВыплатаЗарплаты );
|"//}}ЗАПРОС
;
Подскажите пожалуйста, что делать, чтоб заполнялась вся таблица!
Создавать еще один запрос для заполнения столбца налоги?
то есть вообще не представляю откуда брать данные для заполнения этого столбца
"
28.07.2010
15:45
#2
"В обработке:
РазделятьФССНС = ?((Константа.ОрганизацияИнвалидов.Получить(ДатаАктуальности)=0),1,0);
Спр = СоздатьОбъект("Справочник.ДополнительныеПроводки");
ЭлементФСС_НС = ПолучитьПустоеЗначение("Справочник.ДополнительныеПроводки");
КоэфТравм = 0;
Если Спр.НайтиПоКоду("ФСС_НС")=1 Тогда // Есть травматизм
ЭлементФСС_НС = Спр.ТекущийЭлемент();
КоэфТравм = Спр.ПроцентОтРасчетнойБазы/100;
КонецЕсли;
В запрос:
|Функция НДФЛ = Сумма(Результат) когда(ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеИсчисленныеНДФЛ)=1);
|Функция ФБ = Сумма(Результат) когда((ВидРасч = ВидРасчета.ПФР) и (ДатаОкончания=ДатаАктуальности));
|Функция ПФРНак = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ПФРНакопительнаяЧасть)или (ВидРасч = ВидРасчета.ПФРНакопительнаяЧастьс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ПФРСтрах = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ПФРСтраховаяЧасть)или (ВидРасч = ВидРасчета.ПФРСтраховаяЧастьс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ФСС = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ФСС)или (ВидРасч = ВидРасчета.ФССс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ФФОМС = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ФФОМС)или (ВидРасч = ВидРасчета.ФФОМСс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ТФОМС = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ТФОМС)или (ВидРасч = ВидРасчета.ТФОМСс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция Травм = Сумма(Результат) когда (глВходитВБазуПроводки(ВидРасч, ЭлементФСС_НС) = 1);
ФСС_НС нужно потом дальше обрабатывать, после выгрузки результата запроса в ТЗ:
Тз.ВыбратьСтроки();
Пока Тз.ПолучитьСтроку() = 1 Цикл
КоэффициентФСС_НС_Сотрудника = 1;
//в некоторых случаях применяется понижающий коэффициент
Если РазделятьФССНС=1 Тогда
Категория=ТЗ.Объект.КатегорияПлательщикаПФР.Получить(ДатаАктуальности);
Если (Категория=Перечисление.КатегорияПлательщикаПФ.НРИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.СХИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.АДИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.ИПИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.ФХИВ) Тогда
КоэффициентФСС_НС_Сотрудника = 0.6;
КонецЕсли;
Иначе
КоэффициентФСС_НС_Сотрудника = 0.6;
КонецЕсли;
Тз.Травм = Тз.Травм*КоэфТравм*КоэффициентФСС_НС_Сотрудника;
КонецЦикла;"
РазделятьФССНС = ?((Константа.ОрганизацияИнвалидов.Получить(ДатаАктуальности)=0),1,0);
Спр = СоздатьОбъект("Справочник.ДополнительныеПроводки");
ЭлементФСС_НС = ПолучитьПустоеЗначение("Справочник.ДополнительныеПроводки");
КоэфТравм = 0;
Если Спр.НайтиПоКоду("ФСС_НС")=1 Тогда // Есть травматизм
ЭлементФСС_НС = Спр.ТекущийЭлемент();
КоэфТравм = Спр.ПроцентОтРасчетнойБазы/100;
КонецЕсли;
В запрос:
|Функция НДФЛ = Сумма(Результат) когда(ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеИсчисленныеНДФЛ)=1);
|Функция ФБ = Сумма(Результат) когда((ВидРасч = ВидРасчета.ПФР) и (ДатаОкончания=ДатаАктуальности));
|Функция ПФРНак = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ПФРНакопительнаяЧасть)или (ВидРасч = ВидРасчета.ПФРНакопительнаяЧастьс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ПФРСтрах = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ПФРСтраховаяЧасть)или (ВидРасч = ВидРасчета.ПФРСтраховаяЧастьс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ФСС = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ФСС)или (ВидРасч = ВидРасчета.ФССс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ФФОМС = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ФФОМС)или (ВидРасч = ВидРасчета.ФФОМСс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция ТФОМС = Сумма(Результат) когда(((ВидРасч = ВидРасчета.ТФОМС)или (ВидРасч = ВидРасчета.ТФОМСс2010)) и (ДатаОкончания=ДатаАктуальности));
|Функция Травм = Сумма(Результат) когда (глВходитВБазуПроводки(ВидРасч, ЭлементФСС_НС) = 1);
ФСС_НС нужно потом дальше обрабатывать, после выгрузки результата запроса в ТЗ:
Тз.ВыбратьСтроки();
Пока Тз.ПолучитьСтроку() = 1 Цикл
КоэффициентФСС_НС_Сотрудника = 1;
//в некоторых случаях применяется понижающий коэффициент
Если РазделятьФССНС=1 Тогда
Категория=ТЗ.Объект.КатегорияПлательщикаПФР.Получить(ДатаАктуальности);
Если (Категория=Перечисление.КатегорияПлательщикаПФ.НРИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.СХИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.АДИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.ИПИВ)
или (Категория=Перечисление.КатегорияПлательщикаПФ.ФХИВ) Тогда
КоэффициентФСС_НС_Сотрудника = 0.6;
КонецЕсли;
Иначе
КоэффициентФСС_НС_Сотрудника = 0.6;
КонецЕсли;
Тз.Травм = Тз.Травм*КоэфТравм*КоэффициентФСС_НС_Сотрудника;
КонецЦикла;"
11.08.2010
09:35
#4
"здравствуйте
все никак не могу создать этот отчет
проблема сейчас в следующем
не правильно считается сума начисления зарплаты
обнаружил что в нее не попадают больничные и отпуска будущих периодов( то есть отпускные начесленные в текущем месяце за отпуск который будет в след месяце)
вот этой функцией в запросе собираю все начисления
|Функция Начисления = Сумма(Результат) когда (ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
потом в обработке вывожу по сотрудникам: ЗП = Запрос.Начисления;
если нет больничных и отпускных о все верно считается(проверял по расчетным лискам
итговую сумму сверял с суммой из свода по зарплате)"
все никак не могу создать этот отчет
проблема сейчас в следующем
не правильно считается сума начисления зарплаты
обнаружил что в нее не попадают больничные и отпуска будущих периодов( то есть отпускные начесленные в текущем месяце за отпуск который будет в след месяце)
вот этой функцией в запросе собираю все начисления
|Функция Начисления = Сумма(Результат) когда (ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
потом в обработке вывожу по сотрудникам: ЗП = Запрос.Начисления;
если нет больничных и отпускных о все верно считается(проверял по расчетным лискам
итговую сумму сверял с суммой из свода по зарплате)"
11.08.2010
10:15
#5
Вам нужно разобраться с понятиями "период действия" и "период регистрации".
"Период регистрации" - период журнала расчетов, в котором введены какие то записи.
"Период действия" - период, к которому записи относятся по смыслу, то есть, диапазон, описываемый реквизитами ДатаНач и ДатаКон.
Пример:
При текущем периоде журнала расчетов = июль 2010 года делаем Начисление отпуска, переходящее на август. Получим в журнале расчетов примерно такие записи:
1. Отпуск очередной с 20 июля 2010 г. по 31 июля 2010 г.
2. Отпуск очередной с 1 августа 2010 г. по 10 августа 2010 г.
Для №1:
Период регистрации = июль 2010 г.
Период действия = июль 2010 г.
Для №2:
Период регистрации = июль 2010 г.
Период действия = август 2010 г.
Когда вы запрос сделали, вы написали так:
> С Дата1 по Дата2
этот механизм выполняет выборку записей по принципу "по периоду действия", то есть, для нашего примера будет выбрано все, что по смыслу касается июля 2010 г. вне зависимости от того в каком периоде фиксировались сведения в ЖР.
если вы сделаете так:
> Период с Дата1 по Дата2
то получите решение своей задачи. Такой способ выборки даст вам все записи, зарегистрированные в ЖР в требуемый период времени, то есть, это выборка "по периоду регистрации"
"Период регистрации" - период журнала расчетов, в котором введены какие то записи.
"Период действия" - период, к которому записи относятся по смыслу, то есть, диапазон, описываемый реквизитами ДатаНач и ДатаКон.
Пример:
При текущем периоде журнала расчетов = июль 2010 года делаем Начисление отпуска, переходящее на август. Получим в журнале расчетов примерно такие записи:
1. Отпуск очередной с 20 июля 2010 г. по 31 июля 2010 г.
2. Отпуск очередной с 1 августа 2010 г. по 10 августа 2010 г.
Для №1:
Период регистрации = июль 2010 г.
Период действия = июль 2010 г.
Для №2:
Период регистрации = июль 2010 г.
Период действия = август 2010 г.
Когда вы запрос сделали, вы написали так:
> С Дата1 по Дата2
этот механизм выполняет выборку записей по принципу "по периоду действия", то есть, для нашего примера будет выбрано все, что по смыслу касается июля 2010 г. вне зависимости от того в каком периоде фиксировались сведения в ЖР.
если вы сделаете так:
> Период с Дата1 по Дата2
то получите решение своей задачи. Такой способ выборки даст вам все записи, зарегистрированные в ЖР в требуемый период времени, то есть, это выборка "по периоду регистрации"
11.08.2010
11:07
#6
Спасибо!!!
все вроде бы получилось
дело было как раз в периоде
буду дальше все проверять
все вроде бы получилось
дело было как раз в периоде
буду дальше все проверять
14.09.2010
11:47
#7
"Здравствуйте.
Снова прошу помощи, все с этим же отчетом.
Обработка с Вашей помощью, все-таки работает!
Бухгалтер попросил доработать немного.
Суть вот в чем, в отчете собираются суммы налогов с ЗП в отдельную графу, в том числе есть отчисления в ФСС.
В отчет идет Сумма взноса, а надо чтоб учитывалась Сумма к уплате, то есть из Суммы взноса вычитались Расходы за счет ФСС.
в запросе налог в ФСС отбирается строкой
|Функция ФСС = Сумма(Результат) когда((ВидРасч = ВидРасчета.ФССс2010) и (ДатаОкончания=ДатаАктуальности));
потом налоги с ЗП собираются в общую сумму:
Налоги = ПФРНак + ПФРСтрах + ФСС + ФФОМС + ТФОМС + Травм;
каким образом можно сделать, чтоб ФСС- это именно и была Сумма взноса без Расходов за счет ФСС?
"
Снова прошу помощи, все с этим же отчетом.
Обработка с Вашей помощью, все-таки работает!
Бухгалтер попросил доработать немного.
Суть вот в чем, в отчете собираются суммы налогов с ЗП в отдельную графу, в том числе есть отчисления в ФСС.
В отчет идет Сумма взноса, а надо чтоб учитывалась Сумма к уплате, то есть из Суммы взноса вычитались Расходы за счет ФСС.
в запросе налог в ФСС отбирается строкой
|Функция ФСС = Сумма(Результат) когда((ВидРасч = ВидРасчета.ФССс2010) и (ДатаОкончания=ДатаАктуальности));
потом налоги с ЗП собираются в общую сумму:
Налоги = ПФРНак + ПФРСтрах + ФСС + ФФОМС + ТФОМС + Травм;
каким образом можно сделать, чтоб ФСС- это именно и была Сумма взноса без Расходов за счет ФСС?
"
14.09.2010
12:50
#8
"//список видов расчетов "за счет ФСС"
СписокВРЗаСчетФСС=СоздатьОбъект("СписокЗначений");
//в список занесем настраиваемые виды расчетов из справочника с пометкой "расходы за счет ФСС"
ВидыРасчетов=СоздатьОбъект("Справочник.ВидыРасчетов");
ВидыРасчетов.ВыбратьЭлементы();
Пока ВидыРасчетов.ПолучитьЭлемент() = 1 Цикл
ВР=ВидыРасчетов.Расчет;
Если (ВР.ВходитВГруппу(ГруппаРасчетов.РасходыЗаСчетФСС)=0) и (ВР<>ВидРасчета.ОплатаБЛпоТравмеПоТекущемуМесяцу) и (ВР<>ВидРасчета.ОплатаБЛпоТравме) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2004) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2005) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2007) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2010) Тогда
Если (ВР.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1) или (ВР.ВходитВГруппу(ГруппаРасчетов.ДоходыВНатуральнойФорме)=1) Тогда
Если ВидыРасчетов.РасходыЗаСчетФСС = 1 Тогда
СписокВРЗаСчетФСС.ДобавитьЗначение(ВР);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
//добавим туда те виды расчетов, которые в группу РасходыЗаСчетФСС входят
Для i=1 По ГруппаРасчетов.РасходыЗаСчетФСС.Количество() Цикл
СписокВРЗаСчетФСС.ДобавитьЗначение(ГруппаРасчетов.РасходыЗаСчетФСС.ПолучитьРасчет(i));
КонецЦикла;
ТекстЗапроса="Период с Дата1 по Дата2;
|ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч;
|Результат = ЖурналРасчетов.Зарплата.Результат;
|Функция РасходыЗаСчетФСС = Сумма(Результат);
|Условие(ВидРасч в СписокВРЗаСчетФСС);";
СуммаЗаСчетФСС=0;
Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=1 Тогда
СуммаЗаСчетФСС=Запрос.РасходыЗаСчетФСС;
КонецЕсли;
ну и потом в ваше добавить, видимо:
Налоги = ПФРНак + ПФРСтрах + ФСС + ФФОМС + ТФОМС + Травм-СуммаЗаСчетФСС;"
СписокВРЗаСчетФСС=СоздатьОбъект("СписокЗначений");
//в список занесем настраиваемые виды расчетов из справочника с пометкой "расходы за счет ФСС"
ВидыРасчетов=СоздатьОбъект("Справочник.ВидыРасчетов");
ВидыРасчетов.ВыбратьЭлементы();
Пока ВидыРасчетов.ПолучитьЭлемент() = 1 Цикл
ВР=ВидыРасчетов.Расчет;
Если (ВР.ВходитВГруппу(ГруппаРасчетов.РасходыЗаСчетФСС)=0) и (ВР<>ВидРасчета.ОплатаБЛпоТравмеПоТекущемуМесяцу) и (ВР<>ВидРасчета.ОплатаБЛпоТравме) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2004) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2005) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2007) и (ВР<>ВидРасчета.ОплатаБЛпоТравмес2010) Тогда
Если (ВР.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1) или (ВР.ВходитВГруппу(ГруппаРасчетов.ДоходыВНатуральнойФорме)=1) Тогда
Если ВидыРасчетов.РасходыЗаСчетФСС = 1 Тогда
СписокВРЗаСчетФСС.ДобавитьЗначение(ВР);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
//добавим туда те виды расчетов, которые в группу РасходыЗаСчетФСС входят
Для i=1 По ГруппаРасчетов.РасходыЗаСчетФСС.Количество() Цикл
СписокВРЗаСчетФСС.ДобавитьЗначение(ГруппаРасчетов.РасходыЗаСчетФСС.ПолучитьРасчет(i));
КонецЦикла;
ТекстЗапроса="Период с Дата1 по Дата2;
|ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч;
|Результат = ЖурналРасчетов.Зарплата.Результат;
|Функция РасходыЗаСчетФСС = Сумма(Результат);
|Условие(ВидРасч в СписокВРЗаСчетФСС);";
СуммаЗаСчетФСС=0;
Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=1 Тогда
СуммаЗаСчетФСС=Запрос.РасходыЗаСчетФСС;
КонецЕсли;
ну и потом в ваше добавить, видимо:
Налоги = ПФРНак + ПФРСтрах + ФСС + ФФОМС + ТФОМС + Травм-СуммаЗаСчетФСС;"
30.09.2010
23:59
#10
"В начале добавить этот код с формированием списка значений где нибудь СписокВРЗаСчетФСС.
Добавь в запрос:
|Функция СуммаЗаСчетФСС = Сумма(Результат) когда(ПроверкаВхожденияВРвРасхзасчетФСС(ВидРасч) = 1) и (ДатаОкончания=ДатаАктуальности));
и функцию Сделай вверху
Функция ПроверкаВхожденияВРвРасхзасчетФСС(ВР)
Если СписокВРЗаСчетФСС.найтиЗначение(ВР) >0 тогда
возврат 1;
иначе
возврат 0;
КонецЕсли;
КонецФункции
Ну и дальше вычесть из итога, полученное значение, как то так..."
Добавь в запрос:
|Функция СуммаЗаСчетФСС = Сумма(Результат) когда(ПроверкаВхожденияВРвРасхзасчетФСС(ВидРасч) = 1) и (ДатаОкончания=ДатаАктуальности));
и функцию Сделай вверху
Функция ПроверкаВхожденияВРвРасхзасчетФСС(ВР)
Если СписокВРЗаСчетФСС.найтиЗначение(ВР) >0 тогда
возврат 1;
иначе
возврат 0;
КонецЕсли;
КонецФункции
Ну и дальше вычесть из итога, полученное значение, как то так..."
БП 7.70.518 Расходная накладнаяЗависание конфигурации при выполнении системной функции "удаление помеченных объектов"
Читают тему
(гостей: 1)