Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 мая 2024, 01:54

Помогите пожалуйста с запросом.

Автор beztrud, 07 сен 2012, 12:55

0 Пользователей и 1 гость просматривают эту тему.

beztrud

8.2 управляемое приложение, конфа самописная. Есть документ Табель учета рабочего времени с реквизитами Подразделение и Справочник.Сотрудники с реквизитом Подразделение-СправочникСсылкаПодразделения. Нужно автоподбором заполнить табличную часть Список сотрудников в документе Табель учета рабочего времени. Вот что пишу я
&НаКлиенте
Процедура Автоподбор(Команда)
Подразделение= Объект.Подразделение;
Если Объект.Подразделение.Пустая() Тогда
Предупреждение("Выберете подразделение");
Иначе
ПодборНаСервере();
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПодборНаСервере()
Подразделение= Объект.Подразделение;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|Справочник.Наименование
|ИЗ
|Справочник.Сотрудники КАК Сотрудники
|ГДЕ
|Справочник.Ссылка=&Подразделение";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.СписокСотрудников.Добавить();
НоваяСтрока.Сотрудник = Выборка.Ссылка;
КонецЦикла;
КонецПроцедуры


Ругается:
{Документ.ТабельУчетаРабочегоВремени.Форма.ФормаДокумента.Форма(96)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(6, 1)}: Поле не найдено "Справочник.Ссылка"
<<?>>Справочник.Ссылка=&Подразделение

Klyacksa

Должно быть не Справочник, а Сотрудники
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

И, кстати, в чем логика: выбираете сотрудников, и говорите "хочу выбрать только тех сотрудников, где Сотрудник=Подразделению".

Видимо, надо
ГДЕ Сотрудники.Подразделение=&Подразделение

Но это с условием, что привязка к Подразделению находится в справочнике Сотрудники
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

beztrud

А что писать после Выборка?

НоваяСтрока.Сотрудник = Выборка.......; Это точно не Выборка.Ссылка.

Klyacksa

В конструкции Выборка.<что-то там> вы можете использовать любое поле, выбранное запросом.
Например, если выбиралось:
"ВЫБРАТЬ
|Сотрудники.Наименование,
|Сотрудники.Ссылка КАК Сотрудник, // пример переименования поля
|Сотрудники.Подразделение
..."


то можно использовать Выборка.Наименование, Выборка.Сотрудник, Выборка.Подразделение.

В Вашем случае, скорее всего, стоит в выбранные поля добавить Сотрудники.Ссылка и использовать именно его, а не наименование, как Вы пытаетесь сделать.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

beztrud

Верно:
&НаКлиенте
Процедура Автоподбор(Команда)
Подразделение= Объект.Подразделение;
Если Объект.Подразделение.Пустая() Тогда
Предупреждение("Выберете подразделение");
Иначе
ПодборНаСервере();
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПодборНаСервере()
Подразделение= Объект.Подразделение;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|Сотрудники.Наименование,
|Сотрудники.Подразделение,
|Сотрудники.Ссылка КАК Сотрудник
|ИЗ
|Справочник.Сотрудники КАК Сотрудники
|ГДЕ
|Сотрудники.Подразделение=&Подразделение";
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий()
Цикл
НоваяСтрока = Объект.СписокСотрудников.Добавить();
НоваяСтрока.Сотрудник = Выборка.Сотрудник;
КонецЦикла;
КонецПроцедуры

Спасибо большое.

Klyacksa

Зачем же в цикле это делать? Попробуйте сразу выгрузить из результата запроса в список.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск