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

Отбор в запросе

Автор AlexKag, 28 сен 2012, 16:09

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

AlexKag

Здравствуйте! Подскажите пожалуйста с таким вопросом. есть регистр, где в ресурсах количество и статус. Есть документ ВАкадемическийОтпуск. При его проведении в регистре записывается студент, количество 1, и статус "ВАкадемическомОтпуске". Так вот как сделать запрос, в документе, который бы не позволил два раза отправить одного и того же студента в отпуск. Я делал проверку что если количество больше или равно 1 и такой - то статус, то отменить проведение.. но это не работает..может есть ошибка в запросе. Вот запрос.. Скажите есть ошибки?
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   РегистрПереводаСрезПоследних.Количество,
      |   РегистрПереводаСрезПоследних.Статус,
      |   РегистрПереводаСрезПоследних.Группа
      |ИЗ
      |   РегистрСведений.РегистрПеревода.СрезПоследних КАК РегистрПереводаСрезПоследних
      |ГДЕ
      |   РегистрПереводаСрезПоследних.Статус = &ВАкадемическомОтпуске
      |   И РегистрПереводаСрезПоследних.Группа = &Группа
      |   И РегистрПереводаСрезПоследних.Количество = &Количество";

   Запрос.УстановитьПараметр("ВАкадемическомОтпуске", Статус);
   Запрос.УстановитьПараметр("Группа", Группа);
   Запрос.УстановитьПараметр("Количество", 1);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Если ВыборкаДетальныеЗаписи.Количество()>=1 Тогда
         Сообщить("Данная группа уже зачислена!");
         Отказ=Истина;
      Иначе
         отказ=Ложь;
      КонецЕсли;   

mixqn

Цитата: AlexKag от 28 сен 2012, 16:09есть регистр, где в ресурсах количество и статус. Есть документ ВАкадемическийОтпуск. При его проведении в регистре записывается студент, количество 1, и статус "ВАкадемическомОтпуске"
не дочитал пока вопрос до конца, т.к. много текста  :D но уже по этим фразам вопрос: что ж вы все упорно не хотите сделать как положено? уже была же тема, где писали, что количество вам не нужно. ответьте на такой вопрос: при каких условиях в это поле у вас пишется значение, отличное от 1 ? подозреваю, что нет таких. вопрос: зачем это поле?

Slin

Для проверки возможности проведения достаточно знать статус
Цитата: mixqn от 28 сен 2012, 18:11при каких условиях в это поле у вас пишется значение, отличное от 1 ?
Поддерживаю вопрос :)
skype: slin-dev

mixqn

По теме: в коде ошибок не нашел. Отмена проведения должна срабатывать. Хотя ресурс "Количество" у вас все таки лишний :)
Добавлено: 29 сен 2012, 01:27


единственно по коду: сообщение выводится странное )) наверно вы его откуда-то скопировали из другого места ) ну и
Иначе
         отказ=Ложь;
не обязательно добавлять. остальное должно работать.

ГК

Этот запрос будет работать в оперативном режиме. Для того, чтобы ваш документ можно было проводить и в неоперативном режиме, надо добавить Период в параметры временной таблицы. Ну и условие можно тоже вынести в параметры временной таблицы. Так оптимальнее. Тогда запрос может выглядеть так:

ВЫБРАТЬ
   СУММА(1) КАК ВсегоВГруппе
ИЗ
   РегистрСведений.СтатусыСтудентов.СрезПоследних(
         &Период,
         Статус = &Статус
            И Группа = &Группа) КАК РегистрПереводаСрезПоследних
Добавлено: 29 сен 2012, 09:17


Запрос.УстановитьПараметр("Период", Ссылка.Дата);
Добавлено: 29 сен 2012, 09:19


Название регистра сведений, конечно, то, которое у вас - РегистрСведений.РегистрПеревода. Я неправильно написала.

mixqn

Цитата: ГК от 29 сен 2012, 09:15надо добавить Период в параметры временной таблицы.
это да, вчера я просмотрел. период обязательно.

Теги:

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

Рейтинг@Mail.ru

Поиск