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

Проверка справочника и проведение документа

Автор AlexKag, 26 сен 2012, 16:58

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

AlexKag

Скажите вот создал запрос, на форме документа. Перевел вчера студентов из группы 3СП в группу 4СП. Сделались соответствующие записи в регистре перевода. Сейчас хочу перевести студентов из группы 3АСУ в 4СП. По идее документ проводиться не должен так как в группе 4СП количество студентов = 5, а не 0. Но документ проводиться. Установил точку останова в запросе, и перепровел документ.. но в конфигуратор он даже не вошел.. в чем ошибка, скажите пожалуйста?? Вот запрос

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

   Запрос.УстановитьПараметр("Группа", Объект.Группа);
   Запрос.УстановитьПараметр("Период", Объект.Дата);
                                                   
   Результат = Запрос.Выполнить();

   ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

   ВыборкаОбщийИтог.Следующий();      
   // Вставить обработку выборки ВыборкаОбщийИтог

   ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      Если ВыборкаДетальныеЗаписи.Количество()<>0 Тогда
         Возврат ложь;
      Иначе
         Возврат Истина;
      КонецЕсли;
   КонецЦикла;
КонецФункции

ГК

Да, я была не права - группу лучше разместить в ресурсах.

Запрос может быть такой :
ВЫБРАТЬ
   СУММА(1) КАК КоличествоВГруппе
ИЗ
   РегистрСведений.РегистрСведенийСтуденты.СрезПоследних КАК РегистрСведенийСтудентыСрезПоследних
ГДЕ
   РегистрСведенийСтудентыСрезПоследних.Статус = &Статус
   И РегистрСведенийСтудентыСрезПоследних.Группа = &Группа
Добавлено: 27 сен 2012, 16:10


Откуда вызывается функция?
Можно перед вызовом функции поставить точку останова, а потом жать F11.

AlexKag

Функцию я из формы документа вызываю.. все дело в том, что документ спокойно проводится и никак не останавливается..

ГК

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

И еще, в запросе у тебя параметр называется ДатаСреза, а присваиваешь значение -  Запрос.УстановитьПараметр("Период", Объект.Дата);

AlexKag

Да да.. точно.. простите, не исправил эту строку..

Теги:

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

Рейтинг@Mail.ru

Поиск