Audi-a3club - Автомобильный портал

Ввод на основании в 1с 8.3. Конструктор ввода на основании

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

Рассмотрим простой пример. Допустим, в прикладном решении существует документ Поступление товара , который фиксирует факт появления в организации некоторых позиций номенклатуры:

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

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

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

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

Укажем, что на основании насоса будет выводиться Акт приема в ремонт.

1. В справочнике Оборудование откроем вкладку Ввод на основании . Нажмем на кнопку Является основанием для .

Выбираем – Документ АктПриемаВРемонт (рис. 37а).

Рис. 37а. Ввод на основании. Выбор объекта

2. На основании АктПриемаВРемонт будет вводится АктВыдачиИзРемонта.

Выполните данные действия для документа (открыть документ АктПриемаВРемонт – Вкладка Ввод на основании – Является основанием для АктВыдачиИзРемонта) (рис. 37б).

Рис. 37б. Ввод на основании. Выбор объекта для Акта приема в ремонт

Для документа АктПриемаВРемонт откроем его Модуль (нажатием правой кнопкой мыши открываем контекстное меню документа АктПриемаВРемонт – выбираем Открыть модуль объекта) (рис. 38).

Рис. 38. Контекстное меню Документа

Создадим (рис. 39). В модуле появилась новая запись (рис. 40а).

Рис. 39. Обработчик событий Обработка заполнения

Рис. 40а. Модуль документа Акт приема в ремонт

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

Реквизиту документа АктПриемаВРемонт Оборудование присвоим значение ДанныеЗаполнения. Для это вводим в процедуру

Оборудование = ДанныеЗаполнения;

Рис. 40б. Модуль документа Акт приема в ремонт

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

Для этого аналогично откроем Модуль объекта документа . Создадим обработчик событий Обработка заполнения .

Данный документ вводится на основании Акта приема в ремонт . Потому в данных заполнения будет ссылка на АктПриемаВРемонт. Значит

    в реквизит Клиент необходимо подставить ДанныеЗаполнения.Клиент,

    в реквизит Оборудование – ДанныеЗаполнения.Оборудования

    в реквизит Склад – ДанныеЗаполнения.Склад (рис. 40в).

Рис. 40в. Модуль документа Акт выдачи из ремонта

5. Также для справочника Склады укажем, что справочник будет использовать свойство Быстрый выбор . Это значит, что теперь Склад будет выбираться не из отдельной формы, открывающейся в отдельном окне, а из маленького списка, который выпадает прямо из поля ввода (открыть Свойства справочника Склады – отметить свойство Быстрый выбор) (рис. 41).

Рис. 41. Фрагмент Свойства справочника. Быстрый выбор

ВВОД ДАННЫХ В БД

1. Насосный завод принес еще один насос в ремонт. Запишем его в справочник – КМ 0-32-180/2-5, с/н7744.

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

Создадим на основании Акт приема в ремонт.

Оборудование, необходимое, уже подставилось (рис. 42). Клиент – Насосный завод. Склад – Основной склад (появился маленький список). Дата- 12.11.2011 г. Провести. Закрыть.

Рис. 42. Ввод Акта приема в ремонт

Отметим недостатки в разработанной конфигурации :

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

    Список ссылок, представленный слева, выглядит не очень красиво (рис. 43).

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

Рис. 43. Список ссылок меню системы

Обновим конфигурацию БД и запустим ее в режиме 1С: Предприятие.

Конструктор ввода на основании
Конструктор ввода на основании облегчает задачу разработки процедуры ВводНаОсновании().

Конструктор можно вызвать, выбрав пункт «Ввод на основании...» из меню « » главного меню программы или нажав кнопку на панели инструментов «Конструкторы». При этом должна быть открыта форма документа.

При запуске открывается диалог «Конструктор ввода на основании». Он содержит список документов-оснований, список реквизитов документа и список (в виде дерева) реквизитов документа-основания, выбранного в первом списке.

В список документов-оснований входят:

· документы, отмеченные в правом списке в окне «Ввод на основании». (Это окно открывается при нажатии соответствующей кнопки в окне свойств данного документа);

· документы, никак не отмеченные в свойствах данного документа, если для самих этих документов в том же окне «Ввод на основании» установлен флажок «Может являться основанием для документов любого вида».

Кнопки «Назад» и «Далее» перемещают курсор вверх и вниз по списку реквизитов документа. При достижении конца списка появляется запрос «Перейти к следующему документу-основанию?», и при выборе «Да», курсор в списке документов-оснований смещается на следующую строку. Такой порядок обеспечивает перебор всех реквизитов документов для каждого документа-основания. Можно также для выделения строки в любом списке пользоваться мытью.

В список реквизитов документа нужно поместить формулы, определяющие, как заполнять реквизиты документа по выбранным реквизитам документа-основания.

Эти формулы можно создавать «вручную» следующим образом. Формула определяется в поле ввода «Формула заполнения реквизита» для реквизита документа, выделенного в списке. Можно вручную набрать ее в этом поле (а также вручную редактировать в нем созданную ранее формулу). Правильность написания формул Конструктор не проверяет.

Можно также двойным щелчком в списке реквизитов документа-основания помещать данные соответствующего реквизита в поле «Формула заполнения реквизита», причем сразу в правильной записи, например, реквизит документа-основания «Товар» - в записи «ДокОснование.Товар». Конструктор не проверяет соответствия типов выбранных реквизитов.

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

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

По кнопке «Очистить формулы», после запроса и подтверждения, очищаются все формулы, созданные как автоматически, так и вручную.

Формулы, созданные для документа-основания, выбранного в списке документов-оснований, запоминаются при переходе к другому документу-основанию этого списка. Поэтому можно, не прекращая работы Конструктора, создать процедуры ввода на основании для нескольких документов-оснований. Можно также возвращаться к редактированию процедуры для какого-либо документа-основания, снопа выбирая его в списке.

Для прекращения работы Конструктора служат кнопки «ОК» и «Отмена» (соответственно, с сохранением и без сохранения сделанных изменений).

Кнопка «Обновить» позволяет отразить в модуле формы сделанные изменения без выхода из окна Конструктора.

В результате работы Конструктора в модуле формы документа создается процедура ВводНаОсновании(ДокОснование). В начало процедуры Конструктор помещает предупреждение: «Данный фрагмент построен Конструктором. При повторном использовании Конструктора внесенные вручную изменения будут потеряны!».

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