Имя: Пароль:
1C
 
Сторнирование окладом самого себя
0 zag2art
 
09.10.08
09:00
Решаю задачки на специалиста по платформе, в расчетной части есть оклад и штраф(к вопросу отношения не имеет). Так вот, в задании "необходимо предусмотреть возможность изменения начисленного оклада задним числом".
Как я понимаю, должно работать так:
1 начисление - ПериодРегистрации 01.01.2007 за 01.01.2007 по 31.01.2007 5000рублей

Теперь делаем второе начисление: ПериодРегистрации 01.02.2007 за 01.01.2007 по 31.01.2007 8000рублей

Как я понимаю, когда делаю второе начисление, мне нужно ПолучитьДополнение, и из него уже создать еще одну запись "сторно" на -5000 рублей.

Все так и делаю, но дополнение пустое, 0 элементов. Предполагаю, что все дело в том, что я пытаюсь сторнировать оклад окладом.... В чем ошибка, и как правильно реализовать поставленную задачу?
1 zag2art
 
09.10.08
09:38
ап
2 zag2art
 
13.10.08
08:56
еще раз ап

Вопрос-то в принципе простой - как задним числом пересчитать оклад???
3 Cheater
 
13.10.08
09:00
(2) ПолучитьДополнение() предлагает сторно только по другим видам расчета, делай проводки сторно вручную
4 Cheater
 
13.10.08
09:02
(0) Мыслишь правильно, период регистрации второй записи и сторно должен быть позже периода действия, иначе Фактический период действия не учитывает сторно
5 zag2art
 
13.10.08
09:05
(3) Так у меня же, в общем случае, может быть куча записей об окладе за один месяц, с разными ставками. Мне представляестя, что это довольно - таки нетривиальная задача - сторнировать часть из них...
6 zag2art
 
13.10.08
09:07
Именно "в общем случае". И мне нужно будет точно вычислить на какую сумму я сторнирую...
7 Пуд
 
13.10.08
09:21
(3) эээ Может я чего-то не понимаю,но ты утверждаешь,что для оклада не будет дополнения???
8 zag2art
 
13.10.08
09:23
(7) У меня вот тоже не выходит получить дополнение...
9 Cheater
 
13.10.08
09:26
(7) я не прав?
10 zag2art
 
13.10.08
09:31
(9) Я так понимаю, для ввода сторно вручную, мне понадобится перебрать все записи оклада за прошлый месяц, найти их пересечение с моей "вытесняющей" записью оклада. В итоге у меня может получиться несколько сторно записей с различнимы периодами действия. Так?
11 Cheater
 
13.10.08
09:33
(10) подожди, вдруг я не прав, тогда не надо гемороя со сторнированием вручную...
12 Пуд
 
13.10.08
09:33
(9) Да я не знаю...Просто что-то сомнение берет,методу,по ходу,все равно - дополнение должно быть...
(8) Сейчас покопаю на этот счет...
13 Пуд
 
13.10.08
09:34
(10)Напиши,как получаешь дополнение. Код. Каким доком? Предыдущее начисление на 5000 сделал?
14 Cheater
 
13.10.08
09:37
(12) ты прав, давай разбираться с ПолучитьДополнение()
15 Пуд
 
13.10.08
09:38
Вот что нарыл в конфе по расчетной части:

Процедура РассчитатьОсновныеНачисления() Экспорт
   
   //расчет записей выполняется в транзакции
   НачатьТранзакцию();
   
   //создается набор записей регистра расчета
   НаборОсновныеНачисления = РегистрыРасчета.ОсновныеНачисленияРегл.СоздатьНаборЗаписей();
   НаборОсновныеНачисления.Отбор.Регистратор.Значение = Ссылка;
   
   ВыборкаОсновныеНачисления = СформироватьЗапросПоТабличнойЧасти(ЭтотОбъект, "ОсновныеНачисления").Выбрать();
   
   Пока ВыборкаОсновныеНачисления.Следующий() Цикл
       
        ДобавитьСтрокуОсновныхНачислений(ВыборкаОсновныеНачисления, НаборОсновныеНачисления);
       
   КонецЦикла;

   
   
   ТаблицаСторно = НаборОсновныеНачисления.ПолучитьДополнение();
   
   Для Каждого СтрокаСторно из ТаблицаСторно Цикл
       
       ДобавитьСтрокуСторноОсновныхНачислений(СтрокаСторно, НаборОсновныеНачисления, ОсновныеНачисления);
       
   КонецЦикла;
   
   //передача набора записей в процедуру общего модуля для расчета
   РассчитатьЗаписиРегистраРасчета("ОсновныеНачисленияРегл", НаборОсновныеНачисления, ОсновныеНачисления);
   
   //удаление движений по регистру
   НаборОсновныеНачисления.Очистить();
   НаборОсновныеНачисления.Записать();
   
   ЗафиксироватьТранзакцию();
   
КонецПроцедуры // РассчитатьОсновныеНачисления


Т.е. сначал нужно сделать движения по окладу 8000 в регистр,а потом уже получать дополнение.Так делаешь?
16 zag2art
 
13.10.08
09:50
(15) Делаю так:
Первым документом начисляю оклад 5000
17 zag2art
 
13.10.08
09:51
вторым документом
Сначала создаю запись оклада 8000, записываю ее - получаю дополнение (пустое), записываю его... далее делаю расчет
18 Cheater
 
13.10.08
09:52
(17) не записывай запись оклада, просто формируй, а потом применяй метод ПолучитьДополнение()
19 zag2art
 
13.10.08
09:54
Собственно код

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

20 Пуд
 
13.10.08
09:57
(19) Действительно,попробуй убрать
Движения.ОсновныеНачисления.Записать();
Движения.Удержания.Записать();

перед тем,как получаешь дополнение.
21 Пуд
 
13.10.08
09:57
+20 Попробуй записывать уже после операций с дополнением
22 zag2art
 
13.10.08
09:58
Закомментировал: Движения.ОсновныеНачисления.Записать(); - таблица дополнений все-равно пуста :(
23 zag2art
 
13.10.08
10:01
В отладчике проверил Движения.ОсновныеНачисления До вызова метода ПолучитьДополнение - там все ОК, "оклад" с соответствующими полями
24 Cheater
 
13.10.08
10:02
(22) Период регистрации какой? должен быть позже периода действия
25 zag2art
 
13.10.08
10:02
Период регистрации 01.02.2007, период действия 01.01.2007-31.01.2007 все как надо
26 zag2art
 
13.10.08
10:04
У прошлого оклада период регистрации 01.01.2007, период действия 01.01.2007 по 31.01.2007 на 5000руб
27 zag2art
 
13.10.08
10:06
Измерения, вид расчета - все точно совпадает. (документ создавал копированием, правил периоды регистрации и действия)
28 Пуд
 
13.10.08
10:12
(27) Блин,шайтан!У себя делаю-нету дополнения(((.Главное помню-было такое где-то,причем объяснялось в чем затык.
29 Said_We
 
13.10.08
10:12
А что 8.х вид расчета научился вытеснять сам себя?
Дополнение получается при вытеснении. Нет вытеснения - откуда возьмется дополнение?
30 zag2art
 
13.10.08
10:19
(29) Я вот тоже об этом в (0) размышляю, хотя все еще надеюсь.
Весь прикол в том, что (0) это из задания Специалист 8.1 по платформе, а там, насколько я понимаю, на 4 часа и так суеты хватает, чтобы еще и реализовывать свой механизм сторнирования... Короче надеюсь, что все-же можно обойтись малыми силами
31 Пуд
 
13.10.08
10:21
(30) Насколько я знаю - непосредственно сторнировать не нужно,нужно на экзамене только получить записи дополнения.
32 zag2art
 
13.10.08
10:23
В задании сказано дословно "необходимо предусмотреть возможность изменения начисленного оклада задним числом" - что бы это могло означать... Можт я действительно неверо понимаю что от меня требуют
33 Said_We
 
13.10.08
10:26
(32) Это и есть ввести пересчет оклада. Потом получить таблицу пересчетов и пересчитать зависимые от оклада записи. Вспомнить что ВР из дополнительнога плана видов расчетов не зависит от периода действия и что в таблицу перерасчета не попадут они. :-)) И т.д.
34 Пуд
 
13.10.08
10:29
(32) Ну в этом случае,как я понимаю,нужно вводить размер оклада 5000 и ставить флажок сторно,а потом еще одну строку с окладом 8000 и проводить.
Неужели в типовой ЗУП такие же механизмы...Как-то это не красиво
35 zag2art
 
13.10.08
10:32
(33) Можно поподробнее, сходу не въехал, как это будет выглядеть. Это как-то соотносится с (10)?
36 Пуд
 
13.10.08
10:45
(33) Да,можно для тормозящих пояснить?(себя имею ввиду,если что))
37 Cheater
 
13.10.08
10:53
(33) С пересчетом согласен, нужно делать пересчет при изменении базового вида расчета или ввода вытесняющих. Но как в данном случае изменить оклад за предыдущий период? Вводить запись с разницей от предыдущего начисления оклада или сторнировать предыдущее начисление и начислять по новой?
38 Пуд
 
13.10.08
11:01
(37) Мне кажется нужно сторнировать старую...
39 Пуд
 
13.10.08
11:07
Ну что,никто не может объяснить,как по умному-то?Что никого нет,кто в ЗУПе работает???
40 zag2art
 
13.10.08
11:15
Да уж, я в сомнениях. Реализовывать любой механизм более 20-30 строчек думаю времени просто не хватит....
Вопрос так и остался не отвеченным пока. Можт есть еще варианты?
41 Cheater
 
13.10.08
11:23
Может спросить у тех, кто сдал?
42 Пуд
 
13.10.08
11:28
(41) Да вот они молчат чего-то....
43 Said_We
 
13.10.08
11:51
(39) А вы пробовали перерасчет ввести в ЗиУП?
44 Said_We
 
13.10.08
12:02
Делается он только по документу - путем заполнения всех тех же строк но с признаком сторно, плюс те записи, которые должны быть.
45 Said_We
 
13.10.08
12:04
Правда не все строки из-документа попадают. Но это уже конкретная реализация в ЗиУП.
46 Megas
 
13.10.08
12:10
(41) Я сдал , помю только что проблемм у меня небыло =) и писал точно не так!

Когда получал дополнения то запускал процедурину где всё расчитываю , она мне считала сторно
47 Пуд
 
13.10.08
12:37
(43) Нет,не пробовал,потому и интересуюсь
48 Said_We
 
13.10.08
12:48
(47) Ну так введи и посмотри. Сразу захочется глянуть в код на кнопку заполнить.
49 Cheater
 
13.10.08
13:00
(46) Не понял. Ты использовал ПолучитьДополнение()?
50 Said_We
 
13.10.08
14:01
(49) Объясни. Зачем использовать дополнение при пересчете?
Вот когда сам расчет идет, то дополнение надо использовать, а то вдруг введенный новый оклад кого вытеснил :-))) и это вытесненное тоже надо пересчитать...
Не надо путать дополнение и пересчет. Это же разные вещи.
51 Пуд
 
13.10.08
14:02
(50) Так как же сделать правильно перерасчет?Какова последовательность действий?
52 Cheater
 
13.10.08
14:04
(50) я где-то в (49) говорил про пересчет? Мне интересно как он реализовал сторно оклада - с использованием метода ПолучитьДополнение() или без.
53 Said_We
 
13.10.08
14:14
(51) Вам как в ЗиУП или как можно сделать?
54 Пуд
 
13.10.08
14:22
(53) Как можно и как правильно делать.
55 Пуд
 
13.10.08
14:22
+54 Просто что-то пока мутно насчет этого....
56 Пуд
 
13.10.08
14:26
+55 в голове...
57 zag2art
 
13.10.08
15:00
(53) Нам как в Зупе и как лучше всего сделать на экзамене в условиях ограниченного времени.
58 Said_We
 
13.10.08
15:17
(56)
Ввести перерасчет - необходимо отсторнировать то что, необходимо, т.е. чем вызван перерасчет. Если это изменение оклада, то это естественно сам оклад и все что от него зависит.

Для этого чисто технически пишут процедуру заполнения. Никакого получения дополнения тут не нужно.

Т.е. теоретически можно (и это дописывалось в типовую) можно пересчитать только одного сотрудника и перезаполнение не по документу, а просто ввести перерасчет за перерасчитываемый период по произвольному списку соттрудников... и т.д.
Но как известно типовую лудше не менять... :-)) Да и возможно этого не нужно в данном случае. Иногда изменяются не записи в регистре расчетов, а справочная информация от которой зависит расчет. Вот тут иногда, и полезно вводить перерасчет по группе сотрудников, а не по некому документу начисления в целом.

Дополнение необходимо получать во время процедуры расчета.
При начислении отпуска или БЛ или других вытесняющих ВР это понятно... и при их пересчете.
Т.е. захотели Вы пересчитать отпуск или БЛ и ввели документ исправление. При этом может понадобиться отсторнировать часть оклада, из-за того что период увеличился - это сразу документ БЛ или отпуска и сделает.
Если период наоборот уменьшился, то необходимо наоборот доначислить оклад и пересчитать все что зависит от оклада. Т.е. в этом случае, необходимо что бы в таблицу пересчетов попал оклад и все что от него зависит.....
59 Пуд
 
13.10.08
15:20
(58) Ну как это делается, фактически?
>>Если период наоборот уменьшился, то необходимо наоборот доначислить оклад и >>пересчитать все что зависит от оклада.
Как тут нужно действовать?Полностью отсторнировать весь оклад за прошлый период и начислить в нужном размере или отсторнировать часть оклада,чтобы общий результат был верный(до нужной суммы)?Какой применяется подход?
60 Said_We
 
13.10.08
15:27
(57) ИМХО. В ЗиУП проще прописать заполнение документа по документу изменения окладов. Т.е. взять от туда список сотрудников который, необходимо пересчитать и период за который необходимо пересчитать.

Заполнить все по основным и дополнительным начислениям (не расчитываемых по среднему заработку) что было. Можно ориентироваться что было введено документом вида начисление ЗП. Так проще, но не совсем верно. Можно и удержания и НДФЛ пересчитать, но это уже на сколько глубоко рисовать...., т.е. учитывать что может пересчитывается прошлый налоговый период или нет... и т.д. :-)))
В общем заолняете список начислений с признаком сторно. Далее вводите список всех плановых начислений которые необходимы в пересчитываемом периоде.
В принципе взя загвоздка и состоит в том что пересчитать надо не только то что вводилось документом начисление ЗП из плановых, а ввобще все что зависит от оклада. Но от оклада и БЛ зависит и Отпуск и ... список можно продолжать... По каждому такому отпуску и т.д. тоже надо вводить пересчет.

ИМХО. На экзамене главная цель показать что понимаешь как механихм работает и различаешь дополнение от пересчета....

В типовом решении пересчет реализован .... ну очень долго он вообше не был реализован, так что.... сильно больших и глубоких реализаций вряд ли  потребуется.
61 zag2art
 
13.10.08
15:32
(61) "сильно больших и глубоких реализаций вряд ли потребуется" , мне сейчас конкретно и точно нужно знать, что от меня могут потребовать и как это реализовать.
Я так понимаю, чтобы пересчитать мой оклад в (0) мне нужно вручную ввести сторно за прошлый месяц, новый оклад за прошлый месяц и добавить в таблицу перерасчетов все записи, которые зависят от оклада за прошлый месяц? так?
62 Said_We
 
13.10.08
15:33
(59) Пересчет в 8.х подразумевает полное сторно и новое начисление.
Есть проблемы с тем когда у сторно записи совпадает период регистрации и период действия. Но это через несколько лет поправят. Ранее в 8.0 неправильно учитывалась такая запись в фактическом периоде действия и в данных графика, если период действия был больше или равен периоду регистрации. В 8.1 если равны, а если больше то уже гуд. Скоро (пару лет) совсем условие уберут в запросе и тогда совсем будет гуд. :-)) ИМХО если есть запись в регистре расчетов и она активна, то она должна везде во всех таблицах виртуальных учавствовать. А так получается запись есть, активна, но не влияет... :-))
63 Said_We
 
13.10.08
15:35
(61) "мне сейчас конкретно и точно нужно знать, что от меня могут потребовать и как это реализовать" - это спрашивать надо у организаторов экзамена, так как условия меняются. Те кто сдавал пару лет назад ЗиУП не чего не знали и не показывали про компановку данных, а сейчас это типа обязательно....
Условия постоянно меняются.
64 Пуд
 
13.10.08
15:36
Ужас...Надо обратиться к Марксу в виде "Проф.разработки"))
65 zag2art
 
13.10.08
15:38
(64) Там по-моему не очень подробно про сторно. Даже вроде нет описания модели получения фактического периода действия сторно записей...
66 zag2art
 
13.10.08
15:40
У меня 29-го экзамен, чувствую, что если никто нормально не подскажет - пройду мимо этой темы... Вряд-ли 1Ц мне номально все объяснит...
67 Пуд
 
13.10.08
15:40
(65) есть...страница 320
68 Cheater
 
13.10.08
15:40
(64) Всё равно остаются некоторые вопросы...
69 Пуд
 
13.10.08
15:43
(68) Это точно...
70 zag2art
 
13.10.08
15:46
(67) Нет. Там про влияние сторно-записей на фактический период других записей, а про формирование фактического периода действия самой сторно-записи не разъяснено.
(68) Куча непоняток на самом деле. Вроде во всем врубаюсь, все понимаю, но что именно реализовывать на экзамене не представляю. Просто, если все делать как положено - не уложишься в экзаменационное время..... :(
71 Cheater
 
13.10.08
15:52
(70) Главное не наделать грубых ошибок... А так да, сам читаю "профессиональную разработку", многие вопросы освещены в общем, но остаются ньюансы )))
72 zag2art
 
13.10.08
15:55
(71) Именно. Мне для того, чтобы разобраться с расчетами пришлось перелапатить книжки 4... и все-равно есть вопросы, на которые в них нет ответов...
73 Cheater
 
13.10.08
15:57
(72) еще от релизов платформы некоторые моменты зависят. Нормально сдашь, не дрейфь
74 zag2art
 
13.10.08
15:57
Где еще можно спросить???
75 zag2art
 
13.10.08
15:58
(73) Сдам-то полюбому нормально, просто хочется "полностью" разобраться, чтобы потом больше к этому не возвращаться
76 Cheater
 
13.10.08
16:04
(75) Как разберешься, отпишись тут
77 Пуд
 
13.10.08
16:09
(76)+1
78 zag2art
 
13.10.08
16:16
У меня, кстати, возникла такая вот (довольно-извращенная идея): прежде всего нам нужно получить набор сторно записей (как если бы нам его дал метод ПолучитьДополнение). Так вот идея в том, чтобы в ОбработкеПроведения, создать новый вид расчета, вытесняющий оклад, по нему получить дополнение, создать набор сторно записай, а сам вид расчета удалить после этого...
79 zag2art
 
13.10.08
16:17
Сторно-записи естественно проводить по виду расчета Оклад...
80 Пуд
 
13.10.08
16:18
(78) Я,конечно,не знаток,но,по моему за такое на экзамене можно и по шее схлопотать(((
81 zag2art
 
13.10.08
16:21
(80) :))) да уж. Эт я от безысходности рассуждаю. Просто в общем случае записей оклада за прошлый месяц может быть штук тридцать, причем все с разными ставками.... Чтобы их сторнировать на правильную сумму нужно нехило извратиться...
А (78) естественно дальше рассуждений не пойдет. На экзамене я ничего не собираюсь использовать чего не встречал, и что не было рекомендовано
82 Cheater
 
13.10.08
16:22
(78) А почему тогда не создать набор записей по виду расчета, вытесняющего оклад, получить набор записей через получить дополнение, очистить набор записей документа, создать записи по ПолучитьДополнение(), сделать записи по окладу?
83 zag2art
 
13.10.08
16:25
(82) в общем случае, такого вида расчетов может и не быть...
84 Cheater
 
13.10.08
16:28
(83) может
85 Пуд
 
13.10.08
16:30
(78) Я бы сделал так - получил бы записи РС по данному виду за период действия,на который вводится, сторнировал бы их с обратным знаком,сделал правильные движения,потом бы получил дополнение,чтоб выяснить какие зависящие от оклада нужно пересчитать и далее их перерассчитал...Ну это так - мысли вслух
86 zag2art
 
13.10.08
16:36
(85) у тебя в общем случае может быть частичное пересечение того, что ты хочешь сторнировать, и сторно-записи, поэтому просто поменять знак можно не всегда иногда придется пересчитывать на основе ДанныхГрафика с учетом ставок оклада соответствующих записей...
87 Said_We
 
13.10.08
16:41
(86) Сторно записи не надо сторнировать... :-)
88 Said_We
 
13.10.08
16:43
Сторно-сторно не бывает.
Когда нужно отменить сторно прошлого периода, то просто вводят новую запись и не более того.
89 zag2art
 
13.10.08
16:43
(87) может я неясно выразился, но никакие сторно-записи, я сторнировать не собираюсь. Только записи оклада за прошлый месяц
90 Пуд
 
13.10.08
16:45
(88) А у тебя нет примерного кода?
91 Said_We
 
13.10.08
17:14
На счет получения дополнения, то еще раз повторюсь оно нужно уже при расчете и оно обязательно при расчете, но не при заполнении документа перерасчета.
1. Выбор периода и заполнения списка по кому (список сотрудников, документ конкретный и т.д.) пересчитать.
2. Заполнение документа. Добавление сторно-записей по списку.
3. Добавление записей не сторно, т.е. то что должно быть.
4. Расчет. Получение дополнения в том числе.
5. В результате в таблицу пересчета попадают записи, которые должны быть пересчитаны. А тут уже типовой пересчет и писать не чего не надо. Если типовой пересчет чему-то не соответствует, то это уже проблемы типового пересчета. Цениться минимальные изменения и максимальное использование типовых механизмов. И опятьже задача пересчитать только оклад сводится к заполнению только оклада, а все остальное появиться в таблице пересчета.

ИМХО.
При расчете в типовом решении ЗиУП есть проблема. Но она как правило проявляется при пересчете отпуска, БЛ и т.д. Т.е. сторно-записи, которые получены за счет пересчета и те сторно записи, которые получены за счет дополнения при расчете должны себя вести по разному. А именно. Строно записи полученные за счет пересчета не должны расчитываться. Записи которые получены дополнением расчитываться должны. В ЗиУП этого нет. Но это отдельный разговор к сертификации вряд ли имеет отношение.

(90) Пример кода есть в ЗиУП. Там же есть заполнение документа по перерасчитываемому документу.
92 zag2art
 
13.10.08
17:17
(91) Давай определимся с терминологией. Что ты называешь сторно-записью пересчета?
93 Said_We
 
13.10.08
17:21
(92) Это записи - добавленные в момент заполнения документа. Не из дополнения.
Т.е. в приведенных условиях в (0) это записи с окладом введенные в прошлых периодах, которые теперь необходимо пересчитать. В ЗиУП в документе начисление ЗП появляются такие строки в момен нажатия на кнопку заполнить при выбранном пересчитываемом документе.
94 zag2art
 
13.10.08
17:25
(93) в (0) это сторно-запись на -5000 с периодом регистрации 01.02.2007?
95 Said_We
 
13.10.08
17:33
(94) Да.
А если совсем не выходить из рамок задания, то Вам дополнение совсем не понадобиться.

1. Первая причина в том что оклад не вытесняет никого.
2. Вторая причина в том что даже если бы вытеснял, то получение дополнения и т.д. уже прописано в расчете самого документа начисление ЗП.

Если реализовывать более сложные межанизмы связанные с пересчетом отпуска и БЛ, отзыва из отпуска, больничный во время отпуска и т.д. То как раз тогда и понадобилось бы отличать записи сторно полученные дополнением и пересчетом в момент расчета. Я это описал не с целью кого-то запутать... Просто писал усё...
Наверное не надо было...
96 zag2art
 
13.10.08
17:39
(96) Да ладно, все нормально, потихоньку всё проясняется. Теперь к самому заданию. У меня оклад, и штаф (процентом от оклада за предыдущий месяц). Будем считать что оклад и штаф за месяц можно начислить только один раз.
Итак, чтобы задним чилом откорриектировать оклад - мне при начислении нового оклада 8000 ( из (0)) нужна сторно запись на -5000. Отсюда возникает вопрос будут ли проблемы со штрафом в месяце 02.2007?
97 Пуд
 
13.10.08
17:42
(96) А какие могут быть проблемы?Если сторнировать оклад,то потом,для штрафа,как раз нужно получить дополнение?Разве не так?
98 zag2art
 
13.10.08
17:42
Да, еще в задании нужно сделать только отчет по перерасчетам, сами перерасчеты делать не нужно...
99 zag2art
 
13.10.08
17:44
(97) Штраф за февраль использует данные оклада за январь. Вот и вопрос, если я задним числом исправлю оклад за январь, скажется ли это на февральском штрафе... Короче говоря, когда мы будем получать базу для штрафа, будут ли правильно учтены сторно и оклад задним числом?
100 Альберт_Уфа
 
13.10.08
17:45
(100)
101 Said_We
 
13.10.08
17:47
(97) Нет не так.
База умеет браться только по периоду действия.
Следовательно в таблице пересчета надо показать что надо пересчитать штраф за январь в феврале.
102 Пуд
 
13.10.08
17:48
(99) Так перед тем,как получать базу для штрафа мы должны будем правильно рассчитать оклад,те сторнировать и ввести верный. И все будет в ажуре
103 Said_We
 
13.10.08
17:49
(97) "получить дополнение" - а что штраф вытесняет оклад. Если нет, то при чем здесь дополнение?
104 Пуд
 
13.10.08
17:49
Вот и перевалила ветка за 100,а ясности - мало.
(97) Таблица пересчета - мы ее сами получим или методом ПолучитьДополнение()?
105 Пуд
 
13.10.08
17:50
(103) Так дополнение что - только для вытесняющих видов?
106 Said_We
 
13.10.08
17:54
(104) УУУУУУ....
Таблица пересчета, не имеет отношения к дополнению совсем....

ВЫБРАТЬ
   ОсновныеНачисленияПерерасчет.ОбъектПерерасчета,
   ОсновныеНачисленияПерерасчет.ВидРасчета,
   ОсновныеНачисленияПерерасчет.ФизЛицо
ИЗ
   РегистрРасчета.ОсновныеНачисления.ПерерасчетОсновныхНачислений КАК ОсновныеНачисленияПерерасчет

Только имя регистра расчета с ЗиУП по моему не сходится...
107 Said_We
 
13.10.08
17:55
(105) Дополнение только для учета вытеснения и нужно. И более не для чего.
108 Пуд
 
13.10.08
17:58
(107) Спасибо,видно,я совсем запутался(((
109 Said_We
 
13.10.08
18:12
Самое главное вовремя распутаться.
110 Cheater
 
13.10.08
18:27
(105) ПолучитьДополнение() только для сторно записей, есть еще Перерасчеты, см. стр. 354 в "Проф разработке"
111 Пуд
 
14.10.08
08:59
(110) Вчера на ночь уже перечитал...Просто не использую совсем расчеты,забываю быстро...
112 zag2art
 
14.10.08
09:08
Присяжные заседатели, заседание продолжается
113 Пуд
 
14.10.08
09:18
(112) Есть новости?:)Как решил делать в итоге?
114 zag2art
 
14.10.08
09:21
Короче, так-как штраф считается с оклада за предыдущий месяц - вполне достаточно будет сторнировать и переначислить оклад.
Если бы штаф считался от оклада за текущий меся - тогда нужно было бы еще и сторнировать и пересчитывать его... А так все тип-топ.
Код будет примерно по такой схеме:
Запросом получаем запись с окладом за прошлый месяц, на ее основании делаем сторно запись, далее вводим запись с новым окладом...
Вопрос, думаю, закрыт
115 Cheater
 
14.10.08
09:24
(114) Так у тебя оклад за прошлый месяц увеличивается, т.к. период действия у него прошлый месяц )))
116 zag2art
 
14.10.08
09:27
(114) Получается, записи с периодом регистрации 01.01.2007 будут думать, что оклад 5000 - и это правильно, так-как месяц уже закрыт, зато в феврале 2007 мы наслим на 3000 больше (8000-5000)... все корректно. И февральский штраф будет правильно считаться (от 8000)
117 zag2art
 
14.10.08
09:27
(116) для (115)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс