Имя: Пароль:
1C
 
V8.2 Внешняя печатная форма с нуля в управляемом режиме
0 Minirius
 
13.02.11
12:45
Необходимо создать внешнюю печатную форму с нуля, с включенным в неё макетом, в управляемом режиме. Может есть у кого-нибудь примеры подобных форм??... код ошибок не выдает, но и печатную форму не выводит.
1 Minirius
 
13.02.11
12:48
в модуле объекта

 &НаСервере

Функция СведенияОВнешнейОбработке() Экспорт
   
   РегистрационныеДанные = Новый Структура;
   РегистрационныеДанные.Вставить("Наименование", "нПечатная форма 8.2.");
   РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
   РегистрационныеДанные.Вставить("Версия", "1.1");
   
   //ДополнительнаяОбработка
   //ДополнительныйОтчет
   //ЗаполнениеОбъекта
   //Отчет
   //ПечатнаяФорма
   //СозданиеСвязанныхОбъектов
   //РегистрационныеДанные.Вставить("Вид", "ПечатнаяФорма");
РегистрационныеДанные.Вставить("Вид", "ПечатнаяФорма");
   
   РегистрационныеДанные.Вставить("Информация", "Обработка сделано по новому стандарту подключения внешних обработок 8.2. Пример обработки ""Hello Word"" ");
   
   ///////////// команды /////////////////////////
   тзКоманд = Новый ТаблицаЗначений;
   тзКоманд.Колонки.Добавить("Идентификатор");
   тзКоманд.Колонки.Добавить("Представление");
   тзКоманд.Колонки.Добавить("Модификатор");
   тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
   тзКоманд.Колонки.Добавить("Использование");
   
   строкаКоманды = тзКоманд.Добавить();
   строкаКоманды.Идентификатор = "1";
   строкаКоманды.Представление = "команда ""Hello Word"" (ОткрытиеФормыНинкиной)";
   строкаКоманды.ПоказыватьОповещение = Истина;
   строкаКоманды.Использование = "ОткрытиеФормы";
   
   строкаКоманды = тзКоманд.Добавить();
   строкаКоманды.Идентификатор = "2";
   строкаКоманды.Представление = "команда ""Hello Word"" (ВызовКлиентскогоМетода)";
   строкаКоманды.ПоказыватьОповещение = Истина;
   строкаКоманды.Использование = "ВызовКлиентскогоМетода";
   
   строкаКоманды = тзКоманд.Добавить();
   строкаКоманды.Идентификатор = "3";
   строкаКоманды.Представление = "команда ""Hello Word"" (ВызовСерверногоМетода)";
   строкаКоманды.ПоказыватьОповещение = Истина;
   строкаКоманды.Использование = "ВызовСерверногоМетода";
   строкаКоманды.ПоказыватьОповещение = "Истина";
   
   РегистрационныеДанные.Вставить("Команды", тзКоманд);
   
   ////////////// назначение (в каких объектах используется) /////////////////////////
   //для печ.форм, заполнения, ввода свазанных объектов
   МассивНазначений = Новый Массив;
   //МассивНазначений.Добавить("Документ.*"); // все документы назначаются
   //МассивНазначений.Добавить("Документ.Анкета");
   МассивНазначений.Добавить("Документ._ДемоСчетНаОплатуПокупателю");
   РегистрационныеДанные.Вставить("Назначение", МассивНазначений);
   
   Возврат РегистрационныеДанные;
   
КонецФункции
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначения)  Экспорт
    ТабДок = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("Печать");
        Запрос = Новый Запрос;
      Запрос.Текст="ВЫБРАТЬ
   |    _ДемоСчетНаОплатуПокупателю.БанковскийСчет,
   |    _ДемоСчетНаОплатуПокупателю.Дата,
   |    _ДемоСчетНаОплатуПокупателю.Договор,
   |    _ДемоСчетНаОплатуПокупателю.Контрагент,
   |    _ДемоСчетНаОплатуПокупателю.Номер,
   |    _ДемоСчетНаОплатуПокупателю.Организация,
   |    _ДемоСчетНаОплатуПокупателю.Товары.(
   |        НомерСтроки,
   |        Номенклатура,
   |        ЕдиницаИзмерения,
   |        Количество,
   |        Цена,
   |        Сумма,
   |        СуммаНДС,
   |        Всего
   |    )
   |ИЗ
   |    Документ._ДемоСчетНаОплатуПокупателю КАК _ДемоСчетНаОплатуПокупателю
   |ГДЕ
   |    _ДемоСчетНаОплатуПокупателю.Ссылка В (&Ссылка)";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();
                         
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
   ОбластьТовары = Макет.ПолучитьОбласть("Товары");
   ТабДок.Очистить();

   ВставлятьРазделительСтраниц = Ложь;
   Пока Выборка.Следующий() Цикл
       Если ВставлятьРазделительСтраниц Тогда
           ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;

       ТабДок.Вывести(ОбластьЗаголовок);

       Шапка.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(Шапка, Выборка.Уровень());

       ТабДок.Вывести(ОбластьТоварыШапка);
       ВыборкаТовары = Выборка.Товары.Выбрать();
       Пока ВыборкаТовары.Следующий() Цикл
           ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
           ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
       КонецЦикла;

       ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
      ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
   ТабДок.Вывести(Макет);
 
КонецПроцедуры
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.