Код-ревью Middle Проведение документов обновлено

Ревью обработки проведения

Вопрос

Перед вами обработка проведения документа «ПеремещениеТоваров». Найдите ошибки.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	Для Каждого Строка Из Товары Цикл
		Движение = Движения.ТоварыНаСкладах.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = ТекущаяДата();
		Движение.Номенклатура = Строка.Номенклатура;
		Движение.Склад = СкладОтправитель;
		Движение.Количество = Строка.Количество;
	КонецЦикла;
	Если Строка.Количество = 0 Тогда
		Предупреждение("Пустое количество");
	КонецЕсли;
КонецПроцедуры

Коротко

Классический набор ошибок проведения: забытый флаг записи, текущая дата вместо даты документа, половина движений и клиентские методы в серверном коде. Проверки заполнения выносят в ОбработкаПроверкиЗаполнения.

Что должен найти ревьюер

  1. Ошибкастрока 2
    Не установлено Движения.ТоварыНаСкладах.Записывать = Истина (или явная запись): движения не будут записаны.
  2. Ошибкастрока 5
    Период движения должен быть датой документа (Дата), а не текущей датой: иначе перепроведение задним числом даст движения «сегодня».
  3. Ошибкастрока 9
    Нет прихода на склад-получатель: перемещение должно делать расход с одного склада и приход на другой.
  4. Ошибкастрока 10
    Переменная Строка используется после цикла: проверка относится только к последней строке. Проверку заполнения делают в ОбработкаПроверкиЗаполнения.
  5. Ошибкастрока 11
    Предупреждение() модальный клиентский метод, на сервере в модуле объекта недоступен. Нужно сообщить и установить Отказ = Истина.

Разбор

Классический набор ошибок проведения: забытый флаг записи, текущая дата вместо даты документа, половина движений и клиентские методы в серверном коде. Проверки заполнения выносят в ОбработкаПроверкиЗаполнения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме