Для чего нужна форма выбора 1с
Выпадающий список (меню), это элемент управления пользовательского интерфейса, давно и прочно прописавшийся во всех распространенных системах разработки, в том числе и в системе разработки 1С.
Удобен он тем, что экономит место на форме, и позволяет сделать выбор из выпадающего списка с несколькими значениями, который открывается при определенном действии пользователя, обычно - при нажатии мышкой на кнопке открытия или выбора в поле списка. Список значений может быть большим или маленьким, заранее заданным, или формирующимся динамически, но показывается он на форме только тогда, когда нужен пользователю для осуществления выбора значения.
1С платформа 8.3 может работать в режимах обычного и управляемого приложения.
Рассмотрим, как реализуется создание выпадающего списка и чем различается его использование в разных режимах работы 1С Предприятие 8.3.
Для примера возьмем простой справочник (Код, Наименование) с реквизитом «ВыборИзСписка», с типом данных «Число».
1. Обычное приложение 1С
В режиме обычного приложения 1С в редакторе формы, в панели инструментов редактора выбираем элемент управления «Поле выбора» и размещаем его на форме элемента справочника:
Размещение Поля выбора в обычном приложения 1С
Также это можно сделать командой главного меню «Форма / Вставить элемент управления».
Теперь откроем панель свойств этого элемента управления и посмотрим, какие свойства нам могут понадобиться:
- «Данные». Это тот реквизит, значение которого показывается в поле выбора, и в котором будет сохранено выбранное из списка значение, непосредственно или после дополнительной обработки. В нашем случае это реквизит «ВыборИзСписка» справочника «Справочник1»;
- «Строки списка выбора» - ссылка на сам список, из которого мы будем выбирать. Подробнее разберем его ниже;
- «НачалоВыбораИзСписка» - событие, возникающее при нажатии на кнопку открытия списка, но ДО его показа пользователю. С ним в модуле формы связан одноименный метод, в котором обычно реализуется программное заполнение списка выбора;
- «ОбработкаВыбора» - событие, возникающее после того, как пользователь сделал в списке выбор, но до помещения выбранного значения в элемент управления. В модуле формы с ним связан одноименный метод, в котором проводится программная обработка выбранного значения или связанных с ним данных.
Откроем список выбора по ссылке свойства «Строки списка выбора»:
Строки списка выбора в обычном приложении 1С
Здесь колонка «Значение» – это собственно значения, которые будут использованы при выборе, а «Представление» - то, что будет видеть пользователь в списке. Значения могут быть только типов «Число», «Строка», «Дата», «Булево».
Т.е. это тот вариант, когда мы жестко задаем список выбора в конфигураторе, и он остается неизменным при работе 1С 8.3 Предприятие.
Однако в ходе формирование выпадающего списка нам может понадобиться менять состав списка выбора в зависимости от каких-либо условий или параметров. Сделать это можно в любой момент жизни формы – при открытии или при наступлении какого-либо события в других элементах управления формы, обуславливающего состав списка.
Как пример очистки и заполнения списка в момент открытия формы:
Заполнение списка при формировании выпадающего списка
Или уже в момент открытия списка для выбора:
Заполнение списка после формирования выпадающего списка
Если же после выбора из списка значения нам нужно выполнить какие-либо действия, обусловленные выбранным значением, то сделать это удобнее всего в процедуре «ОбработкаВыбора» этого элемента управления. Здесь в параметр «Выбранное значение» передается значение, которое мы выбрали в списке:
Процедура ОбработкаВыбора
Посмотрим теперь, как выглядит наш выпадающий список в режиме обычного приложения в 1С:
Выпадающий список в режиме в 1С
2. Управляемое приложение 1С
В режиме управляемого приложения 1С элемент управления на форме размещается иначе, чем в обычном при формировании выпадающего списка. В окне редактора форм из правой верхней части переносим реквизит или параметр в левую верхнюю часть – в список элементов. При этом на форму помещается элемент управления «Поле ввода» и у него в палитре свойств уже прописано свойство «ПутьКДанным» (в нашем случае – реквизит «ВыборИзСписка»).
Начало создания выпадающего списка в управляемом приложении 1С
В палитре свойств элемента управления в управляемом приложении 1С нам будут интересны следующие:
- В разделе «Использование» свойство «РежимВыбораИзСписка» отмечаем галочкой. При этом на элементе управления появляется кнопка открытия списка;
Кнопка открытия списка в управляемом приложении 1С
- Свойство «СписокВыбора» заполняется и работает так же, как и в обычном приложении, только окно ввода списка открывается при нажатии кнопки «…»;
Окно ввода списка в управляемом приложении 1С
- В разделе «События» уже знакомые нам «НачалоВыбораИзСписка» и «ОбработкаВыбора», которые работают так же, как и в обычном приложении в 1С, с учетом того, что в управляемом приложении 1С мы можем выполнять нужные действия по подготовке выпадающего списка с несколькими значениями и обработке результата выбора раздельно – на Клиенте и на Сервере, в зависимости от того, где и какие данные нам доступны:
Создание обработчика событий в управляемом приложении 1С
Ну и внешне, конечно, управляемое приложение в 1С отличается от обычного, и в нем наш выпадающий список для 1С будет выглядеть так:
Выпадающий список в 1С
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
1С:Предприятие 8 поддерживает готовую функциональность для организации выбора из форм списков объектных данных (справочников, документов и т.д.). В большинстве случаев выбираются именно такие значения. Однако, в некоторых случаях, необходимо организовать выбор и других значений. Механизм форм 1С:Предприятия 8 включает универсальный механизм выбора, позволяющий организовать выбор практически любых значений.
Для этого используется возможность открытия формы в режиме выбора и возможность обработки события выбора.
В качестве примера приведем реализацию выбора записи регистра сведений. Стандартные расширения форм не поддерживают механику выбора, однако ее несложно реализовать.
Вначале создадим новую форму списка регистра сведений и назовем ее "ФормаВыбора". В форме реализуем событие Выбор табличного поля отображающего список.
// Форма списка регистра сведений
Процедура РегистрСведенийСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
В этом событии мы отменяем стандартное действие, предусмотренное расширением табличного поля, и вместо него вызываем метод ОповеститьОВыборе(), передавая ему в качестве параметра текущую строку. Значением текущей строки будет являться значение типа РегистрСведенийКлючЗаписи..
Теперь реализуем функциональность выбора в той форме, в которой это требуется. Например, в форме обработки, имеющей поля ввода "Валюта" и "Период".
// Форма, из которой выполняется выбор
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Создадим ключ, идентифицирующий строку в списке регистра
ДанныеКлюча = Новый Структура("Период, Валюта", Период, Валюта);
Ключ = РегистрыСведений.КурсыВалют.СоздатьКлючЗаписи(ДанныеКлюча);
// Создадим форму регистра и откроем ее
Фрм = РегистрыСведений.КурсыВалют.ПолучитьФормуСписка("ФормаВыбора");
Фрм.РежимВыбора = Истина;
Фрм.ВладелецФормы = ЭтаФорма;
Фрм.ПараметрТекущаяСтрока = Ключ;
Фрм.Открыть();
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
// Обработаем значение выбора
Валюта = ЗначениеВыбора.Валюта;
Период = ЗначениеВыбора.Период;
Вначале мы сформируем ключ записи регистра сведений, который будет использоваться для установки в списке текущей строки в соответствии с текущими значениями полей ввода. Сама установка будет выполняться через стандартный параметр формы ПараметрТекущаяСтрока.
Заметим, что если для установки текущей строки расширение формы не предоставляет стандартного параметра, то можно создать свой реквизит у формы выбора, заполнить его аналогично заполнению стандартного параметра в этом примере, и при открытии формы обеспечить позиционирование в списке в соответствии со значением данного реквизита.
Далее мы создаем форму, устанавливаем ей режим выбора, владельца формы, и выполняем открытие формы.
Теперь нам нужно только реализовать обработчик выбора в форме и выполнить в нем необходимее действия с выбранным значением.
Заметим, что в качестве владельца формы может устанавливаться не только сама форма, в которой осуществляется выбор, но и ТабличноеПоле, ПолеВвода и ПолеВыбора. Соответственно и обработчик выбора нужно будет реализовывать у этих элементов управления.
Программа 1С предполагает, что каждому объекту нужна отдельная форма выбора. Да, такое иногда нужно. Но в моей практике почти всегда удобно пользоваться одинаковыми формами для выбора (не подбора!) и для списка.
Если в свойствах объекта не указывать форму выбора - платформа делает свою форму выбора из ключевых реквизитов, если указать уже имеющуюся форму списка - то она "почему-то" не работает. Исправляем досадную недоработку платформы буквально четырьмя строчками кода в процедуре ПриСозданииНаСервере у формы списка:
Указываем форму списка в качестве формы выбора:
В 90% случаев никаких доработок больше не требуется, если указать форму списка в качестве формы выбора - она будет правильно работать.
Доработки нужны в случае сложных форм подбора, которые опираются на данные вызывающей формы.
Специальные предложения
Как мне кажется создавать одну форму списка и форму выбора не правильно с точки зрения подходов к разработке.
Это как с обработчиками событий. Для каждого обработчика своя процедура. Так же и тут для каждой задачи своя форма. Как минимум путаницы будет меньше. Особенно если работаешь не один. И после тебя людям поддерживать и дорабатывать конфигурацию. И люди которые придут со стороны как минимум ожидают что это будут разные формы.
И что потом делать если вдруг надо изменить поведение формы списка, а поведение формы выбора оставить как есть. придётся делать две формы.
ИМХО не очень красивое решение.
v.a.ryag; Zontax39; bav_itritm; romankoav; mrChOP93; user1286414; Kinestetik; kambekon; rpgshnik; Stim213; DrAku1a; Silenser; Shmell; 7OH; Tyler Durden; МимохожийОднако; kostik_love; alyaev.a.v; ZOMI; Irwin; + 20 – 4 Ответить
(4) TODD22, тут можно поспорить. Повторю публикацию - мне много раз приходилось убеждаться, что когда при выборе значения в поле ввода открывается такая же форма, как и при отображении списка - у пользователя возникает меньший дискомфорт. Он пользуется теми же приемами (например для отбора), что и при работе в форме списка. Колонки находятся на тех же местах, их ширина запомнена, ненужные для пользователя данные он сам выключил, условное оформление, которое он для себя настроил - схоранилось. А когда это две разных формы - то, например, добавлении реквизита или изменения запроса ДС для вывода доп. информации, приходится дорабатывать две формы, что влечет дублирование кода.
И что потом делать если вдруг надо изменить поведение формы списка, а поведение формы выбора оставить как есть. придётся делать две формы.
Как часто приходилось это делать? Понятно, что есть случаи типа отображения остатков и прочие особенности форм подбора. Но посчитайте по своим конфигурациям, сколько форм выбора по отображаемой информации дублируют формы списка. Или отображают меньше информации (которая бывает необходима)?
Vlad87; GlukAl; user779050; v.a.ryag; denis_aka_wolf; romankoav; Kinestetik; TanyTany; papche; ErshKUS; lost-s0u1; Deletex; IrinaKostroma; freeek; SoldierOne; Krepkov; cefew; zqzq; sigmov; Трактор; IgorS; Gorus; ander_; + 23 – 1 Ответить
ИМХО тут даже спорить не о чем.
Нужно придерживаться стиля применяемого в типовых.
А не придумывать свои велосипеды.
Так создание однотипных обработчиков событий то же ведёт к дублированию кода. Может тогда один обработчик начать делать?
Ещё ни разу не видел раздражения пользователя на список формы и список выбора. Да так что бы раздражение вызывало что это две разные формы и нужно срочно переделать в одну.
А вот такие "неожиданные" решения ИМХО не правильно. Механизмы должны быть так сказать с ожидаемым поведением и очевидной реализацией, 1С в первую очередь открытая система.
Если везде и всегда используются две разные формы то наверное правильно делать так же. Чем придумывать свой велосипед.
Пусть даже это увеличивает трудоёмкость. Зато это понятно и очевидно.
(9) TODD22, ну, у вас пользователи не настраивают условное оформление, видимо. Не настраивают ширину колонок, не выключают "лишние" для них.
Я посчитал, сколько у меня одинаковых форм и как часто приходится дорабатывать обе, и вывел для себя подобное решение. Например когда дополнительная связанная информация хранится в РС и данные в этом РС вдруг расширили доп. реквизитом, надо этот реквизит добавить в обе формы.
Естественно, данное решение не панацея. Я не призываю его применять вообще везде. Например брать и перепиливать вдоль и поперек объекты типовых конфигураций не следует. А вот провести анализ, понять, сколько же одинаковых форм у нас есть в конфигурации - бывает полезно.
Да вы провокатор батенька.
Вам люди говорят о не нужности лишнего кода и работы, когда можно обойтись одной формой. Это основной принцип программирования - не плодить дубли. Если у вас одна база на три сотрудника и вы её почти не дорабатываете, а только обновляете и регулярно скучаете от просмотра YouTube на работе, то тогда, да, ваш вариант делать много повторяющихся формочек - так не забудете, как программировать. Если вы франчик, который сегодня делает изменения в конфигурации, а завтра его прогнали и взяли другого, а через три месяца снова прибежали к вам, потому что вы делаете "дёсыва", тогда это тоже ваш вариант.
А, если у вас сотрудников 20 тыс. и пользователей около 10 тыс, баз по регионам обменивающихся конфигурацией штук - 100, и во всей этой каше вам постоянно нужно делать разные хотелки в этих конфигурациях, то вы вероятно, будете экономить ваши силы на создание повторяющегося кода. В том числе и ценой общих функций вставляемые в обработчики событий, чтобы не фигачить, как оголтелый, когда нужно будет глобально везде сменить механизм обработки какого-то шаблонного события. Вы работаете в обольшой корпорации, где история работающей конфигурации уже насчитывает второй десяток лет. У вас многие бизнес-процессы не так, как у 1С (потому что это жизнь, а не сферический конь в вакууме!).
Вот об этом толкуют люди. Что касается самой 1С, то она в своём коде уж очень любит всё попилить на кусочки в общих функциях, чтобы это всё бегало из процедуры в процедуру и выполняло там "по одному шажочку".
(7) TODD22, чувак, открой ЗУП 3.0. Это АДДДДДДДД. Там фильтров в форме выбора сотрудников (уволен, организация, подразделение, архивный) жесть скока. И может так случиться, что в форме выбора сотрудника нет, а в форме списка есть. И пользователь сходу не врубается, почему данные отличаются. Я молчу, что при выборе физ-лица они показывают формы выбора сотрудника.
Я с автором солидарен: одна форма, единая логика работы! Прячем "архивных" сотрудников, следовательно прячем их и там и там. Один справочник - одна форма со списком.
чувак, открой ЗУП 3.0. Это АДДДДДДДД. Там фильтров в форме выбора сотрудников (уволен, организация, подразделение, архивный) жесть скока.
Запустил штук 10 зупов 3.0. Никаких проблем описанных тобой не было ни у одного пользователя с формами списков и выборов так что бы их нужно было переделать в одну форму.
(34) так реакция все равно будет только по своему обработчику. Да и полностью совместить обработку параметров разных обработчиков в одной процедуре не удастся.
(35)
А легко, когда в ЗУП Табель учета рабочего аремени то 1 обработчик на все колонки с днями месяца, и уже распределяешь по текущей колонке. Писать 31 одинаковый это треш и угар.
(6) Есть конечно и такие формы выбора и списка где одинаково все, но чаще наоборот форма списка раскрашенная , куча настроек быстрых отборов и т.д. А форма выбора минималистична, а порой ввод по строке вообще избавляет от формы выбора.А еще форма выбора очень часто открывается с программным отбором который не нужен списку, ну и так далее, если если если.
Поддержу (13) alyaev.a.v.
Решение с 1 формой не рекомендовал бы только из-за наложенных отборов. На форму списка почти всегда накладываются пользовательские отборы. При использовании этой формы как формы выбора мы рискуем:
- пересечь пользовательский отбор с "программным"
- ввести пользователя в заблуждение, не отобразив доступные для выбора элементы, скрытые пользовательскими отборами.
Хотя реализация с 1 формой встречается и в типовых конфигурациях 1С.
(14) Drak0n, да, с пользовательскими отборами косяк есть. Это один из самых спорных моментов, причем это спорный момент в архитекторе платформы, о который немало копий сломано на партнерском форуме. Сломать форму можно не только в данном случае, но и в случае разных форм. Например, если есть несколько полей, открывающих одну форму выбора с разной связью параметров выбора.
Вроде бы есть даже записанное пожелание у разработчиков 1с, чтобы снималось "использование" пользовательского отбора в случае пересечения фиксированных и пользовательских настроек.
(3) konstruktiv, там очень туманно написано. Описанный мной вариант работает. Лишних вызовов сервера не плодит.
А зачем свойство структуры сравнивать с Неопределено ?
Можно воспользоваться методом
(11) jerry_maguire, к сожалению, этот параметр у формы всегда есть (просто равен Неопределено) и .Свойство() возвращает Истина. А Параметры.Свойство("МножественныйВыбор", Элементы.Список.МножественныйВыбор) вообще выдает ошибку "несоответствие типов".
Например в Бухгалтерия предприятия, редакция 3.0 (3.0.43.258) Форма списка в справочнике Физические лица используется в Выборе и Списке
Ну, для простейших справочников (которые суть перечисления с парой доп-реквизитов) предложение вполне здравое.
Вряд ли там когда-то потребуется отдельная форма выбора, как и отборы.
Мы с самого начала отказались от идеи плодить лишние сущности. Только стандартный код при создании на сервере у нас немножко другой:
(23) kg_am, добавлю в пост, если не против
UPD: проверил, при стандартной обработке начала выбора окно и так открывается в этом режиме, эта строка не требуется.
При стандартном - да, но если выбор открывается программно, то тут оно и пригождается.
Конечно не против. Как можно быть против? ;)
Не так давно тоже начал применять данный подход и столкнулся с двумя особенностями из-за которых перестал использовать данный способ:
1. Сохраняются все настройки формы (добавленные поля, пользовательский отбор, размещение элементов на форме). Добавил я как то в форму списка подчиненного владельцу пользовательский отбор по владельцу, так как на форме списка его не было по бизнес логике, и соответственно он сохранился и применялся в режиме выбора с установленным отбором по владельцу через Связи параметров выбора.
2. Если используется метод глобального контекста ПоказатьВводЗначения или ВвестиЗначение, то в открываемой форме режим выбора не устанавливается, в результате приходится дописывать параметр РежимВыбора в модуль менеджера в событие ОбработкаПолученияФормы при открытии формы выбора что не очень удобно. Не тестировал еще работу в режиме подбора в список значений, открываемый в отборе компоновки с видом сравнения "В списке" и т.п.
(28) Спасибо за замечания!
1. Проблема понятна, обход делается в три строчки:
Если Параметры.РежимВыбора И Не ЗначениеЗаполнено(Параметры.КлючПользовательскихНастроек) Тогда
Параметры.КлючПользовательскихНастроек = "РежимВыбора";
Список.АвтоматическоеСохранениеПользовательскихНастроек = Ложь;
КонецЕсли;
добавлю это в публикацию.
2. Странно, видимо имеет место ошибка платформы в конкретном вашем релизе. У меня при ПоказатьВводЗначения Параметры.РежимВыбора = Истина. Проверял на релизе 8.3.8.2137, режим совместимости = не использовать.
1. Проблема понятна, обход делается в три строчки:
Если Параметры.РежимВыбора И Не ЗначениеЗаполнено(Параметры.КлючПользовательскихНастроек) Тогда
Параметры.КлючПользовательскихНастроек = "РежимВыбора";
Список.АвтоматическоеСохранениеПользовательскихНастроек = Ложь;
КонецЕсли;
добавлю это в публикацию.
У Вас еще все впереди, видимо :)
И после тебя людям поддерживать и дорабатывать конфигурацию. И люди которые придут со стороны как минимум ожидают что это будут разные формы.
Может стоит посмотреть в основные формы в конфигураторе?
Использование одной формы в место двух оправданно и с точки зрения разработчиков и точки зрения пользователей.
Для меня как для разработчика проще обслуживать одну и туже форму, особенно на сильно доработанных конфигурациях, и особенно на сложных формах. Если в форме 100500 отборов, и она находится в активной разработке, и в день приходит 15 "указивок" что и как изменить.
Например у меня форма документа заказ покупателя:
на форме колонки с текущим долгом, датой ближайшей отгрузки, статусом обеспечения и оплаты, менеджер видит только свои заказы, старший менеджер заказы своего отдела, руководить направления только заказы по своему направлению и еще 50 "если".
И ты еще одну задачу типа "если это младший менеджер, то что бы только не отгруженные", и все это надо сделать в двух СОВЕРШЕННО ОДИНАКОВЫХ ФОРМАХ, открывающихся в разных режимах.
С проблемой программных отборов при открытии формы в режиме выбора пока не сталкивался, но уверен что решение есть. Тоже программное :)
А с точи зрения пользователя - уже писали выше. Одни колонки, одно оформление.
С проблемой программных отборов при открытии формы в режиме выбора пока не сталкивался, но уверен что решение есть. Тоже программное :)
« Как стать программистом 1С » Язык 1С » Выпадающий список значений 1С на форме
Выпадающий список значений 1С на форме
Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.
Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.
Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()
ЭлементыФормы.ВыборЗначения.СписокВыбора.Очистить();
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(0, "Создать документ");
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(1, "Изменить документ");
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(2, "Удалить документ");
ЭлементыФормы.ВыборЗначения.Значение = 0;
Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)
- Включим кнопку выбора списка
- В свойстве «Список выбора» нажмите «…» и введите варианты
- Результат выбора будет сохранен в выбранном реквизите
Выпадающий список значений 1С на форме — Вариант 2)
- Включим кнопку выбора списка
- Добавим обработчик «НачалоВыбораИзСписка»
&НаКлиенте
Процедура ВыбранноеЗначениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Добавить документ");
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Редактировать документ");
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Удалить документ");
Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.
Сегодня очень важная тема - Формы. В платформе 1С форма - это важный компонент, который присутствует везде.
Что такое форма?
Прежде чем отвечать на этот вопрос, давайте представим вот что. Представьте перед собой чистый лист бумаги формата А4, на котором ничего нет вообще. Этот лист - это чистая форма. чистая она до того момента пока мы на ней что-то не нарисуем.
Взяли карандаш и нарисовали на нем или написали свои ФИО - это мы начали заполнять форму, и, таким же образом продолжаем ее заполнять. Вот и в платформе почти так же.
Форма - это представление того, как будет отображаться все, что вы поместите на форму, то есть какие изменения будете вносить на эту форму.
На форме можно помещать разнообразные элементы: поле ввода, поле вывода, кнопки, картинки, диаграммы и так далее.
В платформе 1С очень много всевозможных форм и со временем мы с ними познакомимся, но пока нам важны только две формы: "Форма элемента" и "Форма списка ".
На самом деле мы уже работали с этими формами, просто не обращали на них внимание, так как еще не знали о них ничего.
Давайте вспомним предыдущий урок, в котором мы создавали справочник и потом элементы в нем.
Откройте пользовательский режим и зайдите в справочник, который создали на прошлом занятии (Рисунок 1).
Давайте разбираться где это формы и как их отличить.
Нажмите на кнопку "Создать" и у вас откроется окно (Рисунок 2).
Посмотрите на рисунок 2, там есть маленькое окно, которое выделено красным прямоугольником. Это окно и есть Форма элемента. Почему? Потому что мы нажимаем на кнопку "Создать", а это значит мы даем команду платформе, что необходимо создать элемент, поэтому мы создаем элемент и от этого она называется формой элемента.
А где же Форма списка?
Закройте это окно и посмотрите на рисунок 3. Все, что находится в желтом прямоугольнике, это и есть форма списка. Форма списка появляется сразу, как только мы заходим в справочник. Как только нажали на справочник, так сразу же видим список всех элементов, от этого она и называется формой списка.
Хорошо, разобрались где они в пользовательском режиме, но как же они там появляются, если мы их не создавали в режиме разработчика, а только создали справочник. Как и где их найти в режиме разработчика, а самое главное - почему они сами появляются? Давайте разбираться!
Зайдем в режим разработчика и откроем наш справочник. Перейдем на вкладку "Формы" (Рисунок 4).
У справочника 5 форм, но мы пока работаем с двумя: форма элемента и форма списка.
Посмотрите на рисунок 4, здесь перечень всех возможных форм и все поля там пустые. Так откуда же формы? Это очень хороший и нужный вопрос! А ответ простой - платформа разработана таким образом, чтобы при создании справочника (объекта) мы могли сразу запустить и вести автоматизацию. Как только вы создаете какой-то объект, платформа автоматически сама добавляет к нему стандартную форму, от этого при запуске они у нас сразу и существуют!
Возникает тогда вопрос: "А зачем тогда нужна вкладка Формы, если она все сама делает?". Ответ тоже прост - платформа может делать только что-то простое, а если необходимо сделать что-то сложное, то необходимо создавать уже свою форму и работать с ней.
Здесь возникает еще один важный момент. Как только вы создаете свою форму, платформа понимает, что ее помощь уже не нужна и не создает форм, а воспринимает только ту форму, которую создали вы и указали ей.
Давайте начнем с простого и разберемся в том, почему нас может не устраивать стандартная форма?
Откройте в пользовательском режиме справочник и посмотрите на форму списка, она в виде таблички, где первый столбец - это Наименование, а второй Код (другими словами Код - это номер по порядку). Но в нашем понимании все должно быть наоборот, сначала номер, а потом перечисление. Вот и нашли причину! Нас это не устраивает. Если что-то не устраивает в отображении на стандартной форме, то необходимо создавать свою форму. Для этого переходим в режим разработчика, открываем справочник и переходим на вкладку "Формы" (Рисунок 5).
Читайте также: