Имя: Пароль:
1C
1С v8
Внешняя печатная форма к созданному документу
0 2Sides
 
11.12.13
16:54
Добрый день.

Начал переносить функционал с БП 2.0 на БП 3.0. Встал вопрос о реализации ВПФ к своему документу, но не получается подключить печатную форму к документу(к стандартным она подключается без проблем).
Так как его нет в окне выбора "Назначение дополнительной обработки", подскажите как можно решить данную проблему?
1 Жан Пердежон
 
11.12.13
17:01
прочитать статью на ИТС, либо скопировать код из модулей типовых документов
2 2Sides
 
11.12.13
17:22
(1) не сочтите за дерзость, ткните пальцем
3 2Sides
 
12.12.13
08:58
Никак не могу найти инфу на ИТС, все попадается о том как реализовать саму внешнюю обработку, а не о том как подготовить сам документ к ее подключению.
Ребята помогите =)
4 daemvik
 
12.12.13
09:26
создаешь ВПФ, регистрируешь ее в справочнике "Дополнительные обработки и отчеты"... и потом по-моему просто вставляешь в процедуру "ПриСозданииНаСервере" вызов соответствующий посмотри как реализованы в этом плане типовые документы... например "ПоступлениеТоваровУслуг"
5 2Sides
 
12.12.13
10:02
Опишу к чему пришел %)

1. Создал ВПФ, которая нормально отрабатывает при подключении к стандартному документу из демки БП 3.0
2. Создал свой документ, согласно статьи на ИТС включил его в параметры глобальной команды "ДополнительныеОтчетыИОбработкиПечатныеФормы", и в модуле формы вставил код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
     // СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки
    ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
    // Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки
КонецПроцедуры

Сама команда "Печать" в командной панели формы в конфигураторе появилась.
Запустил отладчик, подключил свою ВПФ к вновь созданному документу, открыл документ, а кнопки печати нет %)

Что я делаю не так?
6 daemvik
 
12.12.13
10:27
попробуй еще добавить следующий вызов в эту процедуру

// СтандартныеПодсистемы.Печать
УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма);
// Конец СтандартныеПодсистемы.Печать
7 daemvik
 
12.12.13
10:29
и еще на всякий случай проверь как зарегилась ВПФ... как внешняя печатная форма или все так как внешний отчет?
8 2Sides
 
12.12.13
10:30
(6) Пока ждал помощи тоже добавлял этот вызов, не помогло.
ВПФ регистрируется как печатная форма
9 daemvik
 
12.12.13
10:37
вот эта процедура в модуле формы есть?
// СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
    
    УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект);
    
КонецПроцедуры

// Конец СтандартныеПодсистемы.Печать
10 2Sides
 
12.12.13
10:40
(9)
Да это помогло, огромное спасибо. Лучи добра Вам!

ЗЫ Для готового решения необходимо было еще добавить в менеджер объекта
// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
КонецПроцедуры
11 daemvik
 
12.12.13
10:54
ну да... еще это надо добавить... )))
12 Жан Пердежон
 
12.12.13
11:14
Подготовительные действия

На первом этапе нужно внедрить подсистему в те формы, в которых предполагается использовать команды печати, и в модули менеджеров объектов:

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

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

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

Важно! Поле Ссылка динамического списка формы должно быть доступно в обработчике команды. Для этого необходимо у реквизита формы, содержащего динамический список, у поля Ссылка поставить флажок Использовать всегда.

4. Добавить экспортную процедуру ДобавитьКомандыПечати в модуль менеджера:
// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры

http://its.1c.ru/db/bspdoc#content:22:1
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн