![]() |
|
Внедрение в 1С: Документооборот, ред. 2.1. КОРП печатной формы. | ☑ | ||
---|---|---|---|---|
0
doshe_rak
15.07.21
✎
14:07
|
Доброго дня!
Вопрос касательно добавления печатной формы в Документообороте. Необходимо добавить печатную форму в типовую конфигурацию, и что бы она располагалась в подсистеме "Зарплата" и пункте "Табели". Создал внешнею печатную форму, назвал её "ПечатнаяФормаУчетВремени1.2", прописал внутри данной печатной формы, в модуле, данный код: //========================================================================================================= //Процедуры регистрации внешней печатной формы Функция СведенияОВнешнейОбработке() Экспорт Назначения = Новый Массив(); Назначения.Добавить("Документ.ТабельУчетаРабочегоВремени"); ПараметрыРегистрации = Новый Структура(); ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); ПараметрыРегистрации.Вставить("Назначение", Назначения); ПараметрыРегистрации.Вставить("Наименование", "Установка учета рабочего времени"); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма для документа Табель"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); Команды = ПолучитьТаблицуКоманд() ; ДобавитьКоманду(Команды,"Установка учета рабочего времени", "УстановкаУчетаРабочегоВремени", "ВызовСерверногоМетода", Ложь, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды",Команды) ; Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений(); Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры //======================================== //======================================== //Код формирования печатной формы Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "УстановкаУчетаРабочегоВремени", НСтр("ru = 'Установка учета рабочего времени'"), ТабличныйДокументПоМоемуМакету(ПолучитьМакет("MXI"), МассивОбъектов, ОбъектыПечати), , "MXI"); КонецПроцедуры Функция ТабличныйДокументПоМоемуМакету(Макет, МассивОбъектов, ОбъектыПечати) ДокументРезультат = Новый ТабличныйДокумент; ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ДокументРезультат.АвтоМасштаб = Истина; НомерСтрокиНачало = ДокументРезультат.ВысотаТаблицы + 1; ДокументРезультат.КлючПараметровПечати = "ПараметрыПечати_Документ_MXI"; //формирование таблицы ДанныеДляПечати = ДанныеДляПечатиПоДокументам(МассивОбъектов); ВывестиДанныеВТабличныйДокумент(Макет, ДокументРезультат, ДанныеДляПечати, ОбъектыПечати); Возврат ДокументРезультат; КонецФункции Функция ДанныеДляПечатиПоДокументам(МассивСсылок) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок); Запрос.Текст = "ВЫБРАТЬ | ТабельУчетаРабочегоВремени.Ссылка КАК Ссылка |ИЗ | Документ.ТабельУчетаРабочегоВремени КАК ТабельУчетаРабочегоВремени |ГДЕ | ТабельУчетаРабочегоВремени.Ссылка В(&МассивСсылок)"; Результат = Запрос.Выполнить(); ПрочиеДанные = Новый Структура(); Возврат Новый Структура("ВыборкаДокументы, ПрочиеДанные", Результат.Выбрать(), ПрочиеДанные); КонецФункции Функция НадоПечататьДокумент(Ссылка) Возврат Истина; КонецФункции Процедура ВывестиДанныеВТабличныйДокумент(Макет, ДокументРезультат, ДанныеДляПечати, ОбъектыПечати) ВыборкаДокументы = ДанныеДляПечати.ВыборкаДокументы; ПервыйДокумент = Истина; Пока ВыборкаДокументы.Следующий() Цикл Если Не НадоПечататьДокумент(ВыборкаДокументы.Ссылка) Тогда ТекстСообщения = НСтр("ru = '%1: документ не требует печати.'"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ВыборкаДокументы.Ссылка)); Продолжить; КонецЕсли; Если Не ПервыйДокумент Тогда ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ДокументРезультат.ВысотаТаблицы + 1; Секция = Макет.ПолучитьОбласть("ПечатнаяЧасть"); ЗаполнитьЗначенияСвойств(Секция.Параметры, ВыборкаДокументы); Секция.Параметры.ПечатнаяЧасть = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Секция.Параметры.ПечатнаяЧасть, Истина, Истина); ДокументРезультат.Вывести(Секция); УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ДокументРезультат, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка); КонецЦикла; КонецПроцедуры Далее создал макет, печатной формы, нарисовал таблицу которая мне нужна. При запуске режима пользователя, на кнопке печать, появилась новая строка, с названием моей печатной формы. Нажимаем на неё, и на экране появляется наша печатная форма, НО! она не заполняется, как прописать код так, что бы она подтягивала данные, не могу придумать. Памагити ... |
|||
1
Масянька
15.07.21
✎
14:11
|
(0) У тебя там есть Форма. В модуле этой формы:
&НаСервере Процедура ПечатьНаСервере() ТекущийОбъект = РеквизитФормыВЗначение("Объект"); ТабДокумент = ТекущийОбъект.ИМЯ_ТВОЕЙ_ПЕЧАТИ; КонецПроцедуры &НаКлиенте Процедура Печать(Команда) ПечатьНаСервере(); КонецПроцедуры |
|||
2
Мультук
гуру
15.07.21
✎
14:17
|
(0) Задача, я так понимаю, вывести в печатный документ только ссылки?
Потому что другие реквизиты ты не выбираешь. Запрос.Текст = "ВЫБРАТЬ | ТабельУчетаРабочегоВремени.Ссылка КАК Ссылка |ИЗ | Документ.ТабельУчетаРабочегоВремени КАК ТабельУчетаРабочегоВремени |ГДЕ | ТабельУчетаРабочегоВремени.Ссылка В(&МассивСсылок)"; |
|||
3
doshe_rak
15.07.21
✎
14:23
|
Тут в общем и проблема, я не знаю как прописать код, для подключения своих параметров из печатной формы, что бы они "подсасывали" данные из документа, и выводили это на печать.
Сама форма появляется в печатном виде, но пустая... |
|||
4
doshe_rak
15.07.21
✎
14:24
|
Мультук, нет, этот код шаблонный, взял из интернета, он просто осуществляет вывод на печать пустой формы, простой таблички которая не будет заполняться.
|
|||
5
doshe_rak
15.07.21
✎
14:25
|
Масянька, я так понял этот код нужно добавить в форму моей внешней печатной формы, где хранится код который там прописан?
|
|||
6
Масянька
15.07.21
✎
14:26
|
(3) Т о есть - ты видишь свою таблицу (не пустой лист), только она (таблица) пустая?
|
|||
7
doshe_rak
15.07.21
✎
14:29
|
Масянька, совершенно верно, я нарисовал таблицу, заголовок, надписи в колонках и ячейках, где необходимо, и все остальное.
То есть табличка готова к бою :) Но информацию, из документа, она должна подтягивать с помощью параметров, а как их указать так, что бы, табличка заполнялась, не могу понять ) |
|||
8
Масянька
15.07.21
✎
14:29
|
(7) При печати ты видишь свою табличку?
|
|||
9
doshe_rak
15.07.21
✎
14:34
|
Да, распечатывается табличка нормально
|
|||
10
Масянька
15.07.21
✎
14:35
|
(9) Скрин макета покажи (из конфы)
|
|||
11
doshe_rak
15.07.21
✎
14:41
|
А как тут добавить картинку? Кнопок даже нет специальных...
|
|||
12
Масянька
15.07.21
✎
14:58
|
(11) Картинку выкладываешь на помойку (нормальную) - сюда ссылку.
|
|||
13
doshe_rak
15.07.21
✎
15:13
|
||||
14
Масянька
15.07.21
✎
15:22
|
(13) А номер выводится в печ. форме?
|
|||
15
Масянька
15.07.21
✎
15:22
|
+ (14) Секция.Параметры.ПечатнаяЧасть = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Секция.Параметры.ПечатнаяЧасть, Истина, Истина);
|
|||
16
doshe_rak
15.07.21
✎
15:27
|
Нет, только то что не является параметром, а обычным текстом, и сама таблица, границы я имею ввиду.
Данную строку коду куда нужно записать в тексте кода ? |
|||
17
doshe_rak
15.07.21
✎
15:30
|
Извиняюсь, это строка кода из Процедуры ВывестиДанныеВТабличныйДокумент
|
|||
18
Масянька
15.07.21
✎
16:29
|
(17) В этой процедуре:
Секция = Макет.ПолучитьОбласть("ПечатнаяЧасть"); //ЗаполнитьЗначенияСвойств(Секция.Параметры, ВыборкаДокументы); //Секция.Параметры.ПечатнаяЧасть = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Секция.Параметры.ПечатнаяЧасть, Истина, Истина); ДокументРезультат.Вывести(Секция); Вместо строчек // нужно написать: Секция.Параметры.[ИмяПараметра] = [СамПараметр]; ИмяПараметра - имя параметра в печатной форме (ФИО, Должность и пр.) СамПараметр - то, чем нужно заполнять. Вот тут сложнее: в ДанныеДляПечати только ссылки на документы. Поэтому нужно либо переделать запрос, либо выводить в цикле (для каждого документа, для каждой ТЧ). |
|||
19
doshe_rak
15.07.21
✎
16:37
|
Вот, к сожалению данного шаблона, или примера, как заполняется данная часть, где описываются параметры которые потом можно будет использовать ПФ, у меня нет. И в интернете примеров не могу найти :(
|
|||
20
doshe_rak
15.07.21
✎
16:44
|
Именно как нужно начинать записывать текст кода, где описывается как описывать параметр, и добавление его на печатную форму.
|
|||
21
Масянька
15.07.21
✎
17:05
|
(20) Это макет - https://ibb.co/cQq4vWx
Комментарий - это ячейка макета. Обрати внимание на свойство "Заполнение" этой ячейки. |
|||
22
Масянька
15.07.21
✎
17:07
|
+ (21) А это код заполнения этой ячейки (см. 18):
Область.Параметры.Комментарий = СокрЛП(Выборка.РезультатВыполнения); Выборка - результат запроса. |
|||
23
Масянька
15.07.21
✎
17:17
|
+(21) Картинка получше - https://ibb.co/W2DpQ8j
Хотя, как художник, я - Пикассо |
|||
24
Масянька
15.07.21
✎
17:19
|
(23) Ячейка не та :(
Короче, вот картинка - https://ibb.co/3dtm7LY |
|||
25
doshe_rak
16.07.21
✎
08:38
|
Я обратил внимание, вижу что это параметр, у меня в таблице так же записаны данные ячейки как параметры, не текст и не шаблон )
|
|||
26
doshe_rak
16.07.21
✎
08:38
|
Область.Параметры.Комментарий = СокрЛП(Выборка.РезультатВыполнения);
Насчёт этого надо подумать, как правильно записать ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |