Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) ТабличноеПоле, поставщик - SQL, печеть? (число прочтений - 3850 )
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
ТабличноеПоле, поставщик - SQL, печеть?
22. Сентября 2010 :: 09:11
Печать  
Может кто уже делал печать содержимого табличного поля с поставщиком - ODBCDataProvider.MSSQL?
Дело в том, что сложность в получении текста запроса, метод ПолучитьТекстЗапроса() возвращает текст без типизации, т.е. после его выполнения типизация не работает а возвращает ID, может кто уже делал подобное?

p.s. Сейчас сделал сохранением текста, которые передается в провайдер поставщика и потом отдельное выполнение этого текста с возвратом в ТаблицаЗначений и печать по таблице значений.
  
Наверх
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #1 - 24. Сентября 2010 :: 11:30
Печать  
В чем проблема: в том, что не работает типизация в ТП, или в том, что нужно напечатать таблицу с данными из ТП?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #2 - 24. Сентября 2010 :: 12:00
Печать  
В Поставщике данных реализована печать ТП.
  
Наверх
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #3 - 24. Сентября 2010 :: 12:14
Печать  
Озадачен Это как? В документации такого нет.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #4 - 24. Сентября 2010 :: 12:18
Печать  
pvase писал(а) 22. Сентября 2010 :: 09:11:
Может кто уже делал печать содержимого табличного поля с поставщиком - ODBCDataProvider.MSSQL?
Дело в том, что сложность в получении текста запроса, метод ПолучитьТекстЗапроса() возвращает текст без типизации, т.е. после его выполнения типизация не работает а возвращает ID, может кто уже делал подобное?

у меня типизация работает в ТП.
выкладывай свой пример.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #5 - 24. Сентября 2010 :: 12:44
Печать  
Электроник писал(а) 24. Сентября 2010 :: 12:14:
Озадачен Это как? В документации такого нет.

Класс есть такой ПоставщикДанных http://www.1cpp.ru/forum/YaBB.pl?num=1273512019
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #6 - 27. Сентября 2010 :: 04:31
Печать  
Насколько я понял ПоставщикДанных работает через ИндексированнаяТаблица а не через SQL-запрос. Или я ошибаюсь? Если ошибаюсь - подскажите пожалуйста в каком классе и каким методом получаем значение ПоставщикаДанных для печати.
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #7 - 27. Сентября 2010 :: 04:34
Печать  
Z1 писал(а) 24. Сентября 2010 :: 12:18:
у меня типизация работает в ТП.
выкладывай свой пример.


Делаю так:
Код
Выбрать все
	ВозвТекст = ТП.ПоставщикДанных.ПолучитьТекстЗапроса();
 


в результате получаю такой запрос:

Код
Выбрать все
select top 1
TabJ.DATE_TIME_IDDOC as DATE_TIME_IDDOC,
Tab1.IDDOC as IDDOC,
(TabJ.CLOSED&1 + TabJ.ISMARK*2) as СтатусДок,
Tab1.IDDOC as Документ,
'Счет' as ВидДок,
CONVERT(DateTime,LEFT(TabJ.DATE_TIME_IDDOC,8),112) as ДатаДок,
TabJ.DOCNO as НомерДок,
TabJ.sp20604 as Филиал,
Tab1.sp2312 as Контрагент,
Tab1.sp15782 as ВалютаУпр,
Tab1.sp16323 as Объект,
Tab1.sp2334 as СуммаСНДС,
Tab1.sp17145 as Менеджер,
TabJ.sp1854 as Автор,
Tab1.sp18397 as МестоХранения,
CAST(Tab1.sp1855 AS VarChar(1000)) as Примечание
from dh2337 AS Tab1 WITH (NOLOCK)
	INNER JOIN _1SJOURN AS TabJ WITH (NOLOCK) ON (TabJ.IDDOC = Tab1.IDDOC)
	LEFT OUTER JOIN sc192 AS TabMX WITH (NOLOCK) ON (TabMX.ID = Tab1.sp18397)
	LEFT OUTER JOIN sc234 AS TabPodr WITH (NOLOCK) ON (TabPodr.ID = TabMX.sp20566)
where (1 = 1)
	AND ((TabPodr.ID = '     E   ') OR (TabPodr.sp21342 = '     E   '))
	AND (TabJ.DATE_TIME_IDDOC >= '20100901')
	AND (TabJ.DATE_TIME_IDDOC <= '20100930Z')
order by TabJ.DATE_TIME_IDDOC

 



Как видно типизации нет и соответственно при выполнении такого запроса получим данные без типизации.
  
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #8 - 27. Сентября 2010 :: 04:37
Печать  
так сделай типизацию
Tab1.sp2312 as [Контрагент $Справочник.Контрагенты],
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #9 - 27. Сентября 2010 :: 05:05
Печать  
pvase писал(а) 27. Сентября 2010 :: 04:31:
Насколько я понял ПоставщикДанных работает через ИндексированнаяТаблица а не через SQL-запрос. Или я ошибаюсь? Если ошибаюсь - подскажите пожалуйста в каком классе и каким методом получаем значение ПоставщикаДанных для печати.

У класса есть несколько поддерживаемых типов значений. Так вот такие типы как Справочник, Документ, Журнал, Регистр, Операции, Проводки работает через прямые запросы, а ИндексированнаяТаблица, СписокЗначений и ДеревоЗначений через поставщика данных ИТЗ.
Другое дело что для того чтобы построить запрос аналогичный твоему надо изучить много возможностей которые дает класс. Так что, если есть желание - велкам (там много вкусного и отборы, и печать, и настройка).
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #10 - 27. Сентября 2010 :: 06:03
Печать  
Z1 писал(а) 27. Сентября 2010 :: 04:37:
так сделай типизацию
Tab1.sp2312 as [Контрагент $Справочник.Контрагенты],


Дело в том, что изначально типизация есть, при передаче текста запроса в Поставщик:
Код
Выбрать все
|SELECT
	|	Tab1.IDDOC AS [IDDOC],
	|	(TabJ.CLOSED&1 + TabJ.ISMARK*2) AS СтатусДок,
	|	Tab1.IDDOC AS [Документ $Документ."+ТекВидДок+"],
	|	TabJ.DOCNO AS НомерДок,
	|	CONVERT(DateTime,LEFT(TabJ.DATE_TIME_IDDOC,8),112) AS ДатаДок,
	|	CONVERT(varchar, DATEADD(ss, dbo.Convert36To10(SUBSTRING(TabJ.DATE_TIME_IDDOC,9,6))/10000, LEFT(DATE_TIME_IDDOC,8)), 108) AS ВремяДок,
	|	TabJ.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	|	'"+ТекСинДок+"' AS ВидДок,
	|	$Tab1.Контрагент AS [Контрагент $Справочник.Контрагенты],
	|	TabJ.$ОбщийРеквизит.Автор AS [Автор $Справочник.Пользователи],
	|	$Tab1.ВалютаУпр AS [ВалютаУпр $Справочник.Валюты],
	|	$Tab1.Объект AS [Объект $Справочник.Объекты],
	|	$Tab1.Менеджер AS [Менеджер $Справочник.Сотрудники],
	|	$Tab1.Направление AS [Направление $Справочник.Города],
	|	$Tab1.МестоХраненияФилиала AS [МестоХраненияФилиала $Справочник.МестаХранения],
	|	$Tab1.СуммаБезНДС AS СуммаБезНДС,
	|	$Tab1.НДС AS НДС,
	|	$Tab1.СуммаСНДС AS СуммаСНДС,
	|	$Tab1.Договор AS [Договор $Документ],
	|	$Tab1.МестоХранения AS [МестоХранения $Справочник.МестаХранения],
	|	TabJ.$ОбщийРеквизит.Филиал AS [Филиал $Справочник.Подразделения],
	|	CAST(Tab1.$ОбщийРеквизит.Примечание AS VarChar(1000)) AS Примечание
	|FROM
	|	$Документ."+ТекВидДок+" AS Tab1 WITH (NOLOCK)
	|	INNER JOIN _1SJOURN AS TabJ WITH (NOLOCK) ON (TabJ.IDDOC = Tab1.IDDOC) 



Может я что то не понял,, но, как видно, типизация есть, а вот провайдер возвращает без типизации.
Получается мне надо после получения текста запроса еще раз добавлять типизацию, а если делать универсальным - то это будет проблемой, потому что в некоторых документах поле Контрагент имеет определенный вид, а в некоторых нет.
Меня интересовал вопрос чтобы получить запрос от поставщика с типизацией. Если надо самому добавлять типизаци, тогда проще результирующий запрос сохранить в переменную и использовать ее для печати (что сейчас и сделано).
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #11 - 27. Сентября 2010 :: 06:05
Печать  
vandalsvq писал(а) 27. Сентября 2010 :: 05:05:
У класса есть несколько поддерживаемых типов значений. Так вот такие типы как Справочник, Документ, Журнал, Регистр, Операции, Проводки работает через прямые запросы, а ИндексированнаяТаблица, СписокЗначений и ДеревоЗначений через поставщика данных ИТЗ.
Другое дело что для того чтобы построить запрос аналогичный твоему надо изучить много возможностей которые дает класс. Так что, если есть желание - велкам (там много вкусного и отборы, и печать, и настройка).


Попытался разобрать класс "ПечатьТАбличногоПоля", но что так ничего и не понял, или все гениально просто или же все очень сложно.
  
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #12 - 27. Сентября 2010 :: 07:05
Печать  
pvase писал(а) 27. Сентября 2010 :: 06:05:
Попытался разобрать класс "ПечатьТАбличногоПоля", но что так ничего и не понял, или все гениально просто или же все очень сложно.

Класса такого нет, есть просто обработка. Работает она так:

1. Если у объекта расширения есть метод ВЫБРАТЬ то она в него передает список полей по которым хочет получить результат
2. ОбъектРасширение смотрит список полей, по нему компилирует запрос (с учетом всего что пользователь там наворотил) выполняет и возвращает ИТЗ
3. Обработка печати получает ИТЗ и начинает ее вывод в соответствии с настроенной структурой колонок

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

Вообще в твоем вопросе кто тебе мещает скомпилировать запрос повторно выполнить его и вывести в таблицу?
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #13 - 27. Сентября 2010 :: 07:54
Печать  
pvase писал(а) 27. Сентября 2010 :: 06:03:
Z1 писал(а) 27. Сентября 2010 :: 04:37:
так сделай типизацию
Tab1.sp2312 as [Контрагент $Справочник.Контрагенты],


Дело в том, что изначально типизация есть, при передаче текста запроса в Поставщик:
Код
Выбрать все
|SELECT
	|	Tab1.IDDOC AS [IDDOC],
	|	(TabJ.CLOSED&1 + TabJ.ISMARK*2) AS СтатусДок,
	|	Tab1.IDDOC AS [Документ $Документ."+ТекВидДок+"],
	|	TabJ.DOCNO AS НомерДок,
	|	CONVERT(DateTime,LEFT(TabJ.DATE_TIME_IDDOC,8),112) AS ДатаДок,
	|	CONVERT(varchar, DATEADD(ss, dbo.Convert36To10(SUBSTRING(TabJ.DATE_TIME_IDDOC,9,6))/10000, LEFT(DATE_TIME_IDDOC,8)), 108) AS ВремяДок,
	|	TabJ.DATE_TIME_IDDOC AS DATE_TIME_IDDOC,
	|	'"+ТекСинДок+"' AS ВидДок,
	|	$Tab1.Контрагент AS [Контрагент $Справочник.Контрагенты],
	|	TabJ.$ОбщийРеквизит.Автор AS [Автор $Справочник.Пользователи],
	|	$Tab1.ВалютаУпр AS [ВалютаУпр $Справочник.Валюты],
	|	$Tab1.Объект AS [Объект $Справочник.Объекты],
	|	$Tab1.Менеджер AS [Менеджер $Справочник.Сотрудники],
	|	$Tab1.Направление AS [Направление $Справочник.Города],
	|	$Tab1.МестоХраненияФилиала AS [МестоХраненияФилиала $Справочник.МестаХранения],
	|	$Tab1.СуммаБезНДС AS СуммаБезНДС,
	|	$Tab1.НДС AS НДС,
	|	$Tab1.СуммаСНДС AS СуммаСНДС,
	|	$Tab1.Договор AS [Договор $Документ],
	|	$Tab1.МестоХранения AS [МестоХранения $Справочник.МестаХранения],
	|	TabJ.$ОбщийРеквизит.Филиал AS [Филиал $Справочник.Подразделения],
	|	CAST(Tab1.$ОбщийРеквизит.Примечание AS VarChar(1000)) AS Примечание
	|FROM
	|	$Документ."+ТекВидДок+" AS Tab1 WITH (NOLOCK)
	|	INNER JOIN _1SJOURN AS TabJ WITH (NOLOCK) ON (TabJ.IDDOC = Tab1.IDDOC) 



Может я что то не понял,, но, как видно, типизация есть, а вот провайдер возвращает без типизации.
Получается мне надо после получения текста запроса еще раз добавлять типизацию, а если делать универсальным - то это будет проблемой, потому что в некоторых документах поле Контрагент имеет определенный вид, а в некоторых нет.
Меня интересовал вопрос чтобы получить запрос от поставщика с типизацией. Если надо самому добавлять типизаци, тогда проще результирующий запрос сохранить в переменную и использовать ее для печати (что сейчас и сделано).

у меня типизация для ТП работает.
Попробуй так
создай в совей базе таблицу test

create table test (
id  char(9)
)
Помести в эту таблицу 2-3 клиентов и добивайся для этой таблицы работы  ТП с таблицей test.Это уже можно будет как либо обсуждать.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТабличноеПоле, поставщик - SQL, печеть?
Ответ #14 - 27. Сентября 2010 :: 16:32
Печать  
vandalsvq писал(а) 27. Сентября 2010 :: 07:05:
Вообще в твоем вопросе кто тебе мещает скомпилировать запрос повторно выполнить его и вывести в таблицу?


Так и делаю, думал может не компилировать повторно а использовать готовый текст с провайдера, но видимо никак. Таким путем и пошел.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать