1с получить время сервера
При работе с датами 1С, типовой порядок частей даты – год, месяц, день, час, минуты, секунды. При этом часы, минуты, секунды можно пропустить.
При создании даты из строки («приведение к дате») можно указать в локализованном формате (день.месяц.год часы:минуты:секунды), но только полностью.
Например:
//Работа с датами 1С - преобразовать дату в 1С из частей - год, месяц, день (плюс необязательно время)
Дата = Дата(2012,10,30); //без времени
Дата = Дата(2012,10,30,12,00,00); //со временем
//Работа с датами 1С - преобразовать дату в 1С из строки, разные способы
Дата = Дата("20121030"); //год, месяц, день
Дата = Дата("30.10.2012 12:00:00"); //локализованный формат, только полностью
//Работа с датами 1С - указание значения даты без приведения, напрямую
Дата = '20121030'; //без времени
Дата = '20121030120000'; //со временем
Работа с датами 1С — Пустая дата 1С
Чтобы проверить дату 1С на заполненность – ее сравнивают с «пустой датой». При наличии в справочнике/документе реквизита с типом дата, если пользователь не заполнил это поле, то ее значение также будет – «пустая дата».
«Пустая дата» — это 01.01.0001 00:00:00.
Например:
ПустаяДата = '00010101000000';
Если НужнаяДата = '00010101000000' Тогда
Сообщить("Вы не заполнили очень нужную дату");
КонецЕсли;
Работа с датами 1С — Дата в реквизитах (справочников, документов и т.п.)
При указании типа реквизита можно указать использовать:
- Только дату (время тогда всегда равно 00:00:00)
- Только время (дата тогда всегда равна 01.01.0001)
- Дату и время
Для получения даты и времени используется функция 1С ТекущаяДата().
Очень важно место – где вызывается эта функция – на клиенте или на сервере. Подробнее см. тему «Режим исполнения/Исполнение». Часто бывает, что на клиентских машинах время немного разное, поэтому стараются везде использовать серверное время – даже если оно установлено на сервере не верно, то хотя бы у всех клиентов будет одинаковое неверное время.
Для того, чтобы получить серверную дату (дату, установленную в операционной системе компьютера сервера), обычно в конфигурации создают общий модуль с установленной галочкой «Сервер» в свойствах, и в нем создают функцию
//функция расположена в общем модуле, например с именем СерверныеФункции
//в свойствах общего модуля установлена галочка «Сервер» и не установлена галочка «Клиент»
Функция ПолучитьДатуСервера() Экспорт
Возврат ТекущаяДата();
КонецФункции
//вызов этой функции для использования из другого модуля выглядит так
ДокументОбъект.Дата = СерверныеФункции.ПолучитьДатуСервера(); //ИмяМодуля.ИмяФункции()
Также в тонком клиенте непосредственно у функций модулей указывается где она будет исполнена:
Начало и конец дня
Для даты «30.10.2012»:
- дата начала дня выглядит так «30.10.2012 00:00:00»
- дата конца дня выглядит так «30.10.2012 23:59:59»
Используется в отчетах и запросах, требующих получить данные за период – день, месяц, год.
Так например период с «01.01.2012 00:00:00» по «31.01.2012 00:00:00» неверен, так как не включает в себя один день месяца (но включает в себя одну секунду последнего дня месяца).
Работа с датами 1С — Сравнение дат
Дата содержит дату и время. При сравнении дат (без учета времени) их обычно приводят к началу дня (месяца, года).
Например:
Дата1 = Дата("30.10.2012 12:00:00");
Если НачалоДня(Дата1) = НачалоДня(ДокументСсылка.Дата) Тогда
Сообщить("Документ введен заданной датой");
КонецЕсли;
На всякий случай, пример сравнения даты в периоде:
Если ДокументСсылка.Дата >= НачалоМесяца(ТекущаяДата()) и
ДокументСсылка.Дата
Работа с датами 1С - Изменение даты
Дата является числом секунд. Если мы хотим не просто узнать – больше ли одна дата другой – но и на сколько больше, то получаем разницу в секундах.
Например:
СНачалаДня = ТекущаяДата() – НачалоДня(ТекущаяДата());
Сообщить("С начала дня прошло " + Строка(СНачалаДня) + " секунд");
Сообщить("С начала дня прошло " + Строка(СНачалаДня/60) + " минут");
Сообщить("С начала дня прошло " + Строка(СНачалаДня/60/60) + " часов");
Также мы можем изменить дату, при изменении мы добавляем или отнимаем количество секунд:
НачалоЭтогоДня = НачалоДня(ТекущаяДата());
НачалоПредыдущегоДня = НачалоДня(НачалоЭтогоДня – 1); //убираем секунду – делая «вчера» и берем начало дня у «вчера»
НачалоПредыдущегоДня = НачалоЭтогоДня – 24*60*60; //другой способ – отнимаем 24 часа – 24(часа)*60(получились минуты)*60(секунды)
Работа с датами 1С - Момент времени
Момент времени – это расширенное представление даты, применимое к документам (и соответственно регистрам).
Оно требуется для сравнения времени документов, если дата и время документов одно и то же. Соответственно его можно использовать при отборах в запросах.
Момент времени можно получить у документа следующими способами:
//способ 1
МоментВремениДокумента = ДокументСсылка.МоментВремени();
Также можно сравнить момент времени с датой/временем:
МоментВремениЭталон = Новый МоментВремени( НачалоДня(ТекущаяДата()) );
Если ДокументСсылка.МоментВремени().Сравнить( МоментВремениЭталон ) = -1 Тогда
Сообщить("Документ введен раньше, чем сегодня");
КонецЕсли;
//Если документ введен сегодняшней датой в 00:00:00, то он все равно введен - сегодня
Работа с датами 1С - Форматирование дат
Форматирование дат (перевод значения даты в строковое представление с учетом локализации, для вывода пользователю) подробнее в статье про форматирование в 1С.
Недавно пришлось синхронизировать данные на разных континентах.
При обмене одним из поля фильтра выступала Дата с точностью до секунд. И при синхронизации данные некорректно получались в силу отличия локального времени на серверах. Синхронизация времени одновременно всех участников обмена не была возможной с административной точки зрения (разные CRM-системы, владельцы и т.д.), поэтому было принято привести один сервер к стандарту по гринвичу, остальным участникам получать текущее точное время перед обращением.
В результате чего и появилась данная обработка.
Надеюсь, обработка будет кому-то полезна. =)
Специальные предложения
То что ты сделал - это просто получение времени с некого веб-сервера, NTP же учитывает еще и время пробега данных от сервера до клиента
(3) oleg_km, Да, все именно так.
Возможно название вас ввело в заблуждение. Я не имел ввиду получение времени используя протокол NTP. А точность времени соответствует NTP.
Ресурс, который в примере - использует NTP и точность предоставлена от него до центра получения времени.
В обработке читается время с веб-сервера, по 13 порту (TCP -Daytime Protocol (RFC 867)).
По факту мы получаем время сервера, который уже синхронизирован по времени.
Поскольку пытаться общаться напрямую по NTP из 1с - ущербно. (нет встроенных механизмов) а через Js медленно + специфика интерпретатора в зависимости от ОС дает о себе знать. Но и это возможно.
В целом, традиционно NTP использует для своей работы протокол UDP, но он также способен работать и поверх TCP, если об этом уж пошла речь.
Просмотры 11515
Загрузки 8
Рейтинг 5
Создание 02.12.15 00:31
Обновление 02.12.15 00:31
№ Публикации 425647
Кому Для всех
Конфигурация Конфигурации 1cv8
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
Главное отличие онлайн-тренажера - отработка теории в группах с последующим разбором, сразу, никаких автовебинаров.
См. также
Групповая корректировка записей регистров (Управляемое приложение) v 2.2 Промо
Обработка предназначена для групповой корректировки записей регистров Накопления, Сведений и Бухгалтерии. Разработана специально для Управляемого приложения.
2 стартмани
06.09.2013 72938 382 kser87 69
Предпросмотр PDF, JPG, PNG, TIFF, Word, Excel
Предварительный просмотр присоединенных файлов PDF, JPG, PNG, TIFF, Word, Excel через расширение. Позволяет изменять масштаб, поворачивать и листать. Не требует подключения к интернету и внешних компонент.
2 стартмани
01.11.2021 4511 50 TyurinArt 23
Управление платформенными обработками (расширение для типовых) [update 8.3.20]
Расширение использует недокументированную возможность для управления платформенными обработками. Например, чтобы подменить "Активные пользователи" или доработать "Конструктор запросов".
1 стартмани
07.10.2021 6021 10 SeiOkami 24
Универсальная обработка переноса данных из основной конфигурации в расширение
Обработка предназначена для разработчиков, для тех случаев, когда ранее дописанный функционал, перенесен в расширение и появляется необходимость перенести данные из объектов основной конфигурации в объекты расширения. Перенос осуществляется настройкой соответствия объектов основной конфигурации объектам расширения.
5 стартмани
05.10.2020 13343 81 biz-intel 71
Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо
Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.
1 стартмани
22.10.2014 230913 4478 ekaruk 189
Улучшенная обработка универсального обмена данными в формате XML (УФ)
Улучшенная обработка "Универсальный обмен данными" с полноценными возможностями СКД для выборки данных (не только для отборов).
1 стартмани
23.06.2020 16080 170 Lem0n 1
Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками.
2 стартмани
01.05.2020 17767 118 sapervodichka 3
Яндекс сервисы [Расширение]
Расширение для работы с Яндекс-сервисами (предиктор,переводчик,проверка орфографии)
1 стартмани
24.10.2019 17970 11 noprogrammer 12
Обработка "Распознавание штрихкода с помощью утилиты Zbar" для Документооборот ред. 2 Промо
В связи с тем, что стандартный функционал программы «Документооборот» ред. 2.1 дает возможность распознавания штрихкодов только форма EAN-13, данная обработка - альтернативный способ для распознавания штрихкода в программе 1С: Документооборот ред. 2 с помощью утилиты Zbar, которая распознает в том числе и в формате Code 128 (один из стандартных штрихкодов кодирования документов, например, «Управление торговлей» ред. 11), а также с возможностью поэтапно проследить все действия от распознавания до прикрепления к документу или простой загрузки в каталоги файлов в базе 1С.
5 стартмани
05.09.2016 30458 187 SEOAngels 11
Работа с файлами (обычная и управляемая форма)
Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!
1 стартмани
10.06.2019 48328 261 Xershi 78
Электронная таблица средствами 1С (Версия 2.0)
Функционал электронной таблицы для программ на платформе 1С реализован на основе табличных документов. Функционал реализован в виде обработки. Большую часть формы обработки занимают листы (закладки) с табличными документами, которые выполняет роль электронной таблицы. Листы могут быть добавлены, удалены или переименованы. Ограничение по количеству листов определяется возможностью платформы. В формулах электронной таблицы можно использовать любые языковые конструкции, процедуры и функции 1С, ссылки на другие ячейки электронной таблицы расположенные в том числе и на других листах. Допустимо обращаться к ячейкам электронной таблицы по имени именованной области. В случае использования в формулах электронной таблицы данных из самой таблицы пересчет зависимых ячеек с формулами производится автоматически. Электронную таблицу можно сохранить в файл.
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Посмотреть все результаты поиска похожих
Еще в этой же категории
Момент Времени и Граница, назначение, примеры использования 39
Момент времени: Фирма 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); Посмотреть все в категории Работа с Датами (Временем)
Работа с Датами (Временем) | Версия | |
---|---|---|
![]() | Ввести дату, ввод даты | [7.x, 8.x] |
![]() | Выбор периода, задать период | [7.x, 8.x] |
![]() | Вычислить возраст человека и выразить его прописью | [8.x] |
![]() | Добавить к Дате указанное количество дней | [8.x] |
![]() | Добавить к Дате указанное количество лет | [8.x] |
![]() | Как Выбрать Месяц формирования отчета? | [8.x, 8.2 УП] |
![]() | Как вывести месяц прописью в родительском падеже?(Як вивести місяц в батьківському відмінку?) | [8.x] |
![]() | Как вычислить количество дней между датами | [7.x, 8.x, 8.2 УП] |
![]() | Как вычислить разницу между двумя датами в днях | [8.x] |
![]() | Как вычислить разницу между двумя датами в месяцах | [8.x] |
![]() | Как вычислить разницу между двумя датами в часах и минутах | [8.x, 8.2 УП] |
![]() | Как перебрать все даты с НачалоПериода по КонецПериода и получить таблицу периодов? | [8.x, 8.2 УП] |
![]() | Как по Номеру Недели Года получить Дату | [8.x, 8.2 УП] |
![]() | Как показать период времени в формате hh:mm:ss | [] |
![]() | Как получить день недели прописью? | [8.3] |
![]() | Как получить количество ЛЕТ, МЕСЯЦЕВ, ДНЕЙ между датами? | [8.x] |
![]() | Как получить количество рабочих дней в месяце по календарю? | [8.x, 8.2 УП, 8.3] |
![]() | Как получить количество часов/минут из интервал с исключением ночного времени | [8.2 УП] |
![]() | Как получить номер Декады месяца ( Например: 1 Декада )? | [7.x, 8.x, 8.2 УП] |
![]() | Как получить текущее время с милисекундами? | [7.x, 8.x, 8.2 УП] |
![]() | Как получить текущую (системную) дату на сервере 1С:Предприятия? | [8.x] |
![]() | Как посчитать разницу между двумя датами? | [7.x, 8.x, 8.2 УП, 8.3] |
![]() | Как преобразовать дату в формат RFC 822 и обратно? | [8.2 УП, 8.3] |
![]() | Как при выполнении обработки сообщить пользователю текущее время и дату? | [8.x] |
![]() | Как прибавить к дате день, месяц? | [8.x] |
![]() | Как проверить дату на пустое значение? | [8.x] |
![]() | Как соединить дату и время? | [8.x, 8.2 УП] |
![]() | Как сравнить две даты (дни)? | [8.x] |
![]() | Как узнать количество дней в месяце? | [8.x, 8.2 УП] |
![]() | Как указать нужную,конкретную дату? | [7.x, 8.x] |
![]() | Количество месяцев и дней между 2-мя датами | [8.x] |
![]() | Месяц прописью и День Прописью | [7.x] |
![]() | Момент Времени и Граница, назначение, примеры использования | [7.x, 8.x] |
![]() | Неправильно рассчитывает номер недели в году, функция корректного расчета | [] |
![]() | Перебор дат, заполнение списка, массива дат по порядку | [8.x] |
![]() | Перевод, преобразование Даты в Строку и Обратно | [8.x, 8.2 УП] |
![]() | Передаем в функцию дату, например 13.08.2009 11:13:54, получаем 13 августа 2009 г. | [8.x] |
![]() | Подсчет реального количества месяцев между датами, включая начало и конец месяца | [8.x, 8.2 УП, 8.3] |
![]() | Преобразование времени в универсальное (GMT) и местное в 1С | [8.x, 8.2 УП] |
![]() | Преобразование даты 1С в unixtime (Unix Time Stamp) | [8.x] |
![]() | Процедура вычисляет количество лет, месяцев и дней между двумя датами | [7.x, 8.x] |
![]() | Пустая дата в запросе и в модуле | [8.x, 8.2 УП] |
![]() | Разница между датами в рабочих днях, подсчет рабочих дней в 1С | [8.x, 8.2 УП, 8.3] |
![]() | Синхронизация времени рабочей станции с сервером | [7.x, 8.x, 8.2 УП] |
![]() | Синхронизация системного Времени по запросу | [8.x] |
![]() | Сколько лет, месяцев, дней прошло между датами | [8.x] |
![]() | Сколько лет, месяцев, дней прошло между датами | [8.x] |
![]() | Строку в дату по форматной строке | [] |
![]() | Функции для работы с датами через запрос (Разность, Добавление, Граница) | [8.x] |
![]() | Функции преобразуют время из представления в виде строки в число и обратно | [8.x] |
![]() | Функция вычисляет даты начала/конца периодов за интервал в виде таблицы значений | [8.x] |
![]() | Функция дата прописью | [8.x] |
![]() | Функция Дата прописью | [7.x, 8.x, 8.2 УП] |
![]() | Функция месяц прописью | [7.x, 8.x] |
![]() | Функция описывает период, определяемый датой и периодичностью | [8.x] |
![]() | Функция переводит Дату в формате 1С в формат вида 'YYYYMMDD hh:mm:ss' и обратно | [8.x, 8.2 УП] |
![]() | Функция пересчитывает сумму из валюты ВалютаНач по курсу КурНач в валюту ВалютаКон по курсу КурКон | [8.x] |
![]() | Функция ПредставлениеПериода() аналог 7-ной функции ПериодСтр() | [8.x, 8.2 УП] |
![]() | Функция преобразует строку вида 04/30/09 в дату | [8.x] |
![]() | Функция преобразует строку вида 31.01.2015 в дату | [8.x, 8.2 УП, 8.3] |
![]() | Функция проверяет является ли передаваемое значение датой или нет | [8.x] |
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и rphost занимает память и грузит процессор 19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Ввод по строке - поиск по первым символам или в любом месте наименования 6
При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Вывод в поле Наименование справочника Штатное список значений из справочника Подразделения? 0
Есть два справочника Штатное и Подразделения. В справочнике Штатное есть автоматически генерируемое поле Наименование. Как программно сделать так чтобы в поле Наименование справочника Штатное выводились списком значений из поля Наименование справочн Посмотреть все результаты поиска похожих
Еще в этой же категории
Разница между датами в рабочих днях, подсчет рабочих дней в 1С 5
Разрабатывая некий функционал в 1С, бывает, необходимо посчитать количество рабочих дней после какой-то даты. В этой статье примеры кода и запросы в которых считается количество рабочих дней: Код, при вычислении определяет только по дню недели, ви Как посчитать разницу между двумя датами? 5
Код уникален и сработает везде. Функция ПолучитьКоличествоДней() Счетчик = 1; НачалоПериода = Объект.НачалоПериода; Пока НачалоПериода Объект.КонецПериода Цикл Счетчик = Счетчик + 1; Как получить день недели прописью? 4
При разработке часто пользователю хочется видеть на форме день недели словом, например: Вторник , Среда и т.д. Собственно как получить день недели словом? Через функцию формат: ДеньПрописью = Формат(ТекущаяДата(), "ДФ=дддд"); Еще вариант для кра Как получить количество рабочих дней в месяце по календарю? 1
Для одного проекта потребовалось получить количество рабочих дней в месяце по календарю, без учета праздников. В результате получилась простая функция: Функция ПолучитьКолВоРабочихДнейПоКалендарю(ДатаМесяца) Рабочие=0; Кон=НачалоМесяца(ДатаМес Подсчет реального количества месяцев между датами, включая начало и конец месяца 0
В одном проекте понадобилось подсчитывать полное количество месяцев между датами, Допустим надо получить кол-во месяцев между датами 25.10.14 и 21.11.14 Функция РазницаДатВМесяцах ( Как вычислить разницу между двумя датами в месяцах ) вернет Посмотреть все в категории Работа с Датами (Временем)
Читайте также: