Календарь в 1С 8.3: от выбора даты до своего планировщика
Содержание
Чтобы добавить календарь в 1С, сначала решите, какой именно нужен. Для выбора дат календарь уже встроен в платформу: кнопка рядом с любым полем даты и пункт Сервис → Календарь в главном меню. Для расчёта зарплаты и норм времени нужен производственный календарь
и графики работы, их заполняют в справочниках. Календарь событий или виджет на рабочем столе добавляют внешней обработкой или доработкой формы через расширение.
Синхронизации с Google Календарём и Outlook в типовых конфигурациях нет. Её делают обработкой: выгрузкой событий в файл .ics или обменом через API. Ниже все четыре варианта по порядку, от простого к сложному.
Какой календарь вам нужен: четыре сценария
Под словом «календарь» в 1С скрываются разные вещи. Определите свою задачу, и половина работы отпадёт.
| Задача | Что использовать | Нужен программист? |
|---|---|---|
| 📅 Выбрать дату в документе, посмотреть день недели | Встроенный календарь платформы | Нет |
| 🧮 Посчитать рабочие дни, норму часов, отпуск | Производственный календарь и графики работы | Нет |
| 🗂 Видеть события, сроки, встречи в 1С | Внешняя обработка или расширение с планировщиком | Для установки готовой — нет |
| 🔄 Видеть события 1С в Google или Outlook | Выгрузка .ics или обмен через API | Да |
Встроенный календарь платформы: что есть без доработок
Платформа 1С:Предприятие 8.3 показывает календарь в двух местах. Ставить ничего не надо.
1. У поля даты. В любом документе, журнале или отчёте рядом с датой есть кнопка выбора. Нажмите её, и откроется календарь на месяц. Листайте месяцы стрелками, двойной щелчок по дню подставит дату.
2. Отдельным окном. Откройте главное меню (кнопка с тремя полосками в левом верхнем углу), затем Сервис → Календарь. Окно висит поверх программы и не мешает работе. Удобно, когда нужно быстро посчитать, на какой день недели выпадает срок.
💡 Полезные приёмы при вводе дат:
- ⌨️ Дату можно набрать без точек:
071026превратится в 07.10.2026. - 📌 Сегодняшний день в календаре выделен, по нему легко сориентироваться, если пролистали далеко назад.
- 📆 В отчётах кнопка с многоточием у периода открывает выбор стандартного интервала: месяц, квартал, год.
Если кнопки календаря у поля нет, это поле не типа «Дата», а строка или число. Так бывает в самописных доработках. Чинить нужно в конфигурации, а не в настройках пользователя.
Производственный календарь и графики работы: как добавить и заполнить
Производственный календарь хранит рабочие, выходные, праздничные и предпраздничные дни. От него зависят нормы времени, расчёт отпускных, больничных, табель. Графики работы строятся поверх него.
Где найти производственный календарь
| Конфигурация | Где открыть |
|---|---|
| 1С:ЗУП 3.1 | Настройка → Производственные календари |
| 1С:Бухгалтерия 3.0 | Раздел Зарплата и кадры, группа справочников и настроек; быстрее всего через Все функции → Справочники → Производственные календари |
Пункт «Все функции» включается в главном меню: Сервис → Параметры → флажок «Отображать команду “Все функции”».
Как добавить календарь на новый год
- Откройте справочник и выберите календарь «Российская Федерация».
- Переключите год стрелками в шапке формы.
- Если дни не размечены, данные придут с обновлением конфигурации или классификаторов. Обновите программу через
Администрирование → Интернет-поддержка и сервисы. - Если праздники объявили позже выхода релиза, разметьте дни вручную: щёлкните по дню и смените его вид (рабочий, выходной, праздник, предпраздничный).
- Для переноса выходного укажите дату, с которой его перенесли. Тогда отчёты покажут перенос корректно.
- Запишите календарь.
Не правьте прошлые годы, по которым уже закрыты месяцы зарплаты. Нормы времени пересчитаются, и при перепроведении документов суммы могут измениться.
Свой календарь для региона или филиала
В Татарстане, Башкортостане и ряде других регионов есть свои праздники. Для них создают отдельный производственный календарь:
- В списке календарей нажмите «Создать».
- Укажите наименование, например «Татарстан».
- Выберите базовый календарь «Российская Федерация», если такое поле есть в форме: изменения федерального календаря подтянутся сами.
- Разметьте региональные праздники.
- Укажите этот календарь в графиках работы сотрудников филиала.
Графики работы
В ЗУП графики открываются в Настройка → Графики работы сотрудников. В Бухгалтерии ищите справочник «Графики работы» в разделе Зарплата и кадры.
- 🕘 Пятидневка заполняется автоматически по производственному календарю.
- 🔁 Сменный график (сутки через трое, 2/2) задают циклом: длина цикла, часы в каждый день, дата отсчёта.
- 🌙 Для ночных и вечерних часов в ЗУП в графике указывают их отдельно, иначе доплаты не начислятся.
После создания графика нажмите кнопку заполнения на нужный год. Без этого шага график пустой, и норма времени будет нулевой.
Установка готового календаря событий через внешнюю обработку
Если нужен календарь встреч, сроков или задач, проще всего взять готовую обработку. Их делают партнёры и независимые разработчики. Файл имеет расширение .epf.
Разовый запуск
- Главное меню →
Файл → Открыть. - Выберите файл
.epf. - Платформа покажет предупреждение о безопасности. Открывайте, только если доверяете источнику файла.
Для разового открытия у пользователя должно быть право на интерактивное открытие внешних обработок. Обычно оно есть только у администратора.
Постоянное подключение
В Бухгалтерии 3.0, ЗУП 3.1 и УТ 11:
- Включите флажок в
Администрирование → Печатные формы, отчеты и обработки→ «Дополнительные отчеты и обработки». - Откройте список по ссылке «Дополнительные отчеты и обработки».
- Нажмите «Добавить из файла» и выберите
.epf. - На закладке размещения укажите раздел, в котором появится команда.
- Отметьте пользователей или группы, которым она доступна. Запишите.
Теперь команда календаря видна в выбранном разделе. Чтобы календарь открывался при запуске программы, добавьте форму на начальную страницу через Вид → Настройка начальной страницы, если обработка это поддерживает.
Внешняя обработка выполняет любой код с правами пользователя. Не ставьте файлы из неизвестных источников. Перед подключением в рабочую базу проверьте обработку на копии.
Как выбрать обработку
- ✅ Явно указана поддержка вашей конфигурации и режима (файловая, клиент-серверная, веб-клиент).
- ✅ События хранятся в базе, а не в файле на компьютере пользователя.
- ✅ Есть права доступа: сотрудник видит свои события и общие.
- ❌ Обработка требует снять защиту от опасных действий для всех пользователей.
Синхронизация календаря 1С с Google и Outlook
Готовой двусторонней синхронизации в типовых конфигурациях 1С нет. Выбор зависит от того, нужна ли обратная связь.
| Способ | Направление | Сложность | Ограничения |
|---|---|---|---|
Файл .ics по расписанию | 1С → календарь | Низкая | Обновление с задержкой, только чтение |
| COM-объект Outlook | 1С ↔ Outlook | Средняя | Только Windows, Outlook установлен на компьютере |
| API Google Calendar | 1С ↔ Google | Высокая | Нужна авторизация OAuth 2.0 и доступ в интернет с сервера |
Простой путь: выгрузка в iCalendar
Формат .ics понимают Google Календарь, Outlook, календари телефонов. Регламентное задание пишет файл, файл публикуется по ссылке, календарь подписывается на неё.
Пример процедуры выгрузки. На входе таблица значений с колонками Начало, Окончание, Тема, Ид:
Процедура ВыгрузитьВICS(ТаблицаСобытий, ИмяФайла) Экспорт
Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Запись.ЗаписатьСтроку("BEGIN:VCALENDAR");
Запись.ЗаписатьСтроку("VERSION:2.0");
Запись.ЗаписатьСтроку("PRODID:-//1s-83//calendar//RU");
Для Каждого Событие Из ТаблицаСобытий Цикл
Запись.ЗаписатьСтроку("BEGIN:VEVENT");
Запись.ЗаписатьСтроку("UID:" + Событие.Ид + "@company.local");
Запись.ЗаписатьСтроку("DTSTAMP:" + Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMddTHHmmss"));
Запись.ЗаписатьСтроку("DTSTART:" + Формат(Событие.Начало, "ДФ=yyyyMMddTHHmmss"));
Запись.ЗаписатьСтроку("DTEND:" + Формат(Событие.Окончание, "ДФ=yyyyMMddTHHmmss"));
Запись.ЗаписатьСтроку("SUMMARY:" + Событие.Тема);
Запись.ЗаписатьСтроку("END:VEVENT");
КонецЦикла;
Запись.ЗаписатьСтроку("END:VCALENDAR");
Запись.Закрыть();
КонецПроцедуры
Время здесь «плавающее», без часового пояса: календарь покажет его в поясе пользователя. Для сотрудников в разных поясах переводите время в UTC и добавляйте к нему букву Z.
Outlook на рабочем месте
На Windows с установленным Outlook клиентский код создаёт объект Новый COMОбъект("Outlook.Application") и добавляет встречи в календарь пользователя. Работает только в тонком клиенте под Windows, в веб-клиенте и на Linux — нет.
Google Calendar
Обмен идёт через HTTPСоединение и HTTPЗапрос к API Google. Сложная часть — получить и хранить токены OAuth 2.0 и обновлять их. Закладывайте на такую доработку несколько дней работы программиста.
Свой виджет календаря: доработка формы
Если готовая обработка не подходит, календарь встраивают в форму. Делайте это через расширение конфигурации, тогда типовая конфигурация останется на поддержке и обновится без проблем.
Поле календаря
- В расширении добавьте форме реквизит типа
Дата. - Перетащите его в элементы формы.
- В свойствах элемента выберите вид «Поле календаря».
- В обработчике
ПриИзмененииреквизита обновляйте список событий на выбранный день.
Получится месячная сетка прямо в форме, без отдельного окна.
Планировщик
Для расписания с интервалами (встречи, смены, брони) в платформе 8.3 есть элемент «Планировщик». Реквизит формы получает тип Планировщик, элемент формы — вид «Поле планировщика». События добавляются кодом:
&НаСервере
Процедура ЗаполнитьПланировщик()
Планировщик.Элементы.Очистить();
Элемент = Планировщик.Элементы.Добавить(НачалоДня(ТекущаяДатаСеанса()) + 10 * 3600,
НачалоДня(ТекущаяДатаСеанса()) + 11 * 3600);
Элемент.Текст = "Сверка с поставщиком";
КонецПроцедуры
Пример добавляет встречу на сегодня с 10:00 до 11:00. В реальной форме события читают запросом из справочника или регистра, где они хранятся.
💡 Для хранения событий заведите в расширении свой справочник или регистр сведений: дата начала, дата окончания, тема, ответственный. Права настраиваются отдельной ролью расширения.
Частые ошибки и как их исправить
Перед правкой производственного календаря в периоде с уже рассчитанной зарплатой сделайте резервную копию базы.