Здравствуйте! прошу помощи) Имеется кусок кода:
Проблема в том что Результат после каждой итерации перезаписывается и я понимаю почему, но скажите как это исправить?
Процедура ВыборПоДнямЗапрос();
Результат = Неопределено;
Для Каждого Стр ИЗ Данные Цикл
Сотрудник = Стр.Сотрудник;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник,
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ВидУчетаВремени,
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ДниОборот,
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ЧасыОборот
|ИЗ
| РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников.Обороты КАК ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты
|ГДЕ
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник = &Сотрудник";
Результат = Запрос.Выполнить().Выгрузить();
КонецЦикла;
КонецПроцедуры
ПоказатьПроблема в том что Результат после каждой итерации перезаписывается и я понимаю почему, но скажите как это исправить?
По теме из базы знаний
Найденные решения
(1)Потому что запрос у тебя в цикле!!!
Запросы в цикле делать не рекомендуется!!!
Измени на
В параметр "Сотрудник" передавай массив нужных тебе сотрудников.
И убери цикл. Тогда в результате запроса у тебя будет выборка по всем сотрудникам.
Замени на
Запросы в цикле делать не рекомендуется!!!
ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник = &Сотрудник";
Измени на
ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник В (&Сотрудник)";
В параметр "Сотрудник" передавай массив нужных тебе сотрудников.
И убери цикл. Тогда в результате запроса у тебя будет выборка по всем сотрудникам.
Результат = Запрос.Выполнить().Выгрузить();
Замени на
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
// обрабатываешь записи
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Потому что запрос у тебя в цикле!!!
Запросы в цикле делать не рекомендуется!!!
Измени на
В параметр "Сотрудник" передавай массив нужных тебе сотрудников.
И убери цикл. Тогда в результате запроса у тебя будет выборка по всем сотрудникам.
Замени на
Запросы в цикле делать не рекомендуется!!!
ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник = &Сотрудник";
Измени на
ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник В (&Сотрудник)";
В параметр "Сотрудник" передавай массив нужных тебе сотрудников.
И убери цикл. Тогда в результате запроса у тебя будет выборка по всем сотрудникам.
Результат = Запрос.Выполнить().Выгрузить();
Замени на
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
// обрабатываешь записи
КонецЦикла;
(4)
Результата запроса.
Обычным способом. Только вместо переменной с ссылкой на сотрудника нужно передать массив ссылок на сотрудников.
Если у тебя в переменной "Данные" находится таблица значений то значит нужно выгрузить из неё колонку в массив. И этот массив передать в параметр запроса.
и какие записи мне обработать здесь?
Результата запроса.
а каким образом мне передать массив нужных мне сотрудников?
Обычным способом. Только вместо переменной с ссылкой на сотрудника нужно передать массив ссылок на сотрудников.
Если у тебя в переменной "Данные" находится таблица значений то значит нужно выгрузить из неё колонку в массив. И этот массив передать в параметр запроса.
(10)
Но я пока выгрузил Результат запроса и посмотрел его он берет все данные которые нужны, записи не обрабатывал.
Процедура ВыборПоДнямЗапрос();
//Сотрудник = Новый Массив;
Сотрудник = Данные.ВыгрузитьКолонку("Сотрудник");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник,
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ВидУчетаВремени,
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ДниОборот КАК Дни,
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.ЧасыОборот КАК Часы
|ИЗ
| РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников.Обороты КАК ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты
|ГДЕ
| ДанныеТабельногоУчетаРабочегоВремениСотрудниковОбороты.Сотрудник В(&Сотрудник)";
Результат = Запрос.Выполнить().Выгрузить();
КонецПроцедуры
ПоказатьНо я пока выгрузил Результат запроса и посмотрел его он берет все данные которые нужны, записи не обрабатывал.
(11)Запрос не выгружай в таблицу значений. А обрабатывай выборкой как я тебе написал.
В ТЗ рекомендуется выгружать для последующей загрузки в регистр.
А так лучше использовать "выборку". Выборка читает по несколько записей из результата. А выгрузка в ТЗ выгружает весь результат в таблицу значений что является ресурсоёмкой операцией.
В ТЗ рекомендуется выгружать для последующей загрузки в регистр.
А так лучше использовать "выборку". Выборка читает по несколько записей из результата. А выгрузка в ТЗ выгружает весь результат в таблицу значений что является ресурсоёмкой операцией.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот