Как создать собственную форму документа в 1с
Сегодня мы поработаем с формой документа: научимся ее создавать и добавлять на нее новые реквизиты.
Откроем документ "ПриходДенежныхСредств" и добавим реквизит "Договор" (Рисунок 1).
Укажем у реквизита "Договор" ссылку на справочник "Договоры" (Рисунок 1).
Теперь зайдем в пользователя и проверим изменения (Рисунок 2)!
Теперь я хочу сделать таким образом, что бы при выборе контрагента "Поставщик 3" показывались только те договоры, которые относятся к этому контрагенту! У нас для этого уже есть заготовки и просто необходимо включить этот функционал.
До этого мы указывали, что справочник "Договоры" является подчиненным для справочника "Контрагенты" - является владельцем.
Посмотрите на рисунок 2, сейчас в этом окне показываются все договоры, которые относятся к этому контрагенту и которые не относятся, а мне необходимо лишние отфильтровать по владельцу (контрагенту).
Для этого нужно открыть свойства реквизита "Договор" и найти свойство "Связи параметров выбора" (Рисунок 3).
У этого свойства необходимо нажать на значок многоточия и откроется окно (Рисунок 4).
В этом окне нам необходимо перетащить реквизит, по которому будет делаться отбор - это Контрагент. Нужно выделить реквизит и нажать на значок стрелки вправо и он переместится в правое окно (Рисунок 5).
В правом окне необходимо установить значения, которые показаны на рисунке 5 и нажать "Ок".
Если поле (столбец) "Имя" не отображается как на рисунке, то необходимо по нему дважды щелкнуть и в выпадающем списке выбрать необходимое значение.
После этого нужно перейти в режим пользователя и проверить изменения (Рисунок 6).
На рисунке 6 видно, что реквизит сам добавился и на форму документа и на форму списка, а так же, отбор по владельцу работает.
Работает это так: как только вы выбрали в поле "Контрагент" какой-то элемент, так сразу для поля "Договор" срабатывает отбор и будет показываться только то, что относится к этому владельцу (контрагенту).
Давайте продолжим. Добавим реквизит "Договор" (Рисунок 8) в документ "РасходДенег" - он будет абсолютно таким же, как и в прошлом документе, то есть нужно в свойствах указать отбор по владельцу (если не помните как, то посмотрите выше, там это описано), но перед этим добавим форму документа на вкладке "Формы" (Рисунок 7), выберите необходимые реквизиты, которые будут отображаться на форме и нажмите "Готово".
Закройте форму, она пока нам не нужна и теперь перейдите на вкладку "Данные" и создадим реквизит "Договор" (Рисунок 8).
После этого запустить пользователя и проверить изменения (Рисунок 9).
Посмотрите на рисунок 9, на форме документа нет реквизита "Договор"! Как так и почему? Ведь мы же его создали, а он тут не отображается!
Но, если закрыть форму документа и посмотреть на форму списка (Рисунок 10), то мы увидим, что этот реквизит на этой форме есть!
Как так получается? Почему в одном месте его нет, а в другом есть?
Все очень просто, все точно так же как и в справочнике! Мы создали реквизит после того, как создали форму! А в этом случае платформа понимает: "как только создана форма, она уходит в сторону и все работу по добавлению чего-то нового на форму, отдает полностью пользователю"!
Мы создали форму документа, а потом только создали реквизит. Именно поэтому он не добавился на форму, так как нам нужно добавлять его на форму вручную, а форму списка мы не трогали и именно поэтому платформа сама его добавила!
Давайте добавим реквизит на форму! Для этого откроем объект на вкладке "Формы" и откроем форму документа (Рисунок 11).
Теперь необходимо в правой части окна раскрыть список "Объект" и там найти реквизит "Договор" (Договор 12).
Проверим изменения в пользовательском режиме (Рисунок 13).
Все так и работает: как только создаете какую-то форму, так сразу платформа перестает сама добавлять реквизиты на форму, но если вы до создания формы создали все реквизиты и потом создали форму, то автоматически все реквизиты появятся на форме.
Мало того, что реквизит появился на форме, так и отбор работает - показываются только те договоры, которые относятся к определенному контрагенту!
Теперь проверим изменения в пользователе и убедимся в том, что она не появилась на форме документа - значит, нужно переместить ее сначала на форму в режиме разработчика (Рисунок 15).
Теперь проверим пользователя и будет выглядеть вот так (Рисунок 16).
Как видим по рисунку 16, табличка появилась выше первых двух таблиц, а не стала после таблички "Услуги" как на рисунке 17.
Так, как на рисунке 16, программа тоже будет работать, но не удобно будет, слишком много места занимает одна таблица, а нужно так, как на рисунке 17 - для экономии места и удобности.
Для этого перейдем на форму в режиме разработчика и сделаем следующее:
3. Рисунок 20 - Переименовать новую группу (Имя и Синоним)
4. Рисунок 21 - Переместить в папку "Дополнительно" таблицу "Дополнительно"
5. Рисунок 22 - Запустить пользователя и проверить изменения .
Теперь место сэкономлено, стало более удобнее работать!
При добавлении таблички в нужно место мы познакомились побольше с формой, а именно с созданием группировки (папки), которая помогает правильно отобразить элемент на форме. Более подробно с созданием группировки мы поработаем на следующем занятии и разберемся со всем.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том. что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Всем спасибо. Задать вопросы, которые у вас возникли вы можете, написав комментарий или вступить в группу и задать там свой вопрос. Ссылка для вступления в группу - t.me.Apiscourses
Узнав о формах 1с, перейдем к более глубокому ознакомлению. Для начала создадим форму, это может быть форма любого объекта, в данном примере это справочник. Способов создать форму существует несколько:
1. Из конструктора объекта 2 способа
2. Из дерева конфигурации через контекстное меню (правой кнопкой мыши на выделенном синим на рисунке объекте).
Конструктор форм
При создании новой формы появляется окно конструктора формы:
Тип формы, который предлагает выбрать конструктор повлияет, на начальное заполнение элементами. Основными вариантами типов являются:
Флажок «Назначить форму основной» означает что, если форм данного типа будет несколько и при вызове формы этого типа не будет указана конкретная, то будет выведена основная. Например: существует форма списка «ФормаСпискаКраткая», которая является основной и «ФормаСпискаПолная», если вызвать форму списка и не указать конкретную, то будет выведена «ФормаСпискаКраткая».
Основные формы видны на закладке «Формы» конструктора изменяемого объекта.
Флажок «Основная форма списка и выбора» означает что, эта форма будет выводиться как для просмотра списка, так и для выбора.
Флажок «Основная форма элемента и группы» означает что, эта форма будет выводиться как для редактирования элемента, так и для группы.
Дальше идёт реквизит «Имя» он является идентификатором этой формы, нельзя создать у одного объекта двух форм с одинаковым идентификатором.
Реквизит «Синоним» будет выводиться в пользовательском режиме как имя этой формы.
Реквизит «Комментарий» хранит какие-либо заметки или пояснения.
Флажки «Командная панель сверху» и «Командня панель снизу» указывают где выводить командные панели. Командная панель это элемент формы который содержит кнопки. Например:
При нажатии кнопки «Далее» форма конструктора измениться, и будет доступно размещение элементов на форме:
Для себя я использую в основном следующий метод создания формы, если объект новый то вызываю конструктор из объекта на закладке «Формы» группа «Основные формы», нажимая на значок «Открыть»(лупа)(рисунок 1). Если объект имеет основные формы, то вызываю конструктор из дерева метаданных методом «Добавить» из контекстного меню ветки «Формы»(рисунок 2).
Сделаю небольшое пояснение о связи формы с объектом. Вообще правильная установка свойств уменьшает необходимость писать код.
У формы есть свойство «Данные» оно является основным для формы и на закладке «Реквизиты» выделяется жирным шрифтом.
Что дает проставление свойства «Данные», в зависимости от выбранного значения добавляются новые события, методы формы и возможность добавить соответствующие кнопки командной панели.
Пример: « ПараметрТекущаяСтрока » - это свойство доступно в модуле формы если тип основного реквизита СправочникСписок.
Прежде всего, следует заметить, что до сих пор мы использовали предопределенные формы объектов, которые система 1С:Предприятие создавала для нас сама «по умолчанию».
Теперь же у нас возникла необходимость слегка изменить логику работы формы документа, а значит, нам придется создать свою собственную форму документа ПриходнаяНакладная для того, чтобы в ней мы могли описать тот алгоритм, который нам нужен.
Вернемся в конфигуратор и откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная. В этом окне нас интересует закладка Формы. Как мы видим, ни одна из основных форм документа пока не задана.
Для того чтобы создать форму документа, нажмем на символ лупы в поле ввода (рис. 3.6):
Рис. 3.6. Создадим форму документа…
Рис. 3.7. Конструктор форм
Выберем тип формы ФормаДокумента и нажмем кнопку Готово, согласившись тем самым со всем, что нам предложила система.
Обратите внимание, что в дереве объектов конфигурации у объекта конфигурации Документ ПриходнаяНакладная появилась форма ФормаДокумента, а на экране открылось окно редактора форм, содержащее эту форму (рис. 3.8):
Рис. 3.8. Новая форма документа и окно редактора форм
Как видите, форма документа Приходная накладная содержит большое количество всевозможных полей. Эти поля называются элементами управления. Они имеют разное назначение и разное поведение, которое соответствует их назначению. Однако все они служат для того, чтобы отображать информацию, хранящуюся в базе данных, и организовывать интерактивную работу с этой информацией.
Сейчас мы обратим свое внимание только на те элементы управления, которые нас интересуют, – это три поля ввода, расположенные в колонках Количество, Цена и Сумма (рис. 3.9):
Рис. 3.9. Интересующие нас элементы управления…
Мы хотим, чтобы каждый раз, когда меняется значение в поле Количество или в поле Цена, в поле Сумма автоматически устанавливалось значение, равное Количество * Цена. Очевидно, что для этого нужно написать на встроенном языке команду, похожую на Сумма = Количество * Цена, которая будет выполняться при изменении значения поля Количество или Цена. Но как «поймать» эти моменты изменения?
Для чего нужны измерения регистра, ресурсы и реквизиты?
Измерение - накопление числовой информации в данном разрезе;
Резурсы - виды числовой информации, накапливаемой регистром;
Измерение так же является критерием отбора при получении данных;
Реквизиты - набор попутных данных для записи регистра;
Что такое движение регистра и что такое регистратор?
Движение регистра - в регистр отправляется некоторый набор записей, содержащий значение измерения, значения приращения ресурсов, ссылку на документ, который вызвал эти изменения (регистратор);
Регистратор - объект информационной базы данных (документ), который производит конкретные движения;
Как создать новый регистр накопления и описать его структуру?
В 1С:Конфигуратор правый клик - добавить. Структура определяется на вкладке "Данные"
Как создать движение документа с помощью конструктора движений?
Выбираем нужный документ в конфигураторе, правый клик - изменить, закладка "Движения"
Выбираем регистр, и жмем на конструктор движений.
В окошке "Регистры" - регистр, по которому будут проходить движения, в поле "реквизиты документа" - исходные данные для создания движений - реквизиты документа.
В нижнем окошке - устанавливаем соответствие между данными регистра и данными документа.
Как с помощью встроенного языка обойти табличную часть документа и обратится к её данным?
Это можно сделать с помощью циклов.
Для Каждого СтрокаТабличнойЧасти ИЗ ТабличнаяЧасть ЦИКЛ
Сообщить(СтрокаТабличнойЧасти.Услуга)
КонецЦикла
Как показать команды открытия списка регистра в интерфейсе конфигурации и в интерфейсе форм?
Подсистемы - правый клик - все подсистемы - выбираем нужную подсистему, ставим галочку напротив регистра
Продолжение одинэсной темы, ответы на книгу Радченко, занятие 2 и 3.
Документ предназначен для описания информации о совершенных хозяйственных операциях или произошедших событий в организации. Отличительная особенность документа - способность проведения - событие, которое отображает документ, повлияло на состояние учета. Так же документ привязан к конкретному моменту времени.
Реквизиты предназначены для описания наборов одинаковой для всех документов этого типа информации, стандартные реквизиты - дата и номер документа;
Табличные части - для описания набора информации, которая одинакова по структуре, но различна по количеству;
Проведение - действие, которое выполняет изменение других данных системы на основании информации документа;
В 1С:Предприятие создать новый документ. Данные заполняются как с помощью поля выбора, так и с клавиатуры;
Конструктор форм - это инструмент разработчика для создания форм, построенные по принципу "мастеров": ввод данных в определенной последовательности;
Редактор форм используется для создания и редактирования форм объектов прикладного решения. Редактор форм обеспечивает редактирования диалога формы, её реквизитов и редактирование модулей;
Основной интерфейсный инструмент, служит для управления и отображения записей Базы Данных; Примеры: кнопка, табличное поле, поле ввода и др;
Событие - процессы, возникающие при соблюдении определенных условий во время функционирования формы. Событие связаны с элементами формы.
Выбираем элемент формы, находим в палитре свойств событие, жмем на значок лупы. В модуле создастся шаблон процедуры - обработки события;
Общий модуль служит для хранения процедур, которые могут быть доступны для любых объектов конфигурации;
Объекты конфигурации, для которых может быть указан тип информации, содержащийся в объекте, называют типизированными объектами конфигурации. Некоторые объекты (справочники, документы, перечисления) могут сами образовывать типа, следовательно, они являются типообразующими объектами
Читайте также: