Ох, спасибо alex44ru и Jones !
Очищать не очищать в тонком клиенте значения не имеет набор пуст, но поскольку большинство программистов работали на обычных формах, то у них уже привычка очищать наборы, поэтому и решения в большинстве своем такие. (набор может быть не пуст если у набора в форме стоит галка использовать всегда как пример документ операция или запущен толстый клиент обычное приложение)
Да! Щас протестировал - именно так и есть, везде наборы пустые. Протестировал и в оперативном режиме - наборы ПУСТЫЕ. Смысла нет очищать, ни в ОУ ни в БУ ни в ПР. Но! В примере от создателей Сборника - в решении ОУ и БУ стоят
Движения.Основной.Очистить();
Движения.Основной.Записать(); с комментарием про остатки при оперативном режиме. Значит, на всякий случай(с галочкой или обычные формы) -очищаем всё таки в ОУ и БУ, и записываем. Где-то видел что тут же делают Блокировать для изменения=Истина перед Записать(). Есть ли смысл в нём?...загвоздка. Если после записи пустого набора(т.е. старые движения стираем) - кто-то параллельно сделает движение "расход", украдут наши остатки, а у нас отменяется транзакция - значит мы старые движения возвращем на место, а товар уже списал кто-то ...получаем бардак в остатках? (слава богу что всё это может быть только с галочкой или обычные формы).
В задачах на ПР алгоритм в корне отличается. Там нет ни старой ни новой методики, там все, в принципе, по другому.
Сначала, в ОбрПроведения док Начисление формируются движения, тут же записываются, а после этого выполняется их Расчет (в идеале в общем модуле). Т.е. предварительно очищать и записывать движения по РР смысла нет.
- Да я понял, ведь вся эта заваруха связана только с КОНТРОЛЕМ ОТРИЦАТЕЛЬНЫХ ОСТАТКОВ, чтобы не уйти в МИНУС.,т.е. продать то, чего УЖЕ или ЕЩЁ нет. К Расчётам это не имеет никакого отношения. Допустить что если бы мы ничего не продавали, а только покупали(нереально конеш) - то вообще не нужны были бы блокировки и различные очистки движений, всё в плюс хоть 100 док-ов в один момент )))но это фантастика...
В задаче внизу идет ключевая фраза: "В одном документе могут быть данные за разные расчетные периоды"
Она означает, что ПерРег у каждой записи может быть своим, то есть заполнять его из ДатыДон - это упрощение задачи.
Значит ПерРег надо делать в ТЧ и расчеты начислений выполнять от него.
Мдааа, проанализировал, ... условия задач кончено странноватые, и это специально сделано !- а подвох в данной задаче в Стаже. Все берут его как ПериодРегистрации - ДатаПриёма ! Это в принципе-правильно. Но если зарегили ЗП за январь, например ПерРег 10 февраля, а 5-го февраля у чувака стаж стал больше 3-х лет, а 1-го он уволился ))) посчитает неверно)) Тут либо Период Регистрации ставить всегда = конец ПериодаДействия(что не реально), либо Стаж нужно считать от ПериодаДействияКонец - что есть СОВСЕМ правильно! Тогда и авансом премию правильно расчитает)))!хотя премия авансом-это фантастика))) .. Только как технически это реализовать...получается что из Дополнительных Начислений мы никак не вытянем инфу ПериодаДействияКонец, значит нужно в данной задаче Премию сувать в Осн.Начисления??? Период действия Премии бессмыслен, заполнять просто ПериодомДействия Оклада. Базовый период у оклада пустой а у премии нужен.... Тогда ПерРег выносить в ТЧ или брать от ДатыДок - дело хозяйское, бывает же например регим одной датой начисления за прошлые три месяца, или у этих трёх начислений поставить разный ПерРег - от него тут ничего уже не зависит! ))
Но конечно же Создатели подразумевали именно такое решение - Стаж от ПерРег, поэтому его в ТЧ...для каждой записи... Поправьте пожалуйста, если ошибаюсь..я ещё другие не видел в глаза задачи...Голова кругом !!!)))
В начале задачи сказано: "Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается". В этом случае Подразделение должно быть реквизитом, а измерением его надо делать когда совместительство допускается.
- Как уже писал alex44ru - если сделать его реквизитом - легко засунуть Иванова в 2 разных подразделения и за один и тот же период начислять Оклад, т.е. совместительство будет, и База будет за оба Подразделения. Вопрос как исключить совместительство без извращений(как предлагал alex44ru), скорее всего НЕ УКАЗЫВАТЬ Подразделение вовсе... ни там ни там) Вообще это скорее задача расчётчика следить за этим, ведь он может ввести Иванова 2 раза в одном периоде но ПО разным Графикам. Получится совместительство графиков-что далеко от реальности )) Как быть пока не ясно - на экзамене явно не успеть извращаться ..или всё таки придётся???
"ПД является базовым периодом" можно включить только у ВР, имеющего ПД. У Премии не может быть ПД, так как это ВР не протяженный во времени (поэтому он находится в ДН, а не в ОН)
Спасибо, здесь полностью согласен!!!
Бытует мнение, что задачи на ПР на экзамене смотрят особым образом, тщательнее придираются..поэтому имхо они требуют досконального разбора...!?