|
Внешняя печатная форма | ☑ | ||
---|---|---|---|---|
0
Mihasya
02.06.20
✎
03:26
|
Натолкните на мысль.
Хочу припилить в ЗУПе к форме элемента "График работы сотрудника" внешнюю печатную форму, как в эту обработку передать "НомерТекущегоГода" который выбран в форме открытого графика? |
|||
1
strange2007
02.06.20
✎
04:08
|
Внешняя печ.форма знает о документе, к которому прицеплена, а значит из него можно выбрать и текущий год. Там же ссылка на документ передаётся в экспортную процедуру (или функцию???), которая является точкой старта формирования печатной формы
|
|||
2
Chameleon1980
02.06.20
✎
04:46
|
блин автор мозгивключи. как ты думаешь по каким вообще данным строится печ. форма?
|
|||
3
Mihasya
02.06.20
✎
05:18
|
(1) это не документ, это справочник. Ну да не особо это важно, важно то что "НомерТекущегоГода" это не реквизит этого справочника, а реквизит формы из которой и нужно вызвать процедуру печати...
|
|||
4
Mihasya
02.06.20
✎
05:20
|
(2) хочешь сказать это не возможно?
|
|||
5
strange2007
02.06.20
✎
05:22
|
Вот такая вот кода для редактирования формы. Т.е. данные формы доступны
// Отладка возможна только через сложности // В "ВыполнитьКоманду" необходимо прописать вызов процедуры общего модуля. В которой, // в свою очередь, можно вызвать отладочную обработку, передав все 3 параметра. // После отладки необходимо скопировать код в этот модуль. // Для отладки эту обработку надо подключить к БСП. Пусть она сама и инициирует // вызов "ВыполнитьКоманду" #Область Регистрация_в_БСП Функция СведенияОВнешнейОбработке() Экспорт // Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(); // Версия БСП нужня для того, чтобы вызов был современный. Проверка идёт на // версию 1.2.1.4. Надо поставить что-то побольше ПараметрыРегистрации.ВерсияБСП = "8.3.11.3034"; // Список назначений в формате Вид.Тип ПараметрыРегистрации.Назначение.Добавить("Документ.НачислениеЗарплаты"); ПараметрыРегистрации.Назначение.Добавить("Документ.НачислениеЗаПервуюПоловинуМесяца"); // Вид, в совокупности с типом (использование) указывает БСП что за обработка и что она делать будет ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта(); // Информационная часть ПараметрыРегистрации.Наименование = "Сортировка данных начисления"; ПараметрыРегистрации.Информация = "Сортировка данных ТЧ документа 'Начисление ЗП'"; //ПараметрыРегистрации.Версия = "12.07.2018"; // создание // Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим) ПараметрыРегистрации.БезопасныйРежим = Истина; //ПараметрыРегистрации.БезопасныйРежим = Ложь; // Создание списка команд //ДобавитьКоманду(ПараметрыРегистрации.Команды, "Сортировка начислений", "ЗаполнениеТЧ", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода(), Ложь, ""); ДобавитьКоманду(ПараметрыРегистрации.Команды, "Сортировка начислений", "СортировкаНачислений", ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы(), Истина, ""); //бнгрэ_ОбщиеМодули.ИсследованиеВнОбработки(ПараметрыРегистрации); // Теперь вернем системе наши параметры Возврат(ПараметрыРегистрации); КонецФункции // Читай описание в коллекции знаний. Там капец какие комбинации. // Кстати, "Использование", это и есть тип из описания. Вот такая вот петрушка Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение=Ложь, Модификатор="") // Добавляем команду в таблицу команд по переданному описанию. // Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры #КонецОбласти // Далее вызываемая процедура, в которой можно раскомментировать вызов отладки и тогда будет отладка // Вызываемая часть. // Если версия БСП не указана, то вызываемая часть третий параметр не передаст. А именно // в нём и находится форма, которую можно корректировать. Хотя фиг знает, может мне нужна // "ЭтаФорма", а не элементы её // // Параметры: // ИдентификаторКоманды - Это та штука, которая указывается третьим параметром в "ДобавитьКоманду" // ОбъектыНазначения - Неопределено. Не знаю, что это такое, поэтому пофиг. // ПараметрыВыполнения - Структура, которая состоит из: // ДополнительнаяОбработкаСсылка - Ссылка на справочник, в котором эта обработка. Как эту информацию использовать? Сам не знаю. // РезультатВыполнения - Структура. В описании ничего про неё не нашёл. Наверное её надо заполнить(((((( // ЭтаФорма - Сама форма, которую можно редактировать! Ура! Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт // Вызов отладки бнгрэ_ОбщиеМодули.ИсследованиеВнОбработки(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения); // Вызов модулей сортировки //СортировкаНачислений(ПараметрыВыполнения); КонецПроцедуры // Отладочная процедура должна выглядеть примерно так #Область Для_отладки_внешних_модулей_БСП Процедура ИсследованиеВнОбработки(Пар1=Неопределено, Пар2=Неопределено, Пар3=Неопределено) Экспорт А = 1; ОтладочнаяОбр = ВнешниеОбработки.Создать("d:\Work\По датам\190306 Начисления без копеек\ОтладкаРаспределения.epf", Ложь); ОтладочнаяОбр.ВыполнитьКоманду(Пар1, Пар2, Пар3); КонецПроцедуры #КонецОбласти // В модуле обработки надо внести процедуру Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт А = 1; КонецПроцедуры // Вот и всё. Нужно настроить внешнюю обработку, расположенную по указанному пути и можно отлаживать, предварительно подключив внешнюю обработку в БСП Примечание: в подключаемой обработке надо поставить небезопасный режим! |
|||
6
strange2007
02.06.20
✎
05:23
|
Только отладка гораздо проще. Можно без общего модуля сразу перенаправить вызов в обработку-отладчик
|
|||
7
Mihasya
02.06.20
✎
05:40
|
(5,6) Спасибо, сам уже нашел
В процедуре ВыполнитьКлиентскийМетодОбработки есть вызов процедуры "Печать" на клиенте, как раз то что нужно... ЭтаФорма.ВладелецФормы.НомерТекущегоГода |
|||
8
strange2007
02.06.20
✎
05:45
|
(7) Можно и так. Вариантов много. Я просто наугад одну модуль одной из обработок сохранил, что бы в будущем подглядывать, как редактировать форму.
И да, в (5) есть огрехи в том, что не всё с формы доступно. Твой вариант круче. Вопрос только в том, почему же я то этот вариант не записал. Надо исправить |
|||
9
Mihasya
02.06.20
✎
05:56
|
(8) Единственно мне нужно что б кнопка печати была только в форме элемента, а внешняя печатная форма похоже и к списку цепляется... Похоже не доработали 1С-ники в этом вопросе )) Ну буду проверять из какой формы вызывается печать ))
|
|||
10
strange2007
02.06.20
✎
06:11
|
(9) Это же мегаудобно, когда выделяешь 48 строк и все сразу печатаешь. Народу нравится
|
|||
11
Mihasya
02.06.20
✎
06:18
|
(10) да это понятно, я про саму возможность подключать кнопку печати, нет выбора куда ее подключать, к форме списка или форме элемента )) вот мне не нужно к форме списка, а кнопка все равно подключается... ну да ладно, это уже мелочи
|
|||
12
strange2007
02.06.20
✎
06:25
|
(11) Малость оффтопа: Простейшие механизмы БСП, касающиеся внешних обработок и отчётов, вносят многолетние вопросы для сообщества 1С (я один из этого списка и горжусь своей глупостью!). А теперь представим, что было бы, если создатели БСП добавили бы механизм расположение кнопок. Ещё лет пять непонимания и ненависть к БСП!
Хотя да, согласен, было бы круто, если можно было бы управлять расположением кнопок, с возможностью полного сокрытия. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |