Показать ввод даты 1с
Задуман, как диалог "от простейшего" (визуальный выбор с двойным щелчком), до насыщенного функционала ''на все случаи жизни"- всякие там меню, вводы, листания, индивидуальная настройка. Всё это в заданных абсолютных и условных границах даты , для заданных доступных реквизитов даты, для любых международных стандартов представления даты и на любом языке.
Диалог предназначен отнюдь не для замены добротного встроенного, "красивого" Диалога 1с. Применение данного Диалога видится для случаев, когда необходимо то, чего нет в официальном Диалоге. А именно: границы, любой язык, любой стандарт даты, расширенные возможности выбора периода, "тонкости" выбора даты, выбор времени.
Основная логика Диалога построена на моей библиотеке 1с- методов Даты, существенно переработанной, дополненной - самый последний вариант .
Библиотека расширения методов даты включена в данную обработку .
Сразу отвечу на вопросы, которые обязательно возникнут:
1. Почему использованы табличные поля ?
Есть начальные "красивые" варианты на кнопках, ( с оттенками, с эмуляцией выделения , с выделением текущей даты) - работают на порядок (ки) медленнее . Вывести на экран 200 кнопок для "движка" 1с - жуткая проблема.
2.Почему не использовано условное оформление?
а) Самое главное - невозможно управлять оформлением текущих строк табличных полей (раскраска и т.п.) - теряется смысл использования.
б) Достаточно пункта (а). Ещё - серьезный довесок в коде, объеме передаваемых данных, существенное понижение скорости исполнения. Пробовал.
В надежде, что это будет читать кто-нибудь "заинтересованный", не могу не поделиться горечью, накопленной в процессе разработки.
Удручает "гиперчувствительность" обработчиков изменения ячеек и строк табличных полей. Они реагируют буквально на все: на изменения
заголовков, на изменения ячеек других табличных полей, изменение видимости, доступности - не всегда и не предсказуемо - сплошной кошмар! Заставить согласованно работать с десяток взаимосвязанных табличных полей - еще та задача. А отсюда - затраченное время, шаманство, объем программы, скорость.
Весьма не хватает обработчика: "ПриУстановкеНаЭлементФормы(Элемент)".
Во первых была бы решена проблема текущих строк-ячеек табличных полей, табличных документов. Сейчас при установке на них курсора - никакой реакции. Во вторых тогда можно забыть (когда это мешает) про "гиперчувствительность" некоторых обработчиков (как и про сами эти обработчики). По сути, это был бы очень даже универсальный обработчик для затычки дыр! Конечно, если будет реализован тщательно.
Не приятно, что нет возможности управлять оформлением текущей строки табличного поля.
Не радует "навязанность" заголовка формы , недоступность оформления,
даже место освободить нельзя! А пространства всегда не хватает, особенно в связи с умышленным "огрублением" разработчиками общего интерфейса.
Верю: Боги-Web-Такси когда-нибудь взглянут на "землю".
". Жаль только жить в эту пору прекрасную уж не придется. "
Коротко о диалоге.
На форме диалога организованы все необходимые подсказки на выбранном языке формы. Хороший диалог должен быть интуитивно понятным - на это надеюсь. Работает так: "визуальная" установка даты - один щелчок на табличных полях выбора; двойной щелчок или нажатие кнопки "Ок" - выбор и выход. Для программиста - в процедурах и функциях масса комментариев.
О кодах реквизитов даты
Введено понятие числовых кодов реквизитов даты:
1 - Год; 2 - Полугодие; 3 - Квартал; 4 - Месяц; 5 - Декада; 6 - Неделя;
7 - День(Сутки); 8 - Час; 9 - Минута; 10 - Секунда; 11 - Миллисекунда;
12 - Микросекунда; и т.д.
Функции из библиотеки расширения методов даты теперь работают как с кодами , так и с именами реквизитов на любом языке. Коды более универсальны, не требуется параметра "ИменаРеквизитов" с переводами имен .
О многоязычности.
Перевод для каждого языка реализован в виде строки с тремя уровнями разделителей (из-за стремления к минимальному размеру хранения). Строки переводов , на данный момент (в связи с отсутствием специального справочника перевода "статических" МетаОбъектов) создаются в Модуле обработки. Каждый язык представлен небольшим блоком внутри функции "ЯзыкиГруппыФорм()". Перевод для нового языка делается так: копируется блок известного Вам языка , заменяется код и наименование языка (если нужно- разделители) и переводятся правые подстроки ( Яндекс - Гугль и 30-40 минут). Блоки с ненужными языками можно спокойно удалить (один должен остаться!).
О границах.
Определены 3 вида ограничений диалога.
1. "Абсолютные" границы даты слева и справа. Области выбора даты за данными границами пользователю не доступны, цифры и слова в ячейках таблиц выбора заменены специальным символом ( мною выбран "-").
2. "Условные" (или "предупреждающие") границы даты слева и справа (например, дата за границей запрета редактирования). Визуальные данные в ячейках таблиц выбора предваряются или заканчиваются, в зависимости перехода левой или правой границы специальном символом ( мною выбран ".").
3. Ограничения реквизитов даты. Выбор не возможен для указанных недоступных кодов реквизитов даты. Например, можно указать коды недоступных реквизитов : "1,2,3,5,6,7,8,9,10", будет возможен выбор только месяцев. Недоступные реквизиты на форме выбора периода заменены специальным символом ( мною выбран "_"), соответствующие подстроки маски ввода даты также заменяются этими символами; табличные поля визуального выбора даты для этих реквизитов становятся недоступными.
О поддержке стандартов представления Даты.
Введено понятие "ШаблонДаты":
Где Префикс=(0 - ведущие нули у значений реквизитов даты)
(1 - только цифровые значения реквизитов с ведущими нулями)
(любой другой символ - без ведущих нулей у значений реквизитов)
КодР - цифровой код реквизита даты (см.выше)
Строка - любая строка без цифровых символов
(нулевая и последняя строка могут быть пустыми).
Примеры шаблона: "07.4.1 8:9" =(0) (День).(Месяц).(Год) (Час):(Минута)
"01,2,3" =(0) (Год),(Полугодие),(Квартал)
В библиотеку добавлены 3 функции, позволяющие работать с шаблонами: Дата_МаскаПоШаблону(. ), Дата_ВСтрокуПоШаблону(. ), Дата_ ИзСтрокиПоШаблону(. ). Такой подход позволяет работать с любым чередованием реквизитов даты и строковых разделителей , т.е. поддерживается любой стандарт представления даты. Не путать с форматом! В некотором смысле Шаблон более универсален, так как дает возможность вставлять между числовыми значениями реквизитов даты строки на любом языке; к тому же из строки даты гарантировано воссоздается дата.
Особенности выбора Даты-Времени.
А) Кроме поля ввода Даты-Времени по маске (согласно указанному международному стандарту-Шаблону), добавлены три кнопки: Предыдущая, Текущая и Следующая даты. При нажатии - меню выбора реквизита Даты на текущем языке формы.
Б) Предусмотрены три режима Диалога с возможность выбора (введено соответствующее поле выбора ):
- (0). Текущий. При выборе значения текущего реквизита Даты значения всех последующих остаются неизменными; цвет текста в таблицах выбора - черный.
- (1). Начальный. При выборе значения текущего реквизита Даты значения всех последующих устанавливаются в начало; цвет текста в таблицах - темно-красный.
- (2).Конечный . При выборе значения текущего реквизита Даты для всех последующих устанавливается конечное значение; цвет текста в таблицах - темно-зеленый.
В) Предусмотрен выбор текущего реквизита Даты и "листание" его значений с любым шагом (количеством соответствующих этому реквизиту периодов). Для этого введены
- выбора текущего реквизита Даты;
- ввода-выбора количества периодов листания и самого листания.
При выборе текущего реквизита Даты становятся активными строка и ячейка соответствующей таблицы выбора . И наоборот - при активизации Таблицы-Строки-Ячейки устанавливается имя текущего реквизита в вышеуказанное поле. К сожалению, поле выбора текущего реквизита Даты пришлось ввести из-за трудности визуального определения , какая же Таблица-Строка-Ячейка на данный момент является, так сказать "глобально- активной" на форме, а также невозможностью смены реквизита Даты путем установки курсора на активную ячейку другой таблицы выбора (ни какой реакции!). Таков уж интерфейс 1с.
Г) При завершении работы диалога в параметры выводятся Дата начала и Дата конца периода, соответствующего текущему выбранному реквизиту выбранной Даты.
Таким образом диалог в режиме выбора Даты, Времени или Даты-Времени можно использовать для выбора "простейшего" периода.
Особенности выбора Периода.
А) Для визуального выбора дат начала и конца Периода используются те же табличные поля, что и при выборе Даты (см. выше). Предусмотрены два режима их работы: выбор начала периода (РежимДиалога=1, цвет текста ="ТемноКрасный") и выбор конца периода (РежимДиалога=2, цвет текста ="ТемноЗеленый"). Переключение режимов осуществляется специальными кнопками : "" или непосредственной "ручной" установкой Даты-Времени в поле ввода даты начала или конца периода. Для отображения выбора начала и конца периода предусмотрены две строки заголовка вверху формы, для отображения и управления - две строки внизу формы (с полями, кнопками).
Б) Для отображения и выбора имени текущего Периода и выбора-ввода количества Периодов правее табличных полей выбора даты на форму добавлены две колонки: с именами Периодов и соответственно, с их Количеством. Добавлен флаг фиксации Периода - "Фиксировано". При установленном флаге выбранный Период и его длина остаются неизменными при выборе даты начала или конца периода, т.е. Период становиться как бы "привязанным " к дате начала или конца.
В) Несколько слов о выборе "не фиксированного" Периода ("фиксированный" описан выше).
1. Режим выбора начала Периода. При смене текущего реквизита Даты автоматически в колонке имен периодов становиться активной ячейка с именем, соответствующем текущему реквизиты Даты, количество этих периодов устанавливается в 1.
При смене ЗНАЧЕНИЯ текущего реквизита Даты (текущий реквизит тот же ) ранее установленное количество периодов не изменяется. После выбора даты начала периода в колонке имен Периодов можно выбрать любой Период, в т.ч. и не соответствующий текущему реквизиту Даты, в колонке длины можно ввести-выбрать количество этих Периодов. Таким образом Период и его длину можно устанавливать независимо от даты начала периода.
2. Режим выбора конца Периода. На основании установленной ранее Даты начала периода и выбранной Даты конца периода производиться поиск подходящего Периода и его длины (количества периодов), что и отражается в соответствующих колонках Периода (если ничего подходящего не найдено - в секундах). Выбор имени Периода мною заблокирован (не имеет смысла, лишнее это). Зато есть возможность выбора-ввода длины (количества) любого Периода, которая прибавляется к Дате начала периода; Дата конца периода и ее отображение в таблицах выбора изменяется соответствующим образом. Таким образом можно выбирать Дату конца периода - подбирается период и длина или вводить-выбирать длину периода (и соответственно, Период) - изменяется Дата конца периода и ее визуальное отображение.
О недостатках.
а) Код (да простят мне это слово гуру низких языков) далек от совершенства, как по скорости исполнения, так и по лаконичности. Конечно же, возможны ошибки. Единственное оправдание: все-таки много чего охвачено.
Любая форма используется как общая, для скачивания помещена в обработку. Форму из обработки необходимо поместить в общие формы, для удобства создать в общем модуле процедуру, аналогичную указанной в примере.
Работает на любой конфигурации, формы и обычные и управляемые, мы тестировали на УПП 1.3 (обычные) и на ERP 2.5 (управляемые).
Как пользоваться: вы хотите выбирать значение через эту форму, подменяете процедуру выбора этого значения на процедуру общего модуля (пример ниже), при необходимости передаете туда значение для редактирования (если это не ввод нового значения), после работы с формой нужно обработать результат - вам вернется выбранное значение, если пользователь отказался, то вернется "Неопределено".
Специальные предложения
Приветствую. Проблемы с вводом числа. Попробуйте ввести например 0,708. Второй ноль не вводится, т.к. там явное преобразование строки в число, соответственно 0,70 преобразуется в 0,7, как обойти?
(3) Исправил. Обработку обновил.
Или сами поправьте у себя:
Процедура "ЦифраНажатие(Элемент)"
Меняем Число = Число(Строка(Число) + Строка(Добавить));
на Число = Строка(Число) + Строка(Добавить);
Приветствую, а есть Универсальная форма выбора из списка (для сенсорных экранов) для управляемых форм?
Просмотры 7499
Загрузки 45
Рейтинг 6
Создание 20.11.18 13:22
Обновление 18.03.21 10:43
№ Публикации 918580
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
См. также
Альтернативный способ добавления элементов и реквизитов на формы Промо
Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.
1 стартмани
09.09.2019 20439 39 bmk74 8
Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)
Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.
1 стартмани
17.10.2021 5259 6 Патриот 48
Работа с картами в 1С на примере бесплатной библиотеки Leaflet
Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.
1 стартмани
31.03.2021 14981 49 Parsec1C 18
Открыть форму внутри другой формы - наконец-то возможно!
Я давно мечтал о возможности открытия форм 1С внутри других форм, мне время от времени попадаются задачи, где это бы пригодилось. И вот в версии 8.3.16 наконец-то это можно реализовать! Конечно, это не совсем то, что я ожидал, но получилось все равно интересно. Давайте посмотрим.
1 стартмани
15.04.2020 25080 34 CyberCerber 66
Менеджер открытых форм [update 12.12.21] Промо
Обработка позволяет редактировать данные открытых форм и открывать новые с передачей параметров
1 стартмани
13.04.2017 27104 49 SeiOkami 19
Делаем из СКД Excel (ну, почти)
Несложный в использовании способ внедрить в обычный отчет СКД возможность редактировать значения ресурсов отчета (а-ля Excel) и получать отредактированные значения для дальнейшей обработки.
1 стартмани
26.01.2020 18509 29 herfis 16
Индикация прогресса выполнения фонового задания на управляемой форме внешней обработки
Внешняя обработка с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП >= 2.3 без изменения конфигурации и встраивания обработки в "Дополнительные отчеты и обработки".
1 стартмани
27.12.2019 24049 45 1sig 16
Декомпиляция условного оформления
Обработка автоматически генерирует полный код создания условного оформления формы любой сложности. Достаточно настроить для формы в конфигураторе условное оформление, а затем выбрать данную форму в обработке. В результате будет сгенерирован программный код создания условного оформления.
2 стартмани
23.12.2019 13928 62 XilDen 7
Расширенная настройка динамического списка УФ Промо
Открывая управляемую форму выбора и не увидев там видимых в форме списка элементов, часто хочется узнать причину их отсутствия там, т. е. какой наложен отбор. Но стандартная настройка списка управляемой формы показывает только пользовательские настройки, скрывая от пользователя фиксированный отбор. Предлагаю вам расширение конфигурации с расширенной настройкой динамического списка, отображающей пользователю кроме пользовательских настроек еще фиксированные.
1 стартмани
31.05.2017 41730 164 tormozit 25
Многоуровневые списки выбора с оформлением элементов
Данная статья - попытка решить один маленький кусочек большой проблемы платформы 1С, а именно - бедные и невыразительные пользовательские интерфейсы. Поскольку 1С в режиме управляемого приложения позволяет задействовать веб-клиент, то хочется реализовывать интерфейсы как у взрослых веб-приложений - красивые, дружелюбные для пользователя и, желательно, с положительным UX. Возможно, кто-то со мной не согласится и скажет, что учетные системы должны быть строгие и линейные. Но мы все знаем, что 1С - это уже не только про бухгалтерию. Небольшое отступление для разработчиков, работающих с типовыми конфигурациями. Я не знаю, использует ли фирма 1С что-то похожее в своих разработках. Если да, то данная статья навряд ли будет вам полезна.
1 стартмани
17.12.2019 14891 2 azhilichev 5
[Взрыв шаблона!] Новый способ программной настройки условного оформления
Условное оформление форм и списков это великолепная возможность их настройки по заданным условиям. Но существенным недостатком является трудоемкость написания и сопровождения программного кода. В публикации предлагается новый способ программной настройки условного оформления.
Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени QR код в 1С 20
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог V82.COMConnector.1: Не найдена лицензия COM-соединением 1
При подключении из одной базы к другой через COM внезапно стала появляться следующая ошибка: «V82.COMConnector.1: Не найдена лицензия COM-соединением», хотя никаких изменений на серверах не делалось. Релиз платформы был 8.2.13. Обновил до 14-го – не Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз В 1С не вводится новый элемент в справочник 0
Новый элемент или группу в справочник нельзя добавить если выключен режим иерархического списка. Для того, чтобы включить этот режим выберите в меню " Действия" пункт " Иерархический список" и установите этот режим. Посмотреть все результаты поиска похожих
Еще в этой же категории
Момент Времени и Граница, назначение, примеры использования 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.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз В 1С не вводится новый элемент в справочник 0
Новый элемент или группу в справочник нельзя добавить если выключен режим иерархического списка. Для того, чтобы включить этот режим выберите в меню " Действия" пункт " Иерархический список" и установите этот режим. Ввести значение, ввод значения 0
//Пример универсального ввода значения Перем ВыбЗнач; Массив = Новый Массив; Массив.Добавить(Тип("Число")); Массив.Добавить(Тип("Строка")); Массив.Добавить(Тип("Дата")); КЧ = Новый КвалификаторыЧисла(12,2); КС = Новый КвалификаторыСтроки(20 Ввести строку, ввод текста 0
Текст = ""; Подсказка = "Введите текст напоминания"; Если ВвестиСтроку(Текст,Подсказка, 0, истина) Тогда // запомнить текст напоминания КонецЕсли; НК = ""; Если ВвестиСтроку(НК, "Введите код продукции", 40, 1, 9) = 1 Тогда Koд = HK; Ввести число, ввод числа 1
КолВо = 1; Если ВвестиЧисло(КолВо, "Введите количество", 10, 2) Tогда // обработка введенного количество КонецЕсли; Если ВвестиЧисло(Ном, "Введите номер приказа", 5, 0, 10) = 1 Тогда ВыбДок = СоздатьОбъект("Документ.Приказ"); ВыбДок.Найти Посмотреть все результаты поиска похожих
Еще в этой же категории
Момент Времени и Граница, назначение, примеры использования 39
Момент времени: Фирма 1С описывает так: Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методо Функция месяц прописью 11
// пример от glory01 А = Формат(20020820153309, " ДФ=ММММ" ) // А = " Август" А = Формат(ТекущаяДата(), " ДФ=ММММ" ) // А = " Март" Функция МесяцПрописью(НомерМесяца) Экспорт НомерМесяца=Число(НомерМесяца); Если НомерМесяца = 1 Тогда Воз Выбор периода, задать период 8
Как вычислить количество дней между датами 6
Запрос=Новый Запрос(" ВЫБРАТЬ | РАЗНОСТЬДАТ( НачалоПериода, КонецПериода,МЕСЯЦ) КАК Месяцев, | РАЗНОСТЬДАТ( НачалоПериода, КонецПериода,ДЕНЬ) КАК Дней" ); // или КоличествоДней = (ДатаКонец - ДатаНачала) / 60 / 60 / 24; КоличествоДней = ДатаКо Как указать нужную,конкретную дату? 5
Значения данного типа содержит дату григорианского календаря (с 01 января 0001 года) и время с точностью до секунды. Литералы: Строка цифр, заключенная в одинарные кавычки вида: ГГГГММДДччммсс, где: ГГГГ - четыре цифры года (включая тысячелетие Посмотреть все в категории Работа с Датами (Временем)
В 1С значение типа «Дата» – это календарная дата григорианского календаря (с 01 января 0001 года по 31 декабря 3999 год) и время с точностью до 0,1 миллисекунды. Разработчику неизбежно приходится сталкиваться с данным типом, поэтому в этой статье предлагаю ознакомиться с его основными функциями и принципами работы.
«Дата» в модулях 1С
Как инициализировать дату
С помощью литерала встроенного языка
С помощью функции 1С Дата()
Как указать пустую дату
Функции для работы с датой
Получить текущую дату
Получить отдельные части даты
Следует заметить, что пробел в номере года вставляется при установках по умолчанию (подразумевается, что не установлен признак группировки в региональных установках).
Определить дату и время начала некоторого периода из даты
Для решения таких задач существует набор функций НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). В параметр задаётся значение даты начало периода, которого необходимо определить.
Определить дату и время конца некоторого периода из даты
Для получения конца периода из даты, можно использовать специальные функции НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). Параметр принимает значение «нашей даты», аналогично, как и в функции Начало…().
Определить номер недели или дня в году
Определить номер дня в неделе
Как отнять или прибавить к дате в 1С год, месяц, день, час, минуту, секунду
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Чтобы прибавить, вычесть месяц или год правильно использовать функцию ДобавитьМесяц(, ). Если параметру задать отрицательное значение, то число месяцев отнимается.
Формат даты в 1С
Функция Формат(, ). В параметре перечисляются параметры форматирования через символ «;». Возвращаемый тип строка.
Для задания параметра можно воспользоваться «конструктором форматной строки». При написании кода вызвать его не составляет труда. Необходимо только нажать правую кнопку «мыши» и из контекстного меню выбрать одноимённый конструктор.
На вкладке «Дата» задаём нужный нам формат.
Как вызвать диалоговое окно для ввода даты
Не модальный режим:
«Дата» в запросах 1С
Инициализация даты в запросах
Функция ДАТАВРЕМЯ()
Стоит отметить, что параметры данной функции принимают только литералы в отличие от схожей на неё функции для работы с датой в модулях Дата(). Например запись с передачей в функцию полей выборки из временной таблицы ДАТАВРЕМЯ(вт.Год, вт.Месяц, вт.День) выдаст ошибку.
Пустая дата
Текущая дата и работа с условием по дате в запросе
Так же не стоит забывать, что передать в запрос дату можно с помощью параметра. Для указания текущей даты это единственный вариант.
Получить отдельные части даты. Функции: ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТА, СЕКУНДА
В запросе получить отдельные части даты возможно с помощью одноимённых функций ГОД(), КВАРТАЛ(), МЕСЯЦ(), ДЕНЬ(), ЧАС(), МИНУТА(), СЕКУНДА().
Получить начало, конец некоторого периода
Существует две функции для решения таких задач. Соответственно НАЧАЛОПЕРИОДА(, ) и КОНЕЦПЕРИОДА(, ).
Где в параметр указывается «наша дата», а в параметр задаётся значение периода (Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час, Минута).
Аналогично и для функции КОНЕЦПЕРИОДА().
Добавить сдвиг к дате
Для решения таких задач пригодится функция ДОБАВИТЬКДАТЕ(, , ). В параметр задаётся «наша дата», в параметр временной интервал (Год, Полугодие, Месяц и т.д.).
Использование функции РАЗНОСТЬДАТ()
Читайте также: