Цитата IT_PROGRAMMIST (
)
мое решение. Буду благодарен за критику.
1. В запросах Вы нигде не обращаетесь к таблице остатков по Счету "Покупатели", поэтому на этом счете для Субконто1 нужно поставить галочку "только обороты". За эту ошибку на экзамене непременно скосят.
2. В модуле обработки проведения документа УстановкаКурса Вы два раза в разных циклах обрабатываете одни и те же данные. производительнее будет обработать в 1м цикле.
3. В 1м пакете запроса обработки проведения документа УстановкаКурса Вы дергаете 2 поля и по этим же 2м полям проводите группировку. Зачем? если это защита от дважды введенных данных по одному контрагенту, то группируйте только по контрагенту, а курс берите МАКСИМУМ.
4. Честно говоря не совсем понимаю зачем блокируется РегистрБухгалтерии. Момент очень спорный: при проведении Р/н обращения к регистру не происходит. Получается, блокировка РегистраБухгалтерии нужна только для того, чтобы было невозможно одновременно провести БОЛЕЕ одного документа УстановкаКурса. А по условию задачи этот докумерт проводится 1 раз в месяц. Вот РегистрСведений на мой взгляд блокировать нужнее, чтобы не позволить вводить новый р/н по старому, в данный момент некорректному курсу.
5. Вообще у Вас с блокировками напутанно. БлокироватьДляИзменения = Истина применяется при новой методике и буквально делает следующее: как только вы записали данные в регистр, система сама блокирует регистр по вашим записям. А у Вас сначала записывается пустой набор, потом блокируется по пустому набору, потом сверху накладывается еще одна блокировка. И смысл всей этой конструкции не особо понятен.
6. Ну и заморочки с лишним реквизитом "Курс" в р/н мне тоже не совсем очевидны. Проще выдергивать данные из РегистраСведений последние на дату проведения документа, при условии, что ДАТА РЕГИСТРАТОРА этих данных <= Дате проводимой р/н.
Вложения:
_2-21.dt