Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Встраивание функционала печатных форм в свой новый документ , Выяснение списка действий          
CapitalistOleg Подменю пользователя
сообщение 07.06.23, 14:00
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 1 раз
Рейтинг: 0

УНФ для Грузии 1.6.10.44

Создал свой документ. Поскольку действий никаких он не делает, создал не копированием, а просто новый. Теперь хочу добавить печатную форму. Что сделал:

1. В форме ПриСозданииНаСервере добавил
ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
УправлениеПечатью.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ГруппаКомандПечати);
2. В модуле менеджера добавил Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода). Указал свою печатную форму в
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию
3. В модуле менеджера добавил ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета), где вызываю свой СформироватьМакет
4. Добавлил СформироватьМакет с полезным алгоритмом
5. Добавил в форму Подключаемый_ВыполнитьКомандуПечати. Не могу найти, к чему этот метод должен привзяываться.

Что еще я упустил?

AnryMc Подменю пользователя
сообщение 08.06.23, 10:07
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 362
Спасибо сказали: 99 раз
Рейтинг: 100.6

Если используется БСП - можно проверить версию
&НаСервереБезКонтекста
Функция ВерсияБСПНаСервере()
    
    Возврат СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
    
КонецФункции


Если БСП:

Общий модуль: УправлениеПечатьюПереопределяемый...
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
Добавить: СписокОбъектов.Добавить(Документы.МОЙ_НОВЫЙ_ДОКУМЕНТ);



Возможны нюансы в зависимости от версии БСП

Часто "стукался" в проблему добавления элемента кнопки Печать в меню формы...

Но "в среднем" как то так:

В форму документа добавить процедуры:
// СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма,
Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Печать
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результа
т);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды


Добавить в события формы документа:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры


В модуль менеджера нового документа


#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область Печать
// Заполняет список команд печати.
//
// Параметры:
// КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.С
оздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры
// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
// ПараметрыПечати - Структура - Структура дополнительных параметров печати
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных до
кументов
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечат
и, ПараметрыВывода) Экспорт
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.Параметры
Отправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция ДоступныеДляШаблоновПечатныеФормы() Экспорт
МассивДоступныхПечатныхФорм = Новый Массив;
Возврат МассивДоступныхПечатныхФорм
КонецФункции
#КонецОбласти
#КонецЕсли


В общий модуль УправлениеПечатьюПереопределяемый в
процедуру ПриОпределенииОбъектовСКомандамиПечати добавить строчку

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
СписокОбъектов.Добавить(Документы.НовыйДокумент);
КонецПроцедуры


В модуль дополнительной печатной формы добавить процедуры

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция СведенияОВнешнейОбработке() Экспорт
СведенияОВнешнейОбработке = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОб
работке("2.3.1.73");
СведенияОВнешнейОбработке.Вставить("Вид", ДополнительныеОтчетыИОбработкиКлиен
тСервер.ВидОбработкиПечатнаяФорма());
СведенияОВнешнейОбработке.Вставить("Назначение", ПолучитьНазначениеОбработки
());
СведенияОВнешнейОбработке.Вставить("Наименование", "Новый документ");
СведенияОВнешнейОбработке.Вставить("Версия", "1.0");
СведенияОВнешнейОбработке.Вставить("Информация", "Новый документ");
СведенияОВнешнейОбработке.Вставить("БезопасныйРежим", Ложь);
СформироватьСписокКоманд(СведенияОВнешнейОбработке.Команды);
Возврат СведенияОВнешнейОбработке;
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывод
а) Экспорт
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФор
м, "НовыйДокумент");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъ
ектов);
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Новый документ'");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Функция СформироватьПечатнуюФорму(МассивОбъектов) Экспорт
Док = МассивОбъектов[0];
//Тут заполняем печатную форму
//Макет = ПолучитьМакет("Макет");
//ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
//ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ТабличныйДокумент = Новый ТабличныйДокумент;
Возврат ТабличныйДокумент;
КонецФункции
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьНазначениеОбработки()
Результат = Новый Массив;
Результат.Добавить("Документ.НовыйДокумент");
Возврат Результат;
КонецФункции
Функция ПолучитьСтруктуруТаблицыКоманд()
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булев
о"));
Результат.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Результат;
КонецФункции
Процедура ДобавитьКоманду(Команды, Идентификатор, Представление, Использование, Показ
ыватьОповещение = Ложь, Модификатор = Неопределено)
НоваяКоманда = Команды.Добавить();
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Представление = Представление;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Процедура СформироватьСписокКоманд(Команды)
ДобавитьКоманду(Команды, "НовыйДокумент", "Новый документ", ДополнительныеОтч
етыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(), Истина);
КонецПроцедуры
#КонецОбласти
#КонецЕсли


В форму списка документа добавить процедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Печать
УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма, Элементы.ПодменюПечать);
// Конец СтандартныеПодсистемы.Печать
КонецПроцедуры
#Область ОбработчикиКомандФормы
// СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма,
Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Спис
ок);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Р
езультат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды


Добавить в командную панель ПодменюПечать:

...

Batchir Подменю пользователя
сообщение 01.07.23, 8:18
Сообщение #3

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Ещё скорее всего нужно посмотреть какой-то типовой документ и на самой форме повставлять аналогичные служебные группы

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.06.24, 18:51
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!