Работа с планировщиком в 8.3.6


Активно читаю "Заметки из зазеркалья". Большинству заметок я очень рад, и очень жду их реализации. Одно из них — это "Планировщик".
Собственно, статья будет посвящена этому новому, и как по мне, удобному механизму.
Так как в процессе изучения было выявлено несколько нюансов заполнения, решил написать статью с кодом заполнения.

Первым делом ссылки на ресурсы:
— Заметки из зазеркалья (http://v8.1c.ru/o7/index.htm) 
Планировщик (http://v8.1c.ru/o7/20140401plan/index.htm 

Результат заполнения планировщика выглядит так:

В строках видим время работы магазинов (с 9 до 18).
По колонкам: группы Магазинов и Продавцов. 

Основная форма планировщика

Основные свойства планировщика для его программного заполнения:
— ТекущиеПериодыОтображения (тут можно указать рабочее время магазинов)
— Измерения (группировки: Магазин, Продавец)
— Элементы (сами заметки по измерениям)

Во вложенной dt только необходимый набор объектов (пару справочников, констант, общих модулей и регистр сведений), который потребуется для настройки простейшего планировщика. Естественно, фантазия 1С-ника велика, и на реализацию дополнительного функционала нужно больше времени. К примеру, вот эта подсистема: //infostart.ru/public/333366/

 

Еще раз повторюсь, что тут описаны только азы.

Итак. Приступим.

ТекущиеПериодыОтображения заполняются так (тут всё просто, поэтому описывать комментариями думаю не нужно Wink):

Планировщик.ТекущиеПериодыОтображения.Очистить();
Планировщик.ТекущиеПериодыОтображения.Добавить(ПериодОтображенияНачало, ПериодОтображенияКонец);

Измерения можно заполнить таким образом:

    // Инициализируем измерения планировщика
   
ИзмеренияПланировщика   = Планировщик.Измерения;
   
ИзмеренияПланировщика.Очистить();

    #Область Заполнение_магазинов
   
// Создание группы Магазины
   
ИзмерениеМагазины       = ИзмеренияПланировщика.Добавить(«Магазины»);
    Пока
ВыборкаМагазинов.Следующий() Цикл

        // Добавление магазинов в группу Магазины
       
НовыйМагазин = ИзмерениеМагазины.Элементы.Добавить(ВыборкаМагазинов.Магазин);
       
НовыйМагазин.Текст = ВыборкаМагазинов.Магазин.Наименование;

    КонецЦикла;
    #КонецОбласти

    #Область Заполнение_продавцов
    // Создание измерения Продацы
   
ИзмерениеПродавцы       = ИзмеренияПланировщика.Добавить(«Продавцы»);
    Пока
ВыборкаПродавцов.Следующий() Цикл

        // Заполнение измерений продавцы
       
НовыйПродавец = ИзмерениеПродавцы.Элементы.Добавить(ВыборкаПродавцов.Продавец);
       
НовыйПродавец.Текст = ВыборкаПродавцов.Продавец.Наименование;

    КонецЦикла;
    #КонецОбласти

А вот так добавляем Элементы (записи в планировщике):

    // Инициализация элементов планировщика (записи по измерениям)
   
ЭлементыПланировщика = Планировщик.Элементы;
   
ЭлементыПланировщика.Очистить();

    Пока РезультатПланы.Следующий() Цикл

        // Связка записей с измерениями выполняется через соответствия
       
СоответствиеЗначений = Новый Соответствие;
       
СоответствиеЗначений.Вставить(«Магазины»,   РезультатПланы.Магазин);
       
СоответствиеЗначений.Вставить(«Продавцы»,   РезультатПланы.Продавец);

        РазницаВремениНачало    = РезультатПланы.ВремяС     НачалоДня(РезультатПланы.ВремяС);
       
РазницаВремениКонец     = РезультатПланы.ВремяПо    НачалоДня(РезультатПланы.ВремяПо);

        Начало  = НачалоДаты + РазницаВремениНачало;
       
Конец   = НачалоДаты + РазницаВремениКонец;

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

    КонецЦикла;

После того мы разобрались с заполнением, можно показать итоговый вид с заполненным регистром сведений Дни работы (в котором регистрируем рабочее время сотрудников)

Начальная страница с планировщиком

 

Темы форума где обсуждался планировщик и решались реальные задачи:

http://forum.infostart.ru/forum86/topic134559/

 


83 Comments

  1. vandalsvq

    О… спасибо за изучение темы )))). Я пока еще реализовывать для 8.3.6 не начал, хочется текущий функционал полностью допилить. А интерфейс можно заменить позже, я не вижу пока грядущих проблем.

    Скажи в драг-энд-дроп на поле планировщика 1С поддерживает? А то у меня это один из недостатков )))))

    Reply
  2. WalterMort

    Инструмент замечательный и малополезный.

    Reply
  3. dj_serega

    (1) vandalsvq, Поддерживает.

    Спасибо за идею. Я подумаю что еще в статью дописать.

    (2) WalterMort, Ну на каждый механизм есть свой купец 🙂

    Идей можно напридумывать.

    Вот первые 3 которые на ум пришли.

    1. График работ продавцов по магазинам.

    2. Отобразить график водителей по маршрутам.

    3. Так же по дням недели можно расписать посещения магазинов торговых менеджеров.

    Reply
  4. vandalsvq

    (2) WalterMort, на вскидку:

    1. Заменить календарь который есть сейчас во всех типовых конфигурациях БП 3, Документооборот. Не говоря уже о подделках от рарус

    2. Наконец есть развитие подсистемы задачи. Сами по себе задачи не создают план на неделю, планировщик — запросто

    3. Избавиться от диаграммы Ганта в тех случаях когда нет нужды ставить связь между задачами

    Это из общего. А частностей могу еще насыпать вагончик ))))

    Reply
  5. Nio

    Спасибо за изучение. Жду с нетерпением.

    Мой вариант это планирование загрузки мастеров приемщиков и постов в рем. зоне.

    Reply
  6. spetzpozh

    В БСП еще не добавили, не в курсе?

    Reply
  7. AllexSoft

    Эх! в свое время парился с диаграммой ганта, нужно было выводить графики заселения (даже пришлось сделать 2 обработки с гантом и на табличном документе).. в одной конфе видел что разрабы плюнули на нее и сдали свой ActiveX элемент специально под эти цели. Наконец-то и 1С сделало нам штатный нормальный контролл. За статью спасибо, плюс!

    Reply
  8. dj_serega

    (6) spetzpozh, Да вряд ли. Релиза 8.3.6 еще нет.

    Reply
  9. k_vasil

    Спасибо, будем юзать ))

    Reply
  10. caponid

    Спс, у меня до него руки еще не дошли — плотно засел за расширение — все таки оказался не такой бесполезный механизм, можно много интересного сделать.

    в копилку.. на потом полюбопытствовать…

    Reply
  11. dj_serega

    (10) caponid,

    плотно засел за расширение — все таки оказался не такой бесполезный механизм, можно много интересного сделать

    А напишите статейку по ним. Я за них как раз и не садился еще 🙂

    Reply
  12. serg_gres

    На какой версии 1С пробовали?

    У меня шкала времени узкая совсем, не видно какой час…

    Reply
  13. dj_serega

    (12) serg_gres,

    На какой версии 1С пробовали?

    Тестировал планировщик на 8.3.6.1760.

    У меня шкала времени узкая совсем, не видно какой час…

    На основной панели или в шкале времени?

    Reply
  14. friend0

    Вещь вроде полезная… но только для небольших личных дел с почасовым планированием. Пытался использовать как замену д. Ганта для проектов с планированием по дням, и так крутил и эдак — получается все равно коряво.

    Reply
  15. talych

    Не проще ли использовать Microsoft Outlook? Сам пользуюсь уже давно этим инструментом. Все, что нужно в нем уже есть. Календарь, задачи, письма, общие папки, разделение папок по пользователям(настройка прав) и много всего другого. Для работы в онлайн есть OWA. А если и этого всего будет недостаточно, то есть user forms+VB Script В них уже можно сделать все, чего не хватает.

    Reply
  16. cleaner_it

    (15) «Проще» очень сильно не равно «Лучше»)

    Reply
  17. friend0

    (15) talych, Outlook стоит дополнительных денег и некоторые компании придерживаются политики легального (по возможности бесплатного) софта. А ежели задачи привязываются к неким процессам в 1С, то ИМХО в 1С их и проще оставлять, а не гонять туда-сюда.

    Reply
  18. dj_serega

    (14) friend0, А какая структура необходима?

    Если я правильно уловил то:

    Измерения: Проект, Сотрудник

    Периодичность: День

    Reply
  19. friend0

    (18) «как должно быть» я честно говоря виду с трудом. Но есть как бы две отдельные задачи:

    1. Внутри одного проекта показать когда какие этапы будут начинаться/заканчиваться

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

    Самая главный фича(недостаток) планировщика — все показывается на экране и не надо (невозможно) скролить одновременно по вертикали и горизонтали.

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

    С первой проще, но все равно выглядит корявенько. По сотрудникам бить смысла особо нет. Можно бить по 2-3 веткам, но на большом экране получается слишком фрагментированно.

    После различных манипуляций оптимальным показался вариант вообще без измерений.

    Но все равно остается вопрос с масштабом: во-первых с периодами отображения, во-вторых с размером окна (или элемента формы) пользователя. От этого тоже наглядость сильно гуляет.

    Reply
  20. dj_serega

    (19) friend0, Я Вас понял. Попробую поковырять на досуге. Две головы то лучше 🙂

    Reply
  21. friend0

    (20) ну так-то оно не особо и надо. Просто воодушевился зазеркальем, а как до практики дошло — приуныл.

    Ну и опять же реальные проекты сами по себе имеют разные масштабы. И этапы в них — один на полгода и кучка на 1-2 дня.

    Reply
  22. dj_serega

    (21) friend0, А вдруг получится выкрутить 🙂 Сам планирую некоторые объекты перевести (в будущем) на планировщик. Уже вижу что не всё получится. Но некоторые даже сейчас.

    Reply
  23. serg_gres

    (13)

    На оси времени.

    Reply
  24. revned

    отпишусь чтобы не потерять.. попробую применить..

    Reply
  25. InShallaH

    Не получается вывести несколько дней на одной форме. Ставлю периодичность день, кратность 5 но вижу только один день и временную шкалу. Что делаю не так?

    Reply
  26. Emiliya_Emili

    как правильно загрузить файл с в конфигурацию?

    Reply
  27. dj_serega

    (26) Emiliya_Emili, это dt. Нужно создать новую (пустую) базу. Потом в конфигураторе «Администрирование — Загрузить информационную базу». Выбрать скачанный файл и нажать «открыть».

    Reply
  28. Emiliya_Emili

    (27) я это пробовала но у программа не видит этот файл, можно загрузить только файлы формата .cf

    также пробовала чет простое открытие

    Reply
  29. Emiliya_Emili

    (27) удалила систему и заново поставила, странно но все заработало

    Reply
  30. dj_serega

    (25) InShallaH, еще актуально?

    Reply
  31. hakerxp

    1С как всегда — вроде и нормально, но все равно не хватает функционала.

    Проблема номер раз — нет возможности выстраивать иерархию измерений и это основной минус данного планировщика в данный момент (8.3.6.1999)

    Можно добавлять измерения, в них элементы, но они не связаны.

    Например, есть автоцентры, в них — менеджеры. Так вот планировщик не даст вам выстроить подчинение автоцентр-менеджер — он будет брать всех менеджеров и «пихать» во все автоцентры. И еще не допускает неуникальность элементов измерений. Следовательно, если менеджер имеет события в нескольких автоцентрах, то планировщик отобразит его в первом автоцентре и на остальные ругнется.

    В данном примере такая же проблема, если присмотреться к скринам.

    Reply
  32. dj_serega

    (31) hakerxp,

    нет возможности выстраивать иерархию измерений и это основной минус

    Согласен на 100%. Надеюсь этот функционал будет реализован в будущем.

    Можно добавлять измерения, в них элементы, но они не связаны.



    В данном примере такая же проблема, если присмотреться к скринам.

    Аналогично.

    Элементарные вещи не смогли реализовать. То ли это бетку решили выпустить, то ли «забыли» сделать этот необходимый функционал. Ну или не предназначено.

    Я выкручивался созданием групп и выделял их цветом. Немного не так как на скринах.

    Reply
  33. hakerxp

    Надо 1С спросить об этой проблеме.

    Reply
  34. TINa78

    Вопрос: интересно, а для отчета типа «план-факт» с привязкой ко времени этот механизм подойдет?

    Reply
  35. dj_serega

    (34) TINa78, В принципе можно «запилить». Даже и ничего-так будет выглядеть. Но в этом вопросе лучше диаграммы не будет ничего, имхо.

    Reply
  36. Nicholas

    Поймал интересный баг и не пойму в какую сторону копать.

    Платформа 8.3.6.2100, установлена на сервере. База файловая. Все работают через RDP. У некоторых пользователей планировщик работает прекрасно, а у некоторых не работает вообще (на форме отображается пустой прямоугольник и на клики мышью не реагирует).

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

    Reply
  37. dj_serega

    (36) Nicholas, А если создать внешнюю обработку, там добавить реквизит с планировщиком, заполнить его и попытаться открыть, аналогично?

    Reply
  38. AlexeyPapanov

    спасибо за публикацию! в качестве примера очень здорово подошло.

    Reply
  39. smwed

    Добрый день!

    Кто-нибудь знает, можно ли с помощью планировщика сделать график подобный как на рисунке?

    Сейчас он делается в табличном поле.

    Reply
  40. dj_serega

    (39) smwed, хм… поковыряться нужно. Если еще актуально, свяжитесь со мной в ЛС.

    Reply
  41. v.l.

    Кто придумал, как вывести месяц в виде календаря?

    Например, в 7 столбиков и 5 строк.

    Я не смог. Кто смог, поделитесь, пожалуйста.

    Reply
  42. dj_serega

    (41) Vladal, Так?

    Reply
  43. v.l.

    Да. Форма такая.

    Я сделал как во вложении, но сначала не смог победить отображение часов сверху «План задач Месяц.PNG»,

    а теперь не могу победить периоды слева — файл «План задач Месяц по датам.PNG»

    Выделил желтым шкалу, которую хочу убрать.

    Я бы это отредактировал свойством элемента формы, как нарисовано на картинке выше в этом обсуждении, но этот способ не подходит, потому что вывожу несколько различных интервалов (день, неделя, месяц) по кнопке.

    Reply
  44. dj_serega

    (43) Vladal, Так подойдет?

    Reply
  45. v.l.

    (44) увы, нет. Я программно эти шкалы перезаполняю при нажатьии кнопки «день», «неделя» или «месяц».

    Еще покумекаю…

    Заборол!

    Получилось установкой свойства

    Планировщик.ОтображатьПеренесенныеЗаголовки = Истина;

    для День м Неделя, и

    Планировщик.ОтображатьПеренесенныеЗаголовки = Ложь;

    для Месяца.

    Reply
  46. Nicholas

    (37) по всякому пробовали. Замечено, что проблема только на серверах 2012. На 2008 все нормально. Проблема явно с какими-то правами, т.к. под администратором работает, но понять с какими именно не получается.

    Иногда помогает добавление about:security_1cv8.exe в исключительные узлы Интернет Эксплоэра, но крайне редко.

    Reply
  47. alex-1c

    Подскажите, как можно вывести на печать планировщик.?

    Reply
  48. alex-1c

    (47) alex-1c, сам разобрался. Нужно было просто в настройка предварительного просмотра поставить флажок просмотра рисунков

    Reply
  49. horhe_x3

    Есть у кого рабочий код, как отобразить месяц и неделю как в google календаре? Не могу разобраться.

    ПериодОтображенияНачало = НачалоНедели(ТекущаяДата());
    ПериодОтображенияКонец = КонецНедели(ТекущаяДата());
    
    Объект.План.ТекущиеПериодыОтображения.Очистить();
    Объект.План.ТекущиеПериодыОтображения.Добавить(ПериодОтображенияНачало, ПериодОтображенияКонец);
    Объект.План.ШкалаВремени.Положение = ПоложениеШкалыВремени.Верх;
    Объект.План.ЕдиницаПериодическогоВарианта = ТипЕдиницыШкалыВремени.День;
    Объект.План.ОтображатьПеренесенныеЗаголовки = Истина;
    Объект.План.КратностьПериодическогоВарианта = 7;

    Показать

    У меня ерунда получается (

    Reply
  50. dj_serega

    (49) А как в гугл календаре?

    Reply
  51. horhe_x3

    (50) Неделю сделал, а вот месяц нужен вроде этого

    Reply
  52. AlexeyPapanov

    Коллеги, а подскажите, как переопределить событие редактирования задачи планировщика?

    К примеру, у нас есть документы «Задача», которые отображаются в планировщике. Когда мы кликаем по задаче, мы хотим, чтобы открылась форма нашего уже записанного ранее документа, чтобы мы могли его отредактировать.

    Я прочел, что это делается через событие планировщика ПередНачаломБыстрогоРедактирования.

    В нем надо установить СтандартнаяОбработка=Ложь.

    А как получить ссылку и открыть форму требуемого документа?

    Reply
  53. user760974

    А как сохранять данные в планировщике после выхода из него, или печать этих данных?

    Reply
  54. revned

    (52) У элемента Планировщик есть свойство Выделенные элементы, у которого есть свойство Значение измерений.

    Если при заполнении в ЗначенияИзмерений элемента помещаете ссылку, то при активации (одинарный клик) или при выборе элемента (двойной клик) планировщика можно по этим данным открыть форму нужного документа.

    Проблема с этим у меня возникла при добавлении (перетаскивании) на планировщик новых элементов. Решил через поиск по номеру документа.

    У меня реализовано просто заполнение данных при активации строки.

    Вопрос — как увеличить высоту элементов?

    Reply
  55. revned

    (53) Печать — в меню есть предварительный просмотр. Или через файл — печать. Планировщик сделан веб страницей, поэтому просмотр через соответствующее приложение.

    Сохранить данные после выхода — где-то в базе, например, в регистре сведений дополнительном. Или нужно смотреть откуда в планировщик попадают данные — и при изменении элементов планировщика перезаписывать в том месте, откуда берутся данные.

    Reply
  56. Artjomrgv

    (55)

    Алексей а можете привести пример, с сохранением в регистре сведений.

    Reply
  57. revned

    (56) У меня самописная часть конфы, где это записывается. Там свой регистр. На его основании строится планировщик. Запись пока еще я не реализовал в нем, т. к. пока нет необходимости (пользователи не захотели так работать, хотят по старому)) )

    Reply
  58. revned

    Вот немного набросал, только там еще проверки нужны.

    &НаКлиенте
    Процедура ПланировщикПриОкончанииРедактирования(Элемент, НовыйЭлемент, ОтменаРедактирования)
    
    Если ОтменаРедактирования Тогда
    Возврат;
    КонецЕсли;
    Если НовыйЭлемент Тогда
    Возврат;
    КонецЕсли;
    Если Элемент.ВыделенныеЭлементы.Количество() <> 1 Тогда
    Возврат;
    КонецЕсли;
    СоответствиеИзмерений = Элемент.ВыделенныеЭлементы[0].ЗначенияИзмерений;
    ЗаписываемыйНаряд = СоответствиеИзмерений[«Наряд»];
    Начало    = Элемент.ВыделенныеЭлементы[0].Начало;
    Конец    = Элемент.ВыделенныеЭлементы[0].Конец;
    ЗапистьНарядНаСервере(ЗаписываемыйНаряд, Начало, Конец);
    
    КонецПроцедуры
    
    &НаСервере
    Процедура ЗапистьНарядНаСервере(ЗаписываемыйНаряд, Начало, Конец)
    
    ЗаписьВРегистр = РегистрыСведений.ПланПечати.СоздатьМенеджерЗаписи();
    ЗаписьВРегистр.Наряд   = Наряд;
    ЗаписьВРегистр.Прочитать();
    ЗаписьВРегистр.НачалоПечати  = Начало;
    ЗаписьВРегистр.ОкончаниеПечати = Конец;
    ЗаписьВРегистр.Записать(Истина);
    
    КонецПроцедуры

    Показать

    Срабатывает, когда перетаскиваем элемент планировщика по времени. Потом записывается в регистр с новым временем.

    Reply
  59. AlexeyPapanov

    (54) (54) У меня планировщик выводит расписание записей к врачам.

    т.е. у меня одно измерение планировщика — Врачи.

    как же я в измерения запихну ссылку?

    получается, что в моем случае никак?

    Reply
  60. Dream_kz

    (59) Там помимо измерений, есть реквизит Значение произвольного типа, вот туда можно что угодно пихать

    Reply
  61. AlexeyPapanov

    (60) Спасибо! а то у меня уже бредовые мысли пошли писать номер документа в подсказку элемента планировщика, а потом искать… О_о

    Reply
  62. Dream_kz

    (61) На самом деле почитайте в СП про объект Планировщик, и расширение формы ПолеПланировщика, там много чего интересно написано

    Reply
  63. AlexeyPapanov

    (62) Да, тема интересная и очень востребованная большим числом пользователей.

    для остальных кусочек кода, которым я открываю документ:

    &НаКлиенте
    Процедура ПланировщикПередНачаломБыстрогоРедактирования(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка=ложь;
    
    ОткрытьЗначение(Элемент.ВыделенныеЭлементы[0].значение); // в поле «значение» мы заранее пишем ссылку на документ
    
    КонецПроцедуры
    

    Показать

    Reply
  64. AlexeyPapanov

    Коллеги, реально ли как-то задать интервал фона не для всех элементов измерений, а только нужным?

    рисунок прикреплю для наглядности.

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

    ну типа задали график работы врачу и показываем цветом в какое время он может принять.

    есть такой код:

    Планировщик.ИнтервалыФона.Очистить();
    Пока пТекущийПериод < ПланировщикПериодПо  + 24*3600 Цикл
    ИнтервалФона = Планировщик.ИнтервалыФона.Добавить(
    НачалоДня(пТекущийПериод) + (Час(НачалоРабочегоДня) * 3600) + (Минута(НачалоРабочегоДня) * 60),
    НачалоДня(пТекущийПериод) + (Час(НачалоРабочегоДня) * 3600) + (Минута(НачалоРабочегоДня) * 60) + КоличествоРабочихЧасовВДне * 3600-1) ;
    ИнтервалФона.Цвет = новый Цвет(225, 255, 225);
    
    КонецЕсли;
    пТекущийПериод = пТекущийПериод + 24*3600;
    КонецЦикла;

    Показать

    но так окрашиваются все измерения за день. а я хочу отдельным врачам подсвечивать свои интервалы.

    Reply
  65. Dream_kz

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

    Костыль конечно, но можно на время в которое не работает врач создавать служебный элемент, со своим цветом, и запрещать его редактировать, в целом будет видно что там нельзя добавить новый прием.

    Однако, если получится ваша затея, буду рад если поделитесь решением.

    Reply
  66. revned

    (59) Ну и что, что одно измерение. Все можно сделать и для одного.

    Для Каждого ВыборкаНарядов Из ТабНарядов Цикл
    СоответствиеЗначений = Новый Соответствие;
    СоответствиеЗначений.Вставить(«Статус», ВыборкаНарядов.Статус); // — это перечисление
    СоответствиеЗначений.Вставить(«Наряд», ВыборкаНарядов.Наряд); // — это ссылка на документ
    
    
    НовыйЭлемент = ЭлементыПланировщика.Добавить(ВыборкаНарядов.НачалоПечати, ВыборкаНарядов.ОкончаниеПечати);
    НовыйЭлемент.ЗначенияИзмерений  = Новый ФиксированноеСоответствие(СоответствиеЗначений);
    НовыйЭлемент.Текст              = ПечатникъНожи.УдалитьЛидирующиеНули(ВыборкаНарядов.Номер);
    НовыйЭлемент.ЦветФона   = ВыбратьЦветФона(ВыборкаНарядов.Статус); // — во тут устанавливаю цвет фона элемента в завасимости от «статуса»
    НовыйЭлемент.Подсказка   = НовыйЭлемент.Текст;
    КонецЦикла;

    Показать

    (64) Не совсем понял. Нужно как в (54) ? один элемент одного цвета, другой — другого? Так можно. Я при заполнении делал.

    Хотя Вы про цвет фона планировщика… вот тут не знаю.

    Reply
  67. AlexeyPapanov

    (66) я же описал, что надо и код привел. хочу через свойство планировщика ИнтервалФона окрасить определенный временной промежуток, но не для всех измерений, а для заданных.

    Reply
  68. user862878

    (65)У меня так получилось.

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

    Из этой таблицы раскрасить фоны планировщика.

    Планировщик.ИнтервалыФона.Очистить();
    Для Каждого Эл из ДоступныеПериоды цикл
    
    Начало = Дата(«»+Формат(Эл.День,»ДФ=ггггММдд»)+Формат(Эл.ВремяНачала,»ДФ=ЧЧммсс»));
    Конец = Дата(«»+Формат(Эл.День,»ДФ=ггггММдд»)+Формат(Эл.ВремяОкончания,»ДФ=ЧЧммсс»));
    
    НИ = Планировщик.ИнтервалыФона.Добавить(Начало,Конец);
    НИ.Цвет = Новый Цвет(255, 255, 255);
    
    КонецЦикла;
    

    Показать

    А потом проверять нужное время на доступность в ТЗ при клике по планировщику.

    Функция ДоступноДляЗаписи(Начало, Конец)
    
    Результат = Ложь;
    
    Отбор =Новый Структура(«День»,НачалоДня(Начало));
    Поиск_ = ДоступныеПериоды.НайтиСтроки(Отбор);
    Если Поиск_.Количество() > 0 тогда
    
    Для Каждого Эл из Поиск_ цикл
    
    НачалоДоступного = Дата(«»+Формат(Эл.День,»ДФ=ггггММдд»)+Формат(Эл.ВремяНачала,»ДФ=ЧЧммсс»));
    КонецДоступного = Дата(«»+Формат(Эл.День,»ДФ=ггггММдд»)+Формат(Эл.ВремяОкончания,»ДФ=ЧЧммсс»));
    Если _ОбщиеМеханизмы.ПересечениеПериодов(Начало,Конец,НачалоДоступного,КонецДоступного) тогда
    Результат = Истина;
    КонецЕсли;
    
    КонецЦикла;
    КонецЕсли;
    
    Возврат Результат;
    
    КонецФункции
    

    Показать

    Функция ПересечениеПериодов(Начало1,Конец1,Начало2,Конец2) Экспорт
    Если Макс(Начало1,Начало2) < Мин(Конец1,Конец2) Тогда
    Прересекаются = Истина;
    Иначе
    Прересекаются = Ложь;
    КонецЕсли;
    Возврат Прересекаются;
    КонецФункции // ПересечениеПериодов()
    

    Показать

    Reply
  69. JedBez

    Подскажите пожалуйста минимальную высоту элемента.

    Заполняю элементами по 5 минут, а отображается по 8. Не понятно.

    Начало = Дата(«»+Формат(Период_.День,»ДФ=ггггММдд»)+Формат(Период_.ВремяНачала,»ДФ=ЧЧммсс»));
    Для i = 0 по 59 цикл
    НачалоЭленмента = Начало+i*5*60;
    КонецЭлемента = НачалоЭленмента+5*60;
    НЭл = Планировщик.Элементы.Добавить(НачалоЭленмента,КонецЭлемента);
    НЭл.Текст = «»+i +» — «+НачалоЭленмента+» : «+КонецЭлемента;
    НЭл.ЦветФона = Новый Цвет(255, 255, 255);
    КонецЦикла;
    

    Показать

    Reply
  70. user933943

    Добрый день! Подскажите пожалуйста, каким образом можно за определенным промежутком времени, а именно с 12 -13 , закрепить текст элемента » Обед». Можно ли это как то написать в программном коде?

    Reply
  71. baracuda

    (51) тоже остановился на том, что не смог сделать месяц как в гугл календарь…

    Может кто подскажет, возможно ли, и если да то как?

    Reply
  72. suepifanov

    (65) столкнулся с такой задачей, решается так

    ИнтервалФона = Планировщик.ИнтервалыФона.Добавить(ДатаФонаС,ДатаФонаПо);
    ИнтервалФона.Цвет = новый Цвет(225, 255, 225);
    
    СоответсвиеИзмерения = Новый Соответствие;
    СоответсвиеИзмерения.Вставить(ИзмерениеПланировщика.Значение,ЭлементИзмерения.Значение);
    ИнтервалФона.ЗначенияИзмерений = Новый ФиксированноеСоответствие(СоответсвиеИзмерения);
    
    Reply
  73. newbie_1c

    Здравствуйте, подскажите пожалуйста, как сделать полосы прокрутки у планировщика

    Reply
  74. user1096761

    Здравствуйте! А как получить значение добавленных измерений при вызове ПередНачаломБыстрогоРедактирования? На стандартной форме есть (переговорная), но не понимаю, откуда и как вытащить, чтобы передать своей форме редактирования НОВОГО элемента?

    Reply
  75. Aleskey_K

    (74) я свою форму нарисовал, с разными реквизитами.

    Reply
  76. pbahushevich

    (1) может кому-то будет полезно.

    Драг энд-энд-дроп поддерживает, но только для элементов планировщика.

    Т.е. если вы захотите например взять элемент из таблицы (задачу из списка) и перекинуть на планировщик — он просто так это вам сделать не даст.

    Но, если в процедуре ПроверкаПеретаскивания для планировщика СтандартнаяОбработка установить в ложь, а ПриОкончанииПеретаскивания или Перетаксивание — обработать получение нового элемента — то можно вполне себе подружить таблицу или дерево.

    Reply
  77. JohnGalt

    (54) АРМ печатника сами делали или это конфигурация есть?

    Reply
  78. AllexSoft

    (51) сделал в итоге? то же не могу сделать, не понимаю как его нужно настроить, уже все варианты перебрал

    Reply
  79. smwed

    (79)

    Нет. В таком виде как на моей картинке в планировщике невозможно сделать, т.к надо в одной шкале совместить измерение и шкалу времени.

    Reply
  80. AllexSoft

    (80) странно, я сделал. Нашел тут обработку где такой пример был.

    Вот тут https://infostart.ru/public/853571/

    Третья картинка.

    Reply
  81. smwed

    (81) Посмотрел. Даже не близко к тому, что я спрашивал здесь.

    У меня на картинке строки — это измерение Сотрудник и внутри каждого шкала времени «Часы», а по столбцам — шкала времени «Дни». Скроллится всё по горизонтали — влево даты раньше, вправо — даты позже.

    Как я ни крутил, но такого же результата от планировщика добиться не смог.

    Максимально близкое, что я получил это

    столбцы — Дни, а в внутри каждого дня Сотрудники

    строки: Шкала времени «Часы»

    Такой результат не устраивает и пока пользуемся старым вариантом.

    Reply
  82. revned

    (78) Сам делал, УНФ доработанная.

    Reply
  83. JohnGalt

    (83) Дорабатываю BAS ERP для типографии. Интересно бы посмотреть этот АРМ, могу купить или взамен что-то предложить…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *