1С не отображается команда на форме

Нехитрое дело – добавить в типовую конфигурацию, например «1С ERP Управление предприятием 2», новый документ (назовём его «Запрос цен») и настроить его так, чтобы он создавался на основании типового документа, скажем «Заказ материалов в производство».

Однако, подводные камни всё-таки обнаруживаются. На форме документа «Заказ материалов в производство» появилось две кнопки «Создать на основании». Одна типовая, на рисунке она слева, а другая образовалась после добавления нового документа. При нажатии этой кнопки появляется список из единственного, вновь добавленного документа. Если же нажать штатную кнопку, то открывается список из нескольких типовых документов, среди которых, увы, нет нашего, добавленного. Возникает логичное желание перенести команду создания нового документа из правой кнопки в левую.

Для того, чтобы перенести команду в список штатной кнопки сделаем следующее:

В модуле менеджера документа «Заказ материалов в производство» есть процедура ДобавитьКомандыСозданияНаОсновании. Добавим в неё вызов функции, которую позже напишем в модуле менеджера документа «Запрос цен».

Документы.ЗапросЦен.ДобавитьКомандуСоздатьНаОснованииЗаказаКлиента(КомандыСоздатьНаОсновании);

Добавляем функцию в модуль менеджера документа «Запрос цен»:

// Заполняет список команд создания на основании. Функция ДобавитьКомандуСоздатьНаОснованииЗаказаКлиента(КомандыСоздатьНаОсновании) Экспорт Если ПравоДоступа(«Добавление», Метаданные.Документы.ЗапросЦен) Тогда КомандаСоздатьНаОсновании = КомандыСоздатьНаОсновании.Добавить(); КомандаСоздатьНаОсновании.Обработчик = «дкВводНаОснованииКлиент.ЗапросЦенСоздатьНаОснованииЗаказа»; КомандаСоздатьНаОсновании.Идентификатор = «ЗапросЦенСоздатьНаОснованииЗаказа»; КомандаСоздатьНаОсновании.Представление = НСтр(«ru = ‘Запрос цен'»); КомандаСоздатьНаОсновании.ПроверкаПроведенияПередСозданиемНаОсновании = Истина; Возврат КомандаСоздатьНаОсновании; КонецЕсли; Возврат Неопределено; КонецФункции

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

В общем модуле дкВводНаОснованииКлиент создаём функцию обработчика, которая откроет нам форму создаваемого документа:

Функция ЗапросЦенСоздатьНаОснованииЗаказа(ОписаниеКоманды) Экспорт ПараметрыВыполненияКоманды = Новый Структура(«Источник,Уникальность,Окно,НавигационнаяСсылка»); ЗаполнитьЗначенияСвойств(ПараметрыВыполненияКоманды, ОписаниеКоманды.ДополнительныеПараметры); // Основание — документ, на основании которого формируется документ «Запрос цен». Основание = ОписаниеКоманды.ОбъектыОснований; ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить(«Основание»,Основание); Если ПараметрыОткрытия <> Неопределено Тогда ОткрытьФорму( «Документ.ЗапросЦен.Форма.ФормаДокумента», ПараметрыОткрытия, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); КонецЕсли; КонецФункции

Таким образом мы добавили наш документ в список штатной кнопки «Создать на основании». Осталось убрать лишнюю кнопку на форме документа «Заказ материалов в производства». Делается это в форме документа «Заказ материалов в производство» в левом верхнем фрейме, на вкладке «Командный интерфейс». Снимаем флаги «Видимость» и «Автовидимость» для документа «Запрос цен».

Теперь в форме заказа материалов порядок.

1424 пользователя считают данную страницу полезной. Информация актуальна! Страница была обновлена 16.12.2019

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

В такой ситуации нужно проанализировать, что же сделано не так? Алгоритм проверки прост – сначала нужно убедиться, что все в порядке с разделом, к которому относится объект, а затем, что все в порядке с самим объектом.

Для примера рассмотрим справочник Контрагенты , относящийся к подсистеме (разделу) Закупки .

Сначала проверим раздел. Убедимся что:

1. Для той подсистемы, к которой относится искомый объект, и всех подсистем, которые находятся выше ее по иерархии установлено свойство подсистемы Включать в командный интерфейс . Для этого вызовем контекстное меню подсистемы Закупки и откроем палитру свойств этой подсистемы.

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

3. Откроем состав объектов подсистемы и убедимся, что подсистема включает в себя хотя бы один объект конфигурации. Если подсистема не содержит ни одного объекта, она не будет отображена в командном интерфейсе. Для этого в окне редактирования подсистемы Закупки откроем закладку Состав .

4. Откроем командный интерфейс подсистемы и проверим, что хотя бы одна команда (стандартная или созданная в конфигурации) доступна для настройки в этой подсистеме. Если таких команд нет – подсистема не будет отображена. При этом важно лишь наличие этих команд, а не их видимость. Для этого вызовем контекстное меню подсистемы Закупки и выполним команду Открыть командный интерфейс .

Если в составе команд нет вашей стандартной команды объекта, значит для объекта отключено использование стандартных команд (см. п.1 ниже).

Если в составе команд нет команды, созданной в конфигурации, значит, ей не назначена группа (см. п.2 ниже).

Если для команды назначена не группа подсистемы, а какая-то группа формы, то для того, чтобы команда стала доступна в интерфейсе форм необходимо задать еще и тип параметра этой команды (см. п.2 ниже).

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

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

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

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

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

Теперь проверим все, что относится к самому объекту:

1. Что для искомого объекта разрешено использование стандартных команд. Для этого вызовем контекстное меню справочника Контрагенты и откроем палитру его свойств.

2. Если у объекта существует нестандартная команда, то чтобы увидеть ее в интерфейсе убедимся, что для нее задана группа и, если команда параметризованная, – тип параметра команды. Для этого вызовем контекстное меню нестандартной команды Печать справочника Контрагенты и откроем палитру ее свойств.

Иначе команда будет недоступна в командном интерфейсе, а параметризованная команда будет недоступна для включения в командный интерфейс форм, соответствующих ее параметру.

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

4. Откроем окно редактирования роли (например, Менеджер по закупкам ) и проверим, что в правах этой роли разрешено использование искомой команды. Если речь идет о стандартной команде (например, открытия списка справочника) – нужно проверить права на сам объект.

Если речь идет о нестандартной команде (например, Печать ) – нужно проверить права на эту команду.

5. Убедимся, что объект или команда не отключены функциональными опциями в режиме исполнения. Для того, чтобы узнать, с какими функциональными опциями связан объект, вызовем контекстное меню справочника Контрагенты и выполним команду Дополнительно .

6. В заключение, в режиме 1С:Предприятие проверим, что команда не отключена пользовательскими настройками.

Вернуться к настройкам, выполненным в конфигураторе, можно с помощью команды Все действия – Установить стандартные настройки .

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

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

Думаю можно сказать, что в 8.1, да и в 7.7 концепция была следующей: оформление определяет логику работы формы, в управляемом интерфейсе во главе стола поставили логику работы, формирование внешнего вида формы переложили на плечи движка 1с. Таким чином от того куда перетащил программист команду зависит визуальное оформление элемента который запустит команду на выполнение

Как видите, это может быть «объемная кнопка», плоская кнопка на панели инструментов, или пункт выпадающего меню.

Но если посмотреть на скриншот, то видно, что кроме нашей «Команда1» на форме есть кнопки «Провести и закрыть», а в меню наша команда потерялась во множестве других, которые мы не программировали и не создавали. Это стандартные команды 1с, они есть у форм, справочников, документов и других объектов 1с. Некоторые команды общие некоторые присущи только определенному типу объектов.

Команды могут находиться в 3 местах в конфигурации:

– команды формы (управляемой) находятся в модуле формы

– команды конкретного объекта конфигурации находятся в соответствующей ветке

– команды без привязки к конкретным объектам конфигурации – общие команды, которые находятся в ветке Общие – общие команды (кто бы мог подумать).

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

То где будет отображаться команда указывается в поле «Группа». Например, если мы укажем, так как показано на скриншоте то в системе команда отобразиться так:

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

Общие команды — механизм платформы, предназначенный для описания часто используемых команд в конфигурации 1С 8.3.

Общие или глобальные команды удобно использовать, если одна команда нужна многих объектам конфигурации. Например, кнопка для вывода структуры подчиненности документов, команда отображения проводок документа, отчет о изменении объекта.

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

Настройка и свойства общей команды в 1С

Добавить новую команду и настроить общую форму достаточно просто, рассмотрим этот процесс подробнее:

Получите 267 видеоуроков по 1С бесплатно:

  • Бесплатный видео самоучитель по 1С Бухгалтерии 8.3 и 8.2;
  • Самоучитель по новой версии 1С ЗУП 3.0;
  • Хороший курс по 1С Управление торговлей 11.
  • Группа — расположение будущей команды на интерфейсе.
  • Тип параметра команды — определяет набор объектов, в котором будет отображаться будущая команда.
  • Режим использования параметра — задает возможность передать в качестве параметра команды одно или несколько значений.
  • Изменяет данные — если галка установлена, то при выполнение команды форма будет пересчитана с сервера.
  • Модуль команды — обработчик выполнения команды, выполняется на клиенте.

Пример модуля команды:

Здесь ПараметрКоманды — объект, вызывающий команду. А в ПараметрыВыполненияКоманды структура, в которой описан Источник (вызываемая Форма), Окно (ОкноКлиентскогоПриложения), Уникальность, указывает, искать ли уже открытую форму или нет.

Группы команд 1С

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

Видео по общим командам от Павла Чистова:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Добавим кнопку Открыть, вызывающую процедуру ОткрытьЭлемент
Код 1C v 8.х //обращение к командной панели в форме
КомПанель = ЭлементыФормы.КоманднаяПанельТаблицы;
// добавим кнопку Открыть, вызывающую процедуру ОткрытьЭлемент
КомПанель.Кнопки.Добавить(«кнОткрыть»,
ТипКнопкиКоманднойПанели.Действие,
«Открыть»,
Новый Действие(«ОткрытьЭлемент»));
//сделаем командную панель доступной
КомПанель,Доступность = Истина;
Как программно добавить в командную панель кнопку со стандартной функцией «Сортировать по убыванию»?
Можно, например, включить автозаполнение в ком. панели, потом при открытии создать структуру или массив с действиями, заполнить его, и после этого отключить автозаполнение
Код 1C v 8.х Мас=Новый Массив;
Мас.Добавить(ЭлементыФормы.КоманднаяПанель1.Кнопки.Действие2.Действие);
ЭлементыФормы.КоманднаяПанель1.АвтоЗаполнение = Ложь;
ЭлементыФормы.КоманднаяПанель1.Кнопки.Добавить(«НоваяКнопка»,ТипКнопкиКоманднойПанели .Действие,»Новая кнопка»,Мас);
Информация взята с сайта http://helpf.pro

Доброго времени суток друзья!
Получил задачу написать внешнюю обработку, которая перебирает документы и выполняет команду над каждым из них. А именно команду как на скриншоте
Напомню что у нас клиент-сервер. В целом суть команды приведена ниже:

&НаСервере
Функция ЗаполнитьОбеспечениеВУстановленномПорядке(ПереченьВариантов) Экспорт
//Описание особенностей формы — дату отгрузки работ необходимо брать из поля «Дата отгрузки».
ПутиКДанным = Новый Соответствие();
ПутиКДанным.Вставить(«ДатаОтгрузкиРабот», «ДатаОтгрузки»);
ПараметрыЗаполнения = Новый Структура(«СтатусКВыполнению, ГруппаСкладов, МенеджерРегистра»,
Объект.Статус <> Перечисления.СтатусыЗаказовКлиентов.НеСогласован, Объект.Склад, РегистрыНакопления.ЗаказыКлиентов);
Таблица = ОбеспечениеСервер.ТаблицаЗаполнениеОбеспечения(
Элементы.Товары.ВыделенныеСтроки,
Объект,
Объект.Товары,
ПутиКДанным,
ПереченьВариантов,
ПараметрыЗаполнения);
//Перенос результатов в документ.
ТекстОповещения = Документы.ЗаказКлиента.ЗаполнитьВариантОбеспечения(Объект, ЭтаФорма, «СтрокиТовары», Таблица,
ПараметрыУказанияСерий, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СтруктураИтогов = Новый Структура(«РазличныеСклады, ЕстьИзЗаказов, ТолькоНеТребуется»);
ОбойтиТаблицуОбновитьЗависимыеРеквизиты(СтруктураИтогов);
Возврат Новый Структура(«Ошибки, Оповещение», Неопределено, ТекстОповещения);
КонецФункции
Разумеется открывать каждый документ и выполнять команду не варик и передавать управляемую форму на сервер тоже нельзя.
Необходимо отработать команду, которая изменяет данные шапки и таб части. Но передавать на сервер управляемую формы нельзя. Как решить проблему?
Заранее спасибо!