Макеты печатных форм
Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.
Доступ к форуму партнерам «1C-Рарус» по дистрибуции предоставляется на сайте
rarus-soft.ru
Читают тему
Конфигурация: CRM+УТ (2.0.7.2)
В шаблонах пытаюсь добавить макет печатных форм в формате doc. При сохранении выдает ошибку.
Прикрепленные файлы
Спасибо за сообщение. Передала разработчикам.
РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм.Форма(992)
Процедура ДобавитьСтрокуДереваЗавершитьРедакирование(СтруктураДанных)
НайденныеСтроки = CRM_ОбщегоНазначенияКлиентСервер.НайтиВЭлементахДерева(СписокМакетов.ПолучитьЭлементы(), Новый Структура("ПолноеИмяОМ", СтруктураДанных.ПолноеИмяОМ));
Ошибка проявляется здесь:
РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм.Форма(992)
Процедура ДобавитьСтрокуДереваЗавершитьРедакирование(СтруктураДанных)
НайденныеСтроки = CRM_ОбщегоНазначенияКлиентСервер.НайтиВЭлементахДерева(СписокМакетов.ПолучитьЭлементы(), Новый Структура(" ПолноеИмяОМ ", СтруктураДанных. ПолноеИмяОМ ));
процедуры ОК формы записи регистра.
"Результат.Вставить("ПолноеИмяОМ" ,ПолноеИмяОМ)"
В ранних релизах она была.
Решил добавить шаблон печати события (ШаблонСобытия.doc) из "ШаблоныПечати" - папка из шаблона поставки последнего релиза.
В списке макетов печатных форм нет документа "Событие", его же нет в списке владельцев макета и при попытке создать новый.
Возможно, "забыли" в общей команде "ДополнительныеПечатныеФормыОбъекта" добавить Событие в тип параметра команды?
Может такие шаблоны где-то в другом месте добавлять надо?
Для документа Событие в общую команду "ДополнительныеПечатныеФормыОбъекта" добавить Событие в тип параметра команды.
Для Заказа клиента
1. В модуле РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм.Форма(992)
Процедура ДобавитьСтрокуДереваЗавершитьРедакирование(СтруктураДанных)
Заменить текст на:
Процедура ОК(Команда)
Если ПроверитьЗаполнениеПолей() Тогда
Результат = Новый Структура;
Результат.Вставить("ПолноеИмяОМ", ВладелецМакета);
Результат.Вставить("ИмяМакета", ИмяОбъектаМетаданныхМакета);
Результат.Вставить("Представление", ПредставлениеМакета);
Результат.Вставить("ПредставлениеВладельца", ПредставлениеВладельца);
Результат.Вставить("ТипМакета", ТипМакета);
Результат.Вставить("ПутьКФайлуМакета", ПутьКФайлуМакета);
Результат.Вставить("CRM_ВнешнийМакет", Истина);
Результат.Вставить("Редактируется", Истина);
Закрыть(Результат);
КонецЕсли;
КонецПроцедуры
2. Добавить в модуль формы:
&НаКлиенте
Процедура Подключаемый_ПечатьВнешнегоМакета(Команда)
ИмяМакета = СтрЗаменить(Команда.Имя, "Печать_", "");
ОбъектыНазначения = Новый СписокЗначений;
ОбъектыНазначения.Добавить(Объект.Ссылка);
УправлениеПечатьюКлиент.CRM_ПечатьВнешнегоМакета(ИмяМакета, ОбъектыНазначения);
КонецПроцедуры
3. Добавить в модуль формы в "ПриСозданииНаСервере":
CRM_ОбщегоНазначенияСервер.УстановитьКнопкиПечати(Метаданные.НайтиПоТипу(ТипЗнч(Объект.Ссылка)).ПолноеИмя(), ЭтаФорма);
4. Добавить на форму в командной панели "ФормаАвтоКнопки" (копировал из Событие).
После этого макеты стали работать, естественно, при наличии рабочих тегов.
Итак, чтобы получить функционал для работы с шаблонами, аналогичный "чистому" CRM 2, пришлось сделать следующее:
Для документа Событие в общую команду "ДополнительныеПечатныеФормыОбъекта" добавить Событие в тип параметра команды.
Для Заказа клиента
1. В модуле РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм.Форма(992)
Процедура ДобавитьСтрокуДереваЗавершитьРедакирование(СтруктураДанных)
Заменить текст на:
Процедура ОК(Команда)
Если ПроверитьЗаполнениеПолей() Тогда
Результат = Новый Структура;
Результат.Вставить("ПолноеИмяОМ", ВладелецМакета);
Результат.Вставить("ИмяМакета", ИмяОбъектаМетаданныхМакета);
Результат.Вставить("Представление", ПредставлениеМакета);
Результат.Вставить("ПредставлениеВладельца", ПредставлениеВладельца);
Результат.Вставить("ТипМакета", ТипМакета);
Результат.Вставить("ПутьКФайлуМакета", ПутьКФайлуМакета);
Результат.Вставить("CRM_ВнешнийМакет", Истина);
Результат.Вставить("Редактируется", Истина);
Закрыть(Результат);
КонецЕсли;
КонецПроцедуры
2. Добавить в модуль формы:
&НаКлиенте
Процедура Подключаемый_ПечатьВнешнегоМакета(Команда)
ИмяМакета = СтрЗаменить(Команда.Имя, "Печать_", "");
ОбъектыНазначения = Новый СписокЗначений;
ОбъектыНазначения.Добавить(Объект.Ссылка);
УправлениеПечатьюКлиент.CRM_ПечатьВнешнегоМакета(ИмяМакета, ОбъектыНазначения);
КонецПроцедуры
3. Добавить в модуль формы в "ПриСозданииНаСервере":
CRM_ОбщегоНазначенияСервер.УстановитьКнопкиПечати(Метаданные.НайтиПоТипу(ТипЗнч(Объект.Ссылка)).ПолноеИмя(), ЭтаФорма);
4. Добавить на форму в командной панели "ФормаАвтоКнопки" (копировал из Событие).
После этого макеты стали работать, естественно, при наличии рабочих тегов.
Для Заказа клиента
1. В модуле РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм.Форма(992)
Процедура ДобавитьСтрокуДереваЗавершитьРедакирование(СтруктураДанных)
Заменить текст на:
Процедура ОК(Команда)
Если ПроверитьЗаполнениеПолей() Тогда
Результат = Новый Структура;
Результат.Вставить("ПолноеИмяОМ", ВладелецМакета);
Результат.Вставить("ИмяМакета", ИмяОбъектаМетаданныхМакета);
Результат.Вставить("Представление", ПредставлениеМакета);
Результат.Вставить("ПредставлениеВладельца", ПредставлениеВладельца);
Результат.Вставить("ТипМакета", ТипМакета);
Результат.Вставить("ПутьКФайлуМакета", ПутьКФайлуМакета);
Результат.Вставить("CRM_ВнешнийМакет", Истина);
Результат.Вставить("Редактируется", Истина);
Закрыть(Результат);
КонецЕсли;
КонецПроцедуры
Виноват, не совсем точно указал-заменить процедуру ОК.
Сергей Ковальчук,
Виноват, не совсем точно указал-заменить процедуру ОК.
Да.
Сергей Ковальчук,
Да.
А пункты 2, 3, 4 - имеется в виду форма заказа клиента?
Да, форма, её модуль и кнопка "ФормаАвтоКнопки".
Общий модуль "УправлениеПечатьюКлиент", процедура "CRM_ПечатьВнешнегоМакетаMicrosoftWord".
// Вывод колонтитулов документа.
Область = ПолучитьОбласть(Макет, Области[ИмяМакета]["ВерхнийКолонтитул"]);
ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта);
Область = ПолучитьОбласть(Макет, Области[ИмяМакета]["НижнийКолонтитул"]);
ПрисоединитьОбласть(ПечатнаяФорма, Область);
После получения области "НижнийКолонтитул" возможно только её присоединение без заполнения параметров.
Изм.:
// Вывод колонтитулов документа.
Область = ПолучитьОбласть(Макет, Области[ИмяМакета]["ВерхнийКолонтитул"]);
ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта);
Область = ПолучитьОбласть(Макет, Области[ИмяМакета]["НижнийКолонтитул"]);
ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта);
Еще немножко расширили функционал, добавив возможность вывода тегов в нижний колонтитул.
А Вы проверяли? Пробовали добавлять в колонтитулы тэги?
Конечно, только они раньше не выводились, после изменения кода всё заработало.