Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

В режиме «1С:Предприятие». Проверка заполнения реквизитов. Автоматическая проверка заполнения. В режиме «Конфигуратор». Если очистить свойство Форма выбора для реквизита Мастер в документе ОказаниеУслуги




В режиме «1С: Предприятие»

Запустим «1С: Предприятие» в режиме отладки и откроем один из документов Оказание услуги. Нажмем кнопку выбора в поле Мастер и в выпадающем списке, открывшемся под полем ввода, нажмем ссылку Показать все.

Откроется созданная нами произвольная форма с заголовком Выбор сотрудников (рис. 27. 33).

Таким образом, поскольку мы задали свойство Форма выбора на уровне реквизита Мастер, а не на уровне отдельной формы, в любой форме документа ОказаниеУслуги, где используется данный реквизит, при выборе в поле Мастер будет открываться наша специ- альная форма.


 

Если очистить свойство Форма выбора для реквизита Мастер в документе ОказаниеУслуги, то в режиме 1С: Предприятие при выборе в поле Мастер будет открываться основная форма выбора справоч- ника Сотрудники, автоматически сгенерированная системой.

 

Проверка заполнения реквизитов

Для реквизитов объектов конфигурации существует возможность как автоматической, так и программной проверки их заполнения. Причем делается это не на уровне форм, а на уровне свойств рекви- зитов или в модуле объекта, к которому относится данный реквизит. Таким образом, проверка заполнения реквизита будет производиться во всех формах, где используется этот реквизит.

 

Автоматическая проверка заполнения

В режиме «Конфигуратор»

Для примера рассмотрим объект конфигурации Документ Оказа- ниеУслуги. Допустим, нам нужно контролировать заполнение реквизита НаборСвойств табличной части этого документа.

Откроем окно редактирования объекта конфигурации Документ ОказаниеУслуги. Вызовем палитру свойств реквизита табличной части НаборСвойств и установим свойство Проверка заполнения в значение Выдавать ошибку.


В режиме «1С: Предприятие»

Запустим «1С: Предприятие» в режиме отладки и откроем документ Оказание услуги № ЦБ000000001. В табличной части этого документа содержится одна строка с услугой Диагностика, для которой колонка Набор свойств не заполнена. При проведении этого документа будет выдано сообщение об ошибке, и документ не будет проведен (рис. 27. 35).

 

 

Программная проверка заполнения

В режиме «Конфигуратор»

Иногда бывает нужно самостоятельно производить проверку запол- нения реквизита в соответствии с программной логикой. В этом случае, если для реквизита установлено свойство Проверка заполнения в значение Выдавать ошибку, нужно удалить этот реквизит из массива проверяемых реквизитов и выполнить проверку программным путем. Или же если для реквизита не установлена проверка заполнения, можно программно добавить реквизит в массив проверяемых рекви- зитов.


Программная проверка заполнения объектов конфигурации выпол- няется в обработчике ОбработкаПроверкиЗаполнения(), который нужно поместить в модуле объекта. Этот обработчик вызывается автоматически при сохранении любой формы или при проведении документов. Программную проверку объектов интерактивного ввода нужно делать именно в этом обработчике, а не при записи объекта.

Откроем модуль документа ОказаниеУслуги и поместим в нем следующую процедуру (листинг 27. 4).

листинг 27. 4. Обработчик события «ОбработкаПроверкиЗаполнения»

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

Индекс = ПроверяемыеРеквизиты. Найти(" ПереченьНоменклатуры. НаборСвойств" ); Если Индекс < > Неопределено Тогда

ПроверяемыеРеквизиты. Удалить(Индекс); КонецЕсли;

Индекс = 0;

Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл Если ТекСтрокаПереченьНоменклатуры. Номенклатура. ВидНоменклатуры =

Перечисления. ВидыНоменклатуры. Материал Тогда Если Не ЗначениеЗаполнено(ТекСтрокаПереченьНоменклатуры. НаборСвойств)

Тогда

Сообщение = Новый СообщениеПользователю();

Сообщение. Текст = " В строке " + Строка(Индекс+1) +" списка Перечень номенклатуры не заполнена колонка Набор свойств";

Сообщение. Поле = " ПереченьНоменклатуры[" + Строка(Индекс)

+ " ]. НаборСвойств"; Сообщение. УстановитьДанные(ЭтотОбъект); Сообщение. Сообщить();

Отказ = Истина; КонецЕсли;

КонецЕсли;

Индекс = Индекс + 1; КонецЦикла;

КонецПроцедуры

Сначала мы находим реквизит табличной части НаборСвойств в массиве ПроверяемыеРеквизиты. Этот массив передается в обра- ботчик и содержит массив проверяемых реквизитов, которым мы установили свойство Проверка заполнения в значение Выдавать ошибку во время разработки конфигурации. Если он найден, то удаляем его, так как мы будем выполнять проверку самостоятельно.

Затем мы в цикле обходим строки табличной части документа и формируем сообщения об ошибке только в том случае, если


 

 

номенклатура в табличной части является материалом и для нее не заполнена колонка НаборСвойств.

Параметр Отказ мы устанавливаем в значение Истина. Это значит, что документ не будет проведен, если найден хоть один незаполненный реквизит НаборСвойств для номенклатуры, являющейся материалом. Если этот параметр закомментировать, сообщения об ошибке будут выдаваться, но документ будет проведен.

Для упрощения примера мы опять здесь используем обращение ПереченьНоменклатуры. Номенклатура. ВидНоменклатуры, хотя опти- мальнее использовать запрос. Об этом подробно рассказывалось на занятии № 14 (стр. 417), поэтому мы не будем здесь рассматри- вать этот вопрос.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...