1с команды стандартные команды
Управляемый интерфейс. Команды в 1с
При переходе на управляемый интерфейс логика работы с некоторыми привычными еще со времен 7.7 объектами поменялась. В классическом интерфейсе для взаимодействия с пользователем программист проектировал форму, указывал поля ввода данных, кнопки, надписи и прочие элементы для взаимодействия с пользователями. Потом выбирал, на какие события формы должен реагировать объект и прописывал обработчик события. Все логично и понятно, в управляемом интерфейсе появилось такое понятие как команда. Команда запускает определенный алгоритм, набор действий, который прописывает программист в модуле команды. Вызвать команду можно из управляемой формы, но как будет выглядеть элемент управления который вызовет команду зависит от того куда программист перетащит команду, в какую группу элементов он ее поместит.
Думаю можно сказать, что в 8.1, да и в 7.7 концепция была следующей: оформление определяет логику работы формы, в управляемом интерфейсе во главе стола поставили логику работы, формирование внешнего вида формы переложили на плечи движка 1с. Таким чином от того куда перетащил программист команду зависит визуальное оформление элемента который запустит команду на выполнение
Как видите, это может быть «объемная кнопка», плоская кнопка на панели инструментов, или пункт выпадающего меню.
Но если посмотреть на скриншот, то видно, что кроме нашей «Команда1» на форме есть кнопки «Провести и закрыть», а в меню наша команда потерялась во множестве других, которые мы не программировали и не создавали. Это стандартные команды 1с, они есть у форм, справочников, документов и других объектов 1с. Некоторые команды общие некоторые присущи только определенному типу объектов.
Команды могут находиться в 3 местах в конфигурации:
- команды формы (управляемой) находятся в модуле формы
- команды конкретного объекта конфигурации находятся в соответствующей ветке
- команды без привязки к конкретным объектам конфигурации – общие команды, которые находятся в ветке Общие – общие команды (кто бы мог подумать).
Как и в обычных процедурах и функциях командам 1с можно передавать значения для обработки. Значение, которое передается, указывается в соответствующем поле свойств команды:
То где будет отображаться команда указывается в поле «Группа». Например, если мы укажем, так как показано на скриншоте то в системе команда отобразиться так:
Когда я впервые столкнулся с командным интерфейсом, я долго не мог понять, почему у меня не отображается созданный мной документ в интерфейсе указанной мною подсистемы, притом что управляемые формы были написаны и права все стояли. Причиной всему была галочка «Использовать стандартные команды» с закладки «Команды». Не забывайте про нее.
На форме 1С обычно располагаются несколько полей, для ввода данных, а также кнопки управления формой и различных сервисных действий. Например, для автоматического заполнения или проверки.
Для того, чтобы расположить на форме кнопку, раньше, в версии 8.1, нужно было:
В 1С версии 8.2 появились управляемые формы. Разработка управляемых форм отличается и на них нельзя «перетащить кнопку».
Как же тогда быть?
Итак ранее кнопка представляла собой отдельный элемент формы.
Как мы понимаем, главное в кнопке – это действия, которые она выполняет. Само изображение кнопки на форме вторично – требуется исключительно для того, чтобы пользователь мог нажать на нее. Как она будет выглядеть при этом – как кнопка, или как пункт меню – имеет минимальное значение с точки зрения выполнения цели.
В новой версии 1С 8.2 появился новый объект 1С – команда. Он реализует как раз этот принцип.
Команда 1С – это набор действий, которые должна выполнить программа, сформулированных на языке 1С. Текст программы команды 1С хранится в собственном модуле команды 1С.
Для того, чтобы пользователь мог запустить их на выполнение – у этих действий есть визуальное представление на форме. Какое оно будет – зависит от того, в какую группу элементов формы Вы перетащите команду.
Например, если перетащить просто на форму – будет кнопка, если в группу командной панели – то кнопка командной панели (плоская), а можно перетащить в меню – тогда это будет пункт меню.
Команду возможно использовать как на обычной форме, так и в управляемом (командном) интерфейсе 1С.
Стандартные команды 1С
Расширяем сознание дальше. Итак, суть команды 1С – это действие. Оно может быть запрограммировано на языке 1С.
Но мы знаем также действия, которые не нужно программировать на языке 1С, так как они уже доступны в платформе 1С. Например, для справочников стандартные действия – это возможность создания элемента. Для формы справочника – возможность записать, а для документа – провести. Это тоже действия?
Да, и теперь они называются – стандартные команды 1С. Свои стандартные команды 1С есть у справочников, документов, форм и прочих объектов 1С.
Стандартные команды 1С можно отключить у конкретного объекта 1С с помощью галочки «Использовать стандартные команды 1С» в конструкторе объекта 1С на закладке «Команды 1С».
Владелец команды 1С
Команды 1С находятся во вложенной ветке своего владельца. Например, Справочники/Контрагенты/Команды 1С.
Также есть команды 1С, которые не имеют владельца, так как они являются общими. Такие команды 1С не привязаны к объектам и находятся в ветке Общие/Общие команды 1С.
В любой управляемой форме можно создать собственную произвольную команду, текст программы которой (функция) будет находится в модуле формы.
Параметры команды 1С
В конфигурациях толстого клиента в справочниках и документах было меню «Перейти» с помощью которого волшебным образом можно было перейти в связанные объекты 1С.
То есть для некоторых действий требуется не только факт запуска действия, но и параметр, который определяет, для какого объекта нужно эти действия выполнить – например, для какого контрагента отобразить контактные данные.
В свойствах команды 1С возможно указать:
- Тип параметра команды 1С – тип объекта 1С, который будет использован в качестве параметра, например, справочник Контрагенты
- Режим использования параметры – нужно одно значение или список (массив).
Чтобы разместить команду на форме, можно указать в свойствах команды 1С группу командного интерфейса, где она должна располагаться.
Команда – это указание со стороны пользователя для компьютерной системы на выполнение какого-то действия. В конфигурациях 1С, они по области видимости делятся на глобальные команды и локальные команды формы. Сегодня речь пойдет об одном из элементов глобальных команд – 1С общие команды.
Общими, называют часто используемые команды и при этом они не привязаны к конкретному объекту системы, а наоборот выполняют одинаковое действие. К ним относятся: кнопки печати документа, отчет об изменении объекта или его проводок, структуры подчиненности, проще говоря — стандартные настройки 1С.
При вызове общей команды для определения данных конкретного объекта используются параметры 1С пользовательские настройки, в которые система передает некое значение, требуемое для выполнения алгоритма. Параметризованные команды будут отображаться только в тех формах, которые имеют одинаковый с параметром тип. Его значение определяется в процессе разработки.
Когда вы добавляете в дерево метаданных свою общую команду, то после этого автоматически будут открыты окна модуля команды и ее свойств.
Свойства общей команды:
- группа, т.е. расположение в интерфейсе;
- тип параметра команды – указывается, в каких объектах будет доступна данная кнопка;
- режим использования параметра – определяет, сколько значений можно будет передать в параметр;
- изменяет данные – определяет, будет ли форма перечитывать данные после выполнения команды;
- модуль команды – описание действий, которые выполняет данная команда.
Также надо проверять на закладке "Команды" установлен ли флаг "Использовать 1С стандартные команды".
Объект конфигурации "Группы команд"
С помощью этого объекта можно сгруппировать кнопки, выполняющие схожие действия, а также вывести их на командный интерфейс программы. Это указывается в свойстве "Категория", оно обязательно к заполнению.
Войдите как ученик, чтобы получить доступ к материалам школы
Создание конфигураций 1С: добавляем команду
Автор уроков и преподаватель школы: Владимир Милькин
Продолжаем изучение азов создания конфигураций на 1С.
Вернёмся в конфигуратор и откроем дерево конфигурации:Где находится форма у обработки
Откроем окно настроек обработки "УдалениеУволенныхСотрудников":
Открылось окно с закладками во многом повторяющими закладки из справочника "Сотрудники". Это совершенно нормально, ведь настройки объектов в конфигураторе во многом похожи друг на друга.
На этот раз нас интересует закладка "Формы" - откроем её:
Найдите на этой закладке объект с именем "Форма" - это и есть наше визуальное представление обработки:
Давайте откроем его двойным щелчком:
Открылось окно со множеством панелей. И нам сейчас очень важно для будущих уроков разобраться что здесь за что отвечает.
Меняем код на встроенном языке 1С для формы
Ну прежде всего обратим внимание в самый низ открывшегося окна. Там мы найдём две закладки "Форма" и "Модуль".
Закладка "Форма" - это и есть визуальное представление. Сейчас на форме находится всего лишь одна кнопка "Удалить сотрудников".
Закладка "Модуль" - это код на встроенном языке 1С, который содержит процедуры и функции, определяющие поведение формы для пользователя.
Попробуем переключиться на закладку "Модуль":
Здесь присутствует всего одна процедура с именем "УдалитьСотрудников". Очевидно именно она и вызывается при нажатии на кнопку.
Код процедуры сейчас свёрнут - нажмём на плюсик, чтобы развернуть его (не поместился на рисунке справа):
Изменим этот код следующим образом:
Снова запустим режим 1С:Предприятие (меню "Отладка"->"Начать отладку"), откроем обработку и нажмём кнопку "Удалить сотрудников":
Закладка "Элементы" у формы
Вернёмся в конфигуратор в нашу форму на закладку "Форма":
Обратите внимание на закладку "Элементы" в верхней части формы. Содержимое этой закладки дублирует визуальное представление формы. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Можно сказать ещё, что всё, что вы видите в визуальной части формы можно найти на закладке "Элементы".
Например, чтобы открыть свойства кнопки "Удалить сотрудников" на форме - найдём эту кнопку на закладке "Элементы" и сделаем на ней двойной щелчок:
Откроется окно со свойствами кнопки:
Давайте установим для кнопки заголовок "БАХ":
Форма теперь будет выглядеть так:
Закладка "Реквизиты" у формы
Теперь перейдём к закладке "Реквизиты":
Эта закладка содержит имена по которым мы можем "достучаться" до данных объекта, которые представляет форма. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Пока на этой закладке всего лишь один реквизит "Объект" и то пустой.
Но если бы мы перешли на аналогичную закладку в форме справочника "Сотрудники", то обнаружили бы тут реквизиты "ДатаРождения", "НомерПаспорта" и "СерияПаспорта". Это означало бы, что мы можем их использовать в коде модуля формы.
Закладка "Команды" у формы
Заключительная закладка, которую мы рассмотрим сегодня это закладка "Команды":
Вообще все команды, которые вы видите на одной из закладок ("Команды формы", "Стандартные команды" и "Глобальные команды"), можно смело перетаскивать на закладку "Элементы" и они "волшебным образом" превратятся в кнопки на форме.
Как вы понимаете, нажатие на эти кнопки, будет приводить к выполнению этих команд.
Ну, например, перейдём на закладку "Стандартные команды" и перетащим на закладку "Элементы" команду "Закрыть":
На форме появилась кнопка закрыть. Запустим 1С:Предприятие (меню "Отладка"->"Начать отладку"), откроем обработку и убедимся, что кнопка работает:
Вернёмся в конфигуратор в форму обработки и перейдём на закладку "Команды формы":
На этой закладке мы видим команды формы, которые мы определили сами. В том числе мы можем видеть здесь команду, которую я определил ещё в самом начале с именем "УдалитьСотрудников".
Откроем свойства этой команды (двойным щелчком).
Нас интересует прежде всего поле "Действие", нажмите на кнопку с лупой рядом с ним:
Нас перенесло в процедуру "УдалитьСотрудников" в модуле формы. Это означает, эта команда и эта процедура связаны между собой. И выполнение команды (например, при нажатии на кнопку, в которую она превратилась) приведёт к выполнению кода процедуры.
Добавляем новую команду для формы
Давайте создадим ещё одну команду формы. Для этого вернёмся на закладку "Команды формы" и нажмём зелёную кнопку с плюсом:
На закладку добавилась новая команда "Команда1":
Откроем её свойства и установим имя "Привет", а затем нажмём на лупу рядом с полем "Действие":
Нас спрашивают какой именно вид обработчика мы хотим создать.
В целом существует два вида обработчиков - те, что выполняются на клиенте и те, что выполняются на сервере. В нашем случае клиент и сервер - это один и тот же компьютер, но не обязательно это всегда так. Мы ещё вернёмся к этому разговору в следующих модулях, а пока нам думать об этом слишком рано.
Выбираем вариант "НаКлиенте" и нажимаем "ОК":
Нас перенесло в модуль формы в автоматически созданную процедуру "Привет". Теперь эта процедура связана с командой формы "Привет":
Давайте напишем в ней вывод строки привет пользователю:
Но как нам теперь заставить выполнять команду (а значит и процедуру) "Привет"? Для этого вернёмся на закладку "Команды формы" и перетащим наш "Привет" на форму, так как мы это сделали ранее с командой "Закрыть":
На форме появилась ещё одна кнопка. Запустим 1С:Предприятие, откроем обработку и нажмём на кнопку "Привет". Должно получиться вот так:
Вводим от пользователя имя и говорим ему привет
А теперь давайте поставим себе такую задачу. Нужно, чтобы пользователь ввёл своё имя, мы нажали на кнопку и вывелось, например, "Привет, Алексей".
Чтобы мы смогли разместить на форме элементы для ввода данных нам потребуется реквизит формы (закладка "Реквизиты") с которым этот элемент будет связан.
Так как закладка "Реквизиты" у нас практически пустая - создадим новый реквизит.
Переходим на закладку "Реквизиты" и нажимаем зелёную кнопку плюс:
Добавился реквизит с именем "Реквизит1":
В окне свойств этого реквизита установим имя "Имя" и тип "Строка":
После этого перетащим уже привычным образом реквизит "Имя" на закладку "Элементы":
Ага, на форме появился элемент для ввода строки! Что нам и требовалось
Запустим 1С:Предприятие, откроем обработку и попробуем туда ввести своё имя:
Всё получилось, но вот нажатие на кнопку "Привет" пока работает по-прежнему.
Сейчас всё исправим. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Для этого вернёмся в конфигуратор, перейдём в модуль формы обработки и найдём там процедуру "Привет":
Перепишем её таким образом, чтобы к строке "Привет, " добавлялось значение реквизита "Имя", который связан с элементом ввода на форме:
Теперь снова запустим 1С:Предприятие, обработку, введём своё имя и нажмём кнопку "Привет":
Команды, элементы, реквизиты, объект. вы ещё не запутались?
Думаю запутались Спешу вас успокоить, что не стоит переживать по этому поводу. Со временем ситуация прояснится.
А пока я попробую более простыми словами описать вам эти составные части любой формы. А вы после этого можете ещё раз перечитать урок - уверен, многое станет более понятным.
Итак, форма - это визуальное представление нашей программы: кнопки, надписи, рисунки, списки. да много чего! Всё это ЭЛЕМЕНТЫ формы.
Кнопка - элемент. Надпись - элемент. Поле ввода - тоже элемент
То есть элемент формы - это прежде всего часть её визуального представления. А значит у элемента бывают такие характеристики как цвет, шрифт, положение на форме, размер и многие другие.
Элементы позволяют нам некоторым образом взаимодействовать с формой: читать, нажимать, проматывать и т.п.
Кнопка
Очевидно, что кнопка не может быть сама по себе. Когда пользователь нажимает на неё - должно произойти некоторое действо, задуманное программистом.
Это действо и называется командой
Команды бывают встроенные (закладки "Стандартные команды" и "Глобальные команды") и те, что программист придумывает сам (закладка "Команды формы").
Ну встроенные команды - они на то и встроенные. Что их действие придумано уже до нас. Мы можем лишь перетащить эти команды на форму и превратить их в кнопки. К таким командам относится, например, команда закрытия формы. Нам не нужно ничего программировать - достаточно перетащить стандартную команду "Закрыть" на форму и всё
А команда формы - это команда придуманная нами самими. Это та команда, которую мы сами добавили на закладку "Команды формы", затем нашли в её свойствах пункт "Действие", ткнули на него и запрограммировали код на встроенном языке в автоматически созданном обработчике в модуле формы (например, команда "Привет" из этого урока).
Ну в общем вы поняли: команда - это некоторое действие, запрограммированное на языке 1С (или уже встроенное в программу). А кнопка - это визуальный элемент формы, который при своём нажатии запускает связанную с собой команду.
Надпись
Это просто текст на форме. У такого элемента есть свойство "Заголовок", значение которого мы задаём в редакторе и оно отображается в виде текста.
Поле
А вот это уже интересно. Потому что это такой особый элемент, который не сам по себе (как надпись), а обязательно должен быть связан с какими-то данными или по-другому РЕКВИЗИТАМИ (закладка "Реквизиты").
Можно сказать, что реквизит - это переменная формы, которую мы объявляем на закладке "Реквизиты", а элемент связанный с реквизитом ("Поле") это его представление на форме. Но у самого реквизита есть только имя, тип и значение.
Ну вот представьте, что у нас на форме есть поле для ввода числа. Если бы не было реквизитов - как бы мы из кода узнали, какое число ввёл пользователь? Мы бы обратились к элементу ввода по имени и прочитали некоторое его свойство, отвечающее за значение введённое пользователем.
Так вот в 1С так нельзя. Тут (начиная с "управляемых" форм) представление данных отделено от самих данных.
Получается, что элемент ввода - это элемент формы. А число, которое вводит пользователь, хранится не в самом элементе, а в реквизите, который связан с этим элементом.
Ещё раз. Реквизит - это именно данные (строка, число, дата) . Не визуальное представление (надпись с текстом, поле для ввода числа, поле для ввода даты). Визуальным представлением реквизита является как раз элемент формы "Поле".
И получается, что при написании кода на языке 1С для отображения и изменения данных мы прежде всего должны использовать реквизиты. Мы меняем из кода реквизиты, а связанные с ними поля на форме изменяются при этом автоматически.
И наоборот. Пользователь вводит на форме значения в элементы ввода (числа, текст, даты) и значения реквизитов также меняются автоматически.
Какие преимущества даёт такое отделение элементов формы от данных (реквизитов)? Большие! Программист создает нужные ему реквизиты (для хранения, отображения и ввода некоторых полей на форме) и пишет программный код работая только с этими реквизитами (данными). Он совершенно не задумывается пока как всё это будет выглядеть на форме. Оно ему и не надо! Он пока пишет только программный код.
А уже затем он перетаскивает эти реквизиты на форму, реквизиты превращаются в визуальные элементы формы, он их как-то настраивает, распихивает по закладкам и прочее. В общем на этом этапе (визуального проектирования формы) он работает уже только с элементами. При этом во много раз снижается вероятность сломать уже написанный код.
Ещё пример. Пусть у нас есть реквизит "Возраст" с типом "Число". Этот реквизит хранит только само число, больше ничего. Он не отвечает за то, как будет выглядеть это число, и в каком месте (или на какой закладке) будет располагаться элемент ввода на форме, связанный с этим числом. Реквизит - это только число! Обращаясь к реквизиту мы никак не сможем поменять размер элемента ввода на форме, цвет, видимость. За всё это отвечает не реквизит, а элемент! Меняя реквизит, мы меняем только число, которое отображается в элементе ввода на форме.
В общем: РЕКВИЗИТ - это переменная формы. Поэтому все данные храним в реквизитах (переменных), а для их вывода на форму (или ввода с формы) используем элементы. Именно это отделение логики от представления позволяет 1С с легкостью отображать одни и те же формы на разных клиентах: "толстый", "тонкий", "веб-браузер".
Чтобы обратиться к реквизиту "Возраст" из модуля формы достаточно сразу использовать его имя:
А чтобы обратиться к элементу формы, который связан с этим реквизитом нужно использовать префикс "Элементы.", например:
Что такое Объект?
Ну и, наконец, объект. Судя по-тому, что он находится на закладке "Реквизиты" - это тоже реквизит. Всё верно. Но он особенный.
Этот реквизит мы не создаём - он сам появляется на закладке "Реквизиты". В случае с обработкой он пустой, но если бы мы программировали форму какого-нибудь справочника, то реквизит объект как раз и представлял бы из себя поля этого справочника из базы.
Рядом с ним бы появился плюсик и мы могли бы его раскрывать и перетаскивать отдельные его части на форму и они бы также превращались в элементы.
Читайте также: