Переключение на Главную Страницу Страницы: 1 ... 20 21 [22] 23 24 ... 81 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения. Часть 2. (число прочтений - 376798 )
Dmiter
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Местоположение: Киев
Зарегистрирован: 08. Января 2010
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #315 - 25. Апреля 2011 :: 15:16
Печать  
Подскажите как лучше: Есть журнал - по нему строю ПоставщикДанных.Журнал - необходимо в табличном поле выводить из графы журнала (тип справочник) реквизит справочника. Строить в тексте запроса получение данных либо при выводе строки в табличном поле. Вопрос более в скорости работы и ресурсоемкости поскольку реквизит типа Строка, 120.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #316 - 26. Апреля 2011 :: 06:18
Печать  
в тексте запроса.
  
Наверх
 
IP записан
 
Dmiter
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Местоположение: Киев
Зарегистрирован: 08. Января 2010
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #317 - 26. Апреля 2011 :: 06:53
Печать  
Eprst писал(а) 26. Апреля 2011 :: 06:18:
в тексте запроса.

Вопрос возник потому что насколько я понимаю функция ПриВыводеСтроки отрабатывает только когда выводится строка (то есть когда она видима), а запрос отработает сразу для всех документов журнала вне зависимости отображаются данные или нет. Также возникает сложность получения реквизита (сама графа журнала получается посредством case потом насколько я понимаю необходимо к case еще join справочника для получения реквизита.)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #318 - 26. Апреля 2011 :: 06:59
Печать  
Запрос будет выполнен только для ограниченого количество строк = количеству ыидимых строк в ТП.
+ при вытаскивании реквизита из объекта в ПриВыводеСтроки ты будешь тащить объект целиком на клиента, в случае получения в самом запросе - нет.
  
Наверх
 
IP записан
 
Dmiter
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Местоположение: Киев
Зарегистрирован: 08. Января 2010
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #319 - 26. Апреля 2011 :: 07:17
Печать  
Смотрел текст запроса в ПоставщикДанных.Журнал там нет ограничений по количеству выводимых в ТП строк Печаль Может не там где надо смотрел...? Там вообще запрос формируется через Journ несмотря на то что используется дополнительный журнал с тремя видами документов. И графа журнала не используется...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #320 - 26. Апреля 2011 :: 07:30
Печать  
смотрел где ? В профайлере ?
Сам поставщик данных отправляет запрос на ограниченную выборку.
  
Наверх
 
IP записан
 
Dmiter
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Местоположение: Киев
Зарегистрирован: 08. Января 2010
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #321 - 26. Апреля 2011 :: 07:43
Печать  
Нет. В процедуре ПриПолученииЗапроса. - структуразапроса.Колонки, структураЗапроса.Источник, структураЗапроса.Условия
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #322 - 26. Апреля 2011 :: 15:11
Печать  
Цитата:
Там вообще запрос формируется через Journ несмотря на то что используется дополнительный журнал с тремя видами документов. И графа журнала не используется...

А разве 1С 7.7 создает таблицу для каждого журнала? Вроде насколько я помню нет (а вот 8.х да Улыбка). Соответственно отсюда и запрос по journ + соединение с таблицами документов (если надо конечно) + условие по виду документа. То что отсутствует условия по графе вида журнала документов... кхм... не помню почему его отсеил... кхм... помоему потому что один хрен в основной индекс который используется не попадал и только путал, разницы вроде не особо много было.
Сам запрос строится без ограничений по количеству записей (и условий с какой позиции), за это отвечает конкретный провайдер 1C++ или 1SQLite. Он уже сам "отщипывает" кусок + ставит условия на "с какого места отщипнуть". А классы это по сути конструктор запроса, управление интерфейсом и прочими вещами. Сами данные он читает только в процедуре "Выбрать" Улыбка.
  

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


1C++ rocks!

Сообщений: 29
Местоположение: Киев
Зарегистрирован: 08. Января 2010
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #323 - 26. Апреля 2011 :: 19:41
Печать  
vandalsvq писал(а) 26. Апреля 2011 :: 15:11:
А разве 1С 7.7 создает таблицу для каждого журнала? Вроде насколько я помню нет (а вот 8.х да Улыбка). Соответственно отсюда и запрос по journ + соединение с таблицами документов (если надо конечно) + условие по виду документа. То что отсутствует условия по графе вида журнала документов... кхм... не помню почему его отсеил... кхм... помоему потому что один хрен в основной индекс который используется не попадал и только путал, разницы вроде не особо много было.
Сам запрос строится без ограничений по количеству записей (и условий с какой позиции), за это отвечает конкретный провайдер 1C++ или 1SQLite. Он уже сам "отщипывает" кусок + ставит условия на "с какого места отщипнуть". А классы это по сути конструктор запроса, управление интерфейсом и прочими вещами. Сами данные он читает только в процедуре "Выбрать" Улыбка.

Спасибо за толковое объяснение. Тогда вопрос скорее всего будет по sql - в журнал добавлена графа - где из документов вытягивается реквизит (справочник). В запросе этот реквизит идет через case (так как в документах он в разных полях таблиц). Необходимо из реквизита (справочник) вытащить его атрибут - присоединение по on напрямую к полю не получается. В примере есть только получение атрибута от общего реквизита документов.
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #324 - 27. Апреля 2011 :: 04:18
Печать  
vandalsvq, прошу Вашей помощи или хотя бы подсказки! Использую класс ПоставщикДанных.ИндексированнаяТаблица не самой новой сборки. Просто не мог разобраться с новым и взял из действующего примера где-то из постов в теме(проблемная обработка, подборка классов и библиотеки во вложении). Обработка предназначена для просмотра менеджерами сводной таблицы из нескольких документов. Сначала грешил на обработку(Подтоварка), которая создает документы, но там используется тот же функционал, что и в других модулях конфигурации. Для просмотра документов, которые создает Подтоварка используется обработка(Просмотр) из архива, которая и использует ПоставщикДанных.ИндексированнаяТаблица. После активного её использования менеджерами было замечено общее падение производительности в работе пользователей, использующих данный функционал, которое заключается в медленном переходе по позициям справочника, задержке при установке отборов на 1-5-10 сек. А также, при нажатии на кнопки экранных форм,  действия либо не совершаются и экран становится серым, а кнопки - недоступными на 1-2-10 секунд, либо действие совершается с большим запозданием - 1-5-10 секунд. Причем, наблюдается даже намного позже после использования. Замеры производительности в отладчике 1с ничего не дали.  Переиндексация баз sql ничего не дает, обрезали базу с 18 до 10Г - тоже не помогло.
Может ли такой "эффект" быть от использования этой версии ПоставщикаДанных? Возможно, где-то в коде я допускаю ошибки из-за которых такой эффект?
  

SystemData.rar ( 1693 KB | Загрузки )

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #325 - 27. Апреля 2011 :: 05:08
Печать  
Dmiter писал(а) 26. Апреля 2011 :: 19:41:
В запросе этот реквизит идет через case (так как в документах он в разных полях таблиц). Необходимо из реквизита (справочник) вытащить его атрибут - присоединение по on напрямую к полю не получается. В примере есть только получение атрибута от общего реквизита документов.


А чего, без case ужо не судьба ?
А текст запроса покажешь ?
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #326 - 27. Апреля 2011 :: 08:07
Печать  
2 al_zzz для начала попробуй создавать индексы с использованием *

Код
Выбрать все
ДобавитьИндекс(".....", "*....") 



зы покажи замеры из отладчика
  
Наверх
wwwICQ  
IP записан
 
Dmiter
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Местоположение: Киев
Зарегистрирован: 08. Января 2010
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #327 - 27. Апреля 2011 :: 12:24
Печать  
Eprst писал(а) 27. Апреля 2011 :: 05:08:
Dmiter писал(а) 26. Апреля 2011 :: 19:41:
В запросе этот реквизит идет через case (так как в документах он в разных полях таблиц). Необходимо из реквизита (справочник) вытащить его атрибут - присоединение по on напрямую к полю не получается. В примере есть только получение атрибута от общего реквизита документов.


А чего, без case ужо не судьба ?
А текст запроса покажешь ?

Код
Выбрать все
Колонки:select
	ТекущийОбъект.iddocdef as [ТекущийДокумент_вид]
	,ТекущийОбъект.dnprefix as [ПрефиксНомера]
	,ТекущийОбъект.row_id as [НомерСтрокиЖурналаДокументов]
	,ТекущийОбъект.docno as [НомерДокументаСортировка]
	,ТекущийОбъект.date_time_iddoc as [ПозицияДокумента]
	,case when ТекущийОбъект.ismark = 1 then 7 else
		case when ТекущийОбъект.closed&1 = 1 then 8 else 6 end
	end as [Пиктограмма]
	,ltrim(ТекущийОбъект.docno) as [НомерДокумента]
	,dbo.ConvertIDTimeToTime(substring(ТекущийОбъект.date_time_iddoc,9,6)) as [ВремяДокумента]
	,left(ТекущийОбъект.date_time_iddoc,8) as [ДатаДокумента $Дата]
	,ТекущийОбъект.iddoc as [ТекущийДокумент $Документ]
	,ТекущийОбъект.iddocdef AS [ВидДокумента $ВидДокументаПредставление]
	,ТекущийОбъект.closed&1 AS [Проведен]
	,case when ТекущийОбъект.ismark = 1 then 1 else 0 end as [ПометкаУдаления]
	,$ТекущийОбъект.IDD as [IDD $Строка]
	,$ТекущийОбъект.Автор as [Автор $Справочник.Пользователи]
	,$ТекущийОбъект.Фирма as [Фирма $Справочник.Фирмы]
	,$ТекущийОбъект.ТипУчета as [ТипУчета $Число]
	,$ТекущийОбъект.ФинУчет as [ФинУчет $Число]
	,$ТекущийОбъект.ИзПЛ as [ИзПЛ $Число]
	,case ТекущийОбъект.iddocdef
		when 7849 then $ДокТ_РасходнаяНакладная.Контрагент
		when 6016 then $ДокСчет.Контрагент
		when 16410 then $ДокТ_ЗаявкаНаВозврат.Контрагент
	end as [Покупатель $Справочник.Контрагенты]
	,case ТекущийОбъект.iddocdef
		when 7849 then $ДокТ_РасходнаяНакладная.ТорговаяТочка
		when 16410 then $ДокТ_ЗаявкаНаВозврат.ТорговаяТочка
	end as [ТорговаяТочка $Справочник.ТорговыеТочкиКонтрагента]
	,case ТекущийОбъект.iddocdef
		when 16410 then $ДокТ_ЗаявкаНаВозврат.СуммаСНДС
		when 7849 then $ДокТ_РасходнаяНакладная.СуммаСНДС
		when 6016 then $ДокСчет.СуммаСНДС
	end as [СуммаСНДС $Число]
	,$ДокТ_РасходнаяНакладная.ПолученДокумент AS [Получен $Строка]
Источник:
from ЖурналДокументов as ТекущийОбъект $nolock
	left join Документ.Счет as ДокСчет $nolock
		on ТекущийОбъект.iddoc = ДокСчет.iddoc
	left join Документ.Т_РасходнаяНакладная as ДокТ_РасходнаяНакладная $nolock
		on ТекущийОбъект.iddoc = ДокТ_РасходнаяНакладная.iddoc
	left join Документ.Т_ЗаявкаНаВозврат as ДокТ_ЗаявкаНаВозврат $nolock
		on ТекущийОбъект.iddoc = ДокТ_ЗаявкаНаВозврат.iddoc


Условия:where (ТекущийОбъект.iddocdef in (6016,7849,16410)) 


Необходимо получить атрибут АдресДоставки справочника ТорговаяТочка
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #328 - 27. Апреля 2011 :: 12:51
Печать  
Код
Выбрать все
, RTRIM($ТТ.АдресДоставки) AS [Адрес доставки]

...

left join Справочник.ТорговыеТочкиКонтрагента AS ТТ $nolock ON (case ТекущийОбъект.iddocdef
		when 7849 then $ДокТ_РасходнаяНакладная.ТорговаяТочка
		when 16410 then $ДокТ_ЗаявкаНаВозврат.ТорговаяТочка
	end)  = ТТ.id 



это не для граф отбора
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" -обсуждения. Часть 2.
Ответ #329 - 27. Апреля 2011 :: 18:51
Печать  
Может в выходные доберусь. Но вообще то вполне нормалльно можно написать самому. По крайней мере где-то у меня в заначке есть примерчик. Поищу...
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 20 21 [22] 23 24 ... 81
ОтправитьПечать