Работа с планировщиком в 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 не будет опубликован. Обязательные поля помечены *