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

Расписание университета

Автор pyrkin_vanya, 20 дек 2009, 14:35

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

Slin

Создай числовую константу, допустим СамыйПервыйНомерНедели. Потом сможешь ее менять.
Значения ее получаешь так Константы.СамыйПервыйНомерНедели.Получить()

Далее надо взглянуть на код отчета :)

И маленький вопрос: в конфигурации может быть 2 документа с одними и теми же реквизитами:ДеньНедели, НомерНедели, Группа?

pyrkin_vanya

Нет. В любом случае что-то будет отличаться.

Запрос сделан через СКД

ВЫБРАТЬ
   Расписание.ДеньНедели,
   Расписание.НомерНедели,
   Расписание.Группа,
   РасписаниеДанные.НомерПары,
   РасписаниеДанные.Подгруппа,
   РасписаниеДанные.Предмет,
   РасписаниеДанные.ВидЗанятия,
   РасписаниеДанные.Преподователь,
   РасписаниеДанные.Корпус,
   РасписаниеДанные.Аудитория
ИЗ
   Документ.Расписание.Данные КАК РасписаниеДанные
      ЛЕВОЕ СОЕДИНЕНИЕ Документ.Расписание КАК Расписание
      ПО РасписаниеДанные.Ссылка = Расписание.Ссылка

Как здесь видно, здесь нет отбора. Но я надеюсь, что вам понятно, что мне нужен отбор по дате.

Slin

Далее в запрос нужно добавить условия для отбора конкретного документа:
ГДЕ
   Расписание.ДеньНедели = &ДеньНедели И Расписание.НомерНедели = &НомерНедели

Определим значения для параметров запроса

ТекущийНомерНедели = НеделяГода(ДатаОтчета);
Разница = ТекущийНомерНедели - Константы.СамыйПервыйНомерНедели.Получить();

ИспользуемаяНеделя = 2; // не знаю тип номера недели

Если (Разница % 2) = 0 Тогда
    ИспользуемаяНеделя = 1;
КонецЕсли

Запрос.УстановитьПараметр("НомерНедели", ИспользуемаяНеделя);
Запрос.УстановитьПараметр("ДеньНедели", ДеньНедели(ДатаОтчета));

Потом выполняем запрос.

Ну вроде больше ничего и не надо.
Получит расписание для всех групп на данное число.
А, и еще. Напиши ка ВНУТРЕННЕЕ СОЕДИНЕНИЕ вместо ЛЕВОГО, или отбор делать
ГДЕ
   РасписаниеДанные.Ссылка.ДеньНедели = &ДеньНедели И РасписаниеДанные.Ссылка.НомерНедели = &НомерНедели

pyrkin_vanya

Я добавил новую константу      СамыйПервыйНомерНедели

Запрос выглядит так:
ВЫБРАТЬ
   Расписание.ДеньНедели,
   Расписание.НомерНедели,
   Расписание.Группа,
   РасписаниеДанные.НомерПары,
   РасписаниеДанные.Подгруппа,
   РасписаниеДанные.Предмет,
   РасписаниеДанные.ВидЗанятия,
   РасписаниеДанные.Преподователь,
   РасписаниеДанные.Корпус,
   РасписаниеДанные.Аудитория
ИЗ
   Документ.Расписание.Данные КАК РасписаниеДанные
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Расписание КАК Расписание
      ПО РасписаниеДанные.Ссылка = Расписание.Ссылка

ГДЕ
   РасписаниеДанные.Ссылка.ДеньНедели = &ДеньНедели И РасписаниеДанные.Ссылка.НомерНедели = &НомерНедели


ТекущийНомерНедели = НеделяГода(ДатаОтчета);
Разница = ТекущийНомерНедели - Константы.СамыйПервыйНомерНедели.Получить();

ИспользуемаяНеделя = 2;

Если (Разница % 2) = 0 Тогда
    ИспользуемаяНеделя = 1;
КонецЕсли

Запрос.УстановитьПараметр("НомерНедели", ИспользуемаяНеделя);
Запрос.УстановитьПараметр("ДеньНедели", ДеньНедели(ДатаОтчета));

Программа ругается на это:
ТекущийНомерНедели = НеделяГода(ДатаОтчета);
Разница = ТекущийНомерНедели - Константы.СамыйПервыйНомерНедели.Получить();

pyrkin_vanya

А зачем вы вот это написали?
РасписаниеДанные.Ссылка.НомерНедели = &НомерНедели


Мне же не нужно выбирать НомерНедели. Только по ДеньНедели. А дальше она уже сама должна считать.

pyrkin_vanya

И еще я хотел спросить. Случайно вы не знаете где можно найти конфигурацию именно для этих целей? Мне хотя бы посмотреть. Я бы многое понял, если бы увидел как другие делают. Может скачать где можно?

Slin

номер недели не выбирается, а рассчитывается

к сожалению, не знаю

Теги:

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

Рейтинг@Mail.ru

Поиск