При разработке часто пользователю хочется видеть на форме день недели словом, например: Вторник , Среда и т.д. Собственно как получить день недели словом?
Для определения номера недели в конфигурациях 1С обычно используется стандартная функция НеделяГода().
Например 17 октября 2016 года:
НеделяГода() возвращает 43, а по обычному календарю это 42:
Судя по всему, 1С считает по американской системе. "По европейской норме (DIN 1355 / ISO 8601) первой неделей года считается неделя, содержащая 4 января данного года (http://vsegost.com/Catalog/62/6263.shtml). А в США первой неделей считается любая неделя, содержащая первое января, независимо от числа дней".
Чтобы 1С возвращала номер недели, совпадающий с "человеческими" календарями и ежедневниками, предлагается использовать следующую функцию:
Разрабатывая некий функционал в 1С, бывает, необходимо посчитать количество рабочих дней после какой-то даты.
В этой статье примеры кода и запросы в которых считается количество рабочих дней:
Код, при вычислении определяет только по дню недели, викидывая выходные. Праздники не учитывает!
В запросе, с использованием производственного календаря и учетом всех праздников:
Еще один вариант, в котором допустим, что:
1) Регистр сведений Календарь имеет структуру (Измерения={ДатаКалендаря}, Ресурсы={ВидДня}), а перечисление ВидыДня задано как {Рабочий, Предпразничный} и праздничные дни в календаре отсутствуют.
2) В документе Реализация заданы поля Дата и ОтсрочкаДней. Тогда:
Собственно, если календарь содержит и праздничные дни, то можно добавить секцию ГДЕ, и там отобрать только рабочие дни. В секции ГДЕ можно отобрать и интересующий календарь, если ведется несколько календарей.
Создавая обмены данными между 1С и сайтами, часто приходится форматировать вывод даты в стандарт RCF-822 или преобразовывать его в понятную для 1С ДатуВремя.
Дата в формате RFC-822 выглядит так: Tue, 12 Aug 2013 14:15:00 +0400
Небольшая справка по стандартам:
Как дату перевести в формат RFC-822?
Как из формата RFC-822 получить дату и время для 1С?
В процессе изучения вопроса, встретил еще несколько вариантов:
При работе в 1С встречается много рутинных операций которые должны запускаться или формироваться по расписанию выполняя то или иное действие, например: проведение документов или загрузка данных в 1С с сайта.
Механизм заданий предназначен для выполнения какой-либо прикладной или функциональности по расписанию или асинхронно.
Механизм заданий решает следующие задачи:
Возможность определения регламентных процедур на этапе конфигурирования системы;
Выполнение заданных действий по расписанию;
Выполнение вызова заданной процедуры или функции асинхронно, т.е. без ожидания ее завершения;
Отслеживание хода выполнения определенного задания и получение его статуса завершения (значения, указывающего успешность или не успешность его выполнения);
Получение списка текущих заданий;
Возможность ожидания завершения одного или нескольких заданий;
Управление заданиями (возможность отмены, блокировка выполнения и др.).
Механизм заданий состоит из следующих компонентов:
Метаданных регламентных заданий;
Регламентных заданий;
Фоновых заданий;
Планировщика заданий.
Фоновые задания & предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка.
Регламентные задания & предназначены для выполнения прикладных задач по расписанию. Регламентные задания хранятся в информационной базе и создаются на основе метаданных, определяемых в конфигурации. Метаданные регламентного задания содержат такую информацию как наименование, метод, использование и т.д.
Регламентное задание имеет расписание, которое определяет, в какие моменты времени нужно выполнять связанный с регламентным заданием метод. Расписание, как правило, задается в информационной базе, но может быть задано и на этапе конфигурирования (например, для предопределенных регламентных заданий).
Планировщик заданий используется для планирования выполнения регламентных заданий. Для каждого регламентного задания планировщик периодически проверяет, соответствует ли текущая дата и время расписанию регламентного задания. Если соответствует, планировщик назначает такое задание на выполнение. Для этого по данному регламентному заданию планировщик создает фоновое задание, которое и выполняет реальную обработку.
С описанием, думаю, хватит - приступим к реализации:
Создание регламентного задания
Имя метода – путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые общие модули, а создать свой. Не забудьте, что фоновые задания исполняются на сервере!
Использование – признак использования регламентного задания.
Предопределенное – указывает, является ли регламентное задание предопределенным.
Если хотите что бы регламентное задание заработало сразу после помещения в БД, укажите признак Предопределенное. В противном случае вам необходимо будет использовать обработку “Консоль заданий” или вызывать запуск задания программно.
Количество повторов при аварийном завершении задания – сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.
Интервал повтора при аварийном завершении задания – с какой периодичностью будет выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.
Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах
Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.
В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.
После того, как клиентский процесс, выполняющий обработку фоновых заданий, запущен, остальные клиентские процессы получают возможность программного доступа к механизму фоновых заданий, т.е. могут запускать и управлять фоновыми заданиями.
В клиент-серверном варианте для выполнения фоновых заданий используется планировщик заданий, который физически находится в менеджере кластера. Планировщик для всех поставленных в очередь на выполнение фоновых заданий получает наименее загруженный рабочий процесс и использует его для выполнения соответствующего фонового задания. Рабочий процесс выполняет задание и уведомляет планировщик о результатах выполнения.
В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:
На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
В некоторых других случаях (например, при обновлении конфигурации базы данных).
Обработки запуска и просмотра регламентных заданий вы можете скачать здесь:
Производственный календарь & незаменимый помощник бухгалтера и кадровика. В нем содержится информация о количестве рабочих, выходных и праздничных дней, норме рабочего времени в 2015 году. Для удобства использования производственный календарь содержит как общеквартальные сведения о количестве рабочих и выходных дней, так и информацию по каждому месяцу. Бухгалтеру эти сведения помогут безошибочно и быстро начислить заработную плату, оплатить больничный лист, рассчитать отпуск, составить график работы. Работник сможет выбрать наиболее благоприятный для отпуска период. В календаре можно также узнать о профессиональных праздниках на конкретную дату.
Производственный календарь на 2015 год подскажет о переносе выходных и праздничных дней, а комментарий к нему подробно разъяснит представленные в календаре данные. Так же в календаре показаны тарифы страховых взносов и пределы ПФР и ФСС, а размеры пособий всегда подскажут, что заплатить работнику:
Норма рабочего времени на определенные календарные периоды исчисляется по расчетному графику пятидневной рабочей недели с двумя выходными днями в субботу и воскресенье исходя из продолжительности ежедневной работы: при 40-часовой рабочей неделе – 8 часов; при продолжительности рабочей недели менее 40 часов – количество часов, получаемое в результате деления установленной продолжительности рабочей недели на пять дней (п. 1 Порядка исчисления нормы рабочего времени на определенные календарные периоды времени (месяц, квартал, год) в зависимости от установленной продолжительности рабочего времени в неделю, утв. приказом Минздравсоцразвития России от 13 августа 2009 г. N 588н (далее – Порядок)).
Таким образом, при 40-часовой рабочей неделе продолжительность рабочего дня составит 8 часов, при продолжительности рабочей недели 36 часов – 7,2 часа; при 24-часовой рабочей неделе – 4,8 часа.
При этом необходимо помнить о запрещении работы в нерабочие праздничные дни (часть первая ст. 113 ТК РФ), об уменьшении на 1 час работы в предпраздничный день, то есть в день, непосредственно предшествующий нерабочему праздничному дню (часть первая ст. 95 ТК РФ ), о перенесении выходного дня при совпадении его с нерабочим праздничным днем (часть вторая ст. 112 ТК РФ).
В соответствии с частью первой ст. 112 ТК РФ нерабочими праздничными днями в Российской Федерации являются:
1, 2, 3, 4, 5, 6 и 8 января – Новогодние каникулы;
7 января – Рождество Христово;
23 февраля – День защитника Отечества;
8 марта – Международный женский день;
1 мая – Праздник Весны и Труда;
9 мая – День Победы;
12 июня – День России;
4 ноября – День народного единства.
Предпраздничные дни в 2015 году: 30 апреля, 8 мая, 11 июня, 3 ноября, 31 декабря.