Код, как можно иначе?

1. babLucy 12.05.21 18:36 Сейчас в теме
Посоветуйте, пожалуйста, альтернативное решение. Обратила внимание, что выборка нечасто передается в качестве параметров, наверное есть этому причины.

	Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Если НЕ РезультатЗапроса.Пустой() Тогда
		Выборка = РезультатЗапроса.Выбрать();
		
		Пока Выборка.Следующий() Цикл
			Если Выборка.РегистраторНомер = "№xxx" Тогда
				Выборка.Сбросить();
				СоздатьНовыйПеренос(Выборка);
			Иначе
				Выборка.Сбросить();
				ЗаполнитьТаблицуКадровыеДанные(Выборка);
			КонецЕсли;
			Прервать;
		КонецЦикла; 
	КонецЕсли;  
Показать
По теме из базы знаний
Найденные решения
3. FatPanzer 12.05.21 23:02 Сейчас в теме
1. ПЕРВЫЕ 1
2. Если Выборка.Следующий() Тогда
5. SlavaKron 13.05.21 09:02 Сейчас в теме
(4) Цикл явно лишний, почему вы игнорируете предыдущие комментарии? Не вдаваясь в логику вашего решения, код можно оформить так:
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
	Если Выборка.РегистраторНомер = "№xxx" Тогда
		Выборка.Сбросить();
		СоздатьНовыйПеренос(Выборка);
	Иначе
		Выборка.Сбросить();
		ЗаполнитьТаблицуКадровыеДанные(Выборка);
	КонецЕсли;	
КонецЕсли;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. unknown181538 154 12.05.21 19:08 Сейчас в теме
(0) А для чего строка Выборка.Сбросить() ? Если у вас условие, то логично текущую выборку передавать.
Вообще, из куска малопонятно, о чем идет речь.
Но сбрасывать выборку в цикле - это странно очень.
4. babLucy 13.05.21 08:49 Сейчас в теме
(2) Объясню суть задачи. Есть один документ ПереносДанных (далее ПД)в котором один РС, примерно 30 тысяч записей. Нужен механизм, который позволит пользователю исправлять данные этого регистра.

Суть обработки в том, из этого одного большого ПД удаляю записи по сотруднику, и создаю новый ПД для одного сотрудника.
Вариант что по одному сотруднику два регистратора не предусматривается - записи либо в старом, либо в новом ПД. Поэтому определяюсь с регистратором (Выборка.РегистраторНомер = "№xxx"), а затем либо создаю новый ПД + заполняю ТЧ обработки, либо сразу заполняю ТЧ обработки (новый ПД уже создан).
5. SlavaKron 13.05.21 09:02 Сейчас в теме
(4) Цикл явно лишний, почему вы игнорируете предыдущие комментарии? Не вдаваясь в логику вашего решения, код можно оформить так:
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
	Если Выборка.РегистраторНомер = "№xxx" Тогда
		Выборка.Сбросить();
		СоздатьНовыйПеренос(Выборка);
	Иначе
		Выборка.Сбросить();
		ЗаполнитьТаблицуКадровыеДанные(Выборка);
	КонецЕсли;	
КонецЕсли;
Показать
6. babLucy 13.05.21 09:20 Сейчас в теме
(2) (3) (5) Спасибо всем большое!
3. FatPanzer 12.05.21 23:02 Сейчас в теме
1. ПЕРВЫЕ 1
2. Если Выборка.Следующий() Тогда
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот