Пример решения экзаменационного задания из сборника задач

На диске, идущем в комплекте со сборником задач для подготовки к экзамену, содержатся дополнительные материалы: каркасная конфигурация, а также пример решения экзаменационного задания. Про каркасную конфигурацию было уже сказано достаточно, она не представляет из себя ничего необычного, разве что есть моменты, на которые рекомендуется обратить свое внимание. А вот по поводу примера решения можно сказать, что он нас разочаровал!

Пример решения экзаменационного задания вызывает естественный интерес у готовящихся к сертификации. Предполагается, что если это не эталон, то, по крайней мере, ориентир, на который нужно ровняться. Само собой разумеется, что пример должен работать, а также соответствовать тем критериям, которые предъявляются к решениям на экзамене. Давайте посмотрим так-ли это...

  • Запускаем пример в режиме 1С:Предприятия;
  • Переходим на вкладку «Оперативный учет»;
  • Открываем список документов «Расходная накладная»;

Видно, что в списке присутствует единственный документ. А именно: Расходная накладная № 000000001 от 07.06.2010 0:00:00.

Список документов «Расходная накладная»
Список документов «Расходная накладная»

Откроем форму документа, чтобы увидеть его содержимое. Нажмем несколько раз на кнопку «Провести». Документ без проблем неоперативно перепроводится.

Документ «Расходная накладная 000000001»
Документ «Расходная накладная 000000001»

Закроем форму документа и выполним отмену его проведения. Для того, чтобы протестировать режим оперативного проведения, изменим дату документа на сегодняшнюю (в нашем случае - это 10 сентября 2010). Снова откроем форму документа и нажмем несколько раз кнопку «Провести». Документ проводится только один раз, а потом начинает выдавать сообщение о нехватке остатков!

Нехватка остатков при повторном оперативном проведении
Нехватка остатков при повторном оперативном проведении

Ошибка возникает из-за того, что документ не очищает при проведении свои собственные предыдущие движения! Анализ кода примера решения это подтверждает. Отсюда делаем вывод о необходимости всегда работать собственной головой, а не слепо полагаться на мнение авторитетов. Пожелаем составителям сборника быстрее разобраться с этой ситуацией. Ждем от них обновленного примера решения задачи!

P.S.

В 1С:Учебный Центр N 1 было отправлено письмо с описанием проблемы, а также просьбой поделиться методом ее исправления. В ответ из учебного центра пришел новый вариант примера, в который добавлены строки, предовращающие ошибку:

//Очистим формируемые наборы, чтобы не было проблем с остатками при оперативном проведении
Движения.ОстаткиНоменклатуры.Записать();
Движения.Управленческий.Записать();
Фактически, этот код удаляет старые движения документа в указанных регистрах. То, что делать это необходимо, никто не сомневался. Вопрос заключался в том, нужно ли блокировать регистры при удалении движений? На форуме 1С была создана соответствующая тема, в процессе обсуждения которой выяснилось, что ситуация напрямую зависит от свойства Разрешить разделение итогов:
  • Если режим разделения итогов отключен, то свойство БлокироватьДляИзменения можно не использовать.
  • Если режим разделения итогов включен, то свойство БлокироватьДляИзменения использовать нужно.
Дело в том, что включение режима разделения итогов фактически добавляет в таблицу итогов регистра еще одно измерение, позволяющее распараллелить обновление записей итогов. Свойство БлокироватьДляИзменения этот механизм отключает. В этом случае, снижается параллельность работы, т.к. другая транзакция не сможет сделать запись в этом же регистре по тем же значениям его измерений. Но с другой стороны - гарантирует, что, например, для конкретного товара по конкретной партии точно ничего не изменится до тех пор, пока управляемая блокировка не будет снята. А чтобы не переделывать код каждый раз при изменении режима разделения итогов, логичнее всего использовать свойство БлокироватьДляИзменения всегда. В первом случае - это ни на что не повлияет, во втором случае - это прямая необходимость.
1Gb.ru counter Рейтинг сайтов Бийска