Базовый курс. Решение ДЗ №14

Решение второго задания по расчету.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте
залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись —
напишите нам на e-mail поддержки.

комментариев 5 на “Базовый курс. Решение ДЗ №14”

  1. Внимание, ошибка!
    Или, по крайней мере, я так думаю.
    Цитата из фрагмента 10 Решения ДЗ № 14:
    “Метод Записать() прекрасно работает для других регистров, а для регистра расчета он не выполняет расчет фактического периода действия”.
    – в действительности же, дело в том, что незадолго до проверки мы удалили строки:
    <code>
    Движения.ОсновныеНачисления.Записывать = Истина;
    Движения.ДополнительныеНачисления.Записывать = Истина;

    </code>
    в начале обработки проведения. Метод Записать() у объекта Движения действует аналогично выходу из обработки проведения, т.е. записываются те движения, у которых свойство Записывать выставлено в Истина. Понятно, что в таком случае у нас записи в регистры просто не происходит.
    Соответствующий эксперимент я провел. Удалил строки Записывать = Истина – выдаёт упомянутую ошибку. Вернул строки на место – все прекрасно проводится.

    • Действительно, это ошибка.
      Спасибо за информацию!

  2. Возник вопрос по поводу свойства записи регистра расчета “Сторно”, а точнее его влияния на расчет фактического периода действия.
    В решении задания результат умножается на -1 если Сторно=Истина, но само значение сторно нигде не выставляется, т.е. всегда по умолчанию Ложь. Я добавил поле в табл. часть документа начисления з/п и присваивал записям значение, указанное в табличной части. И если установить Сторно=Истина для оклада или отпуска, то запись перестает рассчитываться, потому что значение фактического периода действия определяется в запросе как 0. Точнее там даже NULL, но после использования функции IsNULL превращается в 0. Соответственно результат расчета тоже равен 0, а не отрицательному значению расчитанного оклада/отпуска, как ожидалось.
    При этом данные базы (сумма и дни), плановый период рассчитываются нормально и имеют одинаковые значения независимо от поля Сторно, т.е. те виды расчета, которые не используют фактический период действия, ожидаемо принимают отрицательный результат при установке флага “сторно”.
    Если получать данные через объектную модель доступа от самой записи методом ПолучитьДанныеГрафика, то картина аналогичная – с параметром ФактическийПериодДействия возвращается 0, для остальных параметров – правильно посчитанные значения.
    В документации про сторно вообще ничего не нашел, в курсе сказано что система признак “сторно” никак не отрабатывает и все ложится на плечи разработчика. Но видим, что как минимум сторно влияет на определение фактического периода действия, возможно на что-то еще.
    Евгений, прокомментируйте пожалуйста такое поведение системы.

    • Кажется, сам разобрался. Насколько я понял, фактический период действия для сторно-записи определяется по фактическому периода действия аналогичных (тот же вид расчета, состав измерений) не сторно-записей, попадающему в период действия данной сторно-записи.
      Таким образом, если поставить сторно в документе начисления, то система просто не находит записи, которые можно отсторнировать (в этом документе нет аналогичных записей) и фактический период действия такой сторно-записи пустой.

      • Все верно.
        Еще один пример формирования сторно-записей:
        1. Было начисление оклада на Февраль.
        2. В марте выяснилось, что сотрудник был на больничном в феврале.
        3. Вводиться запись больничного с периодом регистрации Март и периодом действия Февраль.
        4. Для этой записи можно получить дополнение (метод ПолучитьДополнение()): записи, которые должны отсторнировать оклад Февраля, приходящийся на период болезни.
        Такие записи нужно формировать программно, обходя таблицу значений, полученную методом ПолучитьДополнение(), и для них устанавливается флаг Сторно.