Данные типа дата заключаются в 1с
Бухгалтерам часто требуется изменить рабочую дату при выполнении учетных операций в программе 1С: Бухгалтерия. Возможность корректировать текущую дату в программе существует, но многие об этом не догадываются. Программа автоматически ставит на рабочие документы системную дату компьютера. Если требуется ввести в программу большой объем документов определенным числом, то понадобиться изменить системную дату.
Рассмотрим конкретный пример, показывающий актуальность процедуры смены даты. Компании-арендодатели, которые сдают нежилые помещения, сталкиваются с необходимостью выставлять в конце месяца счета арендаторам. Обычно это происходит в последний день месяца. Постоянный контроль за документами отнимает много рабочего времени, и возможность изменить дату в программе и спокойно выписывать весь пакет документов очень актуальна.
Разработчики предусмотрели возможность изменения текущей даты на любую другую в программе 1С: Бухгалтерия сборки 3.0. Для этого в главном меню пользователю необходимо выбрать опцию "Настройки" и перейти во вкладку "Персональные настройки".
Переключатель нужно перевести в опцию "Другая дата", затем изменить дату на нужную пользователю. Установим дату тридцать первое октября 2019 года. После этого необходимо активировать поле "Записать и сохранить".
Попробуем создать документ "Реализация услуг". Мы видим, что установленная нами измененная дата - тридцать первое октября 2019 года автоматически проставлена во вкладке "Дата документа".
Такая функция не только упрощает работу бухгалтера. В некоторых ситуациях без этой операции совершенно невозможно обойтись. Например, при корректировке неточностей прошлых лет доступ к некоторым заблокированным элементам справочников возможен только при изменении даты. Эти справочники использовались в ранних версиях программы, и недоступны в текущей версии 3.0.
Для примера изучим данные субконто "Расходы по страхованию (до 2017 г.)". В текущей сборке 3.0 этот справочник недоступен и аналитические данные не отражаются. Таким образом, необходимо корректировать текущую дату на любую другую в конце 2016 года, чтобы перенести остатки по неиспользуемой аналитике. Это позволяет вернуть программу "в прошлое", и работать с заблокированными на текущую дату данными.
Разберем подобную операцию в программе 1С:Бухгалтерия версия 3.0
Счет 69.01 Оборотно-сальдовой ведомости, на конец периода, по строке "Расходы по страхованию (до 2017 г.)" имеет в наличии сальдо.
Необходимо совершить следующую операцию - внести во вкладку "Налог (взносы): начислено/уплачено" остаток по неиспользуемой аналитике. Для этого откроем вкладку "Операция" (Операции -Операции, введенные вручную - Создать - Операция). Как видно из примера, программа не позволяет активировать из справочника нужную аналитику.
Корректируем рабочую дату во вкладке "Персональные настройки". Установим любую дату не позже тридцать первого декабря 2016 года. Затем активируем функцию "Записать и закрыть".
После этих действий стала доступна необходимая аналитика во вкладке "Операция".
Сформируем Оборотно-сальдовую ведомость счета 69.01 для проверки правильности отображения внесенных изменений. Все перенесено верно - сальдо на конец периода отсутствует.
После завершения этих операций необходимо перевести дату на сегодняшнюю, активировав опцию "Текущая дата".
Дата – тип данных, который задает число, месяц, год (обязательно) и часы, минуты и секунды (не обязательно) по григорианскому календарю.
На прошлых занятиях мы изучили примитивные типы данных Число и Строка, ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.
В системе 1С:Предприятие 8 для хранения и управления данными используются литералы – внутренний формат данных, который удобен компьютеру, но не всегда нагляден для человека. И если для Числа и Строки литералами являлись соответственно цифры и буквы, то для Даты это строка цифр, заключенная в одинарные кавычки вида 'ГГГГММДДччммсс', где:
- ГГГГ - четыре цифры года (включая тысячелетие и век);
- ММ - две цифры месяца;
- ДД - две цифры даты;
- чч - две цифры часа (в 24-х часовом формате);
- мм - две цифры минут;
- сс - две цифры секунд;
В литерале даты игнорируются все значения, отличные от цифр. Разделители в литерале можно указывать для упрощения ввода даты.
Дата('2019.03.23 10:45:25') = "23.03.2019 10:45:25"
Дата('2019\03\23-10
Для работы с примитивными данными могут применяться функции Глобального контекста – это функции, не привязанные к какому-либо объекту и работающие непосредственно с реквизитами. Свои функции Глобального контекста есть для Строки (сократить, объединить, разделить строки и др.), Числа (округлить, вычислить синус угла и др.), Даты (получить из даты год, день, получить текущую дату или дату конца года и др.), и других типов данных.
Рекомендуем ознакомиться с функциями Глобального контекста для примитивных данных в синтаксис-помощнике.
Использование функции Глобального контекста с примитивным типом данных Дата
Для примера возьмем функцию ДеньНедели, которая определяет номер дня недели для указанной даты, где 1 – понедельник, а 7 – воскресенье.
С помощью функции создадим обработку, определяющую, в какой день недели родился человек.
Создадим внешнюю обработку с двумя реквизитами:
- ДеньРождения типа Дата
- НазваниеДняНедели типа Строка
И перенесем реквизиты на форму.
Ранее мы задавали процедуры, связанные с командами, но запускать процедуру может не только кнопка. Процедура может запускаться при определенных условиях, например, при изменении реквизита. В данном случае сделаем так, чтобы после введения даты автоматически запускалась процедура расчета дня недели.
Для этого надо правой клавишей мышки щелкнуть по реквизиту ДатаРождения и в появившемся контекстном меню выбрать событие ПриИзменении:
Выберем создание обработчика события на клиенте.
Платформа 1С:Предприятие 8 автоматически ввела часть кода обработчика, связанную с условием запуска процедуры.
Чтобы получить день недели, код должен будет содержать следующие части:
- Массив данных, в котором будут храниться названия дней недели.
- Функцию ДеньНедели, которая вернет нам порядковый номер дня недели.
- Функцию, которая будет устанавливать соответствие между порядковым номером дня недели и элементом массива данных и выводить итоговые данные строкой.
Массив данных – это универсальная коллекция значений. Нумерация элементов массива начинается с 0 в квадратных скобках. Общее число элементов массива задается в круглых скобках. В массиве могут быть любые данные, в данном случае нам необходима Строка:
Массив=Новый Массив (7);
Теперь нам с помощью функции ДеньНедели получить число, возвращаемое функцией от даты рождения.
Теперь из массива вытащим название дня недели, соответствующее реквизиту Число. При этом переменная Число может получать значения от 1(понедельник) до 7(воскресенье), поэтому для получения названия дня недели из массива уменьшим Число на 1 и присвоим полученное значение реквизиту формы НазваниеДняНедели.
Итоговый код обработчика будет выглядеть следующим образом:
Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Форматирование данных
Чтобы выводить реквизиты в удобной и понятной форме, используется функция Формат. Так, например, с помощью этой функции вы можете задать короткий или длинный формат отображения даты, со временем или без. Также можно форматировать и другие типы данных, например, Число (настраивать представление разрядов, отрицательных чисел, и др). Вы можете не форматировать данные перед выводом, тогда будет использоваться стандартный формат.
Ознакомьтесь с детальным описанием функции Формат в синтаксис-помощнике Глобальный контекст – Функции форматирования – Формат.
Для иллюстрации примера форматирования даты создадим функцию-обработчик &НаКлиенте, которая будет выводить дату в нужном нам формате. Для этого в обработке создадим:
- Реквизит ФорматированнаяДата
- Поле ФорматированнаяДата (то есть перенесем на форму соответствующий реквизит)
- Команду ФорматироватьДату
- Кнопку ФорматироватьДату (то есть перенесем на форму соответствующую команду)
Далее приступим к написанию кода обработчика. Код функции выглядит так:
Формат(Значение, ФорматнаяСтрока), где Значением может быть реквизит, а ФорматнаяСтрока – это набор правил форматирования вида "Имя=Значение; ".
Правило форматирования даты задается Именем ДФ, а Значение задается следующим синтаксисом:
- д (d) - день месяца (цифрами) без лидирующего нуля;
- дд (dd) - день месяца (цифрами) с лидирующим нулем;
- МММ (MMM) - краткое название месяца;
- ММММ (MMMM) - полное название месяца;
- г (y) - номер года без века и лидирующего нуля;
- гг (yy) - номер года без века с лидирующим нулем;
- гггг (yyyy) - номер года с веком
- И др.
При этом все другие символы, используемые при написании значения будут использованы как есть. То есть их можно применять как разделители и комментарии (исключение – символы, применяемые в синтаксисе, их нужно брать в одинарные кавычки), например:
- ""дд/МММ/гггг"" отобразится как 01/01/2020
- ""дд ММММ гггг ‘г.’"" отобразится как 01 января 20 г.
В итоге мы оформили команду следующим образом:
Вы можете использовать собственные правила форматирования и внести изменения в наш вариант. Функция Формат отформатирует дату рождения в строку и присвоит реквизиту ОтформатированнаяДата.
Зайдите в 1С в пользовательском режиме и загрузите обработку, чтобы протестировать.
Примитивные данные типа Дата могут участвовать в различных вычислениях.
Например, необходимо получить количество дней, оставшихся до Нового года.
Для иллюстрации этого примера создадим реквизит ОсталосьДоНовогоГода типа Строка и допишем в процедуре обработчике ДатаРожденияПриИзменении(Элемент)
Код, который заполнит этот реквизит остатком дней до нового года:
В заключение хотим сказать, что представленные механизмы могут рассчитывать, например, возраст сотрудников, день их рождения, который можно связать с их поздравлением, рабочий стаж и т.д. В качестве самостоятельного задания вы можете попытаться реализовать одну из этих задач.
Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.
На прошлых занятиях мы изучили примитивные типы данных Число, Строка, Дата и Булево, ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.
Неопределено – значение данного типа применяются, когда необходимо использовать значение, не принадлежащее ни к одному конкретному типу. Означает, что у объявленной переменной может быть любой тип, но пока тип не определен.
Тип – представляет собой объект для управления допустимыми типами значений данных.
Присвоение значения объекту «Тип данных» посредством чтения реквизита
Для того, чтобы понять этот тип данных, создадим обработку, которая позволит менять значение некоторой переменной. Мы создадим переменную А, которая может принимать следующие значения:
Для демонстрации принципов работы с этим типом данных создадим новую форму обработки.
Сразу добавим в нее следующие реквизиты:
- НашаПеременная, укажем для нее Составной тип данных: Строка, Число, Дата и Булево
- ПрисвоеныйТип – Строка длинной 15 символов
- Комментарий - Строка неограниченной длины
Затем поместим реквизиты на созданную конструктором форму.
Создадим процедуру-обработчик события при изменении значения реквизита НашаПеременная. Цель обработчика – определять тип данных реквизита, для этого используется функция ТипЗначения или ТипЗнч
На первом этапе объявим переменную А и создадим предопределенную процедуру-обработчик ПриОткрытии. Обработчик будет подтягивать в поле Комментарий примитивный тип данных реквизита НашаПеременная.
Обратите внимание, что программа не выполнит процедуру-обработчик, если мы не привяжем его к событию. В данном случае мы вызвали выполнение процедуры ТипЗначения (А), объявив ее в другой процедуре.
Теперь при открытии формы обработки можно увидеть, что созданная переменная А имеет тип Неопределено.
На втором этапе дополним код предопределенным обработчиком ПриИзменении для реквизита НашаПеременная. Задача обработчика – обновлять реквизит Комментарий каждый раз при изменении реквизита НашаПеременная.
В результате мы создали обработку, которая задает переменную А через взаимодействие с реквизитом НашаПеременная. Также мы создали процедуру ТипЗначения (А), которая выводит Тип выбранного значения примитивных данных в реквизите Комментарий.
Однако, такой способ управления переменной нельзя назвать практичным – необходимо создавать реквизит, цель которого не хранить и записывать данные, а быть переключателем типа данных.
Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Присвоение значения объекту «Тип данных» посредством команды
Далее мы рассмотрим более лаконичный механизм, который позволит присвоить переменной А необходимое значение при помощи соответствующих команд.
Так, чтобы присвоить переменной А тип Строка, создадим команду ТипСтрока и выведем ее на форму.
Теперь создадим процедуру-обработчик команды, которая назначит переменной А новое значение.
Для присвоения нового значения используется процедура ОписаниеТипов. При этом помимо непосредственно значения переменной А, обработчик выведет использованный код в строку Комментарий.
Для заполнения реквизита формы ПрисвоенныйТип создадим процедуру заполнения этого реквизита полученным значением.
После выполнения команды получаем результат:
Теперь создадим на управляемой форме аналогичные команды и процедуры-обработчики для присвоения переменной переменной А примитивных типов:
Вы можете попробовать сделать это самостоятельно.
Теперь при выполнении каждой команды реквизит формы ПрисвоенныйТип будет показывать какой тип данных присвоен переменной А, а реквизит Комментарий покажет строку программного кода, которая присваивает переменной А нужный тип примитивных данных.
Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.
Функция Формат в 1С 8.3 предоставляет достаточно интересный инструмент разработчику для форматирования значений. Особенно часто эта функция используется для вывода примитивных типов данных (даты, времени, чисел, строки, булево) в нужном формате.
Рассмотрим подробнее функцию и способ составления форматной строки.
Функция Формат()
Синтаксис функции достаточно прост:
Конструктор форматной строки
Для облегчения труда разработчика фирма 1С встроила в платформу специальный конструктор форматной строки.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Сам конструктор выглядит следующим образом:
Рассмотрим использование функции на примерах.
Формат даты в 1С на примере месяца: прописью, без времени
Получить формат даты без времени:
Формат даты 1С, где месяц прописью:
Формат времени без даты, только час, минута и секунда:
Примеры формата числа
Получим формат числа с двумя точками после запятой:
Число без неразрывных пробелов:
Использование запятой вместо точки для дробной части:
Округление числа (не математическое) до целых:
Вывод лидирующих нулей без неразрывных пробелов:
Читайте также: