1с диалог настройка периода
Часто при работе в базах данных возникает необходимость ввода периода «чего-нибудь».
Традиционно в 1С для этой цели служил специальный системный диалог.
В случае платформы 1С 7.x этот диалог выводится функцией ВвестиПериод () ,
а случае платформы 1С 8.x этот диалог открывается методом Редактировать () объекта “НастройкаПериода” .
Классификация же вариантов периодов, используемых в этом диалоге, заложена ещё в 1С:Бухгалтерия-6.0.
К сожалению в настоящее время на Web-клиенте и тонком клиенте объект “НастройкаПериода” не доступен.
И в этих режимах для ввода периода на безальтернативной основе предлагается
использовать диалог ввода стандартного периода системы компоновки данных.
Вопрос удобства, конечно, является понятием субъективным (и чего греха таить - внушаемым).
Однако я полагаю, что многие считают традиционный диалог настройки периода более удобным.
Реализация решения:
Чтобы как-то компенсировать указанное ограничение платформы и связанную с ней “несправедливость” в подсистему “ViewValues”,
начиная с версий 8.1.1.4 и 8.2.1.4 , включены обработка “EditPeriod ” и используемый ей одноименный общий модуль.
Обработка имеет два интерфейса - обычный и управляемый (управляемый – только в подсистеме версии 8.2.1.4 ).
Это обеспечивает ее работу в различных режимах:
- В Web-клиенте (Рис.1, рис.2, Рис.3, Рис.4);
- В тонком клиенте (Рис.5, рис.6, Рис.7, Рис.8);
- В обычном приложении (Рис.9, рис.10, Рис.11, Рис.12);
Основные формы обработки (Рис.1, Рис.5, Рис.9) - являются тестовыми,
служат для проверки работы объекта “НастройкаПериода” и демонстрации ее собственных возможностей.
Также у обработки есть служебные формы, непосредственно реализующие функционал объекта “НастройкаПериода” .
Обработка максимально точно имитирует поведение системного диалога настройки периода:
- Всем свойствам объекта “НастройкаПериода” соответствуют одноименные реквизиты обработки;
- Всем методам объекта “НастройкаПериода” соответствуют экспортные функции служебных форм обработки;
- Диалоги служебных форм обработки для настройки периода максимально приближены
к системному диалогу по дизайну и поведению при изменении данных;
Имеются также свои особенности:
- Свойства диалога настройки периода в служебных формах обработки доступны не напрямую,
а через реквизит формы “Объект” (смотрите ниже пример использования); - Поскольку служебные перечисления, связанные с объектом “НастройкаПериода” , также не доступны в управляемом приложении,
то вместо их значений в обработке используются строковые мнемокоды в стиле макрокоманд установки периода 1С:Бухгалтерии-6.0.
Так мнемокод “!ДНК” – соответствует варианту периода “День с начала квартала” .
Полный перечень мнемокодов приведен в справочном описании к обработке; - Положение окна диалога ввода периода запоминается при использовании (системный диалог всегда выводится в центре экрана);
- Есть и другие, более тонкие отличия поведения диалога (смотрите справочное описание);
Дополнительные возможности:
- Обработка поддерживает дополнительный режим ввода периода «Редактировать как стандартный период» и
соответствующую ей закладку в диалоге настройки (Рис.4, Рис.8, Рис.12); - Для диалога настройки периода обработки можно задать свой заголовок и тайм-аут ввода.
Истечение тайм-аута выводится в заголовке формы в квадратных скобках (Рис.10); - В диалоге настройки периода обработки можно включать-выключать вывод текущей даты и времени,
а также переключать представление выбранного периода с «обычного» на «финансовый» ; - На закладке “Период” имеется дополнительная опция выбора периода 'С текущей да т ы' / 'По текущую дату' ,
облегчающая выбор периода типа"Год NNNN по текущую дату"(Рис.13);
Общие замечания:
Управляемая форма настройки периода обработки оптимизирована по взаимодействию с сервером.
При ее работе на клиенте в явном виде не используются серверные вызовы (включая внеконтекстные).
Основной функционал обработки вынесен в общий модуль “ EditPeriod ” , который кроме этого предоставляет
экспортный метод Создать () - своего рода «конструктор» для более привычного создания диалога настройки периода.
Пример использования:
НастройкаПериода = EditPeriod . Создать (,,);
НастройкаПериода . Объект . РедактироватьКакИнтервал = Истина;
НастройкаПериода . Объект . РедактироватьКакПериод = Истина;
НастройкаПериода . Объект . РедактироватьКакСтандартныйПериод = Истина;
НастройкаПериода . Объект . ВариантНастройки = "!П" ;
НастройкаПериода . УстановитьПериод ( ДатаНачала , ?( ДатаОкончания = '0001-01-01' , ДатаОкончания , КонецДня ( ДатаОкончания )),Ложь);
НастройкаПериода . Объект . ФинансовыйПериод = Истина;
НастройкаПериода . Объект . ВыводитьТекущуюДату = Истина;
Если НастройкаПериода . Редактировать ( "Ввод периода акта взаиморасчётов:" , 180 ) Тогда
ДатаНачала = НастройкаПериода . ПолучитьДатуНачала ();
ДатаОкончания = НастройкаПериода . ПолучитьДатуОкончания ();
КонецЕсли;
Описание файлов поставки и установки:
В архиве с файлами поставки к статье находятся выгрузки демонстрационных баз подсистемы “ViewValues”
для платформы 1С версий 8.1 и 8.2, в которых можно проверить работу обработки.
Для установки описанного в статье функционала достаточно из конфигураций подсистемы “ViewValues”
указанных версий включить в конфигурацию базы данных обработку “EditPeriod” и используемый ей одноименный общий модуль.
Как заполнить табличную часть формы программно? 6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ; PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц Посмотреть все результаты поиска похожих
Еще в этой же категории
Момент Времени и Граница, назначение, примеры использования 38
Момент времени: Фирма 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); Посмотреть все в категории Работа с Датами (Временем)
Исторически, сначала был разработан диалог ввода периода для 1С 7.7. Причиной тому послужила утомляемость, проявлявшая себя после многократного использования стандартного диалога. За основу была выбрана форма годичного календаря.
На форму добавлено контекстное меню для выбора некоторых наиболее востребованных периодов. Для работы этого диалога требуются внешние компоненты FormEx и SpreadSheet(Йоксель). Выкладываю упакованную демонстрационную базу данных для версии 7.7. Все включенное в ее состав необходимо, ничего лишнего.
Для выбора произвольного периода дат, сначала нажимается-отпускается клавиша Shift, прощелкивается левой кнопкой мыши (ЛКМ) начальная дата периода; потом опять же ЛКМ прощелкивается конечная дата периода. В зависимости от опции в контекстном меню "Показать выделенный период перед выбором", если она выставлена, период сначала подсвечивается, а потом дополнительный щелчок ЛКМ по выделенному периоду завершает операцию. При неустановленной опции выбор периода осуществляется сразу же, как только будет прощелкнута конечная дата.
Начало периода можно выставить и из контекстного меню, если покажется за-умным использование клавиши Shift.
Диалог для версии 1С 8.3
В версию 1С 8.3 диалог был перенесен из 7.7 почти без изменений, но учтены некоторые стандартные возможности 1С 8.3 (возможность настройки варианта периода). Для удобства добавлены кнопки переходов на предыдущий или следующий период (удобно, если это какое-то энное количество дней, но не год, не квартал, не месяц и не неделя).
Произвольный период выбирается так: правой кнопкой мыши выделяется начальная дата периода, левой - конечная дата периода и на этом диалог закрывается.
При выборе стандартного варианта настройки периода набираем один-два фрагмента наименования, получаем отфильтрованные варианты и осуществляем уже из них окончательный выбор.
Реализован диалог аки общая форма, а не обработка (дико извиняюсь).
Праздничные дни и переносы дат отмечаются в регистре сведений (пример есть).
В демонстрационной конфигурации заведена общая команда, которую достаточно вывести на форму списка документов, регистра накопления (сведений) или форму отчета. Возможно, у вас появятся более удачные варианты использования диалога. Мне, в свое время, на ум пришел именно такой, дабы минимизировать в дальнейшем свои усилия.
В силу всего вышеперечисленного, затрудняюсь представить диалог как внешний отчет.
(0) я просто в шоке от таких публикаций. А сделайте еще публикации с "ПоказатьВопрос" и "ПоказатьПредупреждение". А еще можно вообще весь СП выложить.
(1) Adeptus, лучше, но не канает в УФ )))
А еще и обработку скачивать с 2мя реквизитами и 12ю строками текста - вообще превосходно.Я вот так сделал:
- в обработке определено 2 реквизита Дата1 и Дата2
- в УФ форме добавлена кнопка и команда формы
. по-моему просто и удобно
Anna_arbuz; AlisultanovZakir; YA_420766153; Vil1983; BotMan4; Acort; criptid; SadrA; user706520_bichkov; buy_sale; link_l; sapervodichka; transt; N1LL; sanfoto; igormiro; DrAku1a; as-lubava; MenZurKa; wowik; user623969_dusa; cheburashka; Nigelist; AlMedvedev; ekomova; MRAK; nikivr; AlkB; ehcore; unichkin; free-lancer-2018; dj_serega; mnemchinov; RSConsulting; nick_krsk; + 35 – Ответить (5) Nuuq, спасибо! Изменил немного код для использования в режиме модальности:Anna_arbuz; Egovigor; AlisultanovZakir; nissti; tolyan_ekb; assa; Marka_; hydra88; buy_sale; SadrA; link_l; sapervodichka; as-lubava; Sonnya1909; ncd.art; KotBegemot77; matashin; m_aster; user620387_niols; testnv0; wowik; DimaShustov; user1090556; vre; Vida; klinval; cheburashka; Xershi; nekitsazon; &rew; dour-dead; MRAK; zemochka; Craig; irvin12345; + 35 – Ответить (8) ehcore, Сначала сделал то же самое, а потом увидел ваш комментарий.
Ваш вариант все равно лучше, тк не везде есть общая форма выбора периода, а в моём случае - выбирает дату а не период (ЗУП ГУ)
Спасибо большое! Как раз нужна обработка, используемая в БУХ и ЗУП. Так вот общей формы "ВыборСтандартногоПериода", которая есть в БУХ, в ЗУПе нет, а "ВыборПериода" - что-то не осилила, как его прикрутить. Он в ЗУП для ПФР только, так-то везде месяц и все..
В обычных формах я всегда вот так использую
а в управляемых впервые делаю. Спасибо!
Использовал код (8). И обнаружил странное поведение формы. Если открыть форму, не выбирать период, закрыть форму - все ок. А вот если выбрать период, и закрыть форму - то при закрытии программа заходить в "Процедура ВыполнитьПослеВыбораПериода(Результат, Параметры) Экспорт", почему. Отличие хорошая разработка! Удобно пример кода, очень благодарить!Просмотры 48957
Загрузки 68
Рейтинг 19
Создание 26.06.14 11:52
Обновление 26.06.14 11:52
№ Публикации 289236
Конфигурация Конфигурации 1cv8
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
Курс представляет собой отработанные и проверенные личным опытом основателей Школы инструменты решения вопросов с подчиненными, коллегами, заказчиком и руководством.См. также
Альтернативный способ добавления элементов и реквизитов на формы Промо
Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.
1 стартмани
09.09.2019 18020 35 bmk74 7
Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)
Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.
1 стартмани
17.10.2021 2834 6 Патриот 48
Самые красивые шахматы для 1С на управляемых формах
Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.
5 стартмани
18.02.2021 5752 13 compmir 30
Интерактивная справка по объектам 1С (подключаемое расширение)
База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.
3 стартмани
29.09.2020 16007 84 sapervodichka 47
Расширенная настройка динамического списка УФ Промо
Открывая управляемую форму выбора и не увидев там видимых в форме списка элементов, часто хочется узнать причину их отсутствия там, т. е. какой наложен отбор. Но стандартная настройка списка управляемой формы показывает только пользовательские настройки, скрывая от пользователя фиксированный отбор. Предлагаю вам расширение конфигурации с расширенной настройкой динамического списка, отображающей пользователю кроме пользовательских настроек еще фиксированные.
Читайте также: