Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с передачей параметров во внешнюю обработку
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
kosalex
Доброго времени суток! Есть внешняя обработка, и конфа БП КОРП (РФ), УФ. Обработку подключил, по кнопке "Печать" в документе "ТребованияНакладная" моя кнопка появляется.

Мне нужно по нажатию на добавленной кнопке открыть форму настроек, форма в самой обработке. У нее есть реквизиты "Объект" и т.п. Мне нужно чтобы в Объект попала ссылка на документ с которого была нажата кнопка. Как это сделать, что то ума не приложу.

Нужно при открытии формы "Настройки" передавать эту ссылку или как и где? ПОДСКАЖИТЕ !

Вок какой код у меня есть в модуле объекта обработки, как я понимаю этот код нужен чтобы прописать мою внешнюю печатную форму в базе.
Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.ТребованиеНакладная");
    МассивНазначений.Добавить("Документ.ПоступлениеИзПереработки");

    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Отчет о списании материалов ""ТребованияНакладной"" и ""ПоступлениеИзПереработки""");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Информация","by kos");
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    ДобавитьКоманду(ТаблицаКоманд,
        "Отчет о списании материалов",
        "0",
        "ОткрытиеФормы",
        Истина
    );

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

kosalex
ПЛИЗ!ПОМОГИТЕ! Как моей обработке указать с какого документа она вызывается?
logist
Вероятно по аналогии с
  МассивНазначений.Добавить("Документ.ПоступлениеИзПереработки");
kosalex
Цитата(logist @ 22.04.15, 16:48) необходимо зарегистрироваться для просмотра ссылки
Вероятно по аналогии с
  МассивНазначений.Добавить("Документ.ПоступлениеИзПереработки");


Так это же для того чтобы обработка добавилась в спр. "ДополнительныеОтчетыИОбработки", когда уже на форме самого документа нажимаю "Печать", вижу свою печатную форму, нажимаю по ней, должна появиться моя форма настроек, в которой реквизит "СсылкаНаДокумент" дожен заполниться ссылкой на документ. Далее на форме настройки есть кнопка "Печать" по ее нажатию пользователь должен увидеть табличный документ.

Как это сделать?
logist
В форме, ПриОткрытии открываете выбор ссылки. а затем стандартно обрабатываете результат выбора.
kosalex
Цитата(logist @ 22.04.15, 17:24) необходимо зарегистрироваться для просмотра ссылки
В форме, ПриОткрытии открываете выбор ссылки. а затем стандартно обрабатываете результат выбора.

что значит открываете выбор ссылки? Вывести доки пользователю чтобы он выбрал ?

Мне надо, пользователь открывает документ, нажимает на кнопку "Печать", открывается список доступный печатных форм(типовой мех.), в этом списке есть моя подключенная внешняя обработка, когда я нажимаю на свою печатную форму, то открывает форма настройки отчета, где я смотрю что реквизит "СсылкаНаОбъект" не заполняется, как ее заполнить? Вообще по задумке, пользователь не будет видеть этот реквизит "СсылкаНаОбъект", а только настройки по выводу данных в табличный документ.
logist
Внешние обработки не писал для УФ, а вот в печатной форме, в модуле обработки должна быть экспортная процедура Печать, и ее первый параметр это массив ссылок, который содержит ссылки документов которые были выделены пользователем в списке до нажатия на команду. Если ссылка одна, то это 0-й элемент массива.
Как это во внешней "обработке" хз smile.gif
kosalex
Цитата(logist @ 22.04.15, 18:57) необходимо зарегистрироваться для просмотра ссылки
Внешние обработки не писал для УФ, а вот в печатной форме, в модуле обработки должна быть экспортная процедура Печать, и ее первый параметр это массив ссылок, который содержит ссылки документов которые были выделены пользователем в списке до нажатия на команду. Если ссылка одна, то это 0-й элемент массива.
Как это во внешней "обработке" хз smile.gif



У меня есть обработка. Вот код модуля объекта:
Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
    
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.ПоступлениеИзПереработки");
    МассивНазначений.Добавить("Документ.ТребованиеНакладная");

    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Отчет о списании материалов ""ТребованияНакладной"" и ""ПоступлениеИзПереработки""");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Информация","by kos");
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    ДобавитьКоманду(ТаблицаКоманд,
        "Отчет о списании материалов",
        "ФормаНастройки",
        "ОткрытиеФормы",
        Истина
    );

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры


Функция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт;
    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
    
    ТабДок = Новый ТабличныйДокумент;
    
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    
    СсылкаНаОбъект = МассивОбъектов[0];
    
    Если НЕ ПечататьКолонкиСчетЦенаСумма Тогда
        
        ДанныеДляЗаполнения = ПолучитьДанныеДляЗаполнения(СсылкаНаОбъект);
    
        Склад = СсылкаНаОбъект.Склад;
    
        ОтветственныйИДолжность = ПолучитьОтветственногоИДолжность(Склад);
        
        Ответственный = ОтветственныйИДолжность.Получить(0).ФизическоеЛицо1;
        
        Организация = СсылкаНаОбъект.Организация;
        
        ДолжностьОтветственного = ОтветственныйИДолжность.Получить(0).Должность;
        
        ГенДир = ПолучитьГенДир(Организация);

        ОбластьПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока1");
        ОбластьШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента1");
        ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы1");
        ОбластьСтрокаДанных = Макет.ПолучитьОбласть("СтрокаДанных1");
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал1");
        
        ОбластьШапкаДокумента.Параметры.ДатаДокумента = СсылкаНаОбъект.Дата;
        ОбластьШапкаДокумента.Параметры.Склад = СсылкаНаОбъект.Склад;
        
        ТабДок.Вывести(ОбластьШапкаДокумента);
        ТабДок.Вывести(ОбластьПустаяСтрока);
        ТабДок.Вывести(ОбластьШапкаТаблицы);
        
        //Вывод в ТЧ
        Для Каждого Строка Из ДанныеДляЗаполнения Цикл
        ЗаполнитьЗначенияСвойств(ОбластьСтрокаДанных.Параметры,Строка);
        ТабДок.Вывести(ОбластьСтрокаДанных);
        КонецЦикла;
        
        ОбластьПодвал.Параметры.ФИОДиректор = ГенДир;
        ОбластьПодвал.Параметры.ДолжностьОтветственногоЛица = ДолжностьОтветственного;
        ОбластьПодвал.Параметры.ФИООтветственногоЛица = Ответственный;
        
        ТабДок.Вывести(ОбластьПустаяСтрока);
        ТабДок.Вывести(ОбластьПодвал);
        
    Иначе
                
        ДанныеДляЗаполнения = ПолучитьДанныеДляЗаполнения(СсылкаНаОбъект);
    
        Склад = СсылкаНаОбъект.Склад;
        
        ОтветственныйИДолжность = ПолучитьОтветственногоИДолжность(Склад);
        
        Ответственный = ОтветственныйИДолжность.Получить(0).ФизическоеЛицо1;
        
        Организация = СсылкаНаОбъект.Организация;
        
        ДолжностьОтветственного =  ОтветственныйИДолжность.Получить(0).Должность;
        
        ГенДир = ПолучитьГенДир(Организация);

        ОбластьПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока1");
        ОбластьШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента2");
        ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы2");
        ОбластьСтрокаДанных = Макет.ПолучитьОбласть("СтрокаДанных2");
        ОбластьИТОГО = Макет.ПолучитьОбласть("Итого2");
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал2");
        
        ОбластьШапкаДокумента.Параметры.ДатаДокумента = СсылкаНаОбъект.Дата;
        ОбластьШапкаДокумента.Параметры.Склад = СсылкаНаОбъект.Склад;
        
        ТабДок.Вывести(ОбластьШапкаДокумента);
        ТабДок.Вывести(ОбластьПустаяСтрока);
        ТабДок.Вывести(ОбластьШапкаТаблицы);
        
        ИтогоСумма = 0;
        //Вывод в ТЧ
        Для Каждого Строка Из ДанныеДляЗаполнения Цикл
        ЗаполнитьЗначенияСвойств(ОбластьСтрокаДанных.Параметры,Строка);
        ИтогоСумма = ИтогоСумма + Строка.Сумма;
        ТабДок.Вывести(ОбластьСтрокаДанных);
        КонецЦикла;
        
        
        ОбластьИТОГО.Параметры.ИтогоСумма = ИтогоСумма;
        
        ТабДок.Вывести(ОбластьИТОГО);
        
        ОбластьПодвал.Параметры.ФИОДиректор = ГенДир;
        ОбластьПодвал.Параметры.ДолжностьОтветственногоЛица = ДолжностьОтветственного;
        ОбластьПодвал.Параметры.ФИООтветственногоЛица = Ответственный;
        
        ТабДок.Вывести(ОбластьПустаяСтрока);
        ТабДок.Вывести(ОбластьПодвал);
    КонецЕсли;
Возврат ТабДок;
КонецФункции


Мне нужно, чтобы показывалась форма этой обработки после того как пользователь в документе "ТребованияНакладная" нажимает на кнопку "Печати". Когда форма открывается ей нужно передать "СсылкаНаОбъект" и далее с формы обработки нажимаем кнопку "Печать" - формируем печатный документ и выводим его.
kosalex
Решил вопрос, позже отпишу код
le0nard_
Цитата(kosalex @ 23.04.15, 9:57) необходимо зарегистрироваться для просмотра ссылки
Решил вопрос, позже отпишу код


Спасибо что рассказали ответ
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.