1с стандартнаяобработка что это
ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Например, я создаю в документе табличную часть и одному из реквизитов указываю тип: ПеречислениеСсылка.ИмяПеречисления.
При работе с этим документом, при выборе значения перечисления, срабатывает обработчик ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка), находящийся в модуле менеджера Перечисления.
Для таких особенных случаев у менеджеров прикладных объектов конфигурации существуют методы ПолучитьДанныеВыбора(). Эти методы полностью имитируют формирование списка выбора платформой, вплоть до вызова события Обработка получения данных выбора.
Такой метод есть и в глобальном контексте. В его параметре нужно указывать тип объекта, для которого он должен быть вызван.
В использовании этих методов нет ничего сложного, за исключением того случая, когда этот метод вызывается в обработчике Обработка получения данных выбора. Если не предпринять специальных действий, это приведет к бесконечной рекурсии. Но от нее можно избавиться довольно простым способом.
Для защиты от рекурсии перед вызовом метода ПолучитьДанныеВыбора() в структуру параметров будем добавлять служебный параметр с ключом Рекурсия.
Весь код, написанный в обработчике, будем выполнять только в том случае, если в параметрах отсутствует элемент Рекурсия, т. е. при первом «заходе» в этот обработчик.
Т.е. программно вызываете обработчик ОбработкаПолученияДанныхВыбора с помощью ПолучитьДанныеВыбора() и там уже либо полностью формируете список сами, либо дополняете стандартный список нужными элементами.
СтандартнаяОбработка в процедуре ПриСозданииНаСервере
Все вроде хорошо. Вызываем эту форму и. выбор элементов доступен. Как будто ничего в коде и не писали.
Теперь изменяем код:
Все вроде хорошо. Вызываем эту форму и. выбор элементов доступен. Как будто ничего в коде и не писали.
Теперь изменяем код:
работает только, если СтандартнаяОбработка =ложь;
, СтандартнуюОбработку оставил без изменений (истина), но список не виден. С чем это связано? Хотя Ваш пример работает исправно в зависимости от значения СтандартнаяОбработка.
Получается, если брать в пример Список формы, то это актуально для тех свойств, что выделены на скриншоте?
почитайте синтаксис помощник.
если вопрос будет актуальным, то, извините, это как 2*2 = 4
Тип: Булево.
Признак отказа от создания формы. Если в теле процедуры-обработчика установить данному параметру значение Истина, то форма создана не будет.
Значение по умолчанию: Ложь.
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:
Возникает на сервере при создании формы.
Это я уже читал. Вопрос был, что подразумевается под «стандартной обработкой события» именно в процедуре ПриСозданииНаСервере. Что она отменяет.
Обработчик события ОбработкаЗаполнения
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. В случае если в силу каких-либо условий необходимо ограничивать ввод на основании по команде «Создать на основании», то такую проверку следует выполнять в обработчике ОбработкаЗаполнения модуля объекта (набора записей). Например, это могут быть проверки вида:
2. Для оповещения пользователя о причинах отказа, в обработчике ОбработкаЗаполнения следует использовать исключения:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип(«СправочникСсылка.Сотрудники») Тогда
Если ПолучитьЗначениеРеквизита(ДанныеЗаполнения, «ЭтоГруппа») = Истина Тогда
ВызватьИсключение «Ввод приказа о приеме на основании группы сотрудников невозможен!
|Выберите сотрудника. Для раскрытия группы используйте клавиши Ctrl и стрелку вниз»;
КонецЕсли;
// обработка заполнения объекта по данным заполнения
При этом не рекомендуются какие-либо иные решения для подобных проверок. В частности, не следует создавать дополнительные команды для ввода на основании и размещать проверки в обработчиках этих команд.
Методическая рекомендация (полезный совет)
3. Рекомендуется придерживаться следующей логической структуры обработчика ОбработкаЗаполнения (отдельные шаги могут быть пропущены):
3.2. Выполнение общего заполнения, с целью заполнить значениями по умолчанию реквизиты, которые не были заполнены специальным заполнением. При этом необходимо предварительно проверять реквизит на заполненность.
Если Не ЗначениеЗаполнено(Подразделение) Тогда
Подразделение = ЗначениеНастроекПовтИсп.ПодразделениеПоУмолчанию();
КонецЕсли;
Выполнение данной рекомендации позволит уменьшить количество логических ошибок заполнения и повысит читаемость кода.
Обработчики событий ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления
Область применения: управляемое приложение, мобильное приложение.
1. С помощью данных обработчиков модуля менеджера объекта можно переопределить представление объекта информационной базы, которое выводится в полях форм и в списках.
Пример реализации:
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
Поля.Добавить(«Наименование»);
Поля.Добавить(«Дата»);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
2. Обработчики вызываются при любой необходимости получения представления какого-либо объекта информационной базы. Поэтому избыточные данные или неправильный выбор данных для формирования представления могут привести к существенному замедлению работы системы.
Также не следует выполнять в этих обработчиках запросы или получение объектов информационной базы (в том числе, запрещены обращения к реквизитам объектов ссылочных типов через точку, что приводит к чтению всего объекта целиком из базы данных). Также нежелательно использовать получение представления и реквизитов ссылок.
Эти требования также справедливы при разработке планов обмена для синхронизации с другими программами (не РИБ, по правилам конвертации) с помощью подсистемы «Обмен данными» Библиотеки стандартных подсистем.
Например, недопустимо обращаться к предопределенным элементам, которые еще могли быть не загружены в базу или, наоборот, уже удалены в ходе обмена данными:
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ВидОбразования = Справочники.ВидыОбразованияФизическихЛиц.ПослевузовскоеОбразование Тогда
Представление = НСтр(«ru = ‘Послевузовское образование'»);
Иначе
.
4. При реализации обработчиков следует также учитывать требования о поддержке толстого клиента, управляемое приложение, клиент-сервер.
Создание документа в 1С с возможностью подключения дополнительных обработок по заполнению табличных частей и внешних печатных форм
К публикации приложена подробная инструкция. Надеюсь, что публикация будет полезна и поможет быстро добавить необходимые процедуры и переменные в новый документ, чтобы к нему, как и к типовому можно было подключить внешние обработки по заполнению табличных частей и внешние печатные формы.
1. Вы добавляете документ в базу. В документе создаете реквизиты и табличную часть. Имя табличной части и ее командной панели – все, чем будет отличаться ваш модуль от показанного ниже в части данного функционала.
2. Добавляете переменные в модуль формы.
Перем мДеревоМакетов; // Хранит дерево макетов печатных форм
Перем мПодменюПечати; // Хранит элемент управления подменю печати
Перем мПечатьПоУмолчанию; // Хранит элемент управления кнопку печать по умолчанию
Перем мКнопкиЗаполненияТЧ; // Хранит дерево кнопок подменю заполнение ТЧ
3. Процедура «ПередОткрытием» должна содержать вызов двух процедур.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
// Установка кнопок печати
// Установка кнопок заполнение ТЧ
4. Добовляете процедуры, которые управляют кнопками по заполнению табличных частей.
СоответствиеТЧ = Новый Соответствие;
СоответствиеТЧ, Новый Действие(«НажатиеНаДополнительнуюКнопкуЗаполненияТЧ»));
5. Добавляете процедуры управления кнопками печати доп. печатных форм.
мДеревоМакетов = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(Ссылка, Неопределено, Новый Действие(«ОсновныеДействияФормыПечать»),
УниверсальныеМеханизмы.УстановитьПодменюПечати (мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов);
УниверсальныеМеханизмы.УстановитьПечатьПоУмолчанию(мПечатьПоУмолчанию, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов,
Если Не мПодменюПечати = Неопределено Тогда
УниверсальныеМеханизмы.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);
УниверсальныеМеханизмы.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);
Если УниверсальныеМеханизмы.НазначитьКнопкуПечатиПоУмолчанию(мДеревоМакетов, Метаданные().Имя) Тогда
6. Теперь к вашему документу, как и к типовому, можно добавлять дополнительные печатные формы и обработки по заполнению табличных частей. Это бывает очень полезно, пока функционал документа еще не отработан. Ведь теперь вы можете менять его не изменяя конфигурацию, а лишь изменяя внешние обработки.