Выбор ответа Middle Проведение документов обновлено

Движения из табличной части

Вопрос

Документ «РасходТоваров» проводится этим кодом. Какая главная проблема?

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

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Обращение Строка.Номенклатура.ВидНоменклатуры читает объект на каждой строке. Обращение через точку к реквизиту ссылки делает отдельное чтение объекта из базы на каждой строке.

Варианты ответа

  1. Не указан вид движения Приход для строк табличной части
  2. Обращение Строка.Номенклатура.ВидНоменклатуры читает объект на каждой строкеправильный ответ
  3. Нельзя обращаться к табличной части Товары в ОбработкаПроведения, только через запрос к ней
  4. Движения нельзя добавлять в цикле, только одной коллекцией

Разбор

Обращение через точку к реквизиту ссылки делает отдельное чтение объекта из базы на каждой строке. На тысячах строк это тысячи запросов. Правильно собрать данные одним запросом по табличной части с соединением к справочнику. Вид Расход указан верно для расходного документа, табличная часть доступна, а добавлять движения в цикле нормально.

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

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

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