Самое неприятное по-моему, поскольку в реальной жизни пока не используется (ну может кто-то уже вовсю работает с УТ3, у нас как-то пока никто).
С помощью регламентного задания необходимо по расписанию каждый день формировать задачи сотрудникам на создание отчет о проделанной работе. Задача должна порождаться для тех сотрудников, которые числятся в регистре сведений «Сведения о сотрудниках» на момент формирования задачи. По мере возникновения этих задач у пользователя должна автоматически открываться форма каждой невыполненной его задачи
На рабочем столе необходимо отобразить список невыполненных задач текущего пользователя. Кроме того, пользователь должен иметь возможность видеть полный список задач.
-------------------------------------------------------------
Понятно более-менее все, кроме как открыть форму.
Сделали новую задачу
ОтчетОПроделаннойРаботе,
Реквизит адресации (и основной) Исполнитель, Текущий исполнитель – параметр сеанса ТекИсполнитель.
Добавили Реквизит Содержание, чтоб хранить перечень работ.
Сделали регл. Задание Отчитайся(), забили расписание, сослались на общий модуль, одноимменную процедуру, налепили сотрудникам из Регистра сведений "СеденияОсотрудникам" задачи.
Непонятно, они хотят периодический Регистр сведений с каким-то ресурсом актуальности сотрудника, или сойдет условный непериодический, с одним реквизитом Сотрудник. Но это не сильно важно, можно уточнить даже в процессе.
Вышло что-то такое
Процедура Отчитайся() Экспорт
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ДатСегодня",НачалоДня(ТекущаяДата()));
Запрос1.Текст =
"ВЫБРАТЬ
| СведенияОСотрудниках.Сотрудник,
| ОтчетОПроделаннойРаботе.Ссылка КАК Ссылка
|ИЗ
| РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
| ЛЕВОЕ СОЕДИНЕНИЕ Задача.ОтчетОПроделаннойРаботе КАК ОтчетОПроделаннойРаботе
| ПО СведенияОСотрудниках.Сотрудник = ОтчетОПроделаннойРаботе.Исполнитель
| И (НАЧАЛОПЕРИОДА(ОтчетОПроделаннойРаботе.Дата, ДЕНЬ) = &ДатСегодня)
|
|СГРУППИРОВАТЬ ПО
| СведенияОСотрудниках.Сотрудник,
| ОтчетОПроделаннойРаботе.Ссылка";
Результат = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Ссылка) Тогда
Зад=Задачи.ОтчетОПроделаннойРаботе.СоздатьЗадачу();
Зад.Дата=ТекущаяДата();
Зад.Наименование="Отчет за работы";
Зад.Исполнитель= ВыборкаДетальныеЗаписи.Сотрудник;
Зад.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
------------
В модуле упр. приложения запустили это все
Процедура ПередНачаломРаботыСистемы(Отказ)
ПодключитьОбработчикОжидания("ОбработчикОжидания",1);
КонецПроцедуры
Процедура ОбработчикОжидания() экспорт
ВыполнитьОбработкуЗаданий();
КонецПроцедуры
------------
Сделали Задаче форму списка, в реквизите Список выбрали основную таблицу Задача.ОтчетОПроделаннойРаботе.ЗадачиПоИсполнителю
Пошли в конфигурацию – рабочая область рабочего стола, подцепили там эту форму списка – теперь открывая 1С, видим свои задачи на рабочем столе.
Туда же в форму списка в команды формы добавили команду ВсеЗадачи, и привязали к нему
&НаКлиенте
Процедура ВсеЗадачи(Команда)
ПокажиВсеЗадачи()
КонецПроцедуры
&НаСервере
Процедура ПокажиВсеЗадачи()
Список.ОсновнаяТаблица="Задача.ОтчетОПроделаннойРаботе";
КонецПроцедуры
Теперь кнопочкой можно отключить отбор.
Не могу понять куда «По мере возникновения этих задач у пользователя должна автоматически открываться форма каждой невыполненной его задачи»
Куда это можно подсунуть, в саму задачу, или какой-то обработчик ожидания.
i |
| Для выделения кода есть специальные теги!
|
Сообщение отредактировал Vofka - 26.11.13, 14:56