Работа со Временем в запросах, процедурах и ф...
-

Работа со Временем в запросах, процедурах и функциях 1С 8.3

0
7738
13.06.2020 Иван Каплин

Содержание:



В этой статье рассмотрим работу со Временем в запросах 1С и встроенном языке 1С 8.3. 

 

1.    Дата-Время в процедурах и функциях 1С

 

Всего во встроенном языке 1С 8.3 существует 7 примитивных типов данных:

1.    Число.

2.    Строка.

3.    Дата.

4.    Булево.

5.    NULL.

6.    Неопределенно.

7.    Тип (используется для сравнения с типом объекта метаданных).

 

Дата может быть как Дата-Дата (это значит, что в переменной есть только год, месяц и день), так и Дата-Время в 1С (это значит, что используется год, месяц, день, час, минута и секунда).


Дата-Дата выглядит как [00010101], где первые четыре символа – это год, потом два символа месяц и еще два символа дня (ГГГГММДД).


А вот Дата-Время в 1С выглядит как [00010101000000], где первые 8 символов это дата, а остальное это время: час, минута, секунда.


Для того чтобы правильно задавать значение Дата, нужно указывать значение переменной в одинарных кавычках. Например:



 

Для описания даты существует два способа. Один из них с использованием литерала. Литерал пишется в одинарных кавычках.


При необходимости можно указать и время, т.к. в системе 1С:Предприятие 8.3 любая дата содержит в себе и дату, и время. Например:




Второй способ определения даты – это использование функции глобального контекста Дата(<Значение>). В этом случае мы передаем в качестве параметров этой функции то же самое: год, месяц, день через запятую.


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

В системе 1С:Предприятие 8.3 пустая дата – это самое начало календаря. Варианты записи:




И та и другая запись даст одинаковый результат, и эта дата будет считаться «пустой».

Удобство функции Дата в 1С (<Значение>) в том, что мы можем передавать в нее не конкретные значения, а какие-то переменные. Т.е., иногда мы дату конструируем, собирая разные переменные.


Для даты применимы арифметические операции сложения и вычитания. Операция сложения прибавляет к дате указанное количество секунд, вычитание же действует соответственно.

Также имеются различные свойства и методы. Пример:




В возвращаемом значении указанное Время не будет изменено. При указании Количества месяцев:


а) равного нулю, будет возвращен первый день месяца, указанного в Дата 1С.

б) числом со знаком минус – вычитает из Даты указанное число месяцев.

в) числом – прибавляет к Дате указанное число месяцев.


Однако если в результате вычисления новая Дата не является последним днем месяца, то она будет к нему приведена.


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


Итак, было рассмотрено общее использование Типа Дата в 1С. Далее мы рассмотрим примеры работы, например, при загрузке данных из различных источников, в том числе XML, HTTP-сервис, таблицы Excel. Все они могут передавать значение типа Дата в 1С, однако, как правило, в большинстве случаев, мы их получаем в текстовом виде. А это значит, что при каждом чтении значения требуется правильно написать алгоритм приведение к типам 1С.

 

На практике, получая данные к обработке, мы видим чаще всего именно текст. Но не всегда значения являются Строкой. И для этих случаев необходимо написать алгоритм приведения к типам 1С. Так как во встроенном языке 1С при выполнении операции присвоения в том числе присваивается и Тип данных, то достаточно распознать и правильно присвоить временной переменной значение с необходимым типом. Для того чтобы это можно было использовать в более чем одном месте, алгоритм можно выделить в общий модуль 1С 8.3. При этом общий модуль 1С 8.3 должен быть со свойствами Клиент, Сервер или Клиент+Сервер.


 




В следствии такого усложнения требуется сначала проверять «на число». Причем довольно тривиальным способом. А именно, полученное Значение поместить в цикл, где с помощью метода СтрЗаменить() заменяем цифры от 0 до 9, точку и запятую (в программировании и западных системах принято разделять целую и десятичную часть именно точкой, а разряды разделять запятыми) значением «» (т.е. пустым значением). Таким образом, если у нас Значение останется пустым – это точно будет число. Но тогда мы только исключаем Булево и Строку, но не можем исключить Дату. Вот тогда мы будем проверять Значение на тип Дата 1С.


Здесь мы можем проверить «на длину», зная, что Дата — это всегда 8 символов. Иногда входящие данные могут быть «со временем». Тогда мы добавляем еще 6 символов. Таким образом, необходимо будет проверить «на длину», так как нужно будет понять, сколько разделителей будет в данных. В Дате можно заменить разделитель на точку, слэш (« / »), а также убрать его вовсе. Однако «во времени» необходимо будет убрать разделитель или также заменить на слэш и двоеточие, плюс - проверить на разрыв между датой и временем.


В данный момент преобразования типовыми методами не всегда работают как требуется. Поэтому Ваша смекалка при написании алгоритма приведения безусловно поможет. 


2.    Дата-Время в Запросах 1С


После проведения значения в тип Дата в 1С можно продолжить работать с ним. И теперь рассмотрим применение дата-время в запросах 1С. В Объекте Метаданных Дата-Время в 1С хранится в разных контейнерах. Например, для Документов имеется Стандартный реквизит Дата и тип МоментВремени.


Дата имеет те же свойства, что рассмотрены выше.

МоментВремени – это особое «Время». Оно включает в себя Дата-Время объекта, и его Ссылку. Это сделано для однозначного определения Момента на векторе времени. Так как несколько объектов могут иметь одинаковые Дата-Время (в клиент-серверном варианте работы), то потребовалось уточнение – и тогда добавили Ссылку. Ссылка сама по себе тоже уникальный реквизит, содержащий в числе прочего и GUID объекта.


Таким образом мы имеем не только Дату, но и более точный МоментВремени. И тогда в Запросе мы работаем с объектом для Проведения, то необходимо для большей точности использовать именно МоментВремени.


Сам МоментВремени предназначен для хранения (как описано выше) и получения момента времени объекта. Используется как метод МоментВремени(), возвращающий значение момента времени объекта ПЕРЕД самой позицией Документа на векторе времени (в таком случае говорят о «Границе слева»). Также существует момент времени объекта НЕПОСРЕДСТВЕННО в позиции Документа на векторе времени (в этом случае говорят о «Границе включая»).


Момент времени как часть понятия Времени требуется для правильного поиска данных в БД, с включением или без такового точки Времени. Для этого используется конструкция «Граница». Конструкция выглядит так:




Данная конструкция задает особый параметр Времени, используемый, преимущественно в Запросах. Первый параметр конструкции – это значение Дата-Время в 1С, которое будет взято для определения границы. Второй – это сам вид границы, который будет применяться.

Вид границы может быть:

1.    «Включая» — это значит, что граница будет взята на точку Дата-Время в 1С.

2.    «Исключая» — это значит, что граница будет взята ДО точки Дата-Время, т.е. «Граница слева».

Вообще эта ситуация довольно сложна в понимании. Ведь как можно считать саму секунду, но не включая ее – не так очевидно. Для большего понимания нарисуем:




На Рисунке схематично показано, что можно считать Границей Включая и Исключая. При этом если мы исключаем из границы точку времени, то все объекты, у которых момент времени попадает на такую точку, будут игнорированы. С включением в границу все строго наоборот.


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




Также работа с типом Дата в Запросах похожа на описание на встроенном языке в процедурах и функциях 1С 8.3. Однако есть некоторые ограничения по работе внутри Запроса. Поэтому в конструкторе Произвольных выражений можно вычленять и оперировать составными частями Дата-Время, используя широкий набор функций, например: ГОД, ЧАС, МИНУТА, ДОБАВИТЬКДАТЕ, РАЗНОСТЬДАТ, ДАТАВРЕМЯ и другие. Описание каждого метода можно с легкостью найти в сети и справочной информации.


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


Специалист компании ООО «Кодерлайн»

Каплин Иван

 

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
# абота Риелторского Агентства # Управление торговлей 11 #Забалансовый счет #Контекстное меню #Параметры запуска #Работа Риелторского Агентства # 1C # CRM-система # Cинтаксис-помощник # Cинхронные методы работы # Cправочник номенклатуры # PDF документами # PowerShell # XML-файл # Бизнес-процесс # Виды событий оповещения # Возврат товаров # Глубина анализа # Графические объекты # Динамический список # Документ заказ клиентов # Документ заполнен # Документ Отбор (размещение) товаров # Документ Отгрузка товаров ИС МП # Документ Приобретение товаров и услуг # Документ УПД # Документы продажи # Доступ на ТСД # ДтКт # ЕАЭС # Задержка зарплаты работодателем # Заказ на перемещение # Закладка Администрирование # Зарплата и кадры # Имя таблицы # ИТС # Кабель NYM(Севкабель) 3x5.5 # Книга учета доходов и расходов # Курс валюты # Лицо с правом подписи # Лицо, имеющее право подписи документов # Маркировка цифровыми кодами # Минимальные цены продажи в 1С # Настройка НСИ и разделов # Настройка ценообразования # НДФЛ # Нематериальные активы # Нормативно-правовые документы # Обмен электронными документами # Оплата через банк # Оптовые продажи # Основное ответственное лицо организации # Остаток товара на складе # Отчет комиссионера # Передача на комиссию # Перемещение ТС и оборудования # Проведение инструктажа # Продажи или Закупки # Прочие доходы # Пункт Подключить обработки # Пункт Сервис # ПФР и ФФОМС # Работа ТС # Расчёт зарплаты # Расчет налога УСН # Расчетные счета # Режим использования модальности # Система «Честный знак» # Система GS1 # Списание на расходы # Справка-расчет налога УСН # Страховые взносы # Табель учёта рабочего времени # Таблица формы # Таблица формы «Сотрудники» # Товары # Установка цен на товары # Формат Цифровой Маркировки # Форматированное письмо # Функция Дата # Функция ДеньГода # Функция ДеньНедели # Центральный Банк России # Цены номенклатуры 2.5 # Эквайринговый терминал # Элементы #1.6-НДФЛ #1С Бухгалтерия #1С Договоры #1С: CRM #1С: ERP #1С: ERP Управление строительной организацией #1С: ERP. Управление буровой компанией #1С: WMS Управление складом #1С: Аренда и управление недвижимостью #1С: БУХ #1С: Договорчики #1С: Документооборот #1С: ЗУП #1С: Интеграция #1С: КА #1С: Колледж #1С: Конвертация данных #1С: Модули #1С: Платформа #1С: Предприятие #1С: Розница #1С: Сценарное тестирование #1С: ТОИР #1С: УАТ #1С: УКФ #1С: Университет #1С: УНФ #1С: УПП #1С: Управление строительной организацией #1С: УТ #1С: УХ #1С:ERP #1С:БГУ #1С:БП #1С:Риелтор #1С:Управление холдингом #1С.6-НДФЛ #ADO #APACHE #API #canonical #com-объекты #Cинтаксис-помощник #Cопроводительных документов #Cправочник БИК #Excel #Excel в 1С #FTP-сервер #GoogleDrive #Googleаккаунт #GUID #HTTP #ITIL #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #MS SQL Server #PDF #ragent.exe #SOAP-протокол #USB- ключ #WEB #WEB-сервисы 1С #Word #WS-ссылки #XDTO-объект #XML #XML-обмен #Авансовый платеж #Администрирование 1С #Адрес URL описания #Адресный классификатор #акты в 1С #Аппаратная часть сервера #Аутентификации операционной системы #База XML #База данных #Балансовый метод #Балансовый расчет #Банковские счета #Безопасность сервера #Бесшовная интеграция #Бизнес-процесс #БИТ.Финанc #Битрикс24 #Блокировка данных #Блокировки в 1С #БСП #БУ #Бурение скважин #Бухгалтерская отчётность в МСФО #Бухгалтерский отчет #Бюджетирование #Валовая прибыль #Ввод команд #Ввод пароля #Ввоз товаров #Веб-сервер #Веб-сервер Apache #Вид договора #Вид тарифа #Вид Характеристики #Вкладка Документы #Внедрение #Внедрение ERP #Внесение правок #Внешний вид формы #Внешнюю обработку #Возврат от покупателя #Восстановление данных #Временные разницы #Временные таблицы #Всплывающие ошибки #Выбор каталога #Выбранные файлы #Вызов процедуры #Выпадающий список #Выплата аванса #Выплата отпускных сотруднику #Выполнение запроса #Выполнение кода #Выполнение транзакций #График отпусков #ГТД #Данные сотрудника #Дата действия договора #Дата документа #Движение документа #Декларация по НДС #Диагностика ошибки #Директория сервера #Дистрибутивы программ #Документ Заказ клиента #Документ Отпуск #Документ1 #Дополнительный оплачиваемый отпуск #Доработка конфигурации #Доступ к файлам #Журнал проводок #Журнал регистрации #Журнал транзакций #Журналы #Загрузить Значения #Загрузка цен в 1С #Задача для 1С #Заказ-наряд #Закладка Торговля #Закрытие месяца #Закрытие сделки #Заменить #Запись регистра сведений #Заполнения полей #Запросы 1С #Заработная плата #Зарплата и управление персоналом #Импорт товара #Имущество предприятия #инвентаризационная опись #Инвентаризация склада #Интеграционный банк-клиент #Интеграция 1С #Интервал dpi #Интерпретатор языка #Интерфейс пользователя #Информационная база #История пользователя #Источник данных #ИТС ТЕХНО #Кадровые документы #Кадровый документ #КАК ОТРАЖАЮТСЯ ТОВАРЫ В ПУТИ 1С #Как сделать в 1С #Карточка должности #Карточка номенклатуры #Карточка Объекта недвижимости #Касса ККМ #Кассовый документ #Квалификационные надбавки #Классификаторы и курсы валют #Классификаторы и курсы валют #Клиент-серверная схема #Клиент-серверный режим #Код доступа #Код ЦМТ #Код языка #Кодировка формата #Команда вызова #Командная строка #Конвертация данных #Контроль документов #Конфигурация 1С #Конфигурация 1С ЗУП 3.1 #Конфигурация системы 1С #Копирование настроек пользователей #Корпоративное сопровождение #Корректировка базы данных #Корректировка расчётов с учредителем #Криптография данных #Критерии отбора документов #Курс валюты #Курсовые разницы #Левое соединение #Лизинг #Лимит стоимости #Лицензии 1С #Лицензионный договор #Лицензия 1С КОРП #Лицензия 1С ПРОФ #Личные документы #Локальный каталог #Маркетинговая акция #Массив Номенклатур #Массовая регистрация отгулов #Меню Отчет #Место хранения #Метод объекта #Метод устранения ошибки #Методы устранения ошибки #Механизм Анализа Данных в 1С #Механизм записи #Мобильное приложение #Мобильный клиент #Моделирование #Модель данных #Модуль Диадок #Монопольный режим #МРОТ #МСФО #Налоги #Налоговая декларация #Налоговый актив #Налоговый регистр #Налоговый учет #Написание запроса #Настройка отчета #Настройка панели #Настройка параметров #Настройка пользователя #Настройка системы #Настройки пользователя по умолчанию #Начальная таблица #Начисления Арендной платы #Неверные данные #Новый Массив #Норма времени #Нормативно-справочная информация #Облачный сервис #Обмен между базами #Обмен сведениями #Обновления #Обособленное подразделение #Обработка проведения документов #Общие ознакомительные рассылки #Объект системы #Объективность информации #Объектная база данных #Окно сообщений #Оперативная аналитика #Операции в 1С #Оплата агента #Оплата по квитанции #Оплата труда #Оповещение по видам события #Оптимизация #Организация #Организация хранения #ОС и НМА #Основное окно #Основное средство #Остатки взаиморасчетов #Остатки товаров на складах #Остаток товара #Отпуск #Отчет комитенту #Отчетность #Отчетный период #Отчеты в 1С #Оформление документа #Оформление перевода работника #Охрана труда #Оценка задач #Панель инструментов #Параллельный учет #Параметр «Количество» #Параметры отбора #Параметры подключения #Партнер #Перевод сотрудника #Передача данных #Передача неисключительных прав #Перемещение отчета #Перенос данных #Перенос цен из Excel в 1С #Перечисление денежных средств #Период отбора #Периодичность ДЕНЬ #Периодичность МЕСЯЦ #Печатная форма #Печатная форма документа #План счетов #Планирование #Планировать события #Платежный документ #Погашение обязательств #Подчиненный справочник #Поле Ввода Значение Субконто #Полезные обработки #Политика учета #Пользователь Администратор #Пользовательский режим #Поступление денежных средств #Поступление основных средств #Поступление основных средств #Потенциальный контрагент #Права доступа #Правила обмена #Правое соединение #предопределенные элементы справочников #Прием на работу #Принцип работы 1С #Приходная накладная #Приходно-кассовый ордер #Проведение документов #Проведение инвентаризации #Проводки 1С #Проводок документации #Программа 1С #Программирование в 1С #Программные права #Программный код #Продажа маркированной продукции #Продажа ТМЦ #Продажа товара #Продажи #Продление #Производственный план #Производство #Просмотр #Процедура и функция #Пункт «Касса» #Путь к файлу #Работа с объектами в 1С #Рабочий сервер #Раздел Справочники #Расположение ссылки #Расторжение #Расходная накладная #Расходный ордер #Расходы по амортизации #Расчет зарплаты #Расчет НДФЛ #Расчетные документы #Расширение конфигурации #Расширение прав доступа #Расширение функционала #Регистр бухгалтерского учета #Регистр бухучета #Регистр данных #Регистры бухгалтерии #Регистры движения документов #Регламентированная отчетность #Регламентное задание #Режим записи #Режим использования модальности #Режим конфигуратор #Режим налогообложения #Режим РИБ #Резерв отпусков #Результаты поиска #Реквизит «СпЗнч» #РМК #РМК кассира #РСБУ #С # #Сверка данных учёта НДС #Свойства характеристики номенклатуры #Свойство ячейки таблицы #Сдельный заработок #Сеанс Администратор #Сегмент номенклатуры #Сервис-деск #Сетевой ключ защиты #Сетевой ключ защиты #Сетевые структуры системы #СЗВ-СТАЖ #Синхронизация данных #Система программы #СКД #Служба ИТ #Служба НСИ #Соединение COM в 1С платформе #Соединение СОМ в 1С платформе #Спецификация на товар #Список документа #Список документов #Список номенклатуры #Список прав #Справочник Лиды #Сравнение конфигураций #Строка «Касса (ККМ)» #Сумма налога #Схема отчетности #Счет-фактура #Табличная часть #Табличная часть обработки #Таможенные пошлины #Текстовый формат #Текущая Строка #Территориальная привязка #Территориальные рамки #Тестирование 1С #Техническое задание #Тип данных #Тип свойства #Тип строки #Типы данных ссылки #Толстый клиент #Тонкий клиент #Торговое оборудование #Транспортная логистика #Увольнение сотрудника #Универсальные коллекции #Управление проектами #Управленческое взаимодействие #Условие предоставления скидки #Условия труда #Установка цен номенклатуры #Учет зарплаты #Учетная политика организации #Файл обмена данными #Файловая база #Файлы обмена #Физический ключ #Финансовый результат #Финансовый учет #Форма ввода #Форма выбора элемента #Форма файла XML #Формат MicrosoftExcel #Формат даты #Формат потока #Формирование отчета #Формирование отчета #Функционал МРМ #Х-точка #Характеристики Товаров #Хранение информации #Хранилище настроек #Хранить историю изменений #Ценообразование #Центральный узел #Чтение #Шаблон обновления #Шапка отчета #Эквайринговая операция #Экзамен 1С #Экспорт товаров #Экспортная процедура #Электронная подпись #электронные подписи #элемент справочника #Элемент языка #Язык программирования #Яндекс-диск или Google-диск #Яндекс.Касса 1С под Linux 1С:УНФ Email или телефон Работа с объектами в 1С тип да Функциональные опции в 1С
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.