• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы savaa
  • Дата начала
S

savaa

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

unknown181538

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

savaa

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

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

unknown181538

Что-то не вполне понял, как ПоставитьЗадание.Дата может быть больше даты завершения и текущей даты. Что записывается в это поле?
 
S

savaa

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

Allexei

А может есть смысл создать регистр сведений в котором будет отображаться текущее состояние сотрудника?Изменение регистра проводить документами ПоставитьЗадание и ЗавершитьЗадание, или у ПоставитьЗадание сделать обработчик по фиксации в данном регистре завершения задания?
 
U

unknown181538

в этом случае я получаю всех свободных сотрудников на данный момент. но не совсем получаю. если у одного сотрудника есть выполненое задание (свободен) и текущее (занят) этот запрос мне говорит, что он свободен
Это не ответ на мой вопрос.
Попробуем так: как дата завершения задания может быть меньше даты начала? Мне кажется, первое условие лишнее.
и нужно получить информацию о всех поставленных заданиях текущего пользователя (вообще и в целом), и информацию о том, кто из пользователей свободен на данный момент.
Тут вижу две задачи. Запрос к какой из них относится?
 
S

savaa

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

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

unknown181538

Мда... :crash:
Вот и получаете то, что получаете...

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!