1с добавить день к дате
В статье представлены способы задать формат даты 1с 8. Для этого необходимо использовать форматную строку. Редактировать ее можно либо вручную, либо при помощи специального конструктора.
Форматные строки используются в:
При использовании функции Формат, следует помнить, что она возвращает строковое значение, т.е. представление переданной даты в определенном формате.
Формат даты 1с при помощи форматной строки
При помощи форматной строки можно задать параметры форматирования даты. Не стоит описывать их полностью вручную. Лучше всего, воспользоваться встроенным в платформу конструктором, а затем отредактировать полученную форматную строку вручную. Это сэкономит ваши силы и позволит быстро добиться результата.
В свойствах полей, ячеек макета, конструктор форматной строки вызывается нажатием кнопки. А в коде он вызывается аналогично конструктору запроса: контекстное меню -> Конструктор форматной строки…
- Следует описать функцию Формат, без форматной строки:
- Поставить курсор между кавычек, вызвать конструктор;
- После окончания работы с конструктором нажать ОК.
Конструктор форматной строки
Сам же конструктор форматной строки представляет собой набор вкладок, предназначенных для форматирования данных различных типов. Нас интересует вкладка Дата.
В первую очередь следует проверить, подходит ли для ваших целей Локальный формат даты. Если это так, то стоит воспользоваться именно им, так как он учитывает особенности построения дат для разных стран. То есть для русскоязычной версии будет отображать привычную нам дату, а для локализованных версий — привычную иностранным пользователям.
В остальных случаях можно пользоваться произвольным форматом даты. Его можно не только выбирать из выпадающего списка, но и редактировать вручную. Для редактирования используются следующие форматные коды:
- д (d) — день месяца (цифрами) без лидирующего нуля;
- дд (dd) — день месяца (цифрами) с лидирующим нулем;
- ддд (ddd) — краткое название дня недели;
- дддд (dddd) — полное название дня недели;
- М (m) — минута без лидирующего нуля;
- ММ (mm) — минута с лидирующим нулем;
- МММ (MMM) — краткое название месяца *);
- ММММ (MMMM) — полное название месяца *);
- к (q) — номер квартала в году;
- г (y) — номер года без века и лидирующего нуля;
- гг (yy) — номер года без века с лидирующим нулем;
- гггг (yyyy) — номер года с веком;
- ч (h) — час в 12-часовом варианте без лидирующих нулей;
- чч (hh) — час в 12-часовом варианте с лидирующим нулем;
- Ч (H) — час в 24-часовом варианте без лидирующих нулей;
- ЧЧ (HH) — час в 24-часовом варианте с лидирующим нулем;
- м (m) — минута без лидирующего нуля;
- мм (mm) — минута с лидирующим нулем;
- с (s) — секунда без лидирующего нуля;
- сс (ss) — секунда с лидирующим нулем;
- вв (tt) — отображение половины дня AM/PM (действительно только для языков конфигурирования, поддерживающих 12 часовой вариант представления времени).
Также можно добавлять в форматную строку произвольный текст, используя кавычки (если добавляемый текст не может быть интерпретирован, как составная часть даты, тогда можно обойтись и без кавычек):
Итоговый текст такой форматной строки будет выглядеть следующим образом:
Примеры использования формата дат
Приведем несколько примеров форматирования даты.
Дата без времени (05.10.2020)
Только время (12:35:50)
Месяц текстом, год полностью (Октябрь 2020)
Месяц текстом кратко, год без тысячелетия (окт. 20)
Месяц числом, через точку год полностью (10.2020)
Склонение названия месяца
При форматировании даты не всегда достаточно именительного падежа. Иногда требуется указать, к примеру, что отчет сформирован в «Октябре 2020 г.», а не в «Октябрь 2020 г.». Для решения этой проблемы подойдет серверная строковая функция ПолучитьСклоненияСтроки (доступна, начиная с версии платформы 8.3.13).
Функция возвращает массив вариантов склонения строки. Подробнее прочитать про заполнение параметров можно в синтаксис помощнике.
Как в коде к текущей дате добавить несколько дней правильно?
В запросе это сделать наверно легко
В коде месяц добавить тоже в СП есть функция
А вот как день добавить? Нашел только такой вариант, но на сколько это правильно хотелось бы узнать.
(4) А функцию разработчики забыли такую написать? А то не очень красиво через плюсики считать. Для запроса же написали.
Нужно добавить количество секунд к дате
Для наглядности если нужно, к примеру, 2 дня прибавить, то это можно выразить так
(3) Интересно. Что быстрее выполнится - одно сложение и одно умножение или одно сложение и 3 умножения. Но это вопрос, конечно, риторический :)
(5) вопрос не во времени, просто не очень красиво с плюсиками, но конечно музыку заказывает тот кто платит, собственно мы и платим, когда покупаем ПО. Замкнутый круг.
(5) И то и то выполнится в абсолютно приемлемые для пользователя сроки.
ЗЫ Дата2 = Дата1 + 86400*КолВоДней; //это на автомате
(14) Я и говорю, что вопрос риторический - с точки зрения пользователя и с точки зрения тактов процессора.
Интересно. Что быстрее выполнится - одно сложение и одно умножение или одно сложение и 3 умножения. Но это вопрос, конечно, риторический :)
Для компилятора (а 1С все-таки в свой байт-код компилирует синтаксис - поглядите статейку про 1.с-ассемблер) все выражения с константами предварительно предвычисляются. В итоге все перемножится и сложится, а потом уже в цикле будет обрабатываться. Так что одинаково.
(10) не уверен, у них есть более глобальные доработки, и в целом за программу 1С твердая 5с плюсом, сколько программистов нашли таким образом работу по интересу. Но 86400 это что-то символичное для 1С видимо, как например 256 в сентябре для программистов вообще. Может у них Зав кафедрой или доктор наук придумал такую функцию добавления одного дня и они решили увековечить для всех, мы же не знаем все подробностей истории разработки 1С.
(12) я не имел в виду ошибки программы, даже больше скажу есть мнение программеров, что сам движок 1С имеет достаточно большие пробелы, хотя бы вот по этой статье.
. Я имел в виду, что код открыт для программирования и это очень хорошее решение. А то, что не идет, у 1С при желании можно настроить самому, ну или заказать, или обойти как-то. Мне например не нравится, что 1С скрывает документацию по новым разработанным функциям, нужно за деньги покупать книги и итсы и тд. Хотя это же рабочая документация к купленной моей организацией ПО. Но сам факт, что открыт код для доработки программ, это очень хорошее решение. К примеру Microsoft Visual C++ для Visual Studio 2015 тоже пошла по пути 1С, так ничего лучше не двигает прогресс, как открытый код, но конечно это мое субъективное мнение. А Linux, у них тоже отрытый код и платформа пользуется очень большой популярностью.
Таблица "Даты" может содержать любые данные с датой в виде отдельного поля или в виде реквизита документа. Параметр "ГлубинаДней" определяет, как глубоко вперёд просматривать даты относительно входящих дат.
Вот пример работы для одной даты 28.11.2012
Дата | КоличествоРабочихДней | ДатаКалендаря | ДатаКалендаряДляГруппировки |
28.11.2012 | 1 | 28.11.2012 | 28.11.2012 |
28.11.2012 | 2 | 29.11.2012 | 29.11.2012 |
28.11.2012 | 3 | 30.11.2012 | 30.11.2012 |
28.11.2012 | 4 | 03.12.2012 | 03.12.2012 |
28.11.2012 | 5 | 04.12.2012 | 04.12.2012 |
28.11.2012 | 6 | 05.12.2012 | 05.12.2012 |
28.11.2012 | 7 | 06.12.2012 | 06.12.2012 |
28.11.2012 | 8 | 07.12.2012 | 07.12.2012 |
28.11.2012 | 9 | 10.12.2012 | 10.12.2012 |
28.11.2012 | 10 | 11.12.2012 | 11.12.2012 |
28.11.2012 | 11 | 12.12.2012 | 12.12.2012 |
28.11.2012 | 12 | 13.12.2012 | 13.12.2012 |
28.11.2012 | 13 | 14.12.2012 | 14.12.2012 |
28.11.2012 | 14 | 17.12.2012 | 17.12.2012 |
28.11.2012 | 15 | 18.12.2012 | 18.12.2012 |
28.11.2012 | 16 | 19.12.2012 | 19.12.2012 |
28.11.2012 | 17 | 20.12.2012 | 20.12.2012 |
28.11.2012 | 18 | 21.12.2012 | 21.12.2012 |
28.11.2012 | 19 | 24.12.2012 | 24.12.2012 |
28.11.2012 | 20 | 25.12.2012 | 25.12.2012 |
28.11.2012 | 21 | 26.12.2012 | 26.12.2012 |
28.11.2012 | 22 | 27.12.2012 | 27.12.2012 |
В конец запроса осталось добавить условие
и отобрать данные по нужному количеству рабочих дней в параметре "РабочихДней"
Ну и в конце полная верия запроса, если захочется опробовать в консоли запросов
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П Заполнить программно Партии в проводках 0
Добрый день! В счете учета включили Субконто3=Партии. Как заполнить партии в проводках, которые уже проведены ранее? Спасибо. Как в 1С отразить проводки по начислению и уплате страховых взносов ООО и ИП за себя? 0
Проводки по начислению и уплате страховых взносов ИП за себя формируют квартальные регламентные операции по закрытию месяца. В ООО это документы начисления ЗП. Если вы хотите ввести сами, то: Операции - Операции, введенные вручную , через 69.06 Как в программе 1С Бух 3 отразить начисление фиксированных страховых взносов ИП? 2
Порядок расчета фиксированных страховых взносов за 2014 и 2015, 2016 год Сумма взноса в ПФР = МРОТ * 12 * 26 % Сумма взноса в ФОМС = МРОТ * 12 * 5.1 % где МРОТ (Минимальный Размер Оплаты Труда): 5554 рублей в 2014 году 5965 рублей в 2015 Как в табеле обозначается нерабочий праздничный день во время отпуска ОТ или В? 0
Каким кодом правильно отображать в табеле учета рабочего времени нерабочий праздничный день, пришедшийся для данного работника на период отпуска: В или ОТ в разделе "Отметки о явках и неявках на работу по числам месяца"? Например, если у работника Посмотреть все результаты поиска похожих
Еще в этой же категории
Разница между датами в рабочих днях, подсчет рабочих дней в 1С 5
Разрабатывая некий функционал в 1С, бывает, необходимо посчитать количество рабочих дней после какой-то даты. В этой статье примеры кода и запросы в которых считается количество рабочих дней: Код, при вычислении определяет только по дню недели, ви Как посчитать разницу между двумя датами? 5
Код уникален и сработает везде. Функция ПолучитьКоличествоДней() Счетчик = 1; НачалоПериода = Объект.НачалоПериода; Пока НачалоПериода Объект.КонецПериода Цикл Счетчик = Счетчик + 1; Как получить день недели прописью? 4
При разработке часто пользователю хочется видеть на форме день недели словом, например: Вторник , Среда и т.д. Собственно как получить день недели словом? Через функцию формат: ДеньПрописью = Формат(ТекущаяДата(), "ДФ=дддд"); Еще вариант для кра Как получить количество рабочих дней в месяце по календарю? 1
Для одного проекта потребовалось получить количество рабочих дней в месяце по календарю, без учета праздников. В результате получилась простая функция: Функция ПолучитьКолВоРабочихДнейПоКалендарю(ДатаМесяца) Рабочие=0; Кон=НачалоМесяца(ДатаМес Подсчет реального количества месяцев между датами, включая начало и конец месяца 0
В одном проекте понадобилось подсчитывать полное количество месяцев между датами, Допустим надо получить кол-во месяцев между датами 25.10.14 и 21.11.14 Функция РазницаДатВМесяцах ( Как вычислить разницу между двумя датами в месяцах ) вернет Посмотреть все в категории Работа с Датами (Временем)
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Посмотреть все результаты поиска похожих
Еще в этой же категории
Момент Времени и Граница, назначение, примеры использования 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); Посмотреть все в категории Работа с Датами (Временем)
Читайте также: