1с заполнять из данных заполнения что это
Перейти к содержимому

1с заполнять из данных заполнения что это

  • автор:

Обычные формы 1С¶

В обычных формах для передачи параметра обычно используется два варианта:

  • менее распространенный способ: в форме объекта на вкладке «Реквизиты» добавлялся реквизит, при необходимости определялся доступ визуальными средствами
  • более распространенный способ: в модуле формы объявлялась экспортная переменная и в обработчике «ПередОткрытием» значение обрабатывалось

Пример вызова формы:

Свойства реквизитов «Значение заполнения», «Заполнять из данных заполнения»¶

https://its.1c.ru/db/pubessence/content/94/hdoc
В версии 8.1 не существовало возможности автоматического (без написания кода) заполнения значений реквизитов добавляемых объектов. Для решения этой задачи приходилось писать обработчик события Обработка заполнения. При вводе на основании этот обработчик вызывался системой автоматически. В других случаях нужно было вызывать этот обработчик самостоятельно, из кода.
У реквизитов объектов конфигурации появилось два новых свойства: и .
Для примитивных типов это может быть некоторое число или строка. Для ссылочных типов можно выбрать одно из предопределенных значений, а для перечислений – существующие в конфигурации значения перечислений.

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

Действия системы по начальному заполнению реквизитов можно программно переопределить в обработчике события объекта .

Заполнять из данных заполнения

Заполнять ProgressBar при выгрузке данных из БД
Как плавно заполнять ProgressBar, при запросе в БД для выборки большого кол-ва данных ? Возможно.

Автоматически заполнять поля на основе данных из парсера
Здравствуйте! Мы с друзьями делаем торрент-ресурс. Когда на трекере выкладываешь раздачу.

Можно ли заполнять часть таблиц из базы данных, а часть из программы?
Здравствуйте! У меня есть база данных, в которой есть таблицы Клиенты, Заявки, Статусы заявок и.

Галочка включает механизм заполнения поля при создании элемента данными заполнения.
Данные заполнения, это, например, установленный отбор в динамическом списке, переданные значения при вводе на основании и пр.

Вы открываете список элементов справочника, устанавливаете отбор по полю "Реквизит1", создаете новый элемент, у него значение "Реквизит1" подставляется из отбора.

Если данных заполнения нет, то берется значение заполнения, указанное в конфигураторе. Но нужно, чтобы это значение заполнения совпадало по типу со значением поля. Нельзя в поле ссылочного типа заполнить строку.

Заполнение реквизитов нового документа

Частая задача — сделать так, чтобы форма нового объекта открывалась не «пустая», а уже заполненная некоторыми начальными данными. Для самых простых случаев можно использовать свойство ЗначениеЗаполнения , которое есть у реквизитов объектов конфигурации. В более сложных случаях можно использовать свойство ЗаполнятьИзДанныхЗаполнения . Если ни тот, ни другой способы не подходят, на встроенном языке можно описать собственный алгоритм начального заполнения данных нового объекта.

Свойство ЗначениеЗаполнения

Например, есть документ Накладная с реквизитом Склад . В подавляющем большинстве случаев товары приходуются на главный склад, и лишь в отдельных редких случаях они могут приходоваться на другие склады. Чтобы облегчить работу оператора и не заставлять его каждый раз выбирать один и тот же склад в новых накладных, можно поступить следующим образом.

У реквизитов объектов конфигурации существует свойство ЗначениеЗаполнения . Реквизит Склад имеет тип ссылки на справочник Склады , а в справочнике Склады существует предопределенный элемент ГлавныйСклад . Тогда прямо в конфигураторе можно указать, что в новых документах реквизит Склад будет сразу же заполнен ссылкой на ГлавныйСклад :

Cвойство ЗаполнятьИзДанныхЗаполнения

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

Теперь будет происходить следующее. В режиме 1С:Предприятие пользователь отобрал список накладных по некоторому поставщику и некоторому складу. При вводе новой накладной с помощью команды «Создать» списка, поля Поставщик и Склад будут заполнены именно теми значениями, по которым отобран список накладных:

Собственный алгоритм заполнения реквизитов

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

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

Если же не менять стандартное значение этого параметра, то после выхода из этого обработчика платформа попытается самостоятельно заполнить реквизиты объекта, подлежащие заполнению. Незаполненными она будет считать те реквизиты, которые имеют стандартное значение своего типа. Например, для типа Число это значение 0, для типа Строка — пустая строка, а для типа Ссылка — пустая ссылка.

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

Как открыть форму с заполнением

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

Открытие формы с заполнением (передача в параметре открываемой формы и реализация метода «ОбработкаЗаполнения()») выполняется одинаково в управляемом и обычном приложении (проверял на платформе 8.3.5.1146 — управляемое приложение и на платформе 8.2.18.102 — обычное приложение).

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

В структуру «ПараметрыЗаполнения» записываются все нужные для заполнения данные, затем эта структура вставляется в другую структуру под названием «ПараметрыФормы».

Причем ключ, под которым структура «ПараметрыЗаполнения» вставляется в структуру «ПараметрыФормы», должен называться именно «ЗначенияЗаполнения» иначе, ничего не работать не будет.

Далее нужно реализовать событие модуля формы заполняемого объекта — «ОбработкаЗаполнения()». Я для этого использую следующую конструкцию, которая, на мой взгляд, изящно выглядит и позволяет избежать всех возможных ошибок (поправьте, если я ошибаюсь):

Напомню, что метод структуры «Свойство()» проверяет наличие в структуре элементы с именем, указанным в первом параметре и записывает найденное значение во второй параметр — в данном случае это реквизит заполняемого объекта (если элемент с указанным именем в структуре не найден, то во второй параметр записывается «Неопределено»).

На этом все, надеюсь данная статья Вам помогла.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

УжасноПлохоНеплохоХорошо Отлично(оценок: 22, средняя оценка: 4,18 из 5)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *