Как в 1с 7 поменять дату

Обновлено: 07.07.2024

Форматная строка используется для форматирования данных следующих типов:

Форматная строка используется при форматировании значений функцией Формат(), а также во встроенных выражениях функций Шаблон() и ФиксШаблон().

Обобщенный синтаксис форматной строки

Форматная строка содержит обязательное описание типа данных и дополнительные параметры форматирования:

Значение Value Описание
Д D форматировать как дату
Ч N форматировать как число
С S форматировать как строку

Параметры для типа Дата

Элемент Описание
Шаблон Определяет предопределенный вариант представления даты. Может принимать следующие значения:

Пример использования форматной строки 1с 7.7 для форматирования даты:

Параметры для типа Число

Для числовых значений предусмотрено два варианта представления:

  • цифровой прописью:
  • символьной прописью:

При составлении форматной строки следует соблюдать указанную последовательность параметров. В таблице ниже приведено подробное описание всех параметров:

Параметры цифровой прописи

Элемент Описание
(0) Задает заполнение недостающих символов нулями слева

Внимание!

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

Параметры для типа Строка

Пример использования форматной строки 1с 7.7 для форматирования строк:

Комментарии

А как сделать формат отрицательного числа, чтобы при выводе оно выходило красным?

Андрей, функция Формат() не умеет этого делать. За раскраску текста отвечает ячейка таблицы, в которую Вы выводите полученное значение. Смотрите свойства ячейки таблицы: Контроль = "Забивать+Красным"

Наталья, есть два варианта, где форматируется строка:

  1. В макете печатной формы ТТН
  2. Непосредственно в коде

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

Если предложенные варианты не помогли, верните все назад и ищите в коде место, где формируется переменная, указанная в ячейке. Ее нужно будет заменить на такую функцию: Формат(ПечСумма, "Ч015.2")
Как-то так. Удачи!

Функция Сокр0(ЧислоСтр) Экспорт
// Функция форматирует число оставляя после точки
// минимальное количество знаков
Стр = СокрЛП(ЧислоСтр);
iТочки = 0;
iЦифры = 0;
i = СтрДлина(Стр);
// Сканировать строку до точки
Пока i>=0 Цикл
// выделить символ
Сим = Сред (Стр, i, 1);
Если (Сим=".") Тогда // Наткнулись на точку
iТочки = i;
Прервать;
КонецЕсли;
Если (Сим"0") И (iЦифры=0) Тогда // Наткнулись на цифру, но впервые
iЦифры = i;
КонецЕсли;
i = i - 1;
КонецЦикла;

Если iТочки > 0 Тогда // Да, точка имеется
// убрать до целой части
Стр = Лев (Стр, ?(iЦифры>iТочки, iЦифры, iТочки-1));
КонецЕсли;

Возврат Стр;
КонецФункции

Наталья, можете просто в макете ТТН для поля сумма убрать Сокр0(). По идее, этого д.б. достаточно, чтобы оставались нули.

Александр, спасибо за поддержку! 🙂 Я пошла другим путем. В счетах у меня все суммы печатаются корректно, поэтому я изменила в макете ТТН форматы по образу и подобию счета. Вроде всё печатается нормально. Еще раз спасибо за потраченное время.

Бухгалтерам часто требуется изменить рабочую дату при выполнении учетных операций в программе 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 автоматически ввела часть кода обработчика, связанную с условием запуска процедуры.


Чтобы получить день недели, код должен будет содержать следующие части:

  1. Массив данных, в котором будут храниться названия дней недели.
  2. Функцию ДеньНедели, которая вернет нам порядковый номер дня недели.
  3. Функцию, которая будет устанавливать соответствие между порядковым номером дня недели и элементом массива данных и выводить итоговые данные строкой.

Массив данных – это универсальная коллекция значений. Нумерация элементов массива начинается с 0 в квадратных скобках. Общее число элементов массива задается в круглых скобках. В массиве могут быть любые данные, в данном случае нам необходима Строка:

Массив=Новый Массив (7);

Теперь нам с помощью функции ДеньНедели получить число, возвращаемое функцией от даты рождения.

Теперь из массива вытащим название дня недели, соответствующее реквизиту Число. При этом переменная Число может получать значения от 1(понедельник) до 7(воскресенье), поэтому для получения названия дня недели из массива уменьшим Число на 1 и присвоим полученное значение реквизиту формы НазваниеДняНедели.

Итоговый код обработчика будет выглядеть следующим образом:


Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.

Форматирование данных

Чтобы выводить реквизиты в удобной и понятной форме, используется функция Формат. Так, например, с помощью этой функции вы можете задать короткий или длинный формат отображения даты, со временем или без. Также можно форматировать и другие типы данных, например, Число (настраивать представление разрядов, отрицательных чисел, и др). Вы можете не форматировать данные перед выводом, тогда будет использоваться стандартный формат.

Ознакомьтесь с детальным описанием функции Формат в синтаксис-помощнике Глобальный контекст – Функции форматирования – Формат.

Для иллюстрации примера форматирования даты создадим функцию-обработчик &НаКлиенте, которая будет выводить дату в нужном нам формате. Для этого в обработке создадим:

  • Реквизит ФорматированнаяДата
  • Поле ФорматированнаяДата (то есть перенесем на форму соответствующий реквизит)
  • Команду ФорматироватьДату
  • Кнопку ФорматироватьДату (то есть перенесем на форму соответствующую команду)


Далее приступим к написанию кода обработчика. Код функции выглядит так:

Формат(Значение, ФорматнаяСтрока), где Значением может быть реквизит, а ФорматнаяСтрока – это набор правил форматирования вида "Имя=Значение; ".

Правило форматирования даты задается Именем ДФ, а Значение задается следующим синтаксисом:

  • д (d) - день месяца (цифрами) без лидирующего нуля;
  • дд (dd) - день месяца (цифрами) с лидирующим нулем;
  • МММ (MMM) - краткое название месяца;
  • ММММ (MMMM) - полное название месяца;
  • г (y) - номер года без века и лидирующего нуля;
  • гг (yy) - номер года без века с лидирующим нулем;
  • гггг (yyyy) - номер года с веком
  • И др.

При этом все другие символы, используемые при написании значения будут использованы как есть. То есть их можно применять как разделители и комментарии (исключение – символы, применяемые в синтаксисе, их нужно брать в одинарные кавычки), например:

  • ""дд/МММ/гггг"" отобразится как 01/01/2020
  • ""дд ММММ гггг ‘г.’"" отобразится как 01 января 20 г.

В итоге мы оформили команду следующим образом:


Вы можете использовать собственные правила форматирования и внести изменения в наш вариант. Функция Формат отформатирует дату рождения в строку и присвоит реквизиту ОтформатированнаяДата.

Зайдите в 1С в пользовательском режиме и загрузите обработку, чтобы протестировать.


Примитивные данные типа Дата могут участвовать в различных вычислениях.

Например, необходимо получить количество дней, оставшихся до Нового года.

Для иллюстрации этого примера создадим реквизит ОсталосьДоНовогоГода типа Строка и допишем в процедуре обработчике ДатаРожденияПриИзменении(Элемент)

Код, который заполнит этот реквизит остатком дней до нового года:



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

Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.

Читайте также: