Доброго дня, коллеги!
Далеко не все свойства реквизитов документа являются расширяемыми. В качестве альтернативного варианта можно рассмотреть программное изменение значений свойств в расширении. Именно такой вариант тренер предложил слушателю в рамках темы “Доработка управляемых форм в расширениях” курса «Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки».
Вопрос
Здравствуйте, вопрос следующий. В документе в табличной части есть реквизит Характеристика со свойством “Проверка заполнения”, значение которого установлено как “Выдавать ошибку”. Перенес этот реквизит в расширение, но свойства этого реквизита не доступны для редактирования. Хотел для него в расширении проставить значение “Не проверять”.
Ответ
Добрый день! Вы не сможете поменять свойство “Проверка заполнения” в расширении у заимствованного реквизита, но можете изменить обработку ОбработкаПроверкиЗаполнения() в модуле объекта через расширение, так чтобы реквизит, даже не заимствованный, не проверялся. Вот пример кода:
ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("ДенежныеСредства.Касса"); Если ИндексПоляПоставщик <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); КонецЕсли;
Это пример разобранного вопроса из Мастер-группы курса
Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки.
Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки.
Описание курса и примеры видео
Добрый не подскажите, как сделать проверку поля, чтобы оно при записи выдавало сообщение (Поле не заполнено), но при этом тем не менее документ записывался? Вот код
Процедура ПроверитьЗаполнениеКонтактныхЛиц(Отказ)
Для Каждого ДанныеКонтактногоЛица Из ДанныеКонтактныхЛиц Цикл
Если ПустаяСтрока(ДанныеКонтактногоЛица.Наименование) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр(“ru = ‘Вы забыли заполнить поле ФИО. ‘”);
Сообщение.Поле = “ФИО”;
Сообщение.Сообщить();
Отказ = Истина;
Продолжить;
КонецЕсли;
КонецЦикла;
Добрый день!
Не рекомендуется использовать такой вариант при работе с управляемыми формами. Дело в том, что на форме документа есть кнопка Провести и закрыть (или Записать и закрыть), при нажатии на которую форма документа закроется, сформированное сообщение пользователь просто не увидит.
Поэтому если нужно выдать сообщение, то лучше отменять проведение или запись документа, выставляя флаг Отказ в значение Истина.
В ЗУП хочу отменить проверку заполнения таб части НачислениеОценочныхОбязательствПоОтпускам.РасчетРезерваОтпусков
Добавил в расширении процедуру &Вместо(“ОбработкаПроверкиЗаполнения”)
ПроверяемыеРеквизиты = Новый Массив;
Отказ = Ложь;
Все равно ругается , что нельзя проводить,т.к. таб часть не заполнена. Как так?
Отладчиком вижу, что там код проходит.
Добрый день!
Проверки также могут быть реализованы в процедурах ПередЗаписью или ОбработкаПроведения. В них тоже параметр Отказ может быть выставлен в значение Истина. Проверьте такой вариант.
Спасибо за ответ.
Я использовал отладчик – делал замер и смотрел где выполняется код. Так вот код выполнялся ТОЛЬКО в процедурах расширения. При этом одна из процедур находилась в общем модуле. По идее где то должна быть ссылка на эту процедуру, но в отладчике ее не было.
Последнее время замечаю, что отладчик выдает информацию, что выполнялся код комментария. Наверно глюки какие.
Если будет время попробую разобраться. Я пока вышел другим способом из затруднения.
Это ненормально, что отладчик позиционируется не на той строке кода, которую на самом деле выполняет.
Можно попробовать закрыть все клиентские приложения, работающие с этой базой, перезапустить службу сервера 1С:Предприятия, очистить локальный кэш метаданных на компьютере. После этого заново запустить конфигуратор и открыть под отладкой клиентское приложение. После таких манипуляций должно заработать в штатном режиме.
Здравствуйте.
А как быть в случае, если у реквизита установлен признак “неотрицательный”, а есть необходимость заполнять его отрицательными значениями? При попытке изменить это значение в расширении выдается ошибка применения расширения и предлагается ее исправить.
заранее спасибо за ответ.
Добрый день!
В платформе 8.3.18 появилась возможность изменять типы реквизитов при помощи расширений. В курсе по расширениям есть занятия с обзором этих изменений.
Добрый день
Добавил расширение в него добавил документ и форму в форме есть обязательные для заполнения реквизиты (свойство выдавать ошибку) При записи документа с пустыми значениями в этом поле – происходит запись сообщения, что реквизит не заполнен не выдается. Что может быть не так?
Добрый день!
Попробуйте провести документ с пустым значением этого реквизита. В таком случае система выдаст ошибку.
Если для документа проведение разрешено, то автоматическая проверка заполнения реквизитов выполняется перед проведением.