Имя: Пароль:
1C
1С v8
как из внешней обработки распечатать выбранный договор?
0 rogachev
 
14.09.19
12:55
как програмно  это можно решить?
1 Chameleon1980
 
14.09.19
13:07
Выбранный кем и где? Мало информации. Так никто не ответит.
2 rogachev
 
14.09.19
13:10
(1) выбираю договор любой в форме созданной мною обработки  по кнопке печать  .мне нужно распечатать этот договор .из внешней обработки .
3 ДенисЧ
 
14.09.19
13:11
Посмотреть, как оный договор печатается не из внешней обработки, и сделать так же в обработке.
4 rogachev
 
14.09.19
13:13
(3) логично . не проще было бы вызвать команду печати текущего договора  в внешней обработке ?
5 rogachev
 
14.09.19
13:13
(3) вызвать команду из командной панели договора
6 rogachev
 
14.09.19
13:15
(3) а как он там печатается ?
7 hhhh
 
14.09.19
13:27
(6) при помощи команды из командной панели
8 rogachev
 
14.09.19
13:47
(7) это я знаю ,как эту команду вызвать в внешней обработке?
9 shuhard
 
14.09.19
13:49
(8) через модуль менеджера договора вестимо
10 rogachev
 
14.09.19
13:50
(9) знаю где чего . находиться .вызвать как?
11 hhhh
 
14.09.19
13:52
(8) ну во внешней обработке этой делаешь создать команду, к этой команде привязываешь процедуру. Потом команду мышкой кидаешь на панель.
12 shuhard
 
14.09.19
13:53
(10) а что конкретно не получается с вызовом процедуры из модуля менеджера справочника ?
ты всё на уровне палки и верёвки
13 rogachev
 
14.09.19
13:53
(11) это я делал 10 лет назад.
14 rogachev
 
14.09.19
13:55
(12) нет я не на уровне палки и веревки
не надо в мой адрес гнать .
15 rogachev
 
14.09.19
13:57
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
    Если ПравоДоступа("Чтение", Метаданные.Справочники.ШаблоныДоговоров) Тогда
        // Текст договора
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = "Договор";
        КомандаПечати.Представление = НСтр("ru = 'Договор'");
        КомандаПечати.Обработчик    = "ПечатьДоговоровКлиент.ВыполнитьКомандуПечатиТекстаДоговора";
        КомандаПечати.СписокФорм    = "ФормаЭлемента,ФормаСпискаОбщая";
    КонецЕсли;
    
    Если ПравоДоступа("Чтение", Метаданные.Справочники.Контрагенты) Тогда
        // Печать конвертов
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = "Конверт";
        КомандаПечати.Представление = НСтр("ru = 'Конверт'");
        КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечатиКонверта";
        КомандаПечати.СписокФорм    = "ФормаЭлемента,ФормаСпискаОбщая";
    КонецЕсли;
    
КонецПроцедуры

// Возвращает структуру с перечнем полей, которые могут быть поставлены в текст
// договора по данным из справочника "Договоры контрагентов".
//
Функция ПодготовитьПараметрыПечатиТекстаДоговора(ДоговорКонтрагента) Экспорт

    РеквизитыДоговора     = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДоговорКонтрагента,
        "Владелец, Организация, Дата, Номер, СрокДействия, ВидДоговора, ВалютаВзаиморасчетов,
        |УстановленСрокОплаты, СрокОплаты,
        |Руководитель, ЗаРуководителяПоПриказу, ДолжностьРуководителя,
        |РуководительКонтрагента, ЗаРуководителяКонтрагентаПоПриказу, ДолжностьРуководителяКонтрагента,
        |ПолРуководителяКонтрагента");
        
    // Дополнительные поля
    РеквизитыДоговора.Вставить("РуководительФИО", ""); // Фамилия Имя Отчество
    РеквизитыДоговора.Вставить("РуководительПол", ""); // Пол физического лица

    ДатаСреза = ?(ЗначениеЗаполнено(РеквизитыДоговора.Дата), РеквизитыДоговора.Дата, ТекущаяДатаСеанса());

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

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

КонецФункции

#КонецОбласти
16 rogachev
 
14.09.19
13:58
как ее вызвать для текущего выбранного договора? в обработке
17 hhhh
 
14.09.19
14:08
(16) эту процедуру вам точно не нужно, там внутри изучайте процедуры

        КомандаПечати.Обработчик    = "ПечатьДоговоровКлиент.ВыполнитьКомандуПечатиТекстаДоговора";

вот это например
18 rogachev
 
14.09.19
14:10
(17) эт я уже понял спасибо за подсказки
19 rogachev
 
14.09.19
14:10
отпишусь как решу
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший