СПР. Я получаю базу по плановым рабочим дням без использования ресурса РабочиеДни, а непосредственно из ДанныхГрафика, но не по Компенсации, а по Окладу и без отбора по регистратору. Соединение таблиц данных базы и данных графика по периоду регистрации, Сотруднику, Подразделению, получаю максимум плановых дней.
Делаю так, потому что считаю получать плановые дни из ресурса немного опасным: например (хотя и крайне редкий случай), сотрудник был уволен, потом через несколько дней снова принят на работу в то же подразделение в том же месяце, например, на другую должность. Для него будет две строки с разными интервалами периода действия в одном месяце. При этом ресурс РабочиеДни (если бы он был) заполнится одинаковым значением, в результате плановые дни задвоятся при расчете. Таким образом, чтобы брать плановые дни из ресурса, надо быть железно уверенным в том, что никогда и ни при каких обстоятельствах в регистре не может быть для одного периода действия несколько строк по одному сочетанию Сотрудник-Подразделение (за исключением явных ошибок).
Не является ли мое решение усложнением задачи и вообще правильное ли оно?
Еще возникла проблема при сторнировании. При зависимости по периоду действия, как здесь уже писали выше, после сторнирования Оклада, при перепроведении Компенсации за прошлый период компенсация не видит эти сторно записи. Предлагали выход - использовать зависимость по периоду регистрации. Я так и сделала. Но считаю это не очень правильным. Ведь тогда результат сторно попадает непосредственно в тот период, в котором произошло сторнирование. И получается, что мы выдаем компенсацию за меньшее число дней не в прошлом, а уже в текущем месяце. Однако у сотрудника могла вырасти зарплата и количество дней в месяцах может отличаться. При этом мы расчет базы берем по текущему месяцу и уменьшаем компенсацию на другую сумму, чем это было бы в предыдущем месяце, т.к. стоимость одного обеда в разных месяцах разная.
Сказать, что "невидение" прошлым периодом сторно-записей, сделанных в будущем, - это ошибка платформы, в общем случае нельзя. Иначе получался бы замкнутый круг: перепроводим прошлый период - он пересчитывается с учетом сторно, затем перепроводим следующий период и оказывается, что сторно записи, которые он делал раньше, уже не нужны, т.к. результат прошлого периода и так уже пересчитан с их учетом...
Таким образом, получается, что единственно точный вариант вычета компенсации за обеды с учетом сторнирования - это использование периода действия для начисления Компенсация и вытеснение Компенсации Невыходом, аналогично Окладу. Этот вариант работает, но остается вопрос, насколько он верен с методологической точки зрения. Мой первый вариант решения был сделан именно таким образом. Потом я его пересмотрела после чтения форума (решила тоже делать Компенсацию без периода действия, чтобы не росла таблица Фактического периода действия) - прилагаемый файл уже с учетом этого пересмотра. Однако оказалось, что при таком варианте есть проблемы с учетом сторнирования при расчете Компенсации, описанные выше.