как организовать вывод результата?

Тема в разделе "1C и всё что с ней связано", создана пользователем savaa, 11 дек 2010.

  1. savaa

    savaa Гость

    начну сразу с сути без преамбул.
    есть база сотрудников (справочник), есть и постоянно добавляются поставленные им задания (сделал через документы). в документе есть поле "дата завершения". и нужно получить информацию о всех поставленных заданиях текущего пользователя (вообще и в целом), и информацию о том, кто из пользователей свободен на данный момент. (что б можно было ему назначить новое задание и не возникало накладок).
    вопрос. как это можно реализовать? подскажите пожалуйста.
    зы: если что, то могу сбросить базу.
    зыы: сильно не пинайте если вдруг что. на данный момент 1С только учу. прошел только методичку по основным объектам.
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    1) Укажите платформу и конфигурацию, прочитайте правила раздела)
    2) Предположу, по методичке по основным объектам, что платформа - 8.х. Вариант :
    - Написать запрос. Левая таблица сотрудники (или создать спр-к "Пользователи", т.к... опять же, укажите конфигурацию..), правая - документы. Условие - текущая дата между датой документа и датой завершения. Если справа получился NULL - сотрудник свободен. Еще нужно как-то связать пользователя и сотрудника, например по наименованию... вкратце так...
     
  3. savaa

    savaa Гость

    пардон. платформа 8.2
     
  4. savaa

    savaa Гость

    а вот еще вопрос. список из заданий большой. в нем есть и завершенные, и будущие, и текущие. в одном случае я получаю, что у сотрудника задание стоит, в другом - нет. и в результате сотрудник свободен. хотя фактически это не так(
    прилагаю код запроса.

    Код ( (Unknown Language)):
            "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |   Сотрудники.Наименование КАК Сотрудник
    |ИЗ
    |   Документ.ПоставитьЗадание КАК ПоставитьЗадание
    |       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
    |       ПО ПоставитьЗадание.Сотрудник = Сотрудники.Ссылка
    |ГДЕ
    |   ПоставитьЗадание.Дата >= &ТекущаяДата
    |   ИЛИ ПоставитьЗадание.ДатаЗавершения <= &ТекущаяДата";
     
  5. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Что-то не вполне понял, как ПоставитьЗадание.Дата может быть больше даты завершения и текущей даты. Что записывается в это поле?
     
  6. savaa

    savaa Гость

    в этом случае я получаю всех свободных сотрудников на данный момент. но не совсем получаю. если у одного сотрудника есть выполненое задание (свободен) и текущее (занят) этот запрос мне говорит, что он свободен
     
  7. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    А может есть смысл создать регистр сведений в котором будет отображаться текущее состояние сотрудника?Изменение регистра проводить документами ПоставитьЗадание и ЗавершитьЗадание, или у ПоставитьЗадание сделать обработчик по фиксации в данном регистре завершения задания?
     
  8. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Это не ответ на мой вопрос.
    Попробуем так: как дата завершения задания может быть меньше даты начала? Мне кажется, первое условие лишнее.
    Тут вижу две задачи. Запрос к какой из них относится?
     
  9. savaa

    savaa Гость

    ко второй задаче. о занятости сотрудника.
    в запросе стоит "или". это сделал на случай если задание или уже завершено, или оно поставленное на будущее сотруднику, но сейчас он свободен.
    после выполнения данного запроса если у сотрудника есть выполненное задание и текущее, то он все равно отображается как свободен. во всех остальных случаях - корректно. по крайней мере пока что глюков не замечено.
     
  10. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Мда... :crash:
    Вот и получаете то, что получаете...

    Одним соединением не отделаетесь, ИМХО.
    Решение:
    Первый запрос:
    Получаете все текущие задания (ТекущаяДата больше даты и меньше даты завершения.). Помещаете результат во временную таблицу.
    Второй запрос:
    Делаете левое соединение сотрудников с временной таблицей, и ставите условие ВременнаяТаблица.Документ ЕСТЬ NULL.
     
Загрузка...

Поделиться этой страницей