Имя: Пароль:
1C
1С v8
ЗиУП Замудренный расчет надбавки за выслугу
0 Uragan_a
 
04.11.13
15:42
Надбавка расчитывается по формуле:

Результат = Оклад / 12 месяцев * процент по шкале выслуги

Процент можно попробовать получить через условия.

Но самый подвох в том, что если человек отработал неделю, то ему надо начислить не по рабочим дням 5 дней, а по календарным 7 дней.

Вообщем ничего понять не могу. Фигня какая - то. Даже не представляю, как это организовать.
1 mdocs
 
04.11.13
15:49
ну стаж по рабочим никогда в жизни и не считался. Формула бредовая очевидно. реально надо что-то типа среднемесячной базы исходя из года начислений БазаЗаГод/12*ОценитьПоШкале
2 Uragan_a
 
05.11.13
00:56
(1) и все же как правильно посчитать календарные дни?

((БазаЗаГод/12*ОценитьПоШкале) )/КалендарныхДнейВмесяце*ВремяВКалендарныхДнях

?
3 Uragan_a
 
05.11.13
01:02
как получить сколько отработал сотрудник в календарных днях?
4 Uragan_a
 
05.11.13
02:43
Вот, что у меня получилось:

Результат = (((Тарифная ставка месячная/12)* 2.1* ?(Стаж работы<12, 0, ?(Стаж работы<36, 0.6, ?(Стаж работы<60, 0.8, ?(Стаж работы<84, 1, ?(Стаж работы<120, 1.2, ?(Стаж работы<156, 1.5, ?(Стаж работы<180, 1.8, ?(Стаж работы<216, 2, 2.2)))))))) )/Календарных дней в месяце)*(Отработано времени в днях*1.4)

Чтобы получить количество отработанных календарных дней умножаю на 1.4.
(Отработано времени в днях*1.4)
5 Гобсек
 
05.11.13
03:46
Уверен, что регламентированный "от стажа процентом" не годится?
6 Uragan_a
 
05.11.13
04:36
(5) уверен!

Они в 7 ки 7 лет так считали, расчет полностью написанный программистом был.
7 Uragan_a
 
05.11.13
04:37
(Отработано времени в днях*1.4) - не всегда правильно отрабатывает, кто лучше сделал расчет количества отработанный календарных дней.

в 7ке было так:

ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
    ЖрнЗарплата.ВыбратьЗаписиПоОбъекту(Объект, ДатаНачала, ДатаОкончания);
    Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл
        Если глВходитВБазу(ЖрнЗарплата.ВидРасч, ВидРасчета.НадбавкаЗаВыслугуЛет) > 0 Тогда
            ОтработаноДней = ОтработаноДней + ((ЖрнЗарплата.ДатаОкончания - ЖрнЗарплата.ДатаНачала) + 1);
        КонецЕсли;
    КонецЦикла;
8 Гобсек
 
05.11.13
05:28
Считать чью-то самописную реализацию алгоритма истиной в последней инстанции вряд ли разумно.
     Моя самописная программа для расчета зарплаты эксплуатировалась свыше 10 лет. Выслуга лет в случаях, когда процент выслуги менялся внутри расчетного периода, рассчитывалась по некой формуле, которую я сам же и придумал. Если память не изменяет, то я просто брал в качестве коэффициентов количество календарных дней со старыми процентами и количество календарных дней с новыми процентами. Дробил базу для расчета в соответствии с этими коэффициентами. На первую часть накручивал процент выслуги до увеличения. На вторую часть накручивал процент выслуги после увеличения. Складывал. Выдавал предупреждение бухгалтеру, чтобы он проверил сумму выслуги лет с калькулятором в руках. На практике бухгалтера с этим не заморачивались.
    После перехода на ЗУП просто использовал стандартный алгоритм из ЗУПа. Никто претензий не предъявлял.
9 Uragan_a
 
05.11.13
06:16
(8) я не спорю и тоже подумал, что вероятно они сами придумали, но спорить нет возможности.

Сейчас проблема в получении календарных отработанных дней)
10 Uragan_a
 
05.11.13
07:08
(9) капец, как подобное реализовать в 8ке?
11 Uragan_a
 
05.11.13
07:26
(8) бух заострила вниманием, что ей нужно начисление надбавки именно по календарным дням, если начислять регламентированным начислением, то на эту сумму не выходим
Как надо считать
(15865/12 * 2,1 * 0,8)/31*21 = 1504,6161
Как считает регламентированный вид расчета
(15865/12 * 2,1 * 0,8)/23*15 = 1448,5434
или по другому
10346,7391 / 12 * 2.1 * 0,8 =    1448,5434

3.1. Вознаграждение за выслугу лет начисляется исходя из 1/12 части тарифной ставки (должностного оклада) работника.

Потому делим на 12 и 2.1 это районный и северная надбавка.
12 Uragan_a
 
05.11.13
07:27
0,8 процент от стажа
13 Uragan_a
 
05.11.13
08:03
может какие-то документы регламентируют начисление данной надбавки? буха не переубедить сейчас
14 Uragan_a
 
05.11.13
08:06
а уже порядок их начисления следует установить внутренними документами организации, к примеру, в Положении о премировании, коллективном договоре, правилах внутреннего трудового распорядка и других локальных актах, регулирующих порядок и условия выплат.
15 Uragan_a
 
05.11.13
09:25
что за показатель при создании формулы: "время в календарных днях"? у меня возвращает он то же что и "календарных дней в месяце", но видимо я неправильно его настроил. Может этот показатель должен отражать количество отработанного времени в календарных днях?
16 Uragan_a
 
05.11.13
12:57
Ребят просто подскажите, есть мысли как получить количество отработанных календарных дней?
17 mdocs
 
05.11.13
15:59
примерный аналог семерочного алгоритма. только по основным начислениям

[code]
ВЫБРАТЬ
    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.ВидРасчета
ПОМЕСТИТЬ втРасчетыБазы
ИЗ
    ПланВидовРасчета.ОсновныеНачисленияОрганизаций.БазовыеВидыРасчета КАК ОсновныеНачисленияОрганизацийБазовыеВидыРасчета
ГДЕ
    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.Ссылка = &БазовыйРасчет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало,
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец,
    РАЗНОСТЬДАТ(ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало, ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец, ДЕНЬ) + 1 КАК ДниКалендарные
ПОМЕСТИТЬ втДни
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &НачалоБазовогоПериода
    И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец <= &КонецБазовогоПериода
    И ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
    И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В
            (ВЫБРАТЬ
                втРасчетыБазы.ВидРасчета
            ИЗ
                втРасчетыБазы)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(втДни.ДниКалендарные) КАК ДниКалендарные
ИЗ
    втДни КАК втДни
[/code]
18 mdocs
 
05.11.13
16:02
еще сторно забыл учесть, примерно так

ВЫБРАТЬ
    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.ВидРасчета
ПОМЕСТИТЬ втРасчетыБазы
ИЗ
    ПланВидовРасчета.ОсновныеНачисленияОрганизаций.БазовыеВидыРасчета КАК ОсновныеНачисленияОрганизацийБазовыеВидыРасчета
ГДЕ
    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.Ссылка = &БазовыйРасчет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало,
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец,
    (РАЗНОСТЬДАТ(ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало, ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец, ДЕНЬ) + 1) * ВЫБОР
        КОГДА ОсновныеНачисленияРаботниковОрганизаций.Сторно = ИСТИНА
            ТОГДА -1
        ИНАЧЕ 1
    КОНЕЦ КАК ДниКалендарные
ПОМЕСТИТЬ втДни
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &НачалоБазовогоПериода
    И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец <= &КонецБазовогоПериода
    И ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
    И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В
            (ВЫБРАТЬ
                втРасчетыБазы.ВидРасчета
            ИЗ
                втРасчетыБазы)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(втДни.ДниКалендарные) КАК ДниКалендарные
ИЗ
    втДни КАК втДни
19 Uragan_a
 
06.11.13
01:03
(17) спасибо, но в отличии от 7ки в 8ке Оклад не смотря на отклонения все равно в РР имеет период с 1 по 31. И поэтому всегда будет 31 календарный день.
20 hhhh
 
06.11.13
01:28
(19) а если в месяце 30 дней?
21 Uragan_a
 
06.11.13
01:29
(20) загвостка не в этом. мне надо, если он отработал 5 дней рабочих, программа должна поставить 7 календарных.

Если он отработал один рабочий день, то это может быть два календарных или даже три, а может быть один.
22 hhhh
 
06.11.13
01:40
ну скопируй из семерки, зачем париться?
23 Uragan_a
 
06.11.13
02:06
(22) этот код к 7ке не применим
24 Uragan_a
 
06.11.13
02:35
http://s1.ipicture.ru/uploads/20131106/3WjI7p6U.png
Судя по таблице 17.2 на рисунке оклад должен делиться на два периода, но по факту не делится:
http://s1.ipicture.ru/uploads/20131106/rz83RTS2.png
25 Uragan_a
 
06.11.13
12:07
Сейчас думаю расчитывать календари путем удаления из общих календарных дней дни отклонений, как вариант? ну что-то кажется будет громоздко или не?)
26 Flika
 
06.11.13
13:24
ого у вас РК с СН какие...
(25) маневр - фигня, главное - результат :)))
27 mdocs
 
06.11.13
17:47
(25) возьми тогда из виртуальной таблицы ФПД по окладу.
28 Uragan_a
 
07.11.13
01:17
(27) был бы благодарен примеру программирования вида расчета в конфигураторе?)))
29 Uragan_a
 
07.11.13
02:55
(27) я так понимаю регламентированные расчитываются не по обычной формуле, а где-то отдельно прописаны в конфигурации, но что - ио не могу выловить их расчет.
30 lopus
 
07.11.13
07:17
Слушай, но если у вас так замудренно считается, напиши обработку ТЧ, подключи к документу и считайте на здоровье.
31 Uragan_a
 
10.11.13
12:17
(27) получается из этой таблицы мы можем (с помощью запроса из(17) получить данные только после проведения документа начисление зарплаты?

я думал если создать свой показатель и автоматом расчитывать его до начсления? но так не получится, пока док не проведен я не могу тем запросом получить календарные дни (.

Может еще, что-то можно придумать?

Или как вариант делать начисление, потом расчет показателя (календарных дней), а потом конечного начсления?

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

Заранее спасибо!
32 Мимохожий Однако
 
10.11.13
12:25
(29)Отладчиком пробовал?
(31)Ломать - не строить. ИМХО, достаточно типовых настроек без изменения конфигурации.
33 Uragan_a
 
10.11.13
12:56
(32)
- 1 нашел.
- 2 помоги, я заплачу, уже ничего в голову не идет.
34 Uragan_a
 
10.11.13
12:57
(30) не могу понять почему при расчети этот запрос получает данные без проведения документа наичления?
а если просто запросником то, пока не проведу док возваращет нулл.
35 Uragan_a
 
10.11.13
12:57
*расчете
36 mdocs
 
10.11.13
13:25
ВЫБРАТЬ
    ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало,
    ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец,
    ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ВидРасчета,
    ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.Сотрудник,
    РАЗНОСТЬДАТ(ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияНачало, ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия.ПериодДействияКонец, ДЕНЬ) + 1 КАК КалендарныеДни
ПОМЕСТИТЬ втРаздельно
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия(
            ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода
                И ВидРасчета.ВидВремени В (&ВНорме)) КАК ОсновныеНачисленияРаботниковОрганизацийФактическийПериодДействия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втРаздельно.ВидРасчета,
    втРаздельно.Сотрудник,
    СУММА(втРаздельно.КалендарныеДни) КАК КалендарныеДни
ИЗ
    втРаздельно КАК втРаздельно

СГРУППИРОВАТЬ ПО
    втРаздельно.ВидРасчета,
    втРаздельно.Сотрудник

Норма из ФПД, в чем проблема-то.
37 Uragan_a
 
10.11.13
13:38
(36) без проведения документа начисления, запрос возвращает пусто
спасибо работает как надо, но в начале необходимо провести док.
38 Uragan_a
 
10.11.13
13:38
(36) или я опять не понимаю
39 Uragan_a
 
10.11.13
13:47
так как данные записываются только после проведения документа в регистр
40 mdocs
 
10.11.13
13:53
1. Расчетчитики заполняют Начисление зп как обычно и проводят его.
2. Создают новый документ регистрации разовых начислений и твоей обработкой табличной части  заполняют и рассчитывают надбавку за стаж
3. Заходят в документ 1 или создают новое начисление ЗП и считают НДФЛ.

При использовании ЗУП без подобных регламентов никуда не деться. Все делается без изменения типовой.
41 mdocs
 
10.11.13
13:55
в п.2 пишешь:
"если не найден документ из п.1 - да пошли вы все на.... сначала введите документ п.1 и проведите его."
42 Uragan_a
 
10.11.13
13:59
(41), понял, спасибо!
43 kumena
 
10.11.13
14:01
(40, 41) мягко говоря, на месте расчетчика я бы не принял такую работу.
44 Uragan_a
 
10.11.13
14:02
(43) скажи как сделать, чтобы ты принял
45 kumena
 
10.11.13
14:02
+43 у чистова на форуме почитайте как надо расчеты настраивать, и запросы научитесь писать.
46 kumena
 
10.11.13
14:03
напоминает - расказ про открыть сумочку достать кошелку ...
47 Uragan_a
 
10.11.13
14:03
(45) дай ссылочку где почитать
48 kumena
 
10.11.13
14:05
49 mdocs
 
10.11.13
14:09
(45) нука нука и запрос свой в студию и настройку расчета. чего молчал то столько дней?
50 Uragan_a
 
10.11.13
14:18
(45) запрос кажется довольно классным, я не скоро такой смогу написать)))
51 kumena
 
10.11.13
14:43
(49) забесплатно - неинтересно.
запросы писать умею, можешь тут посмотреть http://www.kumena.ru/
(50) тренируйтесь, это по сути самое важное.
52 mdocs
 
10.11.13
15:00
аааа. Очередной заяц, который любил давать советы))). На сайта пара унылых чуть модифицированных типовых форм.
53 Uragan_a
 
10.11.13
15:05
(36) спасибо огромное, впринципе почти все получилось, я сейчас чуть запрос изменю, но это будет не красиво, поможете оптимизировать, если что и по красивее сделать)
54 hhhh
 
10.11.13
16:29
(51) телефончик-то мобильный. Какая-то левая у вас фирма. Небось и расчетного счета нет.
55 Uragan_a
 
11.11.13
04:36
[code]
ВЫБРАТЬ
    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.ВидРасчета
ПОМЕСТИТЬ втРасчетыБазы
ИЗ
    ПланВидовРасчета.ОсновныеНачисленияОрганизаций.БазовыеВидыРасчета КАК ОсновныеНачисленияОрганизацийБазовыеВидыРасчета
ГДЕ
    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.Ссылка = &БазовыйРасчет
;

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(втДни.ДниКалендарные) КАК ДниКалендарные
ПОМЕСТИТЬ втОтработанноКалендарей
ИЗ
    втДни КАК втДни
;    
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втОтработанноКалендарей.ДниКалендарные КАК ДниКалендарные,
    втДниОбщие.ДниКалендарныеОбщие КАК ДниКалендарныеОбщие,
    втДниОбщие.ТарифнаяСтавка КАК ТарифнаяСтавка
ИЗ
    втОтработанноКалендарей КАК втОтработанноКалендарей, втДниОбщие КАК втДниОбщие
[/code]
56 Uragan_a
 
11.11.13
04:36
(52) можно оптимизировать?)
57 Uragan_a
 
11.11.13
04:44
во общем добавил в модульРасчетаПредопределяемый:

ИначеЕсли СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ВыслугаПоДоговору Тогда
            
            
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
                           |    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.ВидРасчета
                           |ПОМЕСТИТЬ втРасчетыБазы
                           |ИЗ
                           |    ПланВидовРасчета.ОсновныеНачисленияОрганизаций.БазовыеВидыРасчета КАК ОсновныеНачисленияОрганизацийБазовыеВидыРасчета
                           |ГДЕ
                           |    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.Ссылка = &БазовыйРасчет
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    ОсновныеНачисленияФП.ВидРасчета,
                           |    ОсновныеНачисленияФП.ПериодДействияНачало,
                           |    ОсновныеНачисленияФП.ПериодДействияКонец,
                           |    РАЗНОСТЬДАТ(ОсновныеНачисленияФП.ПериодДействияНачало, ОсновныеНачисленияФП.ПериодДействияКонец, ДЕНЬ) + 1 КАК ДниКалендарные
                           |ПОМЕСТИТЬ втДни
                           |ИЗ
                           |    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия КАК ОсновныеНачисленияФП
                           |ГДЕ
                           |    ОсновныеНачисленияФП.ПериодДействияНачало >= &НачалоБазовогоПериода
                           |    И ОсновныеНачисленияФП.ПериодДействияКонец <= &КонецБазовогоПериода
                           |    И ОсновныеНачисленияФП.Сотрудник = &Сотрудник
                           |    И ОсновныеНачисленияФП.ВидРасчета В
                           |            (ВЫБРАТЬ
                           |                втРасчетыБазы.ВидРасчета
                           |            ИЗ
                           |                втРасчетыБазы)
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
                           |    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало,
                           |    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец,
                           |    РАЗНОСТЬДАТ(ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало, ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец, ДЕНЬ) + 1 КАК ДниКалендарныеОбщие,
                           |    ОсновныеНачисленияРаботниковОрганизаций.Показатель1 КАК ТарифнаяСтавка
                           |ПОМЕСТИТЬ втДниОбщие
                           |ИЗ
                           |    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
                           |ГДЕ
                           |    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &НачалоБазовогоПериода
                           |    И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец <= &КонецБазовогоПериода
                           |    И ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
                           |    И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В
                           |            (ВЫБРАТЬ
                           |                втРасчетыБазы.ВидРасчета
                           |            ИЗ
                           |                втРасчетыБазы)
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    СУММА(втДни.ДниКалендарные) КАК ДниКалендарные
                           |ПОМЕСТИТЬ втОтработанноКалендарей
                           |ИЗ
                           |    втДни КАК втДни
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    втОтработанноКалендарей.ДниКалендарные КАК ДниКалендарные,
                           |    втДниОбщие.ДниКалендарныеОбщие КАК ДниКалендарныеОбщие,
                           |    втДниОбщие.ТарифнаяСтавка КАК ТарифнаяСтавка
                           |ИЗ
                           |    втОтработанноКалендарей КАК втОтработанноКалендарей,
                           |    втДниОбщие КАК втДниОбщие";
            Запрос.УстановитьПараметр("НачалоБазовогоПериода", ИсходныеДанные.ПериодДействияНачало);
            Запрос.УстановитьПараметр("КонецБазовогоПериода",  ИсходныеДанные.ПериодДействияКонец);
            Запрос.УстановитьПараметр("Сотрудник",             ИсходныеДанные.Сотрудник);
            Запрос.УстановитьПараметр("БазовыйРасчет",         ИсходныеДанные.ВидРасчета);
            
            РЗ = Запрос.Выполнить().Выбрать();
            Пока РЗ.Следующий() Цикл
                 ДнейКалендарныхОтработанно = РЗ.ДниКалендарные;
                 ДнейКалендарныхВсего         = РЗ.ДниКалендарныеОбщие;
                 ТарифнаяСтавка             = РЗ.ТарифнаяСтавка;
            КонецЦикла;
            
             Результат = (ТарифнаяСтавка / 12 * 0.8 * 2.1) / ДнейКалендарныхВсего * ДнейКалендарныхОтработанно;
            
             //            Результат = СтрокаДвижений[ПоказательРазмер] * ОтработаноВремениОсновное;

            
            
            
            //ОтработаноВремениОсновное = ОплачиваемоеВремя(ИсходныеДанные, СтрокаДвижений, КомментироватьРасчет, КомментарийВидаРасчета, , ГрафикиБезРабочегоВремени);
            //Результат = СтрокаДвижений[ПоказательРазмер] * ОтработаноВремениОсновное;
            //Если КомментироватьРасчет Тогда
            //    ОбщегоНазначенияЗК.КомментарийРасчета("Тарифная ставка: " + СтрокаДвижений[ПоказательРазмер], КомментарийВидаРасчета);
            //    ОбщегоНазначенияЗК.КомментарийРасчета("Отработанное время: " + ОтработаноВремениОсновное, КомментарийВидаРасчета);
            //КонецЕсли;
            //
            //СтрокаДвижений.ОплаченоДнейЧасов = ОтработаноВремениОсновное * ?(СтрокаДвижений.Сторно,-1,1);
            
            
            
            
            
            
Вроде заработало даже без проведения документа и расчитывается при расчете зарплаты.

Пришлось добавить свой способ расчета.
58 lopus
 
11.11.13
07:21
Чего то обработку сторно записей я ни где не увидел.
59 Uragan_a
 
12.11.13
06:37
ИначеЕсли СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.Выслуга Тогда
            
            
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
                           |    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.ВидРасчета
                           |ПОМЕСТИТЬ втРасчетыБазы
                           |ИЗ
                           |    ПланВидовРасчета.ОсновныеНачисленияОрганизаций.БазовыеВидыРасчета КАК ОсновныеНачисленияОрганизацийБазовыеВидыРасчета
                           |ГДЕ
                           |    ОсновныеНачисленияОрганизацийБазовыеВидыРасчета.Ссылка = &БазовыйРасчет
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    ОсновныеНачисленияФП.ВидРасчета,
                           |    ОсновныеНачисленияФП.ПериодДействияНачало,
                           |    ОсновныеНачисленияФП.ПериодДействияКонец,
                           |    РАЗНОСТЬДАТ(ОсновныеНачисленияФП.ПериодДействияНачало, ОсновныеНачисленияФП.ПериодДействияКонец, ДЕНЬ) + 1 КАК ДниКалендарные
                           |ПОМЕСТИТЬ втДни
                           |ИЗ
                           |    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия КАК ОсновныеНачисленияФП
                           |ГДЕ
                           |    ОсновныеНачисленияФП.ПериодДействияНачало >= &НачалоБазовогоПериода
                           |    И ОсновныеНачисленияФП.ПериодДействияКонец <= &КонецБазовогоПериода
                           |    И ОсновныеНачисленияФП.Сотрудник = &Сотрудник
                           |    И ОсновныеНачисленияФП.ВидРасчета В
                           |            (ВЫБРАТЬ
                           |                втРасчетыБазы.ВидРасчета
                           |            ИЗ
                           |                втРасчетыБазы)
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
                           |    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало,
                           |    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец,
                           |    РАЗНОСТЬДАТ(ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало, ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец, ДЕНЬ) + 1 КАК ДниКалендарныеОбщие,
                           |    ОсновныеНачисленияРаботниковОрганизаций.Показатель1 КАК ТарифнаяСтавка
                           |ПОМЕСТИТЬ втДниОбщие
                           |ИЗ
                           |    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
                           |ГДЕ
                           |    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &НачалоБазовогоПериода
                           |    И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец <= &КонецБазовогоПериода
                           |    И ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
                           |    И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В
                           |            (ВЫБРАТЬ
                           |                втРасчетыБазы.ВидРасчета
                           |            ИЗ
                           |                втРасчетыБазы)
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    СУММА(втДни.ДниКалендарные) КАК ДниКалендарные
                           |ПОМЕСТИТЬ втОтработанноКалендарей
                           |ИЗ
                           |    втДни КАК втДни
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    ФизическиеЛицаСтажи.ДатаОтсчета,
                           |    РАЗНОСТЬДАТ(ФизическиеЛицаСтажи.ДатаОтсчета, &КонецБазовогоПериода, МЕСЯЦ) КАК СтажМесяцев
                           |ПОМЕСТИТЬ втСтаж
                           |ИЗ
                           |    Справочник.ФизическиеЛица.Стажи КАК ФизическиеЛицаСтажи
                           |ГДЕ
                           |    ФизическиеЛицаСтажи.Ссылка = &ФизЛицо
                           |    И ФизическиеЛицаСтажи.ВидСтажа = &ВидСтажа
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////
                           |ВЫБРАТЬ
                           |    втОтработанноКалендарей.ДниКалендарные КАК ДниКалендарные,
                           |    втДниОбщие.ДниКалендарныеОбщие КАК ДниКалендарныеОбщие,
                           |    втДниОбщие.ТарифнаяСтавка КАК ТарифнаяСтавка,
                           |    втСтаж.СтажМесяцев КАК СтажМесяцев
                           |ИЗ
                           |    втОтработанноКалендарей КАК втОтработанноКалендарей,
                           |    втДниОбщие КАК втДниОбщие, втСтаж КАК втСтаж";
                          
                          
            Запрос.УстановитьПараметр("НачалоБазовогоПериода", ИсходныеДанные.ПериодДействияНачало);
            Запрос.УстановитьПараметр("КонецБазовогоПериода",  ИсходныеДанные.ПериодДействияКонец);
            Запрос.УстановитьПараметр("Сотрудник",             ИсходныеДанные.Сотрудник);
            Запрос.УстановитьПараметр("БазовыйРасчет",         ИсходныеДанные.ВидРасчета);
            Запрос.УстановитьПараметр("ФизЛицо",               ИсходныеДанные.Сотрудник.ФизЛицо);
            Запрос.УстановитьПараметр("ВидСтажа",                Справочники.ВидыСтажа.СтажНаНадбавкуЗаВыслугуЛет);
            
            РЗ = Запрос.Выполнить().Выбрать();
            Пока РЗ.Следующий() Цикл
                 ДнейКалендарныхОтработанно = РЗ.ДниКалендарные;
                 ДнейКалендарныхВсего         = РЗ.ДниКалендарныеОбщие;
                 ТарифнаяСтавка             = РЗ.ТарифнаяСтавка;
                 Стаж                         = РЗ.СтажМесяцев;
            КонецЦикла;
            
            Результат = (ТарифнаяСтавка / 12 * 2.1 *  ?(Стаж<12, 0, ?(Стаж<36, 0.6, ?(Стаж<60, 0.8, ?(Стаж<84, 1, ?(Стаж<120, 1.2, ?(Стаж<156, 1.5, ?(Стаж<180, 1.8, ?(Стаж<216, 2, 2.2))))))))) / ДнейКалендарныхВсего * ДнейКалендарныхОтработанно;
60 Uragan_a
 
12.11.13
06:37
это сильно тяжелый запрос? или все ж можно использовать или искать другие методы?
AdBlock убивает бесплатный контент. 1Сергей