Имя: Пароль:
1C
1C 7.7
v7: Параметр отчета в другой отчет
, ,
0 Юра22
 
18.10.13
10:32
ЗиК!
Отчет среднесписочная численность.
В нем рассчитывается среднесписочная численность работников.
Я создал другой отчет самописный, таблицу в нем - где должно быть данное значение (среднесписочная численность).
Вопрос:
Чтобы мне код не "выдирать" из того отчета- как мне в коде нового отчета получить среднесписочную численность из того отчета???
Какие использовать методы, функции???
ПолучитьФорму(); ОткрытьФорму() и др....
Как это вообще реализовать?
1 2S
 
18.10.13
10:34
а какая разница? на быстродействие это не влияет, код на самом деле тащить небольшой.
2 2S
 
18.10.13
10:35
перенести в свой отчет
3 Юра22
 
18.10.13
10:41
Код там очень большой!
Как передать параметр???
4 Юра22
 
18.10.13
10:42
Заставить в коде нового отчета выполнять тот отчет и вытягивать из него....??
Или по -другому?

Хотя бы алгоритм действий подскажите!
5 Voronve
 
18.10.13
10:43
Дерни код. Так тебе корежить 1 отчет. иначе - 2
6 Chum
 
18.10.13
10:48
Наверное, курить процедуру ПриОткрытии()

Например:
Нужно из отчета1 вызвать отчет2, при этом в отчете2 что-то обработать и передать в отчет1.

Реализация:
В Отчет1 добавить вызов отчета2 через ОткрытьФорму(л_Контекст), причем, наверное лучше будет ОткрытьФормуМодально, тогда в следующей строке л_Контекст будет содержать переданное из отчет2 значение.

В отчет2 в процедуре ПриОткрытии() анализировать Форма.Параметр

Каким-то образом обработать данные, результат присвоить Форма.Параметр.

//в отчет2
Процедура ПриОткрытии()
Если ПУстоеЗначение(Форма.Параметр) = 0 Тогда
Форма.Параметр = ОбработатьДанныеПолучитьРезультат();
СтатусВозврата() = 0;
Возврат;
КонецЕсли;


//в отчет1

л_Список = СоздатьОбъект("СписокЗначений");
л_Список.ДобавитьЗначение(ывфыв1, "ваываыв1");
л_Список.ДобавитьЗначение(ывфыв2, "ваываыв2");
л_Список.ДобавитьЗначение(ывфыв3, "ваываыв3");

ОткрытьФормуМодально(ПутьКОтчету2, л_Список);
//Далее л_Список - будет содержать возвращенное значение или объект из отчет2
7 alexiv79
 
18.10.13
11:02
(0) Лучше все-таки выдерни код оттуда- конфа не изменится, проще для обновления.Но есть проблемы - при изменении типового отчета придется видимо переписывать и свой - как вариант скопировать типовой отчет и в его немного допилить-например передавать тз в параметр и возвращать вычисленные данные и т.п.  и вставлять в свой самописный отчет
8 alexiv79
 
18.10.13
11:02
+(7) Типовой отчет лучше не менять
9 Юра22
 
18.10.13
11:11
Так вот и в том то  и дело , что будет внешний отчет ).
А конфа у нас и так изменена.

Спасибо за ответы. На этом форуме хоть отвечают на вопросы- не то что на - devtrainingforum.
10 alexiv79
 
18.10.13
11:13
(9) Ну даже внешний-вообще делали через СохранитьЗначение / ВосстановитьЗначение. обработка для расчетов процентов по кредитам - использовалась в отчетах. Из нужного отчета вызывалась, там вычислялись результаты, потом сохраняли Тз методом СОхранитьЗначение. Потом в начальном отчете восстанавливали значение в ТЗ
11 Юра22
 
18.10.13
11:13
Кстати, наткнулся в глобальном модуле на процедуру:
глПрочитатьПараметрыОтчетов(НомерСтроки = 0) Экспорт

Еще ее не успел проанализировать, сразу решил написать сообщение ). Сейчас посмотрю.
12 alexiv79
 
18.10.13
11:14
+(10)  Вроде говорили люди что это извращение, но ничего лучше тогда не придумали
13 alexiv79
 
18.10.13
11:15
+(12) как вариант делали скрытую ТЗ на форме обработки, оттуда потом данные вытягивали
14 Юра22
 
18.10.13
11:16
alexiv79, твой ответ близок к истине!
Кажется это я мельком и встречал где-то в коде.
15 alexiv79
 
18.10.13
11:20
(14) Не Алтайский край? г. Барнаул?
16 NikVars
 
18.10.13
11:30
(0) В копию отчета среднесписочная численность добавь свой функционал. Лишнее спрячь, свое навесь.
17 Юра22
 
18.10.13
11:47
Почему Барнаул?.
В любом случае - нет )
18 monsterZE
 
18.10.13
16:17
в сток отчет добавить выгрузку данных в файлик
в своем этот файлик подцепать и раскручивать
19 Morales
 
18.10.13
17:27
как вариант:

В отчете из которого вызываешь:
//---
спПараметров = СоздатьОбъект("СписокЗначений");
спПараметров.Установить("НачДата",   НачДата);
спПараметров.Установить("КонДата",   КонДата);
ОткрытьФорму("Отчет.НазваниеОтчета",спПараметров);

В отчете который вызвал:
//---
Процедура ПриОткрытии()
Пар = Форма.Параметр;
Если ТипЗначенияСтр(Пар) = "СписокЗначений" Тогда
  СтатусВозврата(0);
  НачДата   = Пар.Получить("НачДата");
  КонДата   = Пар.Получить("КонДата");
  Сформировать();
КонецЕсли;
КонецПроцедуры

//---
полученные результаты можно сохранить в глобальные переменные или тз
в главном отчете прочитать значения и обнулить эти глобальные переменные