Неудобно спать на потолке, одеяло спадает. А остальное - все удобно!!!
...мнение прапорщика РККА.
Das ist schweinen, buggy, gluhten, nicht verstehen, nicht einfaches programmen!!!
...мнение фюрера 3-го рейха.
Предыстория вопроса:
Часто при работ программу 1С е в базах данных возникает необходимость ввода периода «чего-нибудь».
Традиционно в 1С для этой цели служил специальный системный диалог.
В случае платфорпечатную версиюмы 1С 7.x этот диалог выводится функцией ВвестиПериод(),
а случае платфорпечатную версиюмы 1С 8.x этот диалог открывается методом Редактировать() объекта “НастройкаПериода”.
Классификация же вариантов периодов, используемых в этом диалоге, заложена ещё в 1С:Бухгалтерия-6.0.
К сожалению в настоящее время на Web-клиенте и тонком клиенте объект “НастройкаПериода” не доступен.
И в этих режимах для ввода периода на безальтернативной основе предлагается
использовать диалог ввода стандартного периода системы компоновки данных.
Вопрос удобства, конечно, является понятием субъективным (и чего греха таить - внушаемым).
Однако я полагаю, что многие считают традиционный диалог настройки периода более удобным.
Реализация решения:
Чтобы как-то компенсировать указанное ограничение платфорпечатную версиюмы и связанную с ней “несправедливость” в подсистему “ViewValues”,
начиная с версий 8.1.1.4 и 8.2.1.4, включены обраб1Сот программу 1С ка “EditPeriod” и используемый ей одноименный общий модуль.
Обработ программу 1С ка имеет два интерфейса - обычный и управляемый (управляемый – только в подсистеме версии 8.2.1.4).
Это обеспечивает ее работ программу 1С у в различных режимах:
- В Web-клиенте (Рис.1, рис.2, Рис.3, Рис.4);
- В тонком клиенте (Рис.5, рис.6, Рис.7, Рис.8);
- В обычном приложении (Рис.9, рис.10, Рис.11, Рис.12);
Основные формы обраб1Сот программу 1С ки (Рис.1, Рис.5, Рис.9) - являются тестовыми,
служат для проверки работ программу 1С ы объекта “НастройкаПериода” и демонстрации ее собственных возможностей.
Также у обраб1Сот программу 1С ки есть служебные формы, непосредственно реализующие функционал объекта “НастройкаПериода”.
Обработ программу 1С ка максимально точно имитирует поведение системного диалога настройки периода:
- Всем свойствам объекта “НастройкаПериода” соответствуют одноименные реквизиты обраб1Сот программу 1С ки;
- Всем методам объекта “НастройкаПериода” соответствуют экспортные функции служебных форм обраб1Сот программу 1С ки;
- Диалоги служебных форм обраб1Сот программу 1С ки для настройки периода максимально приближены
к системному диалогу по дизайну и поведению при изменении данных;
Имеются также свои особенности:
- Свойства диалога настройки периода в служебных формах обраб1Сот программу 1С ки доступны не напрямую,
а через реквизит формы “Объект” (смотрите ниже пример использования); - Поскольку служебные перечисления, связанные с объектом “НастройкаПериода”, также не доступны в управляемом приложении,
то вместо их значений в обраб1Сот программу 1С ке используются строковые мнемокоды в стиле макрокоманд установки периода 1С:Бухгалтерии-6.0.
Так мнемокод “!ДНК” – соответствует варианту периода “День с начала квартала”.
Полный перечень мнемокодов приведен в справоч обработкином описании к обраб1Сот программу 1С ке; - Положение окна диалога ввода периода запоминается при использовании (системный диалог всегда выводится в центре экрана);
- Есть и другие, более тонкие отличия поведения диалога (смотрите справоч обработкиное описание);
Дополнительные возможности:
- Обработ программу 1С ка поддерживает дополнительный режим ввода периода «Редактировать как стандартный период» и
соответствующую ей закладку в диалоге настройки (Рис.4, Рис.8, Рис.12); - Для диалога настройки периода обраб1Сот программу 1С ки можно задать свой заголовок и тайм-аут ввода.
Истечение тайм-аута выводится в заголовке формы в квадратных скобках (Рис.10); - В диалоге настройки периода обраб1Сот программу 1С ки можно включать-выключать вывод текущей даты и времени,
а также переключать представление выбранного периода с «обычного» на «финансовый»; - На закладке “Период” имеется дополнительная опция выбора периода 'С текущей даты' / 'По текущую дату',
облегчающая выбор периода типа "Год NNNN по текущую дату" (Рис.13);
Общие замечания:
Управляемая форма настройки периода обраб1Сот программу 1С ки оптимизирована по взаимодействию с сервером.
При ее работ программу 1С е на клиенте в явном виде не используются серверные вызовы (включая внеконтекстные).
Основной функционал обраб1Сот программу 1С ки вынесен в общий модуль “EditPeriod”, который кроме этого предоставляет
экспортный метод Создать() - своего рода «конструктор» для более привычного создания диалога настройки периода.
Пример использования:
НастройкаПериода = EditPeriod.Создать(,,);
НастройкаПериода.Объект.РедактироватьКакИнтервал = Истина;
НастройкаПериода.Объект.РедактироватьКакПериод = Истина;
НастройкаПериода.Объект.РедактироватьКакСтандартныйПериод = Истина;
НастройкаПериода.Объект.ВариантНастройки = "!П";
НастройкаПериода.УстановитьПериод(ДатаНачала, ?(ДатаОкончания='0001-01-01', ДатаОкончания, Конец Тарифы на абонементДня(ДатаОкончания)),Ложь);
НастройкаПериода.Объект.ФинансовыйПериод = Истина;
НастройкаПериода.Объект.ВыводитьТекущуюДату = Истина;
Если НастройкаПериода.Редактировать("Ввод периода акта взаиморасчётов:", 180) Тогда
ДатаНачала = НастройкаПериода.ПолучитьДатуНачала();
ДатаОкончания = НастройкаПериода.ПолучитьДатуОкончания();
Конец Тарифы на абонементЕсли;
Описание файлов поставки и установки:
В архиве с файлами поставки к статье находятся выгрузки демонстрационных баз подсистемы “ViewValues”
для платфорпечатную версиюмы 1С версий 8.1 и 8.2, в которых можно проверить работ программу 1С у обраб1Сот программу 1С ки.
Для установки описанного в статье функционала достаточно из конфигураций подсистемы “ViewValues”
указанных версий включить в конфигурацию базы данных обраб1Сот программу 1С ку “EditPeriod” и используемый ей одноименный общий модуль.
Имеется похожая публикация:
http://infostart.ru/public/175213/ (автор nnn).
Обе разработ программу 1С ки велись независимо примерно в одно время. Но nnn опубликовал свою работ программу 1С у раньше.
Выложенная в его статье обраб1Сот программу 1С ка больше ориентирована на выбор массива интервалов дат с помощью отметки в поле календаря,
однако она также имеет «бонусные» закладки “Интервал” и “Период”,
аналогичные одноименным закладкам системного диалога настройки периода.
Скриншоты
1) Тестовая форма обработки (Web-клиент)
2) Диалог ввода периода обработки в режиме "Редактировать как интервал" (Web-клиент)
3) Диалог ввода периода обработки в режиме "Редактировать как период" (Web-клиент)
4) Диалог ввода периода обработки в режиме "Редактировать как стандартный период" (Web-клиент)
5) Тестовая форма обработки (Тонкий клиент)
6) Диалог ввода периода обработки в режиме "Редактировать как интервал" (Тонкий клиент)
7) Диалог ввода периода обработки в режиме "Редактировать как период" (Тонкий клиент)
8) Диалог ввода периода обработки в режиме "Редактировать как стандартный период" (Тонкий клиент)
9) Тестовая форма обработки (Обычное приложение)
10) Диалог ввода периода обработки в режиме "Редактировать как интервал" (Обычное приложение)
11) Диалог ввода периода обработки в режиме "Редактировать как период" (Обычное приложение)
12) Диалог ввода периода обработки в режиме "Редактировать как стандартный период" (Обычное приложение)
13) Выбор периода "1913 год по текущую дату" спомощью дополнительной опции выбора