Как сделать часы в 1с 8

Обновлено: 06.07.2024

Во многих конфигурациях возникает необходимость в отображении данных в виде календаря, расписания. Задачи визуального планирования, например, часто возникают при автоматизации салонов красоты, стоматологических и ветеринарных клиник, фитнес-центров и т.д. При большом желании такие задачи можно было частично автоматизировать, используя существующие в платформе инструменты: табличный документ или диаграмму Ганта. Однако реализация подобных решений всегда была очень трудоёмкой, а их функциональность - недостаточной. К тому же они плохо переносились из одной конфигурации в другую, и не гарантировали одинаковую работоспособность в разных клиентских приложениях и разных операционных системах.

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

Архитектура

По большому счёту весь инструмент представляет собой совокупность двух новых сущностей: объекта встроенного языка Планировщик и поля формы, имеющего вид Поле планировщика. Реквизит формы типа Планировщик отображается в поле формы, благодаря чему становится возможным визуализация данных в удобном для планирования виде и их интерактивное изменение.


Планировщик не является объектом конфигурации, поэтому никакой собственной структуры для хранения данных в СУБД он не имеет. Однако с помощью встроенного языка вы можете загрузить в него данные практически любого объекта конфигурации, лишь бы этот объект обладал двумя реквизитами типа Дата. Один из них будет указывать на начало элемента на оси времени, а другой - на конец этого элемента.

После того, как пользователь изменил в форме какой-либо элемент планировщика, платформа генерирует событие ПриОкончанииРедактирования. В этом событии вы можете изменить соответствующие данные того объекта конфигурации, из которого они загружались, и сохранить их в СУБД.

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

Кроме элементов планировщик обладает ещё одной важной коллекцией - это измерения. Каждое измерение позволяет группировать элементы планировщика по отношению к каждому значению этого измерения. Например, в качестве измерения может выступать учебная группа. Тогда элементы планировщика (события) вы можете анализировать по их отношению к каждой из имеющихся у вас учебных групп: 961 группа, 962 группа и 963 группа.


Представление данных

Планировщик имеет три важных свойства, с помощью которых вы можете создавать различные представления данных. Это свойства ЕдиницаПериодическогоВарианта, КратностьПериодическогоВарианта и ПоложениеШкалыВремени. С помощью этих свойств можно создавать такие знакомые вам представления как «День», «Неделя» или «Месяц».

Проще всего понять работу этих свойств на примерах.

Например, чтобы показать один день, вы можете задать единицу - час, кратность - 24 и расположить шкалу слева:


Чтобы показать рабочую неделю вертикально, вы можете задать единицу - день, кратность - 5 и расположить шкалу слева:


Чтобы показать полную неделю горизонтально, вы можете задать единицу - день, кратность - 7 и расположить шкалу вверху:


На этом же примере удобно показать ещё одно интересное свойство планировщика - отображаемый интервал. Если задать отображаемый интервал больше, чем «кратность единиц», то есть в данном случае больше, чем 7 дней, то планировщик начнёт переносить временную шкалу. В данном случае вниз. Это позволяет показать все даты из отображаемого интервала:


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

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

Например, задав три отображаемых интервала (7 февраля, 14 февраля и 21 февраля) вы можете одновременно показать три пятницы, чтобы сравнить состав дел в эти дни и, возможно, перенести невыполненные дела на следующую пятницу:


Отображение шкалы времени и элементов

Планировщик может содержать не одну, а несколько шкал времени, каждая со своей периодичностью. Это удобно в тех случаях, когда отображаемые данные нужно идентифицировать, например, с точностью до дня и часа:


Вы можете выравнивать элементы по шкале времени, или наоборот, отображать реальный промежуток времени:


Саму шкалу времени вы можете показать полностью, либо скрыть её начало и/или конец. Это удобно, например, для отображения только рабочих часов:


Если все элементы, которые нужно отобразить, не помещаются в одну ячейку, вместо них Планировщик выводит надпись «+ Ещё» и количество элементов, которые скрыты. Нажав на эту надпись вы можете увидеть список всех скрытых элементов и открыть любой из них:


По желанию в планировщике можно включить или выключить отображение текущего времени:


Элементы планировщика могут отображать время начала и окончания, только время начала или не отображать время вообще:


Вы можете раскрасить интервалы фона чтобы, например, выделить другим цветом нерабочие часы или выходные дни:


Редактирование данных

Добавление данных в планировщик осуществляется простым щелчком мыши. При этом открывается окно быстрого редактирования элемента планировщика:


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


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

Переопределить эти формы можно в событиях ПередНачаломБыстрогоРедактирования и ПередНачаломРедактирования.

Редактирование существующих элементов вы можете выполнять как через эти формы, так и перетаскиванием элементов и изменением их границ с помощью мыши:


Планировщик поддерживает групповые операции редактирования. То есть вы можете выделить сразу несколько элементов и переместить, скопировать, изменить или удалить их:


Планировщик обеспечивает перетаскивание не только в пределах «себя самого», но и в/из других элементов формы. Эта возможность может быть полезна, например, для того, чтобы из общего списка дел, показанного в форме в виде таблицы, можно было перетащить в планировщик отдельные события.

Расписание

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


При этом можно ограничить интервал, в течение которого событие будет повторяться:


При необходимости можно изменить не только отдельное из повторяющихся событий, но и все события одновременно. Для этого в форме редактирования нужно установить флажок Применить редактирование ко всем повторам:

Необходимо на терминал вывести в заголовок "цифровые часы".

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

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

Причина была в обработчике ожидания. Решением проблемы является использование поля HTML и вывода времени в него. Демонстрация ниже.

Алгоритм вывода времени

Создаем реквизит «ВремяХТМЛ» тип строка (0). Переносим его на форму и настраиваем . Необходимо указать вид, отключить заголовок и цвет рамочки для красоты сделать схожим с цветом формы, а вертикальную полосу прокрутки уберём позже.


//infostart.ru/upload/iblock/c60/c60641c5caab5b8a59cccc4433dad40f.jpg

Реквизит и элемент формы готовы . Теперь необходим алгоритм. В интернете не сложно найти готовый javascript, останется только настроить css стили.

Определяем при старте формы вызов функции по формированию времени:

Формируем html-код страницы (уже здесь и пропишем скрытие вертикальной полосы прокрутки):

Цвет часов вынесен отдельно и мы можем привести заголовок к общему стилю.

Вот тут я конечно удивился. У псевдозаголовка установлен цвет из набора стилей (ЦветАкцента), оказывается из данного стиля вытащить палитру не так просто. Была найдена функция «ПолучитьАбсолютныйЦвет». Она оказалось не до конца рабочей. Главная причина она возвращает оттенок схожий, но не тот. К примеру цвет в стиле (0,150,70), цвет возвращаемый функцией (0,128,0). Неприятный момент.


Была найдена вторая функция - «ПолучитьRGBЦвет», у меня она тоже не взлетела, вместо зеленого возвращает голубой. Но в комментарии привлек внимание код, который тоже не заработал. Но интуитивно добавил вторую строчку. и тут просто произошел парадокс. В комментарии отмечено назначение цвета фону, я добавил ещё строчку с "ЦветТекста" и именно тексту цвет установился, убрал строчку с "ЦветФона" и цвет тексту присваивается "Авто". Фича платформы? Код функции ниже (может работать как на сервере, так и на клиенте, установите нужную директиву, в примере &НаКлиенте).


Теперь мы можем назначить цвет часам такой же как у псевдозаголовка. Для этого необходимо переписать строчку с назначением переменной "тЦвет" значения.

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

Если потребуется обратная функция, возвращаемое значение стиля по RGB-строке:

На форуме обитаю давно, но не публиковался. Предлагаю свою первую публикацию. С почином так сказать.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Вам нужно было сделать gif файл, чтобы часы были показаны в работе :) Довольно занятно.
Если что, работающие часы можно создать на CSS через transform, без JS кода вообще) Мама, я в телевизоре!
А вообще, есть мнение что автор статьи из второй ссылки взял идею из ссылки в моей статье. Я её тоже смотрел и дополнил свою обработку. Там не только попиксельное рисование, но и рисование геометрическими фигурами. Это можно увидеть из последнего скриншота в моей статье. Я ещё добавил плавный ход секундной стрелки, но не стал выкладывать. Там пара строчек кода, если есть желание. (4) Да, идеи друг друга помогают развиваться. Плавность обеспечивается за счет большего добавления точек на окружности? По крайней мере мне приходит в голову такой метод.
То есть смещается дважды, я это описал у себя. Для плавности хода секундной стрелки я делаю то же самое, только значение второй части формулы беру из ТекущаяУниверсальнаяДатаВМиллисекундах(). Я пытаюсь сделать часы на форме, на которой будет видно что идут минуты и часы.
Ошибка мешает: метод недоступен на сервере.

Просмотры 7555

Загрузки 4

Рейтинг 4

Создание 25.07.18 16:50

Обновление 25.07.18 16:50

№ Публикации 874643

Конфигурация Конфигурации 1cv8

Операционная система Не имеет значения

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Да


См. также

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула Промо

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

Распечатать

10060 (0x0000274C): Попытка установить соединение была безуспешной  18
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps  20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server  20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П COM-подключение к базе 7.7 из 8.2 1С  6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь= Посмотреть все результаты поиска похожих

Еще в этой же категории

Момент Времени и Граница, назначение, примеры использования  38
Момент времени: Фирма 1С описывает так: Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методо Преобразование даты 1С в unixtime (Unix Time Stamp)  17
Как известно, unixtime содержит количество секунд, прошедших с 1 января 1970 года. Поэтому, для преобразования даты 1С в дату unixtime нам всего то нужно от нашей даты отнять дату 01.01.1970 и перевести получившееся значения в удобоваримый формат. Функция месяц прописью  11
// пример от glory01 А = Формат(20020820153309, " ДФ=ММММ" ) // А = " Август" А = Формат(ТекущаяДата(), " ДФ=ММММ" ) // А = " Март" Функция МесяцПрописью(НомерМесяца) Экспорт НомерМесяца=Число(НомерМесяца); Если НомерМесяца = 1 Тогда Воз Как вычислить разницу между двумя датами в месяцах  11
Функция РазницаДатВМесяцах(Дата1, Дата2) Экспорт ДатаНач = ?(Дата1 Дата2, Дата1, Дата2); ДатаКон = ?(Дата1 Дата2, Дата2, Дата1); Годы = Год( датаКон ) - Год( датаНач ); Месяцы = Месяц( датаКон ) - Месяц( датаНач ); Разность = месяцы + Как вычислить разницу между двумя датами в часах и минутах  10
Функция РазностьВремени(Время1, Время2); Разность = Время1 - Время2; Если Разность 0 Тогда Часов = Цел(Разность / 3600); Минут = Цел((Разность - Часов * 3600) / 60); Возврат Дата(1, 1, 1, Часов, Минут, 0); Иначе Возврат Дата(1,1,1,0,0,0); Посмотреть все в категории Работа с Датами (Временем)

Для понимания методологии учета рабочего времени в «1С:Зарплате и управлении персоналом 8» редакции 3 напомним формулу расчета зарплаты:

Заработная плата = (Фактически отработанное время / Норма времени) х Оклад

То есть для расчета зарплаты нужно знать, какую долю времени сотрудник отработал фактически по отношению к положенной ему норме по графику работы. В зависимости от того, каким образом Положение о заработной плате организации предусматривает исчислять оклад - по дням или по часам, - время в формуле используется, соответственно, в днях и часах.

140.jpg

Норма рабочего времени

Норма времени задается графиком работы. В программе предусмотрено ведение типовых графиков на целый год и индивидуальных на один месяц.

Типовые графики настраиваются в меню Настройки - Графики работы сотрудников и устанавливаются кадровыми документами. Если ведется штатное расписание, то устанавливается соответствие позиции штатного расписания и типового графика работы. Типовой график может быть указан как группе сотрудников, так и только одному работнику. Справочник Графики работы сотрудников настраивается на год. О том, как настраивать графики, смотрите видео-ответы экспертов 1С:

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

  • норма учитывается отдельно по каждому периоду;
  • применяется суммарная норма времени.

В случае, если норма времени учитывается отдельно по каждому периоду (см. Пример 1), то для исчисления заработка в каждом из периодов времени время, фактически отработанное в указанном периоде, делится на полную месячную норму по графику этого периода.

Если норма учитывается суммарно по всем периодам (см. Пример 2), то сначала необходимо рассчитать эту суммарную норму по всем графикам по всем периодам.

В программе «1С:Зарплата и управление персоналом 8» редакции 3 для этого предназначен документ Индивидуальный график (меню Зарплата - Индивидуальные графики). Указанный документ автоматически по кнопке Заполнить собирает единый график работы сотрудника по всем периодам из фрагментов типовых графиков. Кроме того, документ Индивидуальный график можно использовать для регистрации в программе некого особенного графика сотрудника на один месяц, поскольку после автоматического заполнения этот документ можно откорректировать вручную.

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

Пример 1

Норма рабочего времени учитывается отдельно по каждому периоду. Сотрудник с окладом 30 000 руб., исчисляемым по дням, работал с 01.04.2017 по 11.04.2017 по сменному графику, предусматривающему в апреле 30 рабочих дней, а с 12.04.2017 был переведен на пятидневку.

Если норма рабочего времени учитывается отдельно по каждому периоду, то расчет зарплаты будет произведен следующим образом (см. рис. 1):

Рис. 1. Расчет зарплаты, если норма рабочего времени учитывается отдельно по каждому периоду

В период с 1 по 11 апреля сотрудник работал по графику с нормой рабочего времени 30 дней. Из них фактически он отработал 11 дней, и заработок составит 11 000 руб. (30 000 руб. х 11 дн. / 30 дн.).

В период с 12 по 30 апреля сотрудник работал по графику с нормой рабочего времени 20 дней. Из них фактически отработано 13 дней, и заработок составит 19 500 руб. (30 000 руб. х 13 дн. / 20 дн.).

Итого по условиям Примера 1 заработок за апрель составил 30 00 руб.

Пример 2

Норма рабочего времени учитывается суммарно по всем периодам. Сотрудник с окладом 30 000 руб., исчисляемым по дням, работал с 01.04.2017 по 11.04.2017 по сменному графику, предусматривающему в апреле 30 рабочих дней, а с 12.04.2017 был переведен на пятидневку.

Чтобы норма рабочего времени учитывалась суммарно по всем периодам, в программе «1С:Зарплата и управление персоналом 8» редакции 3 необходимо зарегистрировать документ Индивидуальный график (рис. 2). Период с 1 по 11 апреля автоматически заполняется по сменному графику, а начиная с 12 апреля - по пятидневке. И, таким образом, получается новый суммарный график с нормой рабочего времени 24 дня.

Рис. 2. Индивидуальный график сотрудника

В таком случае расчет зарплаты будет произведен следующим образом (см. рис. 3).

В период с 1 по 11 апреля сотрудник фактически он отработал 11 дней по графику с нормой рабочего времени 24 дня и заработок составит 13 750 руб. (30 000 руб. х 11 дн. / 24 дн.).

В период с 12 по 30 апреля сотрудник отработал 13 дней по тому же графику с нормой рабочего времени 24 дня, и заработок составит 16 250 руб. (30 000 руб. х 13 дн. / 24 дн.).

В итоге по условиям Примера 2 общий заработок сотрудника за месяц составляет 30 500 руб.

Рис. 3. Расчет зарплаты, если норма рабочего времени учитывалась суммарно по всем периодам

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

143.jpg

Фактически отработанное время

Для учета фактического использования рабочего времени в «1С:Зарплате и управлении персоналом 8» редакции 3 предусмотрено два метода:

  • регистрация отклонений фактических выходов на работу от плановых по графику;
  • сплошная регистрация явок на работу и других событий.

В общем случае рекомендуется использовать первый метод. При этом отклонения от графика могут как увеличивать отработанное время (например, сверхурочные, работа в выходные дни и праздники), так и уменьшать, если у сотрудника были неявки - невыходы на работу (например, болезни, отпуска, прогулы и т. д.). Отклонения регистрируются в программе соответствующими документами.

Работа в выходные, праздники и сверхурочно регистрируется, соответственно, документами Работа в выходные и праздники, Работа сверхурочно. Отсутствия сотрудника в течение месяца также регистрируются документами-отклонениями (Больничный лист, Отпуск, Прогул, неявка и т. п.).

В отдельных случаях, например, при необходимости корректировки отработанных часов при почасовой оплате или при работе сотрудника по нескольким видам основного времени, отклонение регистрируется документами Данные для расчета зарплаты. Оплата отклонений формируется на основании зарегистрировавших их документов-отклонений.

Пример 3

В отчете Табель учета рабочего времени Т-13 нетрудоспособность в период с 17 по 19 апреля отражена буквами Б (см. рис. 4), а зарплата исчислена следующим образом (см. рис. 5):

В период с 1 по 11 апреля сотрудник отработал все дни в соответствии с графиком. За этот период заработок по сравнению с Примером 2 не изменился и составил 13 750 руб.

Во втором периоде отработано на три дня меньше нормы (10 из 13-ти дней), и заработок составил 15 000 руб. (30 000 руб. х 10 дн / 24 дн.).

Итого по условиям Примера 3 заработок за апрель составил 26 000 руб.

Рис. 4. Отчет «Табель учета рабочего времени Т-13»

Рис. 5. Расчет зарплаты при неполном отработанном месяце

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

Важно соблюдать последовательность действий при «сплошной регистрации»:

  • все отсутствия сотрудника в течение месяца регистрируются соответствующими документами-отклонениями (Отпуск, Командировка, Больничный лист, Прогул, неявка и т. п.);
  • работа в выходные, праздники, а также работа сверхурочно регистрируется документами Работа в выходные и праздники, Работа сверхурочно;
  • регистрируются специальные случаи (корректировка отработанных часов при почасовой оплате, при работе сотрудника по нескольким видам основного времени и т. п.) документами Данные для расчета зарплаты;
  • вводится документ Табель, который формируется автоматически, на основании графика работы и документов-отклонений и может быть откорректирован;
  • производится начисление заработной платы.

Использовать документ Табель для корректировки времени по каким-либо неявкам нельзя, так как Табель имеет приоритет перед другими документами учета отработанного времени. Если документ Табель проведен, и затем вносятся изменения в данные для расчета зарплаты, то необходимо внести эти изменения и в Табель. Иначе зарплата может рассчитаться по неверным данным.

Документ Табель позволяет корректировать отработанное время и вводить виды времени, не предусмотренные в графике работы. В Табеле используются буквенные обозначения из справочника видов времени, и указывается соответствующее количество часов (Я 8, Н 6, С 2 и т. п.). Если необходимо указать несколько видов времени (явка, ночные, вечерние часы), то каждый вид указывается на отдельной строке. Количество таких строк определяется в поле Максимальное количество видов времени на одну дату (рис. 6).

Рис. 6. Документ «Табель»

При попытке зарегистрировать с помощью документа Табель явку в выходной по графику сотрудника (или наоборот), программа выдает соответствующее предупреждение. Эта проверка включается флагом Проверять соответствие фактического времени плановому в меню Настройки - Расчет зарплаты. Для обеспечения возможности корректировки Табеля относительно графика следует отключить этот флаг.

Обратите внимание: прежде, чем принять решение об использовании метода «сплошной регистрации», следует убедиться, что задачу действительно нельзя решить рекомендованным методом «регистрации отклонений».

Читайте также: