Доброго времени суток! Мое решение билета. Буду рад любой обратной связи.
Добрый день!
Мне понравились решения, в принципе всё неплохо.
Что бросилось в глаза:
1) Документ Операция - модуль объекта пустой. Заполнение периода из даты точно стоит сделать, да и бывало что на экзамене снижали бал из-за того, что нет обработки активности записей при установки пометки удаления. Я бы и то и то всё-таки реализовал.
2) Не очень хорошо, что Срок годности это дата, лучше было бы сделать всё-таки справочником из-за ограничения в количестве ключей индекса, хоть это и не ошибка, но думаю дополнительный бонус можно было бы заработать, храня срок годности в справочнике, не так много кода добавляется в такой реализации.
3) Мне не очень понравилось реализация запроса в бухгалтерском учете в расходной, где присоединяется одна таблица остатков, а затем в коде идет сравнение с Null для отсечения ненужных строк. На мой взгляд, более грамотно было бы присоединить пускай и две таблицы остатков, но в выборке были бы уже только нужные строки и никаких махинаций с Null делать бы не пришлось. Но ваше решение выдает правильный ответ, поэтому вполне имеет право на существование, думаю и принимающим будет не принципиально.
4) Не понял почему стаж вы везде превратили в стаж по месяцам, в таблице в задании в примере это года, да и вообще логично стаж измерять годами.
5) Для чего запоминать количество отработанных дней в реквизите Факт регистра расчета?
6) Расчет в документе НачислениеЗарплаты насколько я помню нужно выполнять в транзакции, аналогично тому как если бы это происходило при проведении документа.
7) По идее мы должны сначала сделать записи в регистры расчета, так называемые базовые (первичные) движения (из табличной части), а затем уже в общем модуле обращаться к таблицам получения базы, данных графика. Не вижу у Вас такой записи.
6) В конструкции
Новый Граница(МоментВремени(), ВидГраницы.Включая));
второй параметр можно не указывать, не тратить время, он итак по умолчанию ВидГраницы.Включая