Имя: Пароль:
1C
1С v8
ЗУП. Т-61, кривости
0 pessok
 
19.06.13
10:16
Коллеги, приветствую. Внезапно столкнулся с затыком, который утренний мозг (да и вчерашне-вечерний) никак не может решить. Есть группа сотрудников, уволенных по соглашению, им доначисляются некие, согласованные с отделом кадров суммы. Что делает расчетчик:
начисление зряплаты за месяц (31.05.2013) - сколько там наработали за месяц, допустим, 10 рублей
разовые начисления (дополнительные) на согласованную сумму (31.05.2013 16:00:00)- допустим, еще 10 рублей.
Расчет при увольнении, с компенсацией отпуска (31.05.2013 14:20:59)- 7 рублей
Ну и выплату 27 рублей, тоже 31 мая.

В расчетном листке все красиво, переходи в расчет при увольнении, дабы распечатать Т-61 и...

Долг за сотрудником = 10 руб.

Притом эти 10 рублей - не попавшие основные начисления по календарным дням, компенсация при увольнении попадает нормально.

Отсюда вопрос - что именно не так делает расчетчик?

З.Ы.

Запрос, который должен бы получать в поле РезультатСумма 20 рублей, а получает 10



ВЫБРАТЬ
   ДАТАВРЕМЯ(2013, 5, 1) КАК ДатаНачала,
   ДАТАВРЕМЯ(2013, 6, 30) КАК ДатаОкончания,
   "ДругиеНачисленияЗаТекущийМесяц" КАК ГруппаНачислений
ПОМЕСТИТЬ ИсходныеДанные

ИНДЕКСИРОВАТЬ ПО
   ДатаНачала,
   ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВЫБОР
       КОГДА ИсходныеДанные.ДатаНачала > ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало
           ТОГДА ИсходныеДанные.ДатаНачала
       ИНАЧЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало
   КОНЕЦ КАК ДатаНачала,
   ВЫБОР
       КОГДА ИсходныеДанные.ДатаОкончания < ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец
           ТОГДА ИсходныеДанные.ДатаОкончания
       ИНАЧЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец
   КОНЕЦ КАК ДатаОкончания,
   ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидРасчета,
   ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.Результат,
   ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ГрафикРаботы КАК ГрафикРаботы,
   ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидУчетаВремени КАК ВидУчетаВремени,
   ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.Регистратор КАК Регистратор,
   ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.НомерСтроки КАК НомерСтроки,
   ИсходныеДанные.ГруппаНачислений
ПОМЕСТИТЬ ОсновныеНачисленияФактическийПериодДействия
ИЗ
   ИсходныеДанные КАК ИсходныеДанные
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия(
               Сотрудник = &Сотрудник
                   И ПериодДействия В (&ПериодыДействия)) КАК ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия
       ПО (ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало <= ИсходныеДанные.ДатаОкончания)
           И (ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец >= ИсходныеДанные.ДатаНачала)
           И (ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодРегистрации <= ИсходныеДанные.ДатаНачала)
           И (НЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидРасчета В (&НеВходятВДругиеНачисления))
           И (ВЫБОР
               КОГДА &ДатаДокумента = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                   ТОГДА ИСТИНА
               ИНАЧЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.Регистратор.Дата <= КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ)
           КОНЕЦ)
ГДЕ
   НЕ ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме

ИНДЕКСИРОВАТЬ ПО
   ГрафикРаботы,
   ВидУчетаВремени,
   Регистратор,
   НомерСтроки,
   ДатаНачала
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК ОсновноеЗначение,
   ОсновныеНачисленияФактическийПериодДействия.ДатаНачала КАК ДатаНачала,
   ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания КАК ДатаОкончания,
   ОсновныеНачисленияФактическийПериодДействия.Регистратор КАК Регистратор,
   ОсновныеНачисленияФактическийПериодДействия.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ ОтработанноеВремя
ИЗ
   ОсновныеНачисленияФактическийПериодДействия КАК ОсновныеНачисленияФактическийПериодДействия
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
       ПО ОсновныеНачисленияФактическийПериодДействия.ГрафикРаботы = ГрафикиРаботыПоВидамВремени.ГрафикРаботы
           И (НАЧАЛОПЕРИОДА(ОсновныеНачисленияФактическийПериодДействия.ДатаНачала, МЕСЯЦ) = ГрафикиРаботыПоВидамВремени.Месяц)
           И ОсновныеНачисленияФактическийПериодДействия.ВидУчетаВремени = ГрафикиРаботыПоВидамВремени.ВидУчетаВремени
           И (ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ ОсновныеНачисленияФактическийПериодДействия.ДатаНачала И ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания)

СГРУППИРОВАТЬ ПО
   ОсновныеНачисленияФактическийПериодДействия.ДатаНачала,
   ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания,
   ОсновныеНачисленияФактическийПериодДействия.Регистратор,
   ОсновныеНачисленияФактическийПериодДействия.НомерСтроки

ИНДЕКСИРОВАТЬ ПО
   Регистратор,
   НомерСтроки,
   ДатаНачала,
   ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РезультатыНачислений.ГруппаНачислений,
   ЕСТЬNULL(СУММА(РезультатыНачислений.Результат), 0) КАК РезультатСумма,
   ЕСТЬNULL(СУММА(РезультатыНачислений.НеОблагаетсяНДФЛ), 0) КАК НеОблагаетсяНДФЛ
ИЗ
   (ВЫБРАТЬ
       СУММА(РезультатыОсновныхНачислений.Результат) КАК Результат,
       РезультатыОсновныхНачислений.ГруппаНачислений КАК ГруппаНачислений,
       СУММА(РезультатыОсновныхНачислений.НеОблагаетсяНДФЛ) КАК НеОблагаетсяНДФЛ
   ИЗ
       (ВЫБРАТЬ
           ОсновныеНачисленияФактическийПериодДействия.ДатаНачала КАК ДатаНачала,
           ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания КАК ДатаОкончания,
           СУММА(ВЫБОР
                   КОГДА ЕСТЬNULL(ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия, 0) = 0
                       ТОГДА ОсновныеНачисленияФактическийПериодДействия.Результат
                   ИНАЧЕ ОсновныеНачисленияФактическийПериодДействия.Результат * (ОтработанноеВремя.ОсновноеЗначение / ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия)
               КОНЕЦ) КАК Результат,
           ОсновныеНачисленияФактическийПериодДействия.ГруппаНачислений КАК ГруппаНачислений,
           ВЫБОР
               КОГДА ОсновныеНачисленияФактическийПериодДействия.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка)
                   ТОГДА ВЫБОР
                           КОГДА ЕСТЬNULL(ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия, 0) = 0
                               ТОГДА ОсновныеНачисленияФактическийПериодДействия.Результат
                           ИНАЧЕ ОсновныеНачисленияФактическийПериодДействия.Результат * (ОтработанноеВремя.ОсновноеЗначение / ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия)
                       КОНЕЦ
               ИНАЧЕ 0
           КОНЕЦ КАК НеОблагаетсяНДФЛ
       ИЗ
           ОсновныеНачисленияФактическийПериодДействия КАК ОсновныеНачисленияФактическийПериодДействия
               ЛЕВОЕ СОЕДИНЕНИЕ ОтработанноеВремя КАК ОтработанноеВремя
               ПО ОсновныеНачисленияФактическийПериодДействия.Регистратор = ОтработанноеВремя.Регистратор
                   И ОсновныеНачисленияФактическийПериодДействия.НомерСтроки = ОтработанноеВремя.НомерСтроки
                   И ОсновныеНачисленияФактическийПериодДействия.ДатаНачала = ОтработанноеВремя.ДатаНачала
                   И ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания = ОтработанноеВремя.ДатаОкончания
               ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ДанныеГрафика(
                       Сотрудник = &Сотрудник
                           И ПериодДействия В (&ПериодыДействия)) КАК ДанныеГрафика
               ПО ОсновныеНачисленияФактическийПериодДействия.Регистратор = ДанныеГрафика.Регистратор
                   И ОсновныеНачисленияФактическийПериодДействия.НомерСтроки = ДанныеГрафика.НомерСтроки
       
       СГРУППИРОВАТЬ ПО
           ОсновныеНачисленияФактическийПериодДействия.ДатаОкончания,
           ОсновныеНачисленияФактическийПериодДействия.ДатаНачала,
           ОсновныеНачисленияФактическийПериодДействия.ГруппаНачислений,
           ВЫБОР
               КОГДА ОсновныеНачисленияФактическийПериодДействия.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка)
                   ТОГДА ВЫБОР
                           КОГДА ЕСТЬNULL(ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия, 0) = 0
                               ТОГДА ОсновныеНачисленияФактическийПериодДействия.Результат
                           ИНАЧЕ ОсновныеНачисленияФактическийПериодДействия.Результат * (ОтработанноеВремя.ОсновноеЗначение / ДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия)
                       КОНЕЦ
               ИНАЧЕ 0
           КОНЕЦ) КАК РезультатыОсновныхНачислений
   
   СГРУППИРОВАТЬ ПО
       РезультатыОсновныхНачислений.ГруппаНачислений
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
       ИсходныеДанные.ГруппаНачислений,
       ВЫБОР
           КОГДА ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка)
               ТОГДА ДополнительныеНачисленияРаботниковОрганизаций.Результат
           ИНАЧЕ 0
       КОНЕЦ
   ИЗ
       ИсходныеДанные КАК ИсходныеДанные
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
           ПО (ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ ИсходныеДанные.ДатаНачала И ИсходныеДанные.ДатаОкончания)
               И (ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник)
               И (НЕ ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета В (&НеВходятВДругиеНачисления))
               И (НЕ ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме)
               И (ВЫБОР
                   КОГДА &ДатаДокумента = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                       ТОГДА ИСТИНА
                   ИНАЧЕ ДополнительныеНачисленияРаботниковОрганизаций.Регистратор.Дата <= КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ)
               КОНЕЦ)
   
   СГРУППИРОВАТЬ ПО
       ИсходныеДанные.ГруппаНачислений,
       ВЫБОР
           КОГДА ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка)
               ТОГДА ДополнительныеНачисленияРаботниковОрганизаций.Результат
           ИНАЧЕ 0
       КОНЕЦ) КАК РезультатыНачислений

СГРУППИРОВАТЬ ПО
   РезультатыНачислений.ГруппаНачислений

параметры:
       НеВходятВДругиеНачисления = Новый Массив;
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.ВыходноеПособие);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаКалендарныеДни);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаКалендарныеДниБезУвольнения);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаШестидневка);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.КомпенсацияОтпускаШестидневкаБезУвольнения);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.СохраняемыйЗаработокНаВремяТрудоустройства);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.УдержаниеЗаНеотработанныйОтпускКалендарныеДни);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.УдержаниеЗаНеотработанныйОтпускШестидневка);
   НеВходятВДругиеНачисления.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОтпускПоБеременностиИРодам);
   
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
   Запрос.УстановитьПараметр("ПериодыДействия", ПериодыДействия); //это массив, в нем одна дата = 01.05.2013 00:00:00
   Запрос.УстановитьПараметр("НеВходятВДругиеНачисления", НеВходятВДругиеНачисления);
   Запрос.УстановитьПараметр("ДатаДокумента", ?(ДатаДокумента = Неопределено, '00010101000000', ДатаДокумента)); //дата расчета при увольнении


1 pessok
 
19.06.13
11:02
На правах АПа: такая ситуёвина происходит в том случае, если зарплата к выплате идет раньше расчета при увольнении. если все делать как положено, то образуется уже задолженность за организацией, видит только выплату аванса... Что за наркомания то, блин?
2 pessok
 
19.06.13
11:54
апну
3 pessok
 
19.06.13
13:39
апну еще разок
Программист всегда исправляет последнюю ошибку.