какая процедура выполняет обработку события ввода документа на основании
Как в 1С создать на основании программно
Рассмотрим простой пример программного ввода документа в 1С на основании. Допустим необходимо после проведения приходного документа «Приход» создать расходный документ «Расход» на основании данных полученных из приходного документа.
Простое создание на основании стандартным способом платформы 1С
В документе «Расход» или «Приход» нужно настроить связь на вкладке «Ввод на основании»:
Где указать с кем он связан:
Должна получиться следующая картина:
Далее в модуле документа «Расход» нужно создать процедуру «Обработка заполнения» с помощью клика в верхнем меню:
Если в документе уже существуют данная процедура — нужно не создавать новую, а добавлять код в существующую процедуру.
И прописать программный код заполнения. Пример кода:
Программный код можно также создать автоматически для этого нужно воспользоваться «Конструктором ввода на основания».
Конструктор ввода на основании
Чтобы в 1С автоматически создать процедуру, нужно нажать на кнопку «Конструктор ввода на основании»:
Где с помощью функции «Заполнить выражения» можно автоматически сопоставить название реквизитов:
Если реквизиты различаются по названию, их можно сопоставить вручную. Например, в одной табличной части у вас реквизит «Номенклатура», а в другой «Товар».
После нажатия на «Ок», 1С сама сформирует готовый программный код:
Внимание! Конструктор нельзя использовать, если процедура заполнения уже существует — вы потеряете существующий программный код.
Создание документа после записи первого документа с последующей записью созданного
Для реализации такой задачи можно использовать метод объекта Заполнить(), в параметры которого необходимо будет передать данные заполнения из документа прихода. Метод инициирует событие ОбработкаЗаполнения() и вызов процедуры-обработчика в модуле объекта документа «Расход».
Создание объекта после записи с открытием управляемой формы
Для программного создания документа в 1С с открытием управляемой формы пользователю можно использовать функцию ОткрытьФорму(), в параметры которой можно передавать данные для заполнения.
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Комплект вопросов сертификационного экзамена на знание основных механизмов платформы «1С: Предприятие 8» (стр. 16 )
| Из за большого объема этот материал размещен на нескольких страницах: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
4. Коллекция строк табличной части документа
5. Верны ответы 3 и 4
6.22 Что необходимо для того, чтобы написанная программистом процедура дополнила контекст документа (объекта типа ДокументОбъект)?
1. Она должна быть определена в модуле документа
2. Она должна быть определена в общем модуле
3. Она должна быть определена с ключевым словом Экспорт
4. Одновременно должны выполняться условия 1 и 3
5. Одновременно должны выполняться условия 2 и 3
6.23 В каком свойстве хранится время документа?
4. Нет правильного ответа
6.24 Для чего предназначен объект ДокументСписок?
1. Для перебора (выборки) документов средствами встроенного языка
2. Для управления списком документов, выводимых в табличное поле, т. е. для решения интерфейсных задач
3. Для операций над документами как объектами базы данных, создания и удаления документов
4. Верны ответы 1 и 2
6.25 С какого значения начинается индексирование элементов коллекций?
3. С начального индекса, заданного программистом при создании коллекции
4. Элементы коллекций не индексируются
6.26 Объект какого типа позволяет изменить элемент справочника в базе данных?
4. Все перечисленные объекты
5. Верны ответы 1 и 2
6.27 Какие утверждения относительно NULL справедливы?
2. NULL относится к примитивным типам данных
4. Верны все перечисленные ответы
Ввод на основании
Ввод на основании используется в случаях, когда при создании нового объекта могут быть использованы данные уже существующего объекта. Ввод на основании может быть реализован для справочников, документов, планов видов характеристик, планов счетов, планов видов расчета и бизнес-процессов. В общем случае объект может быть создан на основании любого объекта из перечисленных выше, например, документ может быть создан на основании справочника.
Рассмотрим работу механизма ввода на основании на следующем примере: Организация оказывает услуги пассажирского такси. Заказы покупателей регистрируются в документе «Заказ». Заказ может быть формируется диспетчером. Документ «Заказ» содержит следующую информацию:
Создание объектов конфигурации
Реализация
В свойствах документа «Заказ» перейдем на закладку «Ввод на основании»:
Нажмем кнопку «Редактировать элемент списка» и выберем из списка справочник «Клиенты»:
Далее запустим конструктор ввода на основании нажатием на кнопку «Конструктор ввода на основании»:
В открывшемся окне нужно сопоставить поля справочника с реквизитами документа заказа. Это можно сделать, нажав кнопку «Заполнить выражения» и тогда система попытается сама определить, какие поля необходимо скопировать:
Поле адреса нужно сопоставлять вручную, выбрав поле «АдресОткуда» в нижней части, а затем двойным щелчком на реквизите «Адрес» в реквизитах объекта обоснования:
По нажатию «ОК» система генерирует следующий код в модуле документа «Заказ» в процедуре ОбработкаЗаполнения:
Процедура ОбработкаЗаполнения вызывается в ряде случаев, таких как ввод нового документа интерактивно и ввод на основании. В данном случае, если переменная ДанныеЗаполнения является ссылкой на справочник клиентов, выполняется заполнение реквизитов документа. Код обработчика можно модифицировать. Предположим, что клиенты чаще всего хотят подачу такси в течение 15-20 минут. Тогда в код обработчика можно добавить инициализацию реквизита «ВремяПодачи». Также удалим комментарии, созданные конструктором:
Запустим приложение в режиме отладки и проверим, как работает ввод на основании. Добавим пару записей в справочник клиентов:
Откроем одну из них. В окне будет доступна кнопка «Создать на основании», по нажатию которой откроется список с опцией выбора «Заказ»:
При выборе «Заказ» система создает пустой документ и заполняет поля в процедуре ОбработкаЗаполнения:
Сохраним документ и убедимся, что документ был успешно создан, открыв его из спиcка документов заказа:
Теперь предположим, что у клиентов могут быть опции, которые всегда присутствуют в заказе данного клиента. Например, «Некурящий водитель». Тогда их можно задавать в справочнике клиентов и копировать в документ заказа. Расширим справочник «Клиенты» табличной частью «Опции»:
Теперь необходимо модифицировать процедуру ОбработкаЗаполнения документа. Это можно было бы сделать через конструктор, но тогда процедура обработки будет перезаписана, поэтому добавим код копирования табличной части вручную:
Запустим конфигурацию в режиме отладки и посмотрим, что получилось. Добавим опции клиенту:
Сохраним данные и создадим заказ на основании записи справочника:
Таким образом, данные табличной части были успешно скопированы в заказ. Для этого простого примера реализацию ввода на основании можно считать законченной.
Ввод на основании в 1С 8.3
Ввод на основании
Механизм ввода на основании позволяет автоматически заполнять реквизиты объекта при его создании на основании другого объекта.
Например, есть документ Приход товара. На его основании можно создать документ оплаты и автоматически заполнить в нем контрагента и сумму из прихода товара.
Настройки ввода на основании выполняются на закладке Ввод на основании. В верхней части указывается какие объекты могут являться основанием для заполнения текущего объекта:
В нижней части какие объекты могут создаваться на основании текущего:
В нашем примере на основании документа Приход товара можно создать документ Оплата.
Теперь в пользовательском режиме в форме документа и в форме списка появится подменю Создать на основании, в котором будут созданы команды ввода на основании для всех объектов, которые создаются на основании текущего объекта:
После нажатия на кнопку «Оплата» будет открыта форма нового документа Оплата:
При этом хотелось бы, чтобы реквизиты документа оплаты автоматически заполнялись из документа прихода товара. Процедура, которая вызывается при вводе на основании называется ОбработкаЗаполнения и находится в модуле объекта.
ОбработкаЗаполнения
Обработчик ОбработкаЗаполнения нужно создавать у того объекта, который создается на основании. В нашем примере это будет документ Оплата. В параметре ДанныеЗаполнения передается ссылка на объект-основание. Алгоритм заполнения нужно реализовать самим:
Разбор тестирования 1С:Профессионал и PMP
Вопросы по разным конфигурациям 1С и проектному менеджменту
среда, 27 декабря 2017 г.
Конструктор ввода на основании
14 комментариев:
Вопрос 04.13 экзамена 1С:Профессионал по платформе. Какое предназначение имеет выделение «галочками» элементов списка «Реквизиты объекта основания»?
Точно ответ 1?
Добрый день! А не 2?
Это опечатка. В тесте будет не состав.количество, а состав.цена
Тобишь правильным остается 1)
Эти реквизиты система предлагает в качестве формулы заполнения реквизита «Состав.Цена» по принципу совпадения типов реквизитов
Здравствуйте. Может есть одним файлом ответы на все вопросы?
Вот вот. Автору конечно огромное спасибо, хорошо что вообще есть такие подробные ответы с описаниями. Но нет ли ответов с пояснениями в другом формате. По порядку, а то приходиться чуть ли ни каждый вопрос искать в поиске. Или может здесь есть сортировка по порядку следования вопросов?
04.13 почему ответ не 2. я купил официальный сборник вопросов и там тоже самое написано что тут, т.е. опечатки нет!
галочками отмечено на картинке 2а реквизита и оба эти реквизита по принципу совпадения имени и подставятся, мне кажется даже на тип смотреть система не будет, надо проэксперементировать, но этот вопрос явно какойто с подвохом, кто может пояснить?! или надо просто запомнить по ключу «совпадения типов реквизитов»?
здесь основополагающим является текст в ответе №1 «по принципу совпадения типов реквизитов». В конструкторе имя реквизита значения не имеет, важен тип. Согласна, что на примере, для выделенной строки «Цена» предлагается подставить какое-то значение (количество или сумма) ориентируясь на тип реквизитов документа-основания. Видимо опечатка все таки в первой варианте.