1с как сделать выбор месяца
В 1С:Предприятии 8.2 нет поля выбора, но для элементов формы вида Поле ввода можно установить свойство РежимВыбораИзСписка в значение Истина . В этом случае поле ввода будет работать как поле выбора и может хранить одно из значений произвольного типа, имеющихся в списке выбора. Сам список значений для выбора задается в свойстве СписокВыбора этого поля.
Эти свойства можно установить в палитре свойств элемента формы Поле ввода , а можно задать программно при создании формы. Например:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список выбора в поле Город будет выглядеть следующим образом:
Демонстрационные примеры с интерактивно и программно сформированным списком выбора реквизита справочника находится в каталоге 1CITS/EXE/FAQ/List. Они выполнены на версии платформы 8.2.9.356.
Существует несколько способов выбора значения из программно сформированного списка значений. Такое обилие вариантов обусловлено различными требованиями к интерфейсу системы.
Давайте рассмотрим основные варианты. Предположим, что у нас есть список значений из которого пользователю нужно выбрать какое-то одно:
А. Выбор непосредственно из списка значений
Самый простой способ выбрать значение — инициировать его выбор через метод СписокЗначений.ВыбратьЭлемент():
Обратите внимание, что метод возвращает не само значение, а объект ЭлементСпискаЗначений . К значению, хранящемуся в элементе, мы можем обратиться через одноименное свойство Значение .
Выглядеть это будет так:
Б. Выбор из выпадающего списка
При использовании этого способа список выбора будет показан не в независимом окне, а с привязкой к элементу формы. Для реализации этого способа воспользуемся стандартным методом формы ВыбратьИзСписка():
Выглядеть это будет так:
В. Выбор из выпадающего меню
Этот способ похож на предыдущий, но список выбора будет показан в виде выпадающего подменю. Этот способ уместнее использовать с элементами формы типа Кнопка. Для реализации этого способа воспользуемся методом формы ВыбратьИзМеню():
« Как стать программистом 1С » Язык 1С » Выпадающий список значений 1С на форме
Выпадающий список значений 1С на форме
Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.
Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.
Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()
Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)
- Включим кнопку выбора списка
- В свойстве «Список выбора» нажмите «…» и введите варианты
- Результат выбора будет сохранен в выбранном реквизите
Выпадающий список значений 1С на форме — Вариант 2)
- Включим кнопку выбора списка
- Добавим обработчик «НачалоВыбораИзСписка»
Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.
В запросах 1С, так же как и во встроенном языке платформы 1С:Предприятие, есть функции для работы с датами. Они помогают упростить преобразования дат в запросах, избежать использования большого количества параметров. Рассмотрим эти функции.
Как задать дату в запросах 1С в виде константы
Запрос . Текст = "ВЫБРАТЬДАТАВРЕМЯ (2016,09,28,12,22,00)" ; // Результат: 28 сентября 2016 12:22:00
Кроме того, в качестве параметров этой функции могут быть указаны только числа в явном виде. Нельзя в качестве параметров указывать значения других функций. Например, такая конструкция работать не будет:
Запрос . Текст = "ВЫБРАТЬДАТАВРЕМЯ (Год (Источник.Дата),09,28,12,22,00)
Из Справочник.Источник КАК Источник" ;
Как получить начало или конец года, полугодия, квартала, месяца, декады, недели, дня, часа, минуты в запросах 1С
Для этого используются соответственно функции:
- НачалоПериода (Дата, Период)
- КонецПериода (Дата, Период)
В качестве параметра Дата передается значение с типом Дата. Параметр Период может принимать одно из следующих значений: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, ДЕКАДА, МЕСЯЦ, КВАРТАЛ, ПОЛУГОДИЕ, ГОД.
Запрос . Текст = "ВЫБРАТЬ
НачалоПериода(ДАТАВРЕМЯ (2016,09,28,12,22,00), ДЕКАДА)" ; // Результат: 21 сентября 2016 0:00:00
Запрос . Текст = "ВЫБРАТЬ
КонецПериода(ДАТАВРЕМЯ (2016,09,28,12,22,00), КВАРТАЛ)" ; // Результат: 30 сентября 2016 23:59:59
Как видно из примеров, в этих функциях можно использовать другие, вложенные, функции.
Как получить в запросах 1С год, день года, квартал, месяц, неделю, день недели, день, час, минуту, секунду из даты
Для этого существуют соответствующие функции, в которые нужно передать дату в качестве параметра.
Запрос . Текст = "ВЫБРАТЬ
ГОД(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 2016
Запрос . Текст = "ВЫБРАТЬ
НЕДЕЛЯ(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 40
Запрос . Текст = "ВЫБРАТЬ
ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 3
Запрос . Текст = "ВЫБРАТЬ
ДЕНЬГОДА(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 272
Запрос . Текст = "ВЫБРАТЬ
ДЕНЬ(ДАТАВРЕМЯ (2016,09,28,12,22,00))" ; // Результат: 28
Как добавить к дате или отнять от даты год, полугодие, квартал, месяц, декаду, неделю, день, час, минуту, секунду в запросах 1С
Для этого используется функция ДобавитьКДате (Дата, Период, Значение).
В качестве параметра Дата передается значение с типом Дата. Параметр Период может принимать одно из следующих значений: СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, ДЕКАДА, МЕСЯЦ, КВАРТАЛ, ПОЛУГОДИЕ, ГОД.
Параметр Значение показывает количество добавляемых периодов. Если период нужно вычесть, то параметр Значение должен быть отрицательным.
Запрос . Текст = "ВЫБРАТЬ
ДобавитьКДате(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ПОЛУГОДИЕ, 1)" ; // Результат: 28 марта 2017 12:22:00
Запрос . Текст = "ВЫБРАТЬ
ДобавитьКДате(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДЕКАДА, -1)" ; // Результат: 18 сентября 2016 12:22:00
Как вычислить разность дат в запросах 1С
Для этого используется функция РазностьДат (Дата1, Дата2, Период).
Параметр Период может принимать одно из следующих значений: СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД. Он показывает, в каких единицах мы хотим получить результат
Запрос . Текст = "ВЫБРАТЬ
РазностьДат(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДАТАВРЕМЯ(2017, 9, 28, 12, 22, 0), КВАРТАЛ)" ; // Результат: 4
Запрос . Текст = "ВЫБРАТЬ
РазностьДат(ДАТАВРЕМЯ(2016, 9, 28, 12, 22, 0), ДАТАВРЕМЯ(2017, 9, 28, 12, 22, 0), Секунда)" ; // Результат: 31 536 000
Во всех функциях, кроме функции ДАТАВРЕМЯ, в качестве параметра Дата может выступать не только конкретное значение даты (константа или параметр запроса), но и поля таблицы источника.
В 1С:Предприятии 8.2 нет поля выбора, но для элементов формы вида Поле ввода можно установить свойство РежимВыбораИзСписка в значение Истина . В этом случае поле ввода будет работать как поле выбора и может хранить одно из значений произвольного типа, имеющихся в списке выбора. Сам список значений для выбора задается в свойстве СписокВыбора этого поля.
Эти свойства можно установить в палитре свойств элемента формы Поле ввода , а можно задать программно при создании формы. Например:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список выбора в поле Город будет выглядеть следующим образом:
Демонстрационные примеры с интерактивно и программно сформированным списком выбора реквизита справочника находится в каталоге 1CITS/EXE/FAQ/List. Они выполнены на версии платформы 8.2.9.356.
1с и web разработка
Часто для удобства пользователей требуется сделать выбор месяца на форме. Как это реализовать для управляемых форм читайте далее
Допустим у нас есть реквизит справочника/документа/обработки «МесяцПроведения» с типом «Дата», в котором мы будем хранить выбранный месяц
Для начала надо создать реквизит формы «Месяц» с типом Строка.
Затем добавить элемент формы (поле) «Месяц», у которого будет путь к данным «Месяц» и установлена галочка «РежимВыбораИзСписка»
И добавим событие «ПриИзменении» созданному элементу со следующим кодом:
Открывает выпадающий список для выбора значения
Синтаксис
Метод ВыбратьИзСписка() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров метода ВыбратьИзСписка() :
Возвращаемое значение
ЭлементСпискаЗначений | — если пользователь выбрал значение |
Неопределено | — если пользователь отказался от выбора |
Описание
Метод ВыбратьИзСписка() Открывает выпадающий список для выбора значения из предложенного списка. Выпадающий список будет расположен около переданного элемента формы или около его активной области.
Доступность
Тонкий клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).
Исторически, сначала был разработан диалог ввода периода для 1С 7.7. Причиной тому послужила утомляемость, проявлявшая себя после многократного использования стандартного диалога. За основу была выбрана форма годичного календаря.
На форму добавлено контекстное меню для выбора некоторых наиболее востребованных периодов. Для работы этого диалога требуются внешние компоненты FormEx и SpreadSheet(Йоксель). Выкладываю упакованную демонстрационную базу данных для версии 7.7. Все включенное в ее состав необходимо, ничего лишнего.
Для выбора произвольного периода дат, сначала нажимается-отпускается клавиша Shift, прощелкивается левой кнопкой мыши (ЛКМ) начальная дата периода; потом опять же ЛКМ прощелкивается конечная дата периода. В зависимости от опции в контекстном меню "Показать выделенный период перед выбором", если она выставлена, период сначала подсвечивается, а потом дополнительный щелчок ЛКМ по выделенному периоду завершает операцию. При неустановленной опции выбор периода осуществляется сразу же, как только будет прощелкнута конечная дата.
Начало периода можно выставить и из контекстного меню, если покажется за-умным использование клавиши Shift.
Диалог для версии 1С 8.3
В версию 1С 8.3 диалог был перенесен из 7.7 почти без изменений, но учтены некоторые стандартные возможности 1С 8.3 (возможность настройки варианта периода). Для удобства добавлены кнопки переходов на предыдущий или следующий период (удобно, если это какое-то энное количество дней, но не год, не квартал, не месяц и не неделя).
Произвольный период выбирается так: правой кнопкой мыши выделяется начальная дата периода, левой - конечная дата периода и на этом диалог закрывается.
При выборе стандартного варианта настройки периода набираем один-два фрагмента наименования, получаем отфильтрованные варианты и осуществляем уже из них окончательный выбор.
Реализован диалог аки общая форма, а не обработка (дико извиняюсь).
Праздничные дни и переносы дат отмечаются в регистре сведений (пример есть).
В демонстрационной конфигурации заведена общая команда, которую достаточно вывести на форму списка документов, регистра накопления (сведений) или форму отчета. Возможно, у вас появятся более удачные варианты использования диалога. Мне, в свое время, на ум пришел именно такой, дабы минимизировать в дальнейшем свои усилия.
В силу всего вышеперечисленного, затрудняюсь представить диалог как внешний отчет.
Читайте также: