8.х Отчет на основе запроса

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Hexogon, 25 дек 2010.

  1. TopicStarter Overlay
    Hexogon
    Offline

    Hexogon

    Регистрация:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Прошу совета.
    Задача. Сделать отчет с возможностью настройки разнообразного списка полей.
    Вот как я делаю.
    Взял стандартный отчет "ВаловаПрибыль". Скопировал его и пытаюсь подставить свой источник данных.
    1. Через ADODB получаю Таблицу Значений(ТЗ) из базы данных другого приложения.
    Код:
    ЗапросСтр = "Select RD.ID as ЗапускИД
    |,RD.Number as НомерЗапуска
    |,RD.DOCUMENT_DATE as ДатаЗапуска
    |,UD.Number as НомерУД
    |,UD.TYPE_ID as ТипУД
    |,Nom.NOTE As НоменклатураОбозначение
    |,Nom.NAME As НоменклатураНаименование
    |,Spec.QUANTITY as Количество
    |,Spec.MEASURE_ID 
    |,IsNull(IsNull(Ser.NUMBER,Part.Number),'---') as Учет
    |From ..
    |...	" 	
    СоединениеADODB = Обработки.СоединениеADO.Создать();
    СоединениеADODB.Открыть();
    ТЗ = СоединениеADODB.ВыполнитьЗапросВТЗ(ЗапросСтр,,);
    СоединениеADODB.Закрыть();
    
    2. Создаю Запрос с использованием полученной Таблицы Значений. Заполняю ВременнуюТаблицуЗначений.
    Код:
    	Запрос=Новый Запрос;
    МенеджерВременныхТаблиц=новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц=МенеджерВременныхТаблиц;
    ...
    Запрос.Текст="ВЫБРАТЬ  " + ПоляДляВыбора +" 
    |ПОМЕСТИТЬ ВременнаяТаблица
    |ИЗ
    |	&Источник КАК ТаблицаЗначений;
    |ВЫБРАТЬ *
    |ИЗ ВременнаяТаблица";
    Запрос.Параметры.Вставить("Источник",ТЗ);
    
    Рез=Запрос.<span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/выполнить')">Выполнить()  ;</span>
    
    3. Создаю еще один запрос, где через Левое Соединение к ВременнойТаблицеЗначений подтягиваю самописный регистр сведений. Одно из полей(входящее в Ресурсы) этого РегистраСведений имеет тип ДокументСсылка.
    Код:
    Текст="ВЫБРАТЬ
    |	*
    |ИЗ
    |	ВременнаяТаблица КАК ТаблицаЗначений
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СамописныйРегистр КАК Документы
    |		ПО ТаблицаЗначений.ЗапускИД = Документы.Идентификатор";
    
    ОбъедененныйЗапрос.Текст=Текст;					 
    Рез2=ОбъедененныйЗапрос.<span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/выполнить')">Выполнить()  ;</span>
    
    4. Результат последнего запроса назначаю ИсточникомДанных ПостроителюОтчетов.
    Код:
    УниверсальныйОтчет.ПостроительОтчета.ИсточникДанных=Новый ОписаниеИсточникаДанных(Рез2);
    
    Отчет нормально формируется.
    Но в списке возможных полей можно выбрать только те поля, которые перечислены в запросе. А хотелось бы, что бы можно было выбрать поля связанные с полем типа ДокументСсылка
  2. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Вы хотите из SQL брать данные?
  3. TopicStarter Overlay
    Hexogon
    Offline

    Hexogon

    Регистрация:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Да. Таблица Значений (в коде это ТЗ) заполняется из SQL
  4. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    На сколько я помню в SQL там ссылок нет там идут связи попробуйте к связям привязыватся
  5. TopicStarter Overlay
    Hexogon
    Offline

    Hexogon

    Регистрация:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Из базы SqlServer выбираются данные в пункте 1. А в пункте 3 эти данные связываются с РегистромСведений, который содержит поле типа ДокументСсылка. Вот по этому полю, перед формированием отчета, я хочу в настройке подтянуть дочерние поля. Но по умолчанию, 1С этого не делает.
    В настройке можно выбрать только те поля, которые выбирает запрос.
    У меня вопрос. Нельзя ли как то подтягивать поля невключенные в запрос.

    Вот если делать отчет и в качестве источника данных в построитель отчета передать текст запроса, то при запуске отчета список его полей можно настроить как угодно.

    У меня же ИсточникомДанных не может являться текст. Так как часть данных я выбираю со стороны, через ADODB.
  6. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    А поля то откуда должны подтягиваться из (регистров?, документов?, справочников?) или из SQL вы почетче вопрос задайте а то не совсем понятно и приведите пример что должно получится
  7. TopicStarter Overlay
    Hexogon
    Offline

    Hexogon

    Регистрация:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Поля я хочу вытягивать из объектов 1С. Ну пусть из РегистраСведений.
    Вот как обычно выглядит выбор полей в стандартном отчете
    Посмотреть вложение 6207
    А вот как сейчас в моем. А хотелось бы как в стандартном
    Посмотреть вложение 6208
    В моем отчете нельзя выбрать поля, кроме тех, которые выбирает запрос.

    Вложения:

  8. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Посмотрите функцию Редактировать настройки типового отчета эти настройки там прописываются
Похожие темы
  1. Muggsy
    Ответов:
    3
    Просмотров:
    1.437
Загрузка...

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