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

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия аналитика 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С. Программное добавление кнопки с обработчиком
Программно добавить на командную панель кнопку с выполнением произвольного кода по ее нажатию.
Реализация
Для наглядности создадим новую обработку с «Пустой» формой. Её внешний вид будет следующим

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

Так же кнопки формы имеют свойство КнопкаПоУмолчанию, если присвоить значение Истина
Кнопка.КнопкаПоУмолчанию = Истина;
тогда кнопка будет выделена цветом и шрифтом

Понравилась статья? Поделиться с друзьями:
Комментарии: 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