Настройка командной панели для документов в ERP Управление предприятием 2

Программная настройка командной панели для всех форм документов

После долгой работы с обычными формами, большое неудобство доставляет отсутствие в управляемых формах (форме документа) включенных по умолчанию кнопок «Отмена проведения», «Показать в списке».

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

К тому же, без кнопки «Отмена проведения» не понятно, проведен документ или нет.

Поэтому написал несколько строк для ERP 2 (должно подойти так же для КА2 и УТ11), при которых для большинства форм документов командная панель будет выглядеть следующим образом (см. скриншот).

Для некоторых малоиспользуемых документов не вызывается СобытияФорм.ПриСозданииНаСервере, поэтому и панель не перерисуется. Но для меня оказалось достаточно, я проверил все документы, с которыми работают пользователи.

Добавить в «ОбщийМодуль.МодификацияКонфигурацииПереопределяемый» в процедуру «ПриСозданииНаСервере()» следующий код:

//
Если СтрНайти(Форма.ИмяФормы, "ФормаДокумента") <> 0 Тогда

Если (Форма.Элементы.Найти("ФормаКоманднаяПанель") <> Неопределено)
И (Форма.Элементы.Найти("ПодменюСоздатьНаОсновании") <> Неопределено) Тогда

КоманднаяПанельДокумента = Форма.Элементы.ФормаКоманднаяПанель;
МестоРасположения = Форма.Элементы.ПодменюСоздатьНаОсновании;

МассивКнопок = Новый Массив;

МассивКнопок.Добавить("ФормаПровестиИЗакрыть");
МассивКнопок.Добавить("ФормаПровести");
МассивКнопок.Добавить("ФормаОтменаПроведения");
МассивКнопок.Добавить("ФормаЗаписать");

ИмяФормыМассив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Форма.ИмяФормы, ".");
МассивКнопок.Добавить("ФормаПоказатьВСписке" + ИмяФормыМассив[1]);

Для Каждого ПеремещаемыйЭлементТекст Из МассивКнопок Цикл

ПеремещаемыйЭлемент = Форма.Элементы.Найти(ПеремещаемыйЭлементТекст);

Если ТипЗнч(ПеремещаемыйЭлемент) = Тип("КнопкаФормы") Тогда

Если ПеремещаемыйЭлементТекст = "ФормаПровестиИЗакрыть" Тогда

ПеремещаемыйЭлемент.Отображение = ОтображениеКнопки.Текст;

Иначе

ПеремещаемыйЭлемент.Отображение = ОтображениеКнопки.Картинка;

КонецЕсли;

ПеремещаемыйЭлемент.ТолькоВоВсехДействиях = Ложь;
Форма.Элементы.Переместить(ПеремещаемыйЭлемент, КоманднаяПанельДокумента, МестоРасположения);

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЕсли;
//

Для некоторых документов кнопка «Показать в списке..» называется не стандартно (по имени документа), поэтому ее может не быть в создаваемой панели, но это опять же не критично.

update:

пока свежо предание, прогнал на Бухгалтерии Предприяия 3.0

здесь есть свои особенности (тестировал на предпоследнем релизе 3.0.43).

Во первых, СобытияФорм тут отсутствуют, поэтому поместил код в ОбщийМодуль.ДополнительныеОтчетыИОбработки.

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

Ну и собственно код:

//
Если СтрНайти(Форма.ИмяФормы, "ФормаДокумента") <> 0 Тогда

Если (Форма.Элементы.Найти("ФормаКоманднаяПанель") <> Неопределено)
И (Форма.Элементы.Найти("ФормаСоздатьНаОсновании") <> Неопределено) Тогда

КоманднаяПанельДокумента = Форма.Элементы.ФормаКоманднаяПанель;
МестоРасположения = Форма.Элементы.ФормаСоздатьНаОсновании;

МассивКнопок = Новый Массив;

МассивКнопок.Добавить("ФормаПоказатьВСписке1");
МассивКнопок.Добавить("ФормаЗаписать");
МассивКнопок.Добавить("ФормаОтменаПроведения");
МассивКнопок.Добавить("ФормаОтменитьПроведение");
МассивКнопок.Добавить("ФормаПровести");
МассивКнопок.Добавить("ФормаПровестиИЗакрыть");
МассивКнопок.Добавить("ФормаЗаписатьИЗакрыть");
МассивКнопок.Добавить("ЗаписатьИЗакрыть");

Для Каждого ПеремещаемыйЭлементТекст Из МассивКнопок Цикл

ПеремещаемыйЭлемент = Форма.Элементы.Найти(ПеремещаемыйЭлементТекст);

Если ТипЗнч(ПеремещаемыйЭлемент) = Тип("КнопкаФормы") Тогда

Если ПеремещаемыйЭлементТекст = "ФормаПровестиИЗакрыть"
Или ПеремещаемыйЭлементТекст = "ФормаЗаписатьИЗакрыть"
Или ПеремещаемыйЭлементТекст = "ЗаписатьИЗакрыть" Тогда

ПеремещаемыйЭлемент.Отображение = ОтображениеКнопки.Текст;

Иначе

ПеремещаемыйЭлемент.Отображение = ОтображениеКнопки.Картинка;

КонецЕсли;

ПеремещаемыйЭлемент.ТолькоВоВсехДействиях = Ложь;
Форма.Элементы.Переместить(ПеремещаемыйЭлемент, КоманднаяПанельДокумента, МестоРасположения);

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЕсли;
//

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *