Общаят форма и макет документа

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 26 май 2010.

Статус темы:
Закрыта.
  1. Гость

    Здравствуйте...
    Типовая конфигурация Бухгалтерия 8
    Создан дополнительный макет АктПриемаПередачиПрав в документе РеализацияТоваровУслуг,
    сейчас необходимо чтобы при выборе этой печатной формы, открывалась сначала форма из Общих форм, на которой будут дополнительные данные для этой печатной формы, которых нет в этом документе. И после введения данных, уже выводилась печатная форма с всеми данными... то есть данными из Макета и из Общей формы.

    Вопрос в чем... общая форма открывается,
    а вот как из общей формы вывести макет документа не знаю... да и так чтоб еще и подцепил дополнительные данные из это формы. Подскажите пожалуйста =)
     
  2. Roman

    Roman Гость

    А по чему бы не попробовать в сами ячейки макета, там где надо чтоб значение подставлялось, написать процедуру или ссылку на необходимый объект.
     
  3. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Код ( (Unknown Language)):
    Функция Печать(.....)
    <...>

    ОбщФорма = ПолучитьОбщуюФорму(ИмяФормы);
    ДопПараметры = ОбщФорма.ОткрытьМодально();

    <...>
    КонецФункции

    МодульФормы

    Процедура ПриЗакрытии()

    ДопПараметры = Новый Структура();

    ДопПараметры.Вставить(ИмяРеквизита, ЗначениеРеквизита);
    ...

    Закрыть(ДопПараметры);
    КонецПроцедуры

    В общей форме заполнение структуры и передачи его обратно в печать можно использовать цикл, тогда код немного изменится. Это как вариант, дальше от религии зависит.

    Добавлено:
    Это не 7.7 и в макет вызов процедуры/функции не впишешь.
     
  4. Гость


    А можно еще чуть разжевать... для особо одаренных) меня то есть. С открытием всё замечательно выходит.Спасибо.
    А вот хотелось бы чуть по точнее о том как дополнительные данные из общей формы передать в макет....
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    на форме есть переменные, и им уже присвоенно значение. соотвественно в макете есть тоже переменные (параметры). вот и нужно сделать переприсвоение типа:
    макет.параметр.названиепараметра = форма.реквизит
     
  6. Гость

    Это в процедуре печати макета документа... ?
     
  7. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Да. Вызов делается в процедуре печати.

    Добавлено: Я делал так (обработчик не "ПриЗакрытии", просто кнопка на форме):

    А это пишется в форме которую открывали:
    Код ( (Unknown Language)):
           

    Закрыть(ТекстОбработки);
    Добавлено: А ТекстОбработки - просто строка, которая возвращалась в переменную открывающую модальную форму "ДопПараметры = Форма.ОткрытьМодально();"

    Добавлено:
    Если вызов печати из модуля формы, то у вас будет возможность получить значения реквизитов формы. Если же печать из модуля объекта, то варианта 2:
    1) никак, там доступны только реквизиты объекта - без вызова печати из модуля формы и передачи параметра "ЭтаФорма";

    Модуль объекта:

    Код ( (Unknown Language)):
    Функция Печать() Экспорт
    <...>
    КонецФункции
    Модуль формы:

    Код ( (Unknown Language)):
    Процедура КнопкаПечатьНажатие(Элемент)

    Печать();

    КонецПроцедуры;

    2) В функцию печати передать параметр "ЭтаФорма" и тогда реквизиты формы будут доступны в модуле объекта (не рекомендуется делать!)

    Модуль объекта:

    Код ( (Unknown Language)):
    Функция Печать(Форма) Экспорт
    <...>
    КонецФункции
    Модуль формы:

    Код ( (Unknown Language)):
    Процедура КнопкаПечатьНажатие(Элемент)

    Печать(ЭтаФорма);

    КонецПроцедуры;
    P.S. не рекомендуется делать потому, что передача формы как параметра - тяжеловато отражается на производительности системы.
    P.P.S. Количество параметров функции "Печать()" взял равное 0 для наглядности примера.
     
  8. Гость


    То есть? Если процедура печать из модуля объекта... то два варианта: никак и не рекомендуется...
    Получается надо делать процедуру печать из общей формы, в которой дполнительные данные?
     
  9. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    "Не рекомендуется" не значит запрещено. Общую форму можно вызывать откуда угодно, в вашем случае из модуля объекта (вы же ее вызываете, а не передаете). В функции печати обращаетесь к общей форме, в которой все необходимые вам реквизиты есть. Заполняете структуру, как я предлагал, можно в цикле обойти все реквизиты, можно по именам заполнить - не суть важно. потом закрываете форму программно "Закрыть(ДопПараметры)". При закрытии формы ваши ДопПараметры передадутся обратно в фунцию печати (при условии, что вы открывали форму модально ("ДопПараметры = ОбщаяФорма.ОткрытьМодально()"); и работаете уже с переменной ДопПараметры в функции печати, как со структурой.

    Можно использовать не структуру, а таблицу значений, массив, соответствие, все что угодно.
     
  10. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    В конкретном данном случае - да. А в общих случаях (особенно, при общении с государственными органами) именно так и следует расценивать "не рекомендуется".
     
  11. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    В данном случае происходит получение формы из модуля объекта, а не передача формы в модуль объекта как параметра. Первое - вполне нормально и допустимо, второе - не рекомендуется делать.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей