Обращение к свойству глобального контекста РабочаяДата
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Свойство глобального контекста РабочаяДата не доступно на сервере, и во внешнем соединении.
Соответственно, обращение к данному свойству, не ограниченное соответствующими директивами
препроцессора, в общих модулях, а также в модулях объектов приводят к ошибкам компиляции
данных модулей на сервере и во внешнем соединении.

Для единообразия используемого кода, а также минимизации установки директив препроцессора,
во всех случаях обращения к свойству РабочаяДата (в том числе и в модулях форм с целью
упрощения выявления ошибок) следует применять функцию ПолучитьРабочуюДату().

Данная функция должна быть определена в одном из общих модулей конфигурации, для которого
установлены признаки компиляции: «Клиент», «Сервер», «Внешнее соединение».

Функция ПолучитьРабочуюДату() Экспорт #Если Клиент Тогда Дата = РабочаяДата; #Иначе Дата = ТекущаяДата(); #КонецЕсли Возврат Дата; КонецФункции // ПолучитьРабочуюДату()

 

Пример:

Неправильно: Запрос.УстановитьПараметр("РабочаяДата",КонецДня(РабочаяДата));

 

Правильно: Запрос.УстановитьПараметр("РабочаяДата",КонецДня(ПолучитьРабочуюДату()));

 

Копирование строк между таблицами значений (табличными частями и т.п.) произвольной структуры

При копировании строк между различными таблицами значений (табличными частями и т.п.)
со схожим составом колонок следует использовать метод глобального контекста ЗаполнитьЗначенияСвойств().

Алгоритмы, использующие данный метод значительно эффективнее применяемого ранее многократного
перебора колонок таблицы значений, выполняемого для получения их состава.

Неправильно:

Для каждого СтрокаТаблицыИсточника Из ТаблицаИсточник Цикл СтрокаТаблицыПриемника = ТаблицаПриемник.Добавить(); Для каждого Колонка Из ТаблицаПриемник.Колонки Цикл КолонкаТаблицыИсточника = ТаблицаИсточник.Колонки.Найти(Колонка.Имя); Если КолонкаТаблицыИсточника <> Неопределено Тогда СтрокаТаблицыПриемника[Колонка.Имя] = СтрокаТаблицыИсточника[Колонка.Имя]; КонецЕсли; КонецЦикла; КонецЦикла;


Правильно:

Для каждого СтрокаТаблицыИсточника Из ТаблицаИсточник Цикл СтрокаТаблицыПриемника = ТаблицаПриемник.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника); КонецЦикла;

 

Использование объекта "НастройкаПериода"

Для выбора периода рекомендуется использовать объект "НастройкаПериода".

В случае, когда период указывается непосредствено при выполнении действия,например, при заполненении документа, рекомендуется использовать следующий алгоритм для выбора периода:

//////////////////////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ // Диалог настройки периода Перем мНастройкаПериода; //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ // Процедура - обработчик события "ПриОткрытии" формы // Процедура ПриОткрытии() // Установить настройку периода по умолчанию // Для корректной работы диалога необходимо передовать дату окончания на конец дня мНастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период; мНастройкаПериода.УстановитьПериод(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ДЕЙСТВИЯ КОМАНДНЫХ ПАНЕЛЕЙ ФОРМЫ // Процедура - обработчик события заполнения документа // Процедура КнопкаВыполнитьНажатие(Кнопка) Если мНастройкаПериода.Редактировать() Тогда // Вызвать функцию заполнения ВыполнитьНашуПроцедуру(мНастройкаПериода.ПолучитьДатуНачала(), мНастройкаПериода.ПолучитьДатуОкончания()); КонецЕсли; КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ мНастройкаПериода = Новый НастройкаПериода;

 

Пример выбора периода можно посмотреть в обработке ВыборПериодаПередВыполнением.epf (на диске в директории 1CIts\EXE\Razrabotka\ВыборПериодаПередВыполнением)
(скопировать)


В случае, когда период редактируется в форме, например в форме отчета или обработки, рекомендуется использовать следующий алгоритм для выбора периода:

 

//////////////////////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ // Диалог настройки периода Перем мНастройкаПериода; //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ // Процедура - обработчик события "ПриОткрытии" формы // Процедура ПриОткрытии() // Установить настройку периода по умолчанию мНастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период; ДатаНач = НачалоМесяца(ТекущаяДата()); ДатаКон = КонецМесяца(ТекущаяДата()); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ // Процедура - обработчик события нажатия на кнопку выбора периода Процедура ВыбПериодНажатие(Элемент) мНастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период; мНастройкаПериода.УстановитьПериод(ДатаНач, КонецДня(ДатаКон)); Если мНастройкаПериода.Редактировать() Тогда ДатаНач = мНастройкаПериода.ПолучитьДатуНачала(); ДатаКон = мНастройкаПериода.ПолучитьДатуОкончания(); КонецЕсли; КонецПроцедуры // ВыбПериодНажатие() //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ мНастройкаПериода = Новый НастройкаПериода;

 

Пример выбора периода можно посмотреть в обработке ВыборПериодаВФорме.epf (на диске в директории 1CIts\EXE\Razrabotka\ВыборПериодаВФорме)
(скопировать)

 

 













Дата: 2018-11-18, просмотров: 339.