Выкладываю повторно проработанную версию БУ+ПР пятого билета.
1)
Задача по БУ очень интересная т.к. содержит
проблему копеек в самом серьезном виде: количество на
счТовары хранится в разрезе
Товаров и
ИнвНомеров, а
Себестоимость – только в разрезе
Номенклатуры.
Списывая Номенклатуру приходится Сумму получать, используя
среднюю цену себестоимости Товара, в результате чего, часть Себестоимости может остаться несписанной.
Делаю так: внутри группировки
Номенклатура, в обходе выборки
ИнвНомера накапливаю
Списанную Стоимость номенклатуры и если списано все
Количество Номенклатуры, но
СписаннаяСтоимость меньше остатка
Себестоимости (который должен быть списан), то оставшиеся копейки просто добавляю к Сумме последней проводки.
2)
Задачу по ПР прорешал с учетом волшебной фразы «
В одном документе могут быть данные за разные расчетные периоды».
В этой задаче к Окладам данная формулировка не относится, т.к. Оклад здесь получается из Шкалы в зависимости от ФактическиОтработанныхЧасов, т.е. ПериодРегистрации на размер Оклада никак не влияет.
Другое дело
Премия от продаж
Подразделения за
предыдущий месяц. Оказывается, предыдущий месяц надо отсчитывать не от Даты документа (что существенно упрощает задачу), а от
ПериодаРегистрации записи (который надо указывать для каждой строки ТЧ ДН).
Виртуальной таблице
Обороты необходимо извне запроса передать параметры
НачПериода и
КонПериода, иначе она получит данные без ограничения периода. Получаю эти
границы периода Продаж еще на стадии записи движений (в цикле по ТЧ ДН), а в запросе группирую Продажи по Месяцам.
Таким образом получил Продажи Подразделений за месяца с наиболее раннего, по самый поздний, а левым соединением, для каждой записи получаю Продажу именно этого Подразделения именно за этот месяц.
В общем из всего этого сделал вывод: на экзамене с этой темой лучше не заморачиваться, сначала быстро сделать получение Продаж за один период, а уже если все успею и времени останется вагон и маленькая тележка, тогда буду строить полный запрос с учетом разных расчетных периодов.
3) Возвращаясь к модулю документа
Операция:
Снова изучил
Пункт 11 и снова не понял, зачем так сложно.
Представляю вашему вниманию очередной вариант, на этот раз он состоит всего из 8 строк.
Протестил, все работает, прошу оценить.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ПометкаУдаления <> Ссылка.ПометкаУдаления Тогда
Движения.Основной.Прочитать();
Движения.Основной.УстановитьАктивность(Не ПометкаУдаления);
Движения.Основной.Записывать = Истина;
КонецЕсли;
Для Каждого Движение ИЗ Движения.Основной Цикл
Движение.Период = Дата;
КонецЦикла;
КонецПроцедуры
PS 15ч37м
Исправил списание себестоимости в РН (БУ), там была ошибка и Копейки списывались хотя Количество списано не полностью.
Разные расчетные периоды в ПР оказывается не так уж и страшны. Надо набить руку и на экзамене сразу делать как положено.