Как добавить кнопку в 1с в конфигураторе
Перейти к содержимому

Как добавить кнопку в 1с в конфигураторе

  • автор:

Создание кнопки

64355

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.

Реклама

Новые вакансии

  • Вакансия аналитика 1с УТ от 200K, гибрид от Татьяна Астахова
    25 января 2024 г.
  • Вакансия Программист 1С (Москва, гибрид) 250-300т.р. от paulaja03@gmail.com
    23 января 2024 г.
  • Вакансия программиста 1с от Татьяна Астахова
    19 января 2024 г.

Как добавить кнопку в 1с в конфигураторе

(0) продублировать всё, что есть по печати в других, типовых документах. В модуле менеджера и в модуле формы там что-то есть

(0) Нанять кодера
нанять вминяемого спрашивальщика на форуме.

(1) Продублировал функции печати из модуле менеджер документа, изменил под свою задачу, создал команду в конструкторе печати, но не работает, поэтому думал может есть стандартные методы создания такой же кнопки как и в стандартных документах (без использования конструктора печати , может надо кукую-либо обработку подключать )

(3) А форма-то обычная или необычная?
(4) управляемая
8.3 платформа
(3) а на кнопку повесили код?

(3) Если создал команду, выбрал тип параметра команды, написал код в команде (путь к менеджеру объекта), то на форме ничего не надо вешать — достаточно определить ее положение в свойствах команды. (задается в группе). Эта кнопка потом автоматом появляется в командной панели.

(8) Хорошо посмотрю, сейчас не за компьютером,просто посмотрев стандартные документы там не создана конструктором команда печати, думал может нужна подписка на событие или добавить в обработки

// Заполняет список команд печати.
//
// Параметры:
// КомандыПечати — ТаблицаЗначений — состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

// Перемещение товароа
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = «ПеремещениеПечать»;
КомандаПечати.Представление = НСтр(«ru = ‘Перемещение товаров'»);
КомандаПечати.Обработчик = «УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати»;

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

// Проверяем, нужно ли для макета Накладная формировать табличный документ.
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, «ПеремещениеПечать») Тогда
// Формируем табличный документ и добавляем его в коллекцию печатных форм.
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «ПеремещениеПечать», «Перемещение товаров»,
ПечатьПеремещениеТоваров(МассивОбъектов, ОбъектыПечати), , «Документ.ПеремещениеТовараСоСклада.Печать»);
КонецЕсли;

ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);

// Функция формирует табличный документ с печатной формой накладной,
// разработанной методистами
//
// Возвращаемое значение:
// Табличный документ — печатная форма накладной
//
Функция ПечатьПеремещениеТоваров(МассивОбъектов, ОбъектыПечати)

ТекстЗапроса =
«ВЫБРАТЬ
| ПеремещениеТовараСоСклада.Ссылка КАК Ссылка,
| ПеремещениеТовараСоСклада.Дата КАК Дата,
| ПеремещениеТовараСоСклада.СкладОтправитель,
| ПеремещениеТовараСоСклада.СкладПолучатель,
| ПеремещениеТовараСоСклада.Ответственный,
| ПеремещениеТовараСоСклада.Товары.(
| Номенклатура,
| Количество
| ),
| ПеремещениеТовараСоСклада.Дата КАК ДатаНач,
| ПеремещениеТовараСоСклада.Дата КАК ДатаКон
|ИЗ
| Документ.ПеремещениеТовараСоСклада КАК ПеремещениеТовараСоСклада
|ГДЕ
| ПеремещениеТовараСоСклада.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Ссылка
|ИТОГИ
| МИНИМУМ(ДатаНач),
| МАКСИМУМ(ДатаКон)
|ПО
| ОБЩИЕ»;

Запрос = Новый Запрос();
Запрос.УстановитьПараметр(«МассивОбъектов», МассивОбъектов);
Запрос.Текст = ТекстЗапроса;

ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров»;

Если ШапкаИтоги.Следующий() Тогда

ДатаНач = ?(ЗначениеЗаполнено(ШапкаИтоги.ДатаНач), ШапкаИтоги.ДатаНач, ‘00010101’);
ДатаКон = ?(ЗначениеЗаполнено(ШапкаИтоги.ДатаКон), ШапкаИтоги.ДатаКон, ‘00010101’);

СтруктураПоиска = Новый Структура(«Регистратор, Номенклатура»);

ПервыйДокумент = Истина;
Шапка = ШапкаИтоги.Выбрать();
Пока Шапка.Следующий() Цикл
ВыборкаСтрокТовары = Шапка.Товары.Выбрать();

Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

ОбластьМакета = Макет.ПолучитьОбласть(«Заголовок»);
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(Шапка, «Пернемещение товаров»);
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть(«ШапкаРеквизиты»);
ОбластьМакета.Параметры.Заполнить(Шапка);
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, «НаименованиеДляПечатныхФорм,»);
ОбластьМакета.Параметры.ПредставлениеОрганизации = ПредставлениеОрганизации;
ТабличныйДокумент.Вывести(ОбластьМакета);

Пока ВыборкаСтрокТовары.Следующий() Цикл

Ном = Ном + 1;
ОбластьТовары.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьТовары.Параметры.НомерСтроки = Ном;
ОбластьТовары.Параметры.Номенклатура = ВыборкаСтрокТовары.Номенклатура;
ОбластьТовары.Параметры.Количество = ВыборкаСтрокТовары.Количество;

// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть(«Подвал»);
ТабличныйДокумент.Вывести(ОбластьМакета);

// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);

Возврат ТабличныйДокумент;
КонецФункции

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

1С. Программное добавление кнопки с обработчиком

Программно добавить на командную панель кнопку с выполнением произвольного кода по ее нажатию.

Реализация

Для наглядности создадим новую обработку с «Пустой» формой. Её внешний вид будет следующим

Программное добавление кнопки с обработчиком

В обработчике события формы ПриСозданииНаСервере() добавим код генерации команды и кнопки

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Создадим команду Команда = ЭтаФорма.Команды.Добавить("МояКоманда"); Команда.Действие = "ОбработчикМоейКоманды"; // Создадим кнопку и привяжем к ней команду Кнопка = ЭтаФорма.Элементы.Добавить("ВыполнитьМоюКоманду", Тип("КнопкаФормы"), ЭтаФорма.Элементы.ФормаКоманднаяПанель); Кнопка.Заголовок = "Выполнить мою команду"; Кнопка.ИмяКоманды = "МояКоманда"; КонецПроцедуры 

И создадим обработчик нашей команды

&НаКлиенте Процедура ОбработчикМоейКоманды(Команда) // Наш произвольный код для выполнения КонецПроцедуры 

В итоге на форме появится кнопка выполняющая наш обработчик. Выглядеть все это будет как добавленная кнопка в конфигураторе

Программное добавление кнопки с обработчиком

Так же кнопки формы имеют свойство КнопкаПоУмолчанию, если присвоить значение Истина

Кнопка.КнопкаПоУмолчанию = Истина; 

тогда кнопка будет выделена цветом и шрифтом

1С. Программное добавление кнопки с обработчиком

Понравилась статья? Поделиться с друзьями:
Комментарии: 2
Алексей 17.12.2019

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

Guesto (автор) 22.12.2019

Алексей, доброго времени суток! Хороший вопрос! Все верно, код обработчика придется добавить в модуль формы. А теперь давайте посмотрим не только на разработку, но и на сопровождение и дальнейшее обновление доработанной конфигурации. Если добавить команду «руками», то при обновлении дважды измененной формы команда будет потеряна. Ведь, модули формы мы можем сравнить, а формы нет. Если команду добавить программно в модуле формы или соответствующем модуле БСП, а обработчик в модуле формы. При этом выделив все свои процедуры префиксом и поместив их в отдельную область, то мы получим ситуацию, когда все наши изменения можно легко увидеть в сравнении модулей. Не придется держать чек-лист со списком команд/реквизитов/элементов для ручного добавления и перепроверки после обновления. И тут мы приходим к правилу — формы «руками» не правятся вообще. Все «ручные» изменения выявляются на этапе ревью, вносивший такие изменения бурно порицается. Обдумав данный механизм, просится к добавлению:
1. Автотест с открытием форм и исполнением программного изменения;
2. Корректная обработка ситуаций, когда программное изменение не получилось. С соответствующим выводом на этапе тестирования. Не долго думая пишем придуманное выше и наслаждаемся результатом.

Как добавить кнопку в 1с в конфигураторе

The service you’ve requested couldn’t be identified

No matches have been found between requested website and protected IP address

If you are trying to visit this site, please try again later.

If you are a target website owner please make sure that:
— DNS A record points to the protected IP address for the requested website
— The DDoS protection and optimization service is active for the requested website

Protection and Acceleration by DDoS-Guard

Добавить комментарий

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