ОбработкаПроверкиЗаполнения(<Отказ>, <ПроверяемыеРеквизиты>)
Параметры:
<Отказ>
Тип: Булево.
Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
Значение по умолчанию: Ложь.
<ПроверяемыеРеквизиты>
Тип: Массив.
Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Описание:
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи в форме, а также при выполнении метода ПроверитьЗаполнение.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Все категории
- Фотография и видеосъемка
- Знания
- Другое
- Гороскопы, магия, гадания
- Общество и политика
- Образование
- Путешествия и туризм
- Искусство и культура
- Города и страны
- Строительство и ремонт
- Работа и карьера
- Спорт
- Стиль и красота
- Юридическая консультация
- Компьютеры и интернет
- Товары и услуги
- Темы для взрослых
- Семья и дом
- Животные и растения
- Еда и кулинария
- Здоровье и медицина
- Авто и мото
- Бизнес и финансы
- Философия, непознанное
- Досуг и развлечения
- Знакомства, любовь, отношения
- Наука и техника
0
Поля, обязательные для заполнения, как настроить в 1С Предприятие 8.3?
Обязательные поля заполнения формы в 1С 8.3 как настроить?
Поля отмеченные красным обязательны для заполнения — как сделать в 1С 8.3 в конфигураторе?
Указанные поля обязательны для заполнения — как сделать в 1С?
1с обязательное поле для заполнения — как настроить в конфигураторе?
Как поставить красную линию подсветки в поле обязательного реквизита в конфигураторе 1С?
2 ответа:
0
0
В конфигураторе нужно найти справочник или документ, в котором надо сделать поле обязательным для заполнения, выбрать в контекстном меню «Изменить», перейти на закладку Данные, в списке реквизитов выбрать реквизит, который нужно сделать обязательным для заполнения, вызвать контекстное меню, нажав правую кнопку мыши, в меню выбрать «Свойства». В поле «Проверка заполнения» установить значение — «Выдавать ошибку».
0
0
Дополнение предыдущего ответа.
<h2>Как подчеркнуть красной линией поле реквизита, обязательного для заполнения</h2>
Чтобы отметить красной линией незаполненное поле, нужно:
- В конфигураторе открыть нужную вам форму документа или справочника, где присутствует интересующее вас поле.
- На нужном поле из контекстного меню (по правой кнопке мыши) выбрать пункт «Свойства».
- В открывшемся окне «Свойства: Поле ввода» найти свойство «АвтоОтметкаНезапо<wbr />лненного«.
- Установить флажок для этого свойства (т.е. поставить галочку).
Отмечу, что таким образом можно подчеркивать все незаполненные поля, а не только поля реквизитов, обязательных для заполнения.
Помимо ручной установки, для любого поля ввода можно управлять свойством «АвтоОтметкаНезаполн<wbr />енного» из программного кода.
Читайте также
Модальные окна являются в некотором смысле блокирующими — т.е. невозможно работать с программой до завершения работы с окном. С переходом на платформу 8.3 работа с такими окнами, как правило ограничивается в настройках конфигурации (Конфигуратор — Свойства конфигурации — Режим модальности — не использовать). Как правило, пользователи сталкиваются с такой ошибкой при работе с доработанным функционалом — внешними обработками, отчетами, доработками конфигурации при использовании интерфейса «Такси».
Самый простой и грубый способ — изменить в свойствах конфигурации настройку модальности (как описано выше). Наиболее грамотное же решение — обратиться к программисту для доработки функционала под новые требования платформы 8.3. Он должен внести изменения в программный код для его использования без режима модальности.
Для того, чтобы узнать, сколько работает пользователей в 1С надо обладать правами администратора. Далее возможны несколько вариантов. Чтобы узнать количество активных пользователей необходимо в режиме учета найти Все функции ==> Стандартные ==> Активные пользователи. Можно также посмотреть в конфигураторе. Тоже самое найти Администрирование и там 2 пункта есть пользователи и активные пользователи. Так вот пользователи это все кто заведен в базе данных, активные пользователи это те, кто работает сейчас. Способ зайти посмотреть всех пользователей и активных пользователей от базы данных не отличается.
А вот в семерке там все по-другому. Для этого есть конфигуратор, там заводятся пользователи, а смотреть акивных пользователей надо в режиме монитор.
У меня эта ошибка возникла после публикации базы 1С на веб-сервере при попытке войти в базу через браузер. База файловая.
Все действия по инструкции я выполнила, в том числе и дала права на папку с базой пользователю IUSR.
Но как оказалось, нужен был полный доступ к папке 1Cv8Temp (которая находится внутри папки с базой) также для пользователя IUSR, и еще я дала полные права на эту папку всем пользователям, которые могут работать с базой. После выполнения этой настройки база открывается через браузер без проблем, сообщение об ошибке исчезло.
Иногда бывают ситуации, когда запуск программы «1С: Предприятие» версии 8.3 заканчивается сообщением «Ошибка формата потока», после чего можно только завершить работу с программой или перезапустить её.
Такое поведение программы случается чаше всего из-за ошибок во временных файлах конфигурации или в файлах кэша базы данных.
1) Для начала необходимо убедиться, что в папке с вашей конфигурацией не остаются зависшие временные файлы.
Для этого выполнить следующие действия:
- с начала нужно закрыть программу;
- затем открыть каталог (папку), где установлена проверяемая конфигурация;
- убедиться, что в этой папке кроме других папок и файла самой конфигурации 1cv8.1CD нет других файлов;
- при наличии других файлов (к примеру с расширениями *.cfl, *.tmp, *.1cl и других) их нужно удалить.
- то есть нужно оставить только папки и файл 1cv8.1CD (как на рисунке ниже).
Если это не помогло, то переходим к следующему пункту.
2) Для очистки кэша базы данных есть два способа:
- первый: в окне запуска 1С:Предприятия удалить (кнопкой «Удалить»), а затем снова прописать (по кнопке «Добавить…») эту базу;
- второй: в окне запуска 1С:Предприятия войти в настройки нужной базы (по кнопке «Изменить…») и в поле ввода «Дополнительные параметры запуска» прописать строку «/ClearCache».
Если в базе работает несколько пользователей одновременно, имеет смысл перенести 1С и саму базу на сервер, имеющий более мощные ресурсы, чем рабочие станции пользователей, и организовать к нему терминальный доступ. Серверные операционные системы лучше работают с большой файловой нагрузкой и лучше распределяют ресурсы сервера. При терминальном доступе файлы не будут гоняться по сети, а обрабатываться непосредственно на сервере. Если нет денег на покупку выделенного сервера (а это не только сам компьютер, но и ПО, а оно еще дороже железа), можно арендовать сервер, купить доступ к серверу в датацентре, что при небольших необходимых ресурсах может быть рациональнее. У нас терминальный доступ к серверу можно получить за сумму от 1500р/мес.
Проверка заполнения реквизитов
В информационной системе данные могут вноситься множеством различных способов, и часто они могут быть некорректны. Поэтому при разработке решения бывает необходимо прилагать много усилий на реализацию проверки правильности вводимых данных и уведомления пользователя о некорректности введенной информации.
Механизм проверки заполнения позволяет существенно упростить процесс разработки конфигураций.
Платформа поддерживает автоматическую проверку указанных реквизитов прикладных объектов и форм, а также позволяет выполнить процесс проверки в модуле. Для управления проверкой заполнения реквизита служит свойство Проверка заполнения. Если свойство установлено в значение Не проверять – платформа не проверяет заполнение реквизита. Значение Выдавать ошибку указывает на необходимость выполнять проверку.
Платформа выполняет автоматическую проверку заполнения:
● констант;
● справочников, документов, отчетов, обработок, планов видов характеристик, планов счетов, планов видов расчета, бизнес-процессов, задач:
● реквизитов и стандартных реквизитов,
● табличных частей,
● реквизитов и стандартных реквизитов табличных частей;
● наборов записей регистров бухгалтерии, регистра сведений, регистра накопления, регистра расчета, перерасчетов, последовательностей:
● измерений,
● ресурсов,
● реквизитов и стандартных реквизитов;
● реквизитов форм;
● реквизитов форм отчетов;
● реквизитов форм обработок.
ПРИМЕЧАНИЕ. Проверка заполнения реквизитов выполняется аналогично функции ЗначениеЗаполнено(). Проверка заполнения табличных частей подразумевает, что табличная часть считается заполненной, когда в ней присутствует хотя бы одна строка.
Проверка заполнения может быть вызвана двумя способами:
● вызовом метода ПроверитьЗаполнения() (у объекта или формы);
● автоматически.
ВНИМАНИЕ! Если свойство конфигурации Режим совместимости установлено в значение Версия 8.1, то автоматическая проверка заполнения не работает.
Установки по умолчанию
Свойство реквизита Проверка заполнения по умолчанию устанавливается в значение Выдавать ошибку для следующих стандартных реквизитов:
● ПланОбмена – Наименование;
● Справочник – Владелец, Наименование;
● Документ – Дата;
● ПланВидовХарактеристик – Наименование;
● ПланСчетов – Код, Наименование;
● ПланСчетов.ВидыСубконто – ВидСубконто;
● ПланВидовРасчета – Наименование;
● ПланВидовРасчета.ВедущиеВидыРасчета – ВидРасчета;
● ПланВидовРасчета.БазовыеВидыРасчета – ВидРасчета;
● ПланВидовРасчета.ВытесняющиеВидыРасчета – ВидРасчета;
● РегистрСведений – Период;
● РегистрНакопления – Период;
● РегистрБухгалтерии – Период;
● РегистрРасчета – ПериодРегистрации, ВидРасчета, ПериодДействияНачало, ПериодДействияКонец;
● БизнесПроцесс – Дата;
● Задача – Наименование.
Порядок работы
Автоматическая проверка заполнения вызывается расширением формы перед интерактивной записью всех объектов, кроме документов, бизнес-
процессов, отчетов и обработок. Для этих объектов определено следующее поведение:
● для документов:
● проверка заполнения вызывается расширением формы перед проведением, если свойство Проведение установлено в значение Разрешить;
● проверка заполнения вызывается расширением формы перед записью, если свойство Проведение установлено в значение Запретить;
● для бизнес-процессов проверка заполнения вызывается расширением формы перед стартом;
● для отчетов проверка заполнения вызывается расширением формы при нажатии кнопки Сформировать;
● для обработок проверка заполнения вызывается расширением формы в случаях, если нажаты кнопки, связанные со стандартными командами формы OK, Да, Повторить, Пропустить.
Если реквизит является основным реквизитом формы следующих типов: СправочникОбъект, ДокументОбъект, ОтчетОбъект,
ПланВидовХарактеристикОбъект, ПланСчетовОбъект, ПланВидовРасчетовОбъект, БизнесПроцессОбъект, ЗадачаОбъект, то для значения такого реквизита
также будет вызвана проверка заполнения.
Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство Проверять заполнение автоматически. В этом случае вначале будет вызван обработчик ОбработкаПроверкиЗаполненияНаСервере() формы, а затем обработчик ОбработкаПроверкиЗаполнения() модуля объекта.
ВНИМАНИЕ! Если у формы свойство Проверять заполнение автоматически установлено в значение Истина при выполнении стандартных команд Записать (Провести для документов и т. д.), а также стандартных команд формы OK, Да, Повторить, Пропустить, будет вызван метод ПроверитьЗаполнение(). В противном случае проверка заполнения не вызывается ни для формы, ни для объекта.
Процесс проверки заполнения происходит следующим образом:
● Формируется список имен реквизитов формы, для которых возможна проверка заполнения и для которых свойство ПроверкаЗаполнения установлено в значение ВыдаватьОшибку. В этот список не будут включены имена реквизитов, тип которых не поддерживает проверку заполнения (например, СправочникОбъект), но будет включено имя основного реквизита формы.
В автоматически формируемый список реквизитов не будут включены реквизиты формы, отключенные с помощью функциональных опций.
● Вызывается обработчик события формы ОбработкаПроверкиЗаполненияНаСервере, в котором разработчик может описать свой алгоритм проверки заполнения или изменить состав проверяемых реквизитов. В обработчик будет передан сформированный список имен реквизитов. Если в обработчике необходимо добавить к списку какие-либо реквизиты, это можно сделать только для реквизитов вышеперечисленных типов (для
которых возможна проверка заполнения в форме) и основного реквизита. Добавление в список имен реквизитов объектного типа (например, СправочникОбъект) вызовет исключение при дальнейшей автоматической проверке. Добавление в список имени несуществующего реквизита вызовет исключение при дальнейшей автоматической проверке.
● После завершения работы обработчика события механизм проверки заполнения получает обратно список имен, проверяемых реквизитом (который, возможно, был изменен в обработчике). Система анализирует список реквизитов и проверяет заполненность каждого реквизита. Если реквизиттявляется основным реквизитом объектного типа (например, Объект типа СправочникОбъект), будет вызвана проверка заполнения самого объекта.
Если реквизит является реквизитом объектного типа, но не основным, будет вызвано исключение.
Разработчик имеет возможность влиять на процесс проверки путем определения в модуле объекта, набора записей и в модуле формы обработчика события ОбработкаПроверкиЗаполнения.
Определив обработчик события, разработчик получает полный контроль над проверкой заполнения. В параметре ПроверяемыеРеквизиты обработчик получает массив реквизитов, для которых в режиме Конфигуратор указано, что они должны проверяться. Разработчик может произвольно модифицировать этот массив:
● удалять те реквизиты, проверку заполнения которых он реализует сам или считает, что их не нужно проверять в данный момент;
● добавлять необходимые реквизиты, для которых должна выполниться проверка заполнения.
В случае если разработчика не устраивает стандартная процедура проверки, он может написать алгоритм проверки сам и, используя объект СообщениеПользователю, сообщить об имеющихся проблемах пользователю.
Если в процессе проверки разработчик вывел пользователю сообщения об ошибках, необходимо установить параметр Отказ в значение Истина, чтобы уведомить платформу о том, что текущее действие не может быть завершено.
Параметр события ПроверяемыеРеквизиты содержит имена атрибутов в следующем формате:
● для реквизитов и констант – ИмяРеквизита, например, Поставщик;
● для табличных частей – ИмяТабличнойЧасти, например, Товары;
● для реквизитов табличных частей – ИмяТабличнойЧасти.ИмяРеквизита, например, Товары.Номенклатура;
● для реквизитов форм – ИмяРеквизита, например, ДокументОбъект.
Для реквизитов, входящих в состав функциональных опций без параметров, значение опции учитывается при проверке заполнения. Если функциональная опция включена, то реквизит будет включен в список проверяемых реквизитов; если опция выключена, реквизит не будет включен в список проверяемых реквизитов. Это значит, что отключенное поле не будет передано через параметры ПроверяемыеРеквизиты в
ОбработкаПроверкиЗаполнения.
Реквизиты, входящие в состав функциональной опции с параметрами , всегда включаются в список проверяемых реквизитов (параметр ПроверяемыеРеквизиты). Удаление реквизита из списка проверяемых реквизитов в таких случаях необходимо выполнять в обработчике ОбработкаПроверкиЗаполнения. Для этого следует получить значение функциональной опции, указав в качестве параметров необходимые данные
объекта.
Правила отображения отметки незаполненного
На отображение отметки незаполненного влияют следующие свойства элементов конфигурации:
● свойство Проверка заполнения реквизита или стандартного реквизита объекта метаданных;
● свойство Проверка заполнения реквизита формы;
● свойство Автоотметка незаполненного элемента формы;
● свойство ОтметкаНезаполненного элемента формы (доступно только для программного изменения).
Свойство элемента формы Автоотметка незаполненного может быть установлено в значение:
● Авто – отметка будет отображаться, если у реквизита формы или реквизита (стандартного реквизита) объекта метаданных свойство Проверка заполнения установлено в значение Выдавать ошибку и реквизит, связанный с элементом формы, содержит пустое значение.
● Да – отметка будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка
заполнения.
● Нет – отметка не будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка заполнения.
При начале интерактивного изменения поля ввода отметка незаполненного перестает отображаться, при этом значение свойства ОтметкаНезаполненного не изменяется. Отображение отметки восстанавливается (если это необходимо) после того, как в поле ввода завершено интерактивное редактирование или установлено значение. При этом свойство ОтметкаНезаполненного может быть изменено системой в том случае, если
свойство АвтоОтметкаНезаполненного установлено в значение Истина:
● если значение в поле не заполнено, то свойство ОтметкаНезаполненного будет установлено в значение Истина;
● если в поле значение заполнено, то свойство ОтметкаНезаполненного будет установлено в значение Ложь.
ПРИМЕЧАНИЕ. Если свойство ОтметкаНезаполненного установлено у таблицы, то для таблицы, в которой нет строк, будет подсвечена первая строка, а для заполненной таблицы – все строки.
Кроме того, отметка незаполненного также будет отображена, если в окне сообщений есть сообщение , связанное с конкретным полем формы, вне зависимости от установленных свойств элемента формы и связанных с ним реквизитов. После очистки окна сообщений отметка незаполненного снимается у тех элементов формы, значение свойства ОтметкаНезаполненного которых равно значению Ложь.
Наверное, никакими алгоритмами невозможно обезопасить базу данных от ошибок, возникающих при вводе данных пользователями. Главные проблемы, связанные с человеческой невнимательностью можно выделить в следующий список:
- Неправильный выбор объекта;
- Неверное количество или опечатка в наименовании;
- Задвоение элементов справочников, их не уникальность или пересортица;
- Игнорирование заполнения полей, критически важных для правильного расчета и бесперебойной работы программы.
Решением последней проблемы является, для восьмой версии программы 1С проверка заполнения реквизитов формы.
Проверка заполнения для обычной формы
При открытии формы пользователем, в случае если режим запуска «Обычное приложение», элементы, обязательные к заполнению выделяются красной пунктирной строкой (Рис.1).
Как видно из приведенного примера, полями документа «Реализация товаров и услуг», обязательными для заполнения, являются «Номер» и «Контрагент». При этом поле «Номер» недоступно для редактирования. Это значит, что при записи документа в информационную базу оно автоматически будет заполнено в соответствии с правилами нумерации, заданными для данной организации.
Запись элементов справочников или проведение документов, содержащих незаполненные обязательные поля, будет вызывать исключительную ситуацию (Рис. 2).
Рис. 2
Более подробную информацию о том, какое конкретно поле не заполнено, можно увидеть в окне служебных сообщений.
Сама пометка, информирующая об обязательности заполнения поля, устанавливается в свойствах элемента формы. Для этого:
- Открываем форму в Конфигураторе;
- Кликаем правой кнопкой мышки по элементу формы, и вызываем окно «Свойства»;
- Необходимо проставить флажки АвтоОтметкаНезаполненного и АвтоВыборНезаполненного в подменю «Использование» (Рис.3);
Непосредственная проверка, как правило, прописывается в модуле объекта.
Для справочников и непроводимых документов процедуру проверки заполнения целесообразно вызывать при записи элемента. Не до конца заполненные документы, если они проводятся, можно записать в базу, а процедуру проверки лучше вызывать перед формированием движений, то есть при проведении. Выполнение проверки в обработках и отчетах, содержащих поля обязательные для заполнения, целесообразно производить непосредственно в обработке нажатия кнопки.
Проверить отличается ли значение, переданное в поле от пустого (значения по умолчанию), можно с помощью функции ЗначениеЗаполнено(«Знач»). При этом следует иметь в виду, что если поле имеет составной тип данных, выполнение этой функции вызывает исключительную ситуацию.
Проверка в управляемых формах
Особенности работы платформы в клиент-серверном варианте накладывают свой отпечаток и на проверку заполнения.
Для начала необходимо понять, какая процедура, за какой следует при вводе объекта в этом режиме функционирования.
Итак, после нажатия кнопки «Записать», «ОК», «Провести»:
- Вызывается процедура «Перед записью» на клиенте;
- Данные передаются на сервер и происходят события, прописанные в модуле формы на сервере (здесь можно запустить процедуру ОбработкаПроверкиЗаполненияНаСервере);
- Данные формы передаются в модуль объекта на сервер (появляется возможность запуска стандартной процедуры ОбработкаПроверкиЗаполнения);
- Данные из модуля возвращаются в модуль формы на сервер, и происходит процедура ПередЗаписьюНаСервере;
- Данные возвращаются в модуль объекта, и происходит еще одна процедура ПередЗаписью;
- Происходит непосредственная запись объекта в базу.
В любой момент этой схемы можно вставить функцию ПроверитьЗаполнение(). Пробежавшись по реквизитам, в свойствах которых реквизит «Проверка заполнения» имеет значение «Выдавать ошибку»(Рис.4), эта функция, если хоть один из них не заполнен, вернет «Ложь».
Различия между обработчиками ОбработкаПроверкиЗаполнения() и ОбработкаПроверкиЗаполненияНаСервере()
Ввиду того, что интерфейс управляемого приложения может содержать как реквизиты объекта, так и непосредственно реквизиты формы и разделились эти две процедуры. В то же самое время они схожи по параметрам, которые могут быть переданы в обработчики это:
- Отказ (сюда после проверки передается ее результат);
- ПроверяемыеРеквизиты (тип данных – массив, если не заполнено, то будут проверяться все реквизиты, для которых в свойствах стоит «Проверять заполнение», в противном случае будут обрабатываться реквизиты, выбранные программно).
Процедура ОбработкаПроверкиЗаполненияНаСервере() позволяет выполнить проверку реквизитов, которые не относятся непосредственно к редактируемому объекту. Каждый программист сам решает, что и в каком объеме он хотел бы проверять.
Процедура ОбработкаПроверкиЗаполнения() проверяет основные реквизиты.
Очень часто, во время работы в программе 1С, бывает нужно быстро ввести несколько документов или добавить новые объекты в справочники (вид номенклатуры, организация, склад, касса и т.д.). При этом не у всех есть понимание, того как можно автоматизировать ввод основных значений, так, чтобы при создании сразу подставлялись в поля нужные значения. О том, как это сделать я расскажу в этой статье.
В программе 1С существуют механизмы, которые позволяют быстро заполнить значения реквизитов в документах и справочниках. По действию их можно разделить на следующие виды:
- Подстановка единственного значения
- Подстановка значения по отбору
- Заполнение реквизитов по статистике
- Подстановка ранее введенных реквизитов
- Подстановка значений по шаблону
- Ввод нового документа копированием
Подстановка единственного значения на который у пользователя есть права.
Допустим, в вашей организации есть три склада, они введены в базу. При этом менеджеру разрешено продавать товар только с какого-то одного. При создании нового документа этот склад будет подставляться автоматически. Это работает на основе установленных прав доступа у пользователя. То есть, выключая права на объекты, с которыми пользователь не работает, можно автоматизировать ввод данных.
Подстановка значения по отбору, указанному в форме списка.
Если в списке установлен отбор по какому-то реквизиту (касса, банковский счет, склад), то этот реквизит будет автоматически заполнен в новом документе. Например, вы в форме списка документов РКО устанавливаете отбор по кассе. При оформлении нового платежного документа из списка будет автоматически взята информация о выбранной кассе. И так как, для кассы указана организация, то будет автоматически заполнена информация об организации. Использовать отборы можно в любом списке документов.
Заполнение реквизитов по статистике.
Программа 1С ведет статистику ввода основных значений по каждому пользователю. В случае, если вы два раза ввели при создании нового документа одинаковые организацию, подразделение, склад, хозяйственную операцию и т.д., программа будет анализировать последние введенные значения. Таким образом, алгоритм заполнения по статистике автоматически «подстраивается» под каждого пользователя.
Если пользователь нарушает в новом документе эту цепочку, то программа это поймет и начнет подставлять через некоторое время новые значения, но в первом таком документе значения подставлены не будут.
Заполнение ранее введенных реквизитов при выборе значения другого реквизита возможно в случае если выбирается, например торговое соглашение или договор, где заполнены все основные поля (склад, график оплаты, цены и т.д.). При указании соглашения или договора в документе реквизиты будут заполнены по следующим правилам:
будут заполнены все те данные, которые были определены в соглашении или договоре;
если в соглашении или договоре не было указано какое-либо значение (например, подразделение), то это значение будет заполнено в соответствии со статистикой. Если при вводе нового документа значения были заполнены в соответствии со статистикой, то они будут перезаполнены, если они определены в соглашении или договоре.
Подстановка значений по шаблону.
Обратите внимание, когда создается новый вид номенклатуры, то можно указать значения по умолчанию, которые будут подставляется в новые объекты. При оформлении новой позиции номенклатуры данного вида эти значения будут подставляться автоматически. Еще одним примером может служить автоматическая подстановка информации о подразделении в документ, если для пользователя, оформляющего документ, определена информация о подразделении в карточке пользователя.
Ввод нового документа копированием.
Тут все просто. Если пользователь уже вводил похожий документ, то его можно скопировать и после этого поправить изменившиеся данные. Проверить все реквизиты, уделив особое внимание, такому реквизиту, как дата.
Вот пять основных способов облегчить ввод однотипных документов и справочников. Обязательно используйте их в своей повседневной работе
Как быстро ввести значение реквизитов в 1С?
1. Поле ввода
2. Флажок
3. Переключатель
Поле ввода
Как правило, поле ввода связано с реквизитом объекта и отражает его данные. Это, пожалуй, один из самых распространенных элементов, он имеет несколько способов выбора значения:
Выбор из списка (РежимВыбораИзСписка)
Выбор из другой формы (Кнопка выбора)
Кнопки регулирования
Реализация вышеприведенных примеров не требует значительных усилий со стороны разработчика так. например, для режима списка необходимо заполнить список элемента значениями, для выбора из другой формы достаточно просто связать элемент управления с данными справочника. А вот для кнопок регулирования нужно будет написать побольше кода, по обработке нажатия по каждой кнопке, хотя и он не будет велик:
Процедура пвВыборНоменклатурыРегулирование(Элемент, Направление, СтандартнаяОбработка)
//Выбираем данные для поля ввода
// в данном случае справочник Номенклатура
Запрос = Новый Запрос;
Запрос.Текст=
«ВЫБРАТЬ
| Номенклатура.Ссылка Как Товар
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|УПОРЯДОЧИТЬ ПО
| Номенклатура.Код»;
ТЗНоменклатура = Запрос.Выполнить().Выгрузить();
//ищем текущий элемент справочника указанный в поле ввода
ТекЭлемент = ТЗНоменклатура.Найти(Элемент.значение);
Если ТекЭлемент = Неопределено Тогда
// если не нашли элемент тогда устанавливаем номер индекса
// за пределами таблицы значений, т.к. самый первый элемент в
// таблице значений имеет индекс 0
ТекИндекс = -1;
Иначе
// если элемент найден получаем его индекс
ТекИндекс = ТЗНоменклатура.Индекс(ТекЭлемент);
КонецЕсли;
// рассчитываем новый индекс в зависимости от нажатия кнопки
// минус перед переменной Направление стоит для того, чтобы при
// нажатии на верхнюю стрелку показывался элемент стоящий выше
// а следовательно с меньшим индексом
НовИндекс = ТекИндекс-Направление;
// получаем количество элементов в справочнике
// вычетаем единицу т.к. все коллекции в 8.1 начинаются с 0
КоличествоЭлементов = ТЗНоменклатура.Количество()-1;
Если НовИндекс < 0 Или НовИндекс > КоличествоЭлементов Тогда
// если при изменении индекс находится за пределами таблицы значений
// т.е. его номер большего самого большого индекса или меньше 0 то
// не изменяем значение и сообщаем об этом пользователю
Сообщить(«Вы достигли предела справочника»);
Иначе
// присваеваем новое значение, «Товар» — это название колонки таблицы значений
Элемент.значение = ТЗНоменклатура.Получить(НовИндекс).Товар;
КонецЕсли;
КонецПроцедуры
Флажок
В большинстве программ флажок служит для отображения двух состояний: установлен, снят. В 1с флажок имеет три состояния, в третьем состоянии флажок отображается — как установлен и при этом затенен. Три состояния доступны, только если данные флажка — число, при этом состояния имеют следующие значения:
Переключатель
Переключатель используется для выбора одного значения из небольшого количества возможных (желательно не более пяти) при этом значения не могут сочетаться, Например: подходит для выбора пола человека. Другой пример: допустим, фирма даёт одну из 3-х скидок на товар, при этом скидки не суммируются:
В данном случае удобство использования переключателей может заключаться в том, что каждый из них может иметь какое-то значение, которое устанавливается в свойстве «Выбираемое значение». И тогда «Скидка 5%» может хранить значение 5 или 0,05.
При использовании переключателей важно помнить три вещи:
У первого переключателя должно стоять свойство «ПервыйВГруппе» (в данном примере это переключатель «Скидка 5%»).
Переключатели, относящиеся по смыслу к одной группе должны в настройке порядка обхода идти подряд, без прерываний другими элементами формы. Порядок обхода задается из меню «Форма -> Настройка порядка обхода», для данного примера это выглядит так:
- Тип выбираемого значения устанавливается у переключателя имеющего свойство «ПервыйВГруппе».
Механизм ввода на основании
— это один из прикладных механизмов платформы . Он позволяет упростить работу пользователя с прикладным решением и избавить его от повторного ввода данных, которые уже хранятся в информационной базе.
Рассмотрим простой пример. Допустим, в прикладном решении существует документ Поступление товара
, который фиксирует факт появления в организации некоторых позиций номенклатуры:
После того, как номенклатура получена от поставщика, следует оформить документ Оплата товаров и услуг
, в котором указать поставщика и сумму, которую ему необходимо перечислить за поставленный товар:
В такой ситуации механизм ввода на основании позволяет сформировать документ Оплата товаров и услуг
автоматически, используя информацию, которая хранится в документе Поступление товара
. Это выполняется буквально одним нажатием мыши:
После выполнения этой команды система создаст новый документ Оплата товаров и услуг
и заполнит его реквизиты по информации, имеющейся в поступлении. Пользователю останется лишь выбрать конкретные расчетные счета, если у поставщика и нашей организации их несколько.
Таким образом механизм ввода на основании позволяет создавать новые объекты прикладного решения (справочники, документы и т.д.) на основании информации, содержащейся в других, существующих объектах прикладного решения.
Здравствуйте.
Только начинаю программировать на 1с после 10ти летнего перерыва, поэтому прошу не кидать камнями.
Задача: сделать, чтобы в зависимости от выбора одного элемента на форме (реквизит), был доступен другой элемент (реквизит2). Причем если доступно поле реквизит2, оно обязательно для заполнения. В настройках конфигуратора у реквизита2 поставил свойство проверка заполнения=выдавать ошибку.
В модуле формы написал следующее:
1C | ||
|
Как сделать так, чтобы не требовалось заполнять реквизит2, если Элемент1 содержит не значение Значение1
Механизм проверки заполнения позволяет автоматически проверить, заполнены ли указанные реквизиты объекта. Для этого нужно воспользоваться свойством ПроверкаЗаполнения
, которое есть у реквизитов объектов конфигурации.
Если установить это свойство в значение «Выдавать ошибку», поле Поставщик
в форме будет помечено как обязательное для заполнения. А при записи накладной платформа будет контролировать заполненность этого реквизита. Если реквизит окажется не заполнен, платформа выдаст автоматическое сообщение и запись накладной будет отменена.
Разработчик может повлиять на стандартную проверку заполнения, выполняемую платформой. Для этого у него есть два события:
- Одно событие —
ОбработкаПроверкиЗаполненияНаСервере
— можно обработать в модуле формы. - Другое событие —
ОбработкаПроверкиЗаполнения
— можно обработать в модуле прикладного объекта.
У формы, как правило, есть основной реквизит (редактируемый объект) и могут быть реквизиты, не относящиеся к редактируемому объекту, а являющиеся лишь частью формы:
Поэтому серверное событие формы ОбработкаПроверкиЗаполненияНаСервере
предназначено для проверки заполнения тех реквизитов формы, которые не относятся к редактируемому объекту. Это данные только формы, у формы могут быть свои причины и алгоритмы для проверки этих данных.
Напротив, событие объекта ОбработкаПроверкиЗаполнения
предназначено для для того, чтобы проверить реквизиты основного реквизита формы.
Обработчики обеих событий имеют параметр ПроверяемыеРеквизиты
, в который платформа передает массив имен тех реквизитов, которые подлежат проверке. Если после выхода из обработчика в этом массиве все еще останутся какие-то имена реквизитов — платформа выполнит автоматическую проверку оставшися реквизитов.
Поэтому существует несколько сценариев того, как разработчик может встроить свой алгоритм в механизм проверки заполнения:
- самостоятельно проверить заполненность всех реквизитов и очистить массив
ПроверяемыеРеквизиты
, чтобы платформа не выполняла их проверку - проверить часть реквизитов самостоятельно, удалить их из массива
ПроверяемыеРеквизиты
, а оставшиеся оставить на проверку платформе - добавить в массив
ПроверяемыеРеквизиты
какие-то реквизиты, чтобы платформа проверила и их тоже - вообще отказаться от проверки заполненности реквизитов, очистив массив
Все эти сценарии реализуются довольно просто. Например, чтобы самостоятельно проверить заполненность реквизитов, можно выполнить следующий код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; // Проверка остальных реквизитов // .......... // Очистить массив проверяемых реквизитов, чтобы платформа // не выполняла их автоматическую проверку ПроверяемыеРеквизиты.Очистить();
Чтобы проверить лишь часть реквизитов, можно выполнить такой код:
Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Необходимо заполнить поставщика!"; Сообщение.Поле = "Поставщик"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; // Удалить поставщика из массива проверяемых реквизитов ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("Поставщик"); Если ИндексПоляПоставщик <> Неопределено Тогда ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик); КонецЕсли; КонецЕсли;
Добавить в массив проверяемых реквизитов еще один реквизит можно следующим образом:
ПроверяемыеРеквизиты.Добавить("Комментарий");
А очистить массив проверяемых реквизитов, чтобы ничего не проверять ни самому, ни платформе, можно так:
ПроверяемыеРеквизиты.Очистить();
Вторым параметром в обработчиках этих событий является параметр Отказ
. Если ему присвоить значение Истина
, то после выхода из обработчика дальнейшая запись объекта будет отменена. Таким образом этот параметр нужно устанавливать в значение Истина
тогда, когда ваш алгоритм приходит к выводу, что реквизит не заполнен. В этом случае запись объекта выполнена не будет.
Справка
ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправляемаяФорма.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Отказ
. Тип:Булево
. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то запись выполнена не будет. Значение по умолчаниюЛожь
.ПроверяемыеРеквизиты
. Тип:Массив
. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи в форме, а также при выполнении метода ПроверитьЗаполнение()
. Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство ПроверятьЗаполнениеАвтоматически
. В этом случае вначале будет вызван данный обработчик, а затем обработчик ОбработкаПроверкиЗаполнения()
модуля объекта.
Позволяет разработчику самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Для формы документа, если при конфигурировании для документа свойство Проведение
установлено в Разрешить
, событие вызывается только при проведении. Если документ не проводится (свойство Проведение
установлено в Запретить
), то вызывается при записи.
ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ДокументОбъект.ИмяДокумента.ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Отказ
. Тип:Булево
. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения. Значение по умолчаниюЛожь
.ПроверяемыеРеквизиты
. Тип:Массив
. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.
Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи или при проведении документа в форме, а также при выполнении метода ПроверитьЗаполнение()
. Если для документа при конфигурировании свойство Проведение
установлено в Разрешить
, то вызывается только при проведении. Если документ не проводится (установлено Запретить
), то вызывается при записи.
Позволяет разработчику конфигурации самостоятельно реализовать проверку заполнения в обработчике события. При этом в обработчике можно полностью отказаться от системной обработки (очистив список проверяемых реквизитов), отказаться от проверки системой части реквизитов (выполнив проверку отдельных реквизитов особенным образом и исключив эти реквизиты из списка), а также добавить для проверки другие реквизиты, проверка которых не была указана.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Проверим заполненность реквизита «Покупатель» Покупатель = ПроверяемыеРеквизиты.Найти("Покупатель"); Если Не ЗначениеЗаполнено(Покупатель) Тогда // Если он не заполнен, сообщим об этом пользователю Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не указан Покупатель, на которого выписывается товарная накладная!"; Сообщение.Поле = "Покупатель"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщим платформе, что мы сами обработали проверку заполнения реквизита «Покупатель» ПроверяемыеРеквизиты.Удалить(Покупатель); // Так как информация не консистентна, то продолжать работу дальше смысла нет Отказ = Истина; КонецЕсли; // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части «Товары» ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Товар")); // Обходим строки и проверяем заполнение реквизита Для Индекс = 0 По Товары.Количество()-1 Цикл СтрокаТовар = Товары.Получить(Индекс); Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "В строке " + Индекс + " не заполнено значение товара"; Сообщение.Поле = "Товары[" + Индекс + "].Товар"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры
Поиск:
1С:Предприятие • Обработка проверки заполнения • Проверяемые реквизиты • Реквизит • Управляемая форма
Значение заполнения
Это свойство позволяет установить значение по-умолчанию для реквизита.
Например, решим такую задачу: в справочнике «Сотрудники» есть реквизит «Вид приема на работу», который принимает одно из 3-х значений: «Штатный», «Внутренний совместитель» и «Внешний совместитель»:
Для новых сотрудников по-умолчанию нужно устанавливать вариант приема на работу — «Штатный». Для того чтобы решить эту задачу достаточно в конфигураторе перейти в свойства реквизита и выбрать значение по-умолчанию в свойстве «Значение заполнения»:
В результате при создании нового элемента справочника значение реквизита будет заполнено выбранным значением по-умолчанию:
Проверка заполнения
Это свойство реквизита, которое позволяет сделать реквизит обязательным для заполнения.
Например, решим такую задачу: в справочнике «Контрагенты» есть реквизит «УНП», который пользователь должен заполнить обязательно.
При попытке сохранить контрагента с пустым «УНП» должна выдаваться ошибка.
Для решения такой задачи достаточно в конфигураторе в настройках реквизита «УНП» установить свойство «Проверка заполнения» в значение «Выдавать ошибку»:
В результате при попытке сохранения контрагента с пустым «УНП» пользователь получит сообщение об ошибке заполнения и сохранение выполняться не будет:
Связи параметров выбора
Это свойство позволяет установить связь между реквизитами одного объекта.
Пример задачи: в документе «Приходная накладная» есть реквизиты «Контрагент» (ссылка на справочник «Контрагенты») и «Договор» (ссылка на справочник «Договоры», который подчинен справочнику «Контрагенты»). При выборе договора пользователь должен видеть в списке только те договоры, которые принадлежат выбранному в этому же документе контрагенту. Договоры других контрагентов пользователь видеть не должен:
Для решения этой задачи нужно в конфигураторе для реквизита «Договор» настроить свойство «Связи параметров выбора»: указать связь с реквизитом этого же документа — «Контрагент». Условие связи будет следующим: Контрагент из документа должен равен значению реквизита «Владелец» для справочника «Договоры»:
В результате при выборе договора в списке пользователь будет видеть только те договоры, для которых выполняется условие связи Владелец (из справочника договоры) = Контрагент (из документа «Приходная накладная):
Параметры выбора
Это свойство позволяет настроить фильтр списка, который открывается при выборе значения реквизита.
Пример задачи:
В справочнике «Номенклатура» хранится список всех товаров и услуг организации:
В документе «Расходная накладная» товары и услуги хранятся в разных табличных частях:
В заполнении табличной части «Товары» пользователь при выборе товара должен видеть списке только товары, а при заполнении табличной части «Услуги» — только услуги (без товаров). При этом в справочнике «Номенклатура» есть реквизит типа «Булево» — «Услуга», который позволяет однозначно определить тип номенклатуры:
Для решения этой задачи нужно в конфигураторе настроить свойство «Параметры выбора» реквизита «Номенклатура» для каждой табличной части:
Для реквизита «Номенклатура» табличной части «Товары» добавляем в настройки параметров выбора условие вида «Услуга = Ложь», для реквизита «Номенклатура» табличной части «Услуги» — условие вида «Услуга = Истина». В результате при выборе значения реквизита список будет отфильтрован согласно этому условию.
Таким образом, в этой статье мы познакомились с полезными свойствами реквизитов объектов 1С, которые позволяют быстро и просто решать часто возникающие на практике задачи без программирования, это свойства:
- Значение заполнения (настройка значения по-умолчанию)
- Проверка заполнения (обязательность заполнения реквизита)
- Связи параметров выбора (настройка связи между реквизитами одного объекта)
- Параметры выбора (настройка фильтра списка при выборе значения реквизита)
2019-05-01 13:39
Программирование