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

05.07.18

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

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

Скачать файл

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

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

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

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

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

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

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

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

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

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

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

См. также

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

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    7330    dsdred    57    

97

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

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

23.06.2024    11089    bayselonarrend    21    

162

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

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

13.03.2024    7699    dsdred    18    

82

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

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

24.01.2024    26178    YA_418728146    33    

73

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

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

06.10.2023    25928    SeiOkami    48    

136
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1836 26.06.18 15:25 Сейчас в теме
(0) график регистрируется и показывается по одному человеку - одного сотрудника, одного менеджера и т.д. Как совместить отображение графика работы нескольких сотрудников? По сути у каждого свой график - к примеру, график приема врачей, график развоза товаров у водителей и т.д.
Планировщик возможно не решает такого рода задачи.
2. MKFreeUser 71 26.06.18 16:49 Сейчас в теме
Смотря как решать задачу, единственное что за месяц будет не информативный планировщик, мало влазит информации. Не нашел свойств как управлять размером планировщика, он принудительно подгоняет под экран данные.
А так что Вам мешает в запросе вытянуть данные по нескольким сотрудникам и вывести их. В тексте можно фио указать, или цветом разделить, тут как душе угодно
6. RustIG 1836 29.06.18 13:52 Сейчас в теме
(2) понял вас - так и думал, что этот вопрос не решен. ...я над этой проблемой думал уже - решил по-своему - в моих публикациях есть такая , как "Сетка расписания".
3. MKFreeUser 71 26.06.18 16:51 Сейчас в теме
В планировщике есть Измерения - можно по ним разделить график, но он имеет ограничения -> нельзя перетянуть задачу/событие между измерениями.
5. leongl 550 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 Сейчас в теме
выявил проблему.
НовыйЭлемент.Картинка = БиблиотекаКартинок.Ресурс;
Картинка тут вставляется ТОЛЬКО ЕСЛИ весь текст входит в отведённую под него плашку. Если хоть чуть-чуть не влазит, то при первом открытии - не увидите это картинку. А вот как сделать минимальный размер это плашки где текст отображется...вот это вопрос
Оставьте свое сообщение