• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы Guest
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

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

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

Вопрос в чем... общая форма открывается,
а вот как из общей формы вывести макет документа не знаю... да и так чтоб еще и подцепил дополнительные данные из это формы. Подскажите пожалуйста =)
А по чему бы не попробовать в сами ячейки макета, там где надо чтоб значение подставлялось, написать процедуру или ссылку на необходимый объект.
 
Код:
Функция Печать(.....)
<...>

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

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

МодульФормы

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

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

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

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


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

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

Это не 7.7 и в макет вызов процедуры/функции не впишешь.
 
Код:
Функция Печать(.....)
<...>

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

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

МодульФормы

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

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

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

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


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

Добавлено:

Это не 7.7 и в макет вызов процедуры/функции не впишешь.


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

Это в процедуре печати макета документа... ?
 
Да. Вызов делается в процедуре печати.

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

А это пишется в форме которую открывали:
Код:
Закрыть(ТекстОбработки);

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

Добавлено:
на форме есть переменные, и им уже присвоенно значение. соотвественно в макете есть тоже переменные (параметры). вот и нужно сделать переприсвоение типа:
макет.параметр.названиепараметра = форма.реквизит

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

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

Код:
Функция Печать() Экспорт
<...>
КонецФункции

Модуль формы:

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

Печать();

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


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

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

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

Модуль формы:

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

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

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

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

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

А это пишется в форме которую открывали:
Код:
Закрыть(ТекстОбработки);

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

Добавлено:

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

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

Код:
Функция Печать() Экспорт
<...>
КонецФункции

Модуль формы:

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

Печать();

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


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

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

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

Модуль формы:

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

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

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

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


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

Можно использовать не структуру, а таблицу значений, массив, соответствие, все что угодно.
 
"Не рекомендуется" не значит запрещено.
В конкретном данном случае - да. А в общих случаях (особенно, при общении с государственными органами) именно так и следует расценивать "не рекомендуется".
 
В конкретном данном случае - да. А в общих случаях (особенно, при общении с государственными органами) именно так и следует расценивать "не рекомендуется".

В данном случае происходит получение формы из модуля объекта, а не передача формы в модуль объекта как параметра. Первое - вполне нормально и допустимо, второе - не рекомендуется делать.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab