Пример работы с Планировщиком 1С (УФ)

05.07.18

Разработка - Механизмы платформы 1С

В 1С 8.3.х появился такой объект, как "Планировщик". О нем и пойдет речь.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Пример работы с Планировщиком 1С (УФ):
.epf 21,60Kb
145
145
1 SM
Скачать Купить за 1 850 руб.

Данная обработка может быть интересна тому, кто хочет сделать собственный календарь на базе "Планировщика".

Планировщик позволяет выводить информацию

  • по дням
  • неделям
  • месяцам

Для примера выводится документ "Событие". Собственно, каждый может наполнить данными из любого справочника или документа.

Пример заполнения планировщика:
 

Процедура ЗаполнитьЭлементыПланировщика()	
    // Инициализация элементов планировщика (записи по измерениям)
    ЭлементыПланировщика = Планировщик.Элементы;
    ЭлементыПланировщика.Очистить();
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Событие.Ссылка КАК Ссылка,
	|	Событие.Дата КАК Дата
	|ИЗ
	|	Документ.Событие КАК Событие";
	
	Результат = Запрос.Выполнить().Выгрузить();
	                                                        
	Для каждого подстрока Из Результат Цикл
		
		НовыйЭлемент = ЭлементыПланировщика.Добавить(подстрока.Дата, подстрока.Дата);
		
		НовыйЭлемент.Текст = подстрока.Ссылка;
		НовыйЭлемент.ЦветФона = WebЦвета.ЗеленаяЛужайка;	
		НовыйЭлемент.Картинка = БиблиотекаКартинок.Ресурс;
		НовыйЭлемент.Значение = подстрока.Ссылка;
	КонецЦикла;
	
КонецПроцедуры

Обработка проста и направлена показать, как можно органично вывести информацию в разрезе разных периодов.

Протестировано на платформе 8.3.9.2233.

Планировщик календарь

См. также

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

23.06.2024    4004    bayselonarrend    18    

142

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    4049    dsdred    16    

76

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    9492    YA_418728146    25    

70

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    8837    dsdred    44    

123

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    21044    SeiOkami    46    

129

Механизмы платформы 1С Системный администратор Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    15187    human_new    27    

79

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    11521    YA_418728146    7    

153
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1719 26.06.18 15:25 Сейчас в теме
(0) график регистрируется и показывается по одному человеку - одного сотрудника, одного менеджера и т.д. Как совместить отображение графика работы нескольких сотрудников? По сути у каждого свой график - к примеру, график приема врачей, график развоза товаров у водителей и т.д.
Планировщик возможно не решает такого рода задачи.
2. MKFreeUser 71 26.06.18 16:49 Сейчас в теме
Смотря как решать задачу, единственное что за месяц будет не информативный планировщик, мало влазит информации. Не нашел свойств как управлять размером планировщика, он принудительно подгоняет под экран данные.
А так что Вам мешает в запросе вытянуть данные по нескольким сотрудникам и вывести их. В тексте можно фио указать, или цветом разделить, тут как душе угодно
6. RustIG 1719 29.06.18 13:52 Сейчас в теме
(2) понял вас - так и думал, что этот вопрос не решен. ...я над этой проблемой думал уже - решил по-своему - в моих публикациях есть такая , как "Сетка расписания".
3. MKFreeUser 71 26.06.18 16:51 Сейчас в теме
В планировщике есть Измерения - можно по ним разделить график, но он имеет ограничения -> нельзя перетянуть задачу/событие между измерениями.
5. leongl 535 28.06.18 12:35 Сейчас в теме
(3) Можно, и даже позволяет отлавливать событие перетягивания и обрабатывать как душе угодно. Юзайте событие "ПриОкончанииРедактирования" и будет вам счастье.
7. baracuda 2 24.08.18 15:13 Сейчас в теме
Скажите пожалуйста. К примеру у меня есть событие у которого есть ВремяНачала и ВремяОкончания.
Как мне их добавить на планировщик с учетом времени начала и окончания?
У вас в примере, берется только один реквизит дата документа.
8. MKFreeUser 71 24.08.18 17:24 Сейчас в теме
ЭлементыПланировщика = Планировщик.Элементы;
НовыйЭлемент = ЭлементыПланировщика.Добавить(ДатаНачала, ДатаОкончания);

А какие уж даты вы будете вставлять и из какого реквизита - вам решать.
9. baracuda 2 24.08.18 18:39 Сейчас в теме
(8) Спасибо большое, проглядел этот момент. Дейсвительно все очень просто
10. skyboy13 14 05.12.18 23:07 Сейчас в теме
А можно ли растянуть как-то подобно? что день закрашивался пропорционально часам
Прикрепленные файлы:
11. skyboy13 14 09.09.19 10:19 Сейчас в теме
И не хватает множества картинок.
12. skyboy13 14 09.09.19 10:19 Сейчас в теме
А то сейчас в планировщик можно только одну прикрепить.
13. AllexSoft 30.09.19 17:30 Сейчас в теме
спасибо за обработку, разобрался как построить планировщик "как в google календаре", по месяцу с переносом дат на следующую строку, похоже это только программно можно сделать.
14. пользователь 31.10.19 08:44
Сообщение было скрыто модератором.
...
15. Adept 21.01.20 09:54 Сейчас в теме
Добрый день, не могли бы вы поделится кодом переключения представлений с дневного на недельный и месячный?
16. MKFreeUser 71 22.01.20 12:49 Сейчас в теме
(15)
Добрый день, вечером отвечу
17. MKFreeUser 71 22.01.20 21:26 Сейчас в теме
18. CAIN 16 03.02.20 11:36 Сейчас в теме
Здравствуйте, при создании события планировщика у меня открывается создание документа заявки(в нем есть два реквизита ВремяС и ВремяПо и стандартный реквизит Дата). Как мне передать значение выделенной области времени и даты планировщика в этот создаваемый документ? Мои мысли закончились на том, что мне нужно обратиться к значениям выделенной области и передать их в параметры формы, но я не знаю как к ним обратиться. Помогите пожалуйста
19. MKFreeUser 71 03.02.20 14:55 Сейчас в теме
(18)
заявки

Как-то так я думаю:

// Событие из планировщика
&НаКлиенте
Процедура СобытиеПланировщик_ПередСозданием(Элемент, Начало, Конец, Значения, Текст, СтандартнаяОбработка)
	// Вставить содержимое обработчика.
	
	Парам = Новый Структура();
	Парам.Вставить("Начало", Начало);
	Парам.Вставить("Конец", Конец);

	ОткрытьФорму("Документ.Заявка.ФормаОбъекта", Парам);

КонецПроцедуры

//Функция из документа Заявка
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Объект.Ссылка.Пустая() Тогда
		Если Параметры.Свойство("Начало") Тогда
			Объкт.ВремяС = Параметры.Начало;
		КонецЕсли;	
		Если Параметры.Свойство("Конец") Тогда
			Объкт.ВремяПо = Параметры.Конец;
		КонецЕсли;	
		
	КонецЕсли;
	
КонецПроцедуры


Показать
20. CAIN 16 03.02.20 15:54 Сейчас в теме
(19) &НаКлиенте
Процедура ПланировщикПередСозданием(Элемент, Начало, Конец, Значения, Текст, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ПараметрыФормы=Новый Структура();
ПараметрыФормы.Вставить("ВремяС", Начало);
ПараметрыФормы.Вставить("ВремяПо", Конец);
ОткрытьФорму("Документ.Заявки.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры

У меня такой код, но при выделении области ничего не происходит, те время не переносится, но и ошибки не выходят.
21. MKFreeUser 71 03.02.20 16:33 Сейчас в теме
(20) это есть в документе "Заявка"?
//Функция в документе Заявка
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Объект.Ссылка.Пустая() Тогда
Если Параметры.Свойство("Начало") Тогда
Объкт.ВремяС = Параметры.Начало;
КонецЕсли;
Если Параметры.Свойство("Конец") Тогда
Объкт.ВремяПо = Параметры.Конец;
КонецЕсли;

КонецЕсли;

КонецПроцедуры
23. CAIN 16 03.02.20 16:47 Сейчас в теме
(21) спасибо огромное!! время подставилось, сейчас попробую чтоб и дата автоматом подставлялась,
Еще раз спасибо.
22. CAIN 16 03.02.20 16:41 Сейчас в теме
(19) Спасибо)), сразу не увидела полный код, смысл понятен, попробую (если получится, отпишусь)
24. lug 18.05.21 10:06 Сейчас в теме
Добрый день .
Возможно ли элементы измерения планировщика не выводить в текущие периоды отображения, если по этим элементам нет движения в периоде?
Как есть и как надо изобразил на примере;
Прикрепленные файлы:
25. MKFreeUser 71 19.05.21 15:51 Сейчас в теме
(24) Так эта реализация на вашей стороне, какие объекты выводить. В частности, здесь выборка всех событий простым запросом без фильтров
Процедура ЗаполнитьЭлементыПланировщика()	
    // Инициализация элементов планировщика (записи по измерениям)
    ЭлементыПланировщика = Планировщик.Элементы;
    ЭлементыПланировщика.Очистить();
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Событие.Ссылка КАК Ссылка,
	|	Событие.Дата КАК Дата
	|ИЗ
	|	Документ.Событие КАК Событие";
	
	Результат = Запрос.Выполнить().Выгрузить();
	                                                        
	Для каждого подстрока Из Результат Цикл
		
		НовыйЭлемент = ЭлементыПланировщика.Добавить(подстрока.Дата, подстрока.Дата);
		
		НовыйЭлемент.Текст = подстрока.Ссылка;
		НовыйЭлемент.ЦветФона = WebЦвета.ЗеленаяЛужайка;	
		НовыйЭлемент.Картинка = БиблиотекаКартинок.Ресурс;
		НовыйЭлемент.Значение = подстрока.Ссылка;
	КонецЦикла;
	
КонецПроцедуры
Показать
26. lug 20.05.21 12:29 Сейчас в теме
(25)Спасибо за ответ. Не Элементы планировщика, а элементы измерения планировщика. При обходе результата запроса добавляю элемент измерения там где надо. При попытке удалить элемент измерения планировщика там где не надо удаляется вообще из всего планировщика этот элемент измерения. Предполагаю, что это в принципе невозможно сделать.
Прикрепленные файлы:
27. lug 20.05.21 12:39 Сейчас в теме
Получается вот так:
Прикрепленные файлы:
28. ВИЛенин 2 18.04.22 07:55 Сейчас в теме
выявил проблему.
НовыйЭлемент.Картинка = БиблиотекаКартинок.Ресурс;
Картинка тут вставляется ТОЛЬКО ЕСЛИ весь текст входит в отведённую под него плашку. Если хоть чуть-чуть не влазит, то при первом открытии - не увидите это картинку. А вот как сделать минимальный размер это плашки где текст отображется...вот это вопрос
Оставьте свое сообщение