Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 19:47

как вывести данные в отчет

Автор saha85, 03 фев 2018, 18:50

0 Пользователей и 1 гость просматривают эту тему.

saha85

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

&НаКлиенте
Процедура Сформировать(Команда)
СформироватьОтчет();
КонецПроцедуры

&НаСервере
Процедура СформироватьОтчет()

ТабДок.Очистить();
ТабДок.НачатьАвтогруппировкуСтрок();
Макет = Отчеты.Отчет2.ПолучитьМакет("Макет");//где находится макет (Потом исправить на нормальное имя)

//Получение данных для вывода в отчет
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.Текст = "ВЫБРАТЬ
| ЖурналУчётнаяКартаРеанимационногоБольного.Номер КАК Номер,
| ЖурналУчётнаяКартаРеанимационногоБольного.МО КАК МО,
| ЖурналУчётнаяКартаРеанимационногоБольного.Пациент КАК Пациент,
| ЖурналУчётнаяКартаРеанимационногоБольного.Пол КАК Пол,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаРождения КАК ДатаРождения,
| ЖурналУчётнаяКартаРеанимационногоБольного.Возраст КАК Возраст,
| ЖурналУчётнаяКартаРеанимационногоБольного.Срок КАК Срок,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПоступленияВМО КАК ДатаПоступленияВМО,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПеревода КАК ДатаПеревода,
| ЖурналУчётнаяКартаРеанимационногоБольного.ВремяПеревода КАК ВремяПеревода,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПереводаИВЛ КАК ДатаПереводаИВЛ,
| ЖурналУчётнаяКартаРеанимационногоБольного.ВремяПереводаИВЛ КАК ВремяПереводаИВЛ,
| ЖурналУчётнаяКартаРеанимационногоБольного.ПричинаМониторинг КАК ПричинаМониторинг,
| ЖурналУчётнаяКартаРеанимационногоБольного.КонсультацииКпециалистовТЦМК КАК КонсультацииКпециалистовТЦМК,
| ЖурналУчётнаяКартаРеанимационногоБольного.КонсультацииДругогоМЗСО КАК КонсультацииДругогоМЗСО,
| ЖурналУчётнаяКартаРеанимационногоБольного.Результат КАК Результат,
| ЖурналУчётнаяКартаРеанимационногоБольного.ПереданНаМониторинг КАК ПереданНаМониторинг,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаОп КАК ДатаОп,
| ЖурналУчётнаяКартаРеанимационногоБольного.ОбъемОпераВмеша КАК ОбъемОпераВмеша,
| ЖурналУчётнаяКартаРеанимационногоБольного.ОсложненияОпер КАК ОсложненияОпер,
| ЖурналУчётнаяКартаРеанимационногоБольного.Препората КАК Препората,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаОчонКонсулДети КАК ДатаОчонКонсулДети,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПерегосДет КАК ДатаПерегосДет,
| ЖурналУчётнаяКартаРеанимационногоБольного.КудаПерегоспетД КАК КудаПерегоспетД,
| ЖурналУчётнаяКартаРеанимационногоБольного.ПричинаСнятия КАК ПричинаСнятия,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаСнятия КАК ДатаСнятия,
| ЖурналУчётнаяКартаРеанимационногоБольного.Диагноз КАК Диагноз,
| ЖурналУчётнаяКартаРеанимационногоБольного.Мес КАК Мес,
| ЖурналУчётнаяКартаРеанимационногоБольного.Дней КАК Дней,
| ЖурналУчётнаяКартаРеанимационногоБольного.Время КАК Время,
| ЖурналУчётнаяКартаРеанимационногоБольного.Препорат КАК Препорат,
| ЖурналУчётнаяКартаРеанимационногоБольного.ВремяПоступления КАК ВремяПоступления
|ИЗ
| ЖурналДокументов.ЖурналУчётнаяКартаРеанимационногоБольного КАК ЖурналУчётнаяКартаРеанимационногоБольного
|ИТОГИ ПО
| ОБЩИЕ,
| Номер";
ПостроительЗапроса.Параметры.Вставить("НаДату", ДатаНачала);//ДФ=dd.MM.yyyy
ПостроительЗапроса.Параметры.Вставить("НаДату", ДатаКонец); //ДФ=dd.MM.yyyy
//Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Дата));
//Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Дата));
ПостроительЗапроса.ЗаполнитьНастройки();
ПостроительЗапроса.Выполнить();
Результат = ПостроительЗапроса.Результат;


Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.ДатаНачала = ДатаНачала;//ДФ=dd.MM.yyyy
Область.Параметры.ДатаКонец = ДатаКонец;//ДФ=dd.MM.yyyy
ТабДок.Вывести(Область);

ИтогиОбщие = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Область = Макет.ПолучитьОбласть("Профиль");
ТабДок.Вывести(Область);

Область = Макет.ПолучитьОбласть("Пациент");
ТабДок.Вывести(Область);

Область = Макет.ПолучитьОбласть("ИтогПодвал");
ТабДок.Вывести(Область);

Область = Макет.ПолучитьОбласть("Вся");
ТабДок.Вывести(Область);


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


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

LexaK

а зачем вы используете
ПостроительЗапроса = Новый ПостроительЗапроса;  - ?
обычно для получения данных использую просто запрос
Запрос = Новый Запрос;

еще в макете проверьте в ячейке с именем параметра Заполнение должно быть Параметр.
и важно при автоматическом заполнении параметров что бы имена параметров совпадали.
так же используйте отладчик, при формировании отчета, что бы видеть что вы действительно получили какие-то данные
(ведь запрос ни каких данных не вернуть)

и для изучения механизма построения отчетов возьмите любые простые демо примеры, изучите их, и потом делайте все по примеру.
если помогло нажмите: Спасибо!

saha85

Цитата: LexaK от 03 фев 2018, 21:22
ПостроительЗапроса = Новый ПостроительЗапроса;  - ?
как показали препод
Я смотрел много всяких примеров я понять не могу как вывести запрос в макет
А имено

Пока Выборка.Следующий() Цикл           
     Область = Макет.ПолучитьОбласть("Строка");           
     Область.Параметры.МО = Выборка.МО;//1ответ от запроса
     Область.Параметры.Пациент = Выборка.Пациент;//2ответ от запроса           
     ТабДок.Вывести(Область);                 
КонецЦикла

Ну ведь есть процедура которая все их ложит по параметрам и не надо прописывать каждую
Для вас это просто как чихнуть, а для меня тоже просто 5 минут и веб+FTP+DNS-сервера поднимать если надо поделись этого не жалко.
yum -y install epel-release
yum update
reboot
yum -y install mc
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --reload
yum -y install net-tools
yum -y install ftp
yum -y install vsftpd
rm -rf /etc/vsftpd/*
mcedit /etc/vsftpd/vsftpd.conf
_____________________________ вставить в vsftpd.conf ___________________________________________________
# Запуск сервера в режиме службы
listen=YES
# Работа в фоновом режиме
background=YES
# Имя pam сервиса для vsftpd
pam_service_name=vsftpd
# Входящие соединения контроллируются через tcp_wrappers
tcp_wrappers=YES
# Запрещает подключение анонимных пользователей
anonymous_enable=NO
# Каталог, куда будут попадать анонимные пользователи, если они разрешены
#anon_root=/ftp
# Разрешает вход для локальных пользователей
local_enable=YES
# Разрешены команды на запись и изменение
write_enable=YES
# Указывает исходящим с сервера соединениям использовать 20-й порт
connect_from_port_20=YES
# Логирование всех действий на сервере
xferlog_enable=YES
# Путь к лог-файлу
xferlog_file=/var/log/vsftpd.log
# Включение специальных ftp команд, некоторые клиенты без этого могут зависать
async_abor_enable=YES
# Локальные пользователи по-умолчанию не могут выходить за пределы своего домашнего каталога
chroot_local_user=YES
# Разрешить список пользователей, которые могут выходить за пределы домашнего каталога
chroot_list_enable=YES
# Список пользователей, которым разрешен выход из домашнего каталога
chroot_list_file=/etc/vsftpd/chroot_list
# Разрешить запись в корень chroot каталога пользователя
allow_writeable_chroot=YES
# Контроль доступа к серверу через отдельный список пользователей
userlist_enable=YES
# Файл со списками разрешенных к подключению пользователей
userlist_file=/etc/vsftpd/user_list
# Пользователь будет отклонен, если его нет в user_list
userlist_deny=NO
# Директория с настройками пользователей
user_config_dir=/etc/vsftpd/users
# Показывать файлы, начинающиеся с точки
force_dot_files=YES
# Маска прав доступа к создаваемым файлам
local_umask=022
# Порты для пассивного режима работы
pasv_min_port=xxxxx #прописать свои порты
pasv_max_port=xxxxx #прописать свои порты
#включить сертификат
#ssl_enable=YES
#allow_anon_ssl=NO
#force_local_data_ssl=NO
#force_local_logins_ssl=NO
#ssl_tlsv1=YES
#ssl_sslv2=NO
#ssl_sslv3=NO
#rsa_cert_file=/etc/vsftpd/vsftpd.pem
__________________________________________________________________________________________
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --permanent --add-port=xxxxx-xxxxx/tcp #прописать свои порты
firewall-cmd —reload
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
touch /etc/vsftpd/chroot_list
echo 'root' >> /etc/vsftpd/chroot_list
touch /etc/vsftpd/user_list
echo 'root' >> /etc/vsftpd/user_list
touch /var/log/vsftpd.log && chmod 600 /var/log/vsftpd.log
systemctl enable vsftpd
Устанавливаем MySQL/MariaDB
yum install wget
yum -y install mariadb-server mariadb
systemctl enable mariadb
mysqladmin -u root password 'Придуманный_пароль'
mysql_secure_installation
-------------------------------------------------------------------------
Chang the root password=no
а состальным соглашаемся
-------------------------------------------------------------------------
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
yum -y install httpd mod_ssl
systemctl enable httpd.service
mcedit /etc/httpd/conf.d/welcome.conf
------------------------------ Заменяем в welcome.conf--------------------
# This configuration file enables the default "Welcome" page if there
# is no default index page present for the root URL. To disable the
# Welcome page, comment out all the lines below.
#
# NOTE: if this file is removed, it will be restored on upgrades.
#
#<LocationMatch "^/+$">
# Options -Indexes
# ErrorDocument 403 /.noindex.html
#</LocationMatch>
#<Directory /usr/share/httpd/noindex>
# AllowOverride None
# Require all granted
#</Directory>
#Alias /.noindex.html /usr/share/httpd/noindex/index.html
#Alias /noindex/css/bootstrap.min.css /usr/share/httpd/noindex/css/bootstrap.min.css
#Alias /noindex/css/open-sans.css /usr/share/httpd/noindex/css/open-sans.css
#Alias /images/apache_pb.gif /usr/share/httpd/noindex/images/apache_pb.gif
#Alias /images/poweredby.png /usr/share/httpd/noindex/images/poweredby.png
--------------------------------------------------------------------------------------
mkdir -p /web/папка вашего сайта
mkdir -p /web/папка вашего сайта/www
mkdir -p /web/папка вашего сайта/logs
chmod -R 777 /web/папка вашего сайта/www
touch /etc/httpd/conf.d/имя вашего сайта.conf
mcedit /etc/httpd/conf.d/имя вашего сайта.conf
____________________________ Вставляем в tcmkso.conf___________________________________
<VirtualHost *:80>
ServerName xxx.xxx.xxx.xxx
ServerAlias www.xxx.xxxx.xxx.xxx
DocumentRoot /web/папка вашего сайта/www
<Directory /web/папка вашего сайта/www>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /web/папка вашего сайта/logs/error.log
CustomLog /web/папка вашего сайта/logs/access.log common
</VirtualHost>
_________________________________________________________________________________
setsebool -P httpd_can_network_connect on
semanage fcontext -a -t httpd_sys_rw_content_t '/web/tcmkso/logs'
restorecon -v '/web/папка вашего сайта/logs'
Установка PHP
yum -y install php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc
php-mbstring php-snmp php-soap curl curl-devel php-mcrypt php-pecl-apc
mcedit /etc/php.ini
-----------------------------Вставляем в php.ini -----------------------------------
Вставить самом конце
realpath_cache_size = 1024k
----------------------------------------------------=-------------------------------
Установка phpmyadmin
yum install -y phpmyadmin
cp /etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.orig
mcedit /etc/httpd/conf.d/phpMyAdmin.conf
--------------------------------- Заменяем в phpMyAdmin.conf------------------------
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
Require all granted
</Directory>
<Directory /usr/share/phpMyAdmin/setup/>
Require all granted
</Directory>
<Directory /usr/share/phpMyAdmin/libraries/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
<Directory /usr/share/phpMyAdmin/setup/lib/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
<Directory /usr/share/phpMyAdmin/setup/frames/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
-----------------------------------------------------------------------------------------
reboot
------------------------------Это так если надо запустить--------------------------------
systemctl start vsftpd
systemctl start mariadb
systemctl start httpd.service
-----------------------------------------------------------------------------------------
Вот и все Веб-сервер установлен и настроен

LexaK

вполне работоспособный код

Пока Выборка.Следующий() Цикл           
     Область = Макет.ПолучитьОбласть("Строка");           
     Область.Параметры.МО = Выборка.МО;//1ответ от запроса
     Область.Параметры.Пациент = Выборка.Пациент;//2ответ от запроса           
     ТабДок.Вывести(Область);                 
КонецЦикла


можно немного оптимизировать

Область = Макет.ПолучитьОбласть("Строка"); //вынесено за цикл, не надо 1000 раз получать одну и ту-же область           
Пока Выборка.Следующий() Цикл           
     Область.Параметры.Заполнить(Выборка);//одна команда по заполнению параметров, имена параметров должны совпадать
     ТабДок.Вывести(Область);                 
КонецЦикла


если ни чего не выводится, еще раз проверьте свойство ячейки макета с параметром, Заполнение должно быть Параметр.
если помогло нажмите: Спасибо!

saha85

Цитата: LexaK от 04 фев 2018, 10:25
Вставил код все параметры я брал из запроса вот что выдал

Вот весь код

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Дата = ТекущаяДата();
СформироватьОтчет();
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда)
СформироватьОтчет();
КонецПроцедуры

&НаСервере
Процедура СформироватьОтчет()

/////////////////////////////////////////Роботает//////////////////////////////////
ТабДок.Очистить();
ТабДок.НачатьАвтогруппировкуСтрок();
Макет = Отчеты.Тест.ПолучитьМакет("Макет");

//Получение данных для вывода в отчет
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.Текст = "ВЫБРАТЬ
| ЖурналУчётнаяКартаРеанимационногоБольного.Номер КАК Номер,
| ЖурналУчётнаяКартаРеанимационногоБольного.МО КАК МО,
| ЖурналУчётнаяКартаРеанимационногоБольного.Пациент КАК Пациент,
| ЖурналУчётнаяКартаРеанимационногоБольного.Пол КАК Пол,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаРождения КАК ДатаРождения,
| ЖурналУчётнаяКартаРеанимационногоБольного.Возраст КАК Возраст,
| ЖурналУчётнаяКартаРеанимационногоБольного.Срок КАК Срок,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПоступленияВМО КАК ДатаПоступленияВМО,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПеревода КАК ДатаПеревода,
| ЖурналУчётнаяКартаРеанимационногоБольного.ВремяПеревода КАК ВремяПеревода,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПереводаИВЛ КАК ДатаПереводаИВЛ,
| ЖурналУчётнаяКартаРеанимационногоБольного.ВремяПереводаИВЛ КАК ВремяПереводаИВЛ,
| ЖурналУчётнаяКартаРеанимационногоБольного.ПричинаМониторинг КАК ПричинаМониторинг,
| ЖурналУчётнаяКартаРеанимационногоБольного.КонсультацииКпециалистовТЦМК КАК КонсультацииКпециалистовТЦМК,
| ЖурналУчётнаяКартаРеанимационногоБольного.КонсультацииДругогоМЗСО КАК КонсультацииДругогоМЗСО,
| ЖурналУчётнаяКартаРеанимационногоБольного.Результат КАК Результат,
| ЖурналУчётнаяКартаРеанимационногоБольного.ПереданНаМониторинг КАК ПереданНаМониторинг,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаОп КАК ДатаОп,
| ЖурналУчётнаяКартаРеанимационногоБольного.ОбъемОпераВмеша КАК ОбъемОпераВмеша,
| ЖурналУчётнаяКартаРеанимационногоБольного.ОсложненияОпер КАК ОсложненияОпер,
| ЖурналУчётнаяКартаРеанимационногоБольного.Препората КАК Препората,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаОчонКонсулДети КАК ДатаОчонКонсулДети,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаПерегосДет КАК ДатаПерегосДет,
| ЖурналУчётнаяКартаРеанимационногоБольного.КудаПерегоспетД КАК КудаПерегоспетД,
| ЖурналУчётнаяКартаРеанимационногоБольного.ПричинаСнятия КАК ПричинаСнятия,
| ЖурналУчётнаяКартаРеанимационногоБольного.ДатаСнятия КАК ДатаСнятия,
| ЖурналУчётнаяКартаРеанимационногоБольного.Диагноз КАК Диагноз,
| ЖурналУчётнаяКартаРеанимационногоБольного.Мес КАК Мес,
| ЖурналУчётнаяКартаРеанимационногоБольного.Дней КАК Дней,
| ЖурналУчётнаяКартаРеанимационногоБольного.Время КАК Время,
| ЖурналУчётнаяКартаРеанимационногоБольного.Препорат КАК Препорат,
| ЖурналУчётнаяКартаРеанимационногоБольного.ВремяПоступления КАК ВремяПоступления
|ИЗ
| ЖурналДокументов.ЖурналУчётнаяКартаРеанимационногоБольного КАК ЖурналУчётнаяКартаРеанимационногоБольного
|ИТОГИ ПО
| ОБЩИЕ,
| Номер";
ПостроительЗапроса.Параметры.Вставить("НаДату", Дата);
ПостроительЗапроса.ЗаполнитьНастройки();
ПостроительЗапроса.Выполнить();
Результат = ПостроительЗапроса.Результат;


Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.Дата = Дата;
ТабДок.Вывести(Область);

ИтогиОбщие = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Область = Макет.ПолучитьОбласть("ШапкаТЧ");
ТабДок.Вывести(Область);

Область = Макет.ПолучитьОбласть("СтрокаТЧ");
ТабДок.Вывести(Область);

//Область = Макет.ПолучитьОбласть("СтрокаТЧПациенты");
//ТабДок.Вывести(Область);

Область = Макет.ПолучитьОбласть("Подвал");
ТабДок.Вывести(Область);


//Получим и заполним общий итог
ИтогиОбщие.Следующий();
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, ИтогиОбщие);

Область = Макет.ПолучитьОбласть("СтрокаТЧПациенты");           
Пока Выборка.Следующий() Цикл           
     Область.Параметры.Заполнить(Выборка);//одна команда по заполнению параметров, имена параметров должны совпадать
     ТабДок.Вывести(Область);                 
КонецЦикла

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


Добавлено: 04 фев 2018, 17:04


Вот сам отчет забыл положить сразуже
Добавлено: 04 фев 2018, 17:47


УРАААААААААААААААААААААААААААААААА РаботаеееееееееТ
Забыл прописать

      Выборка = Запрос.Выполнить().Выбрать();           
      ТабДок.Очистить(); 

Только не понимаю почему нет итога
{Отчет.Тест.Форма.ФормаОтчета.Форма(73,15)}: Переменная не определена (Результат)
ИтогиОбщие = <<?>>Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); (Проверка: Сервер)

в макете стоит Параметр <Номер>

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск