Переключение на Главную Страницу Страницы: 1 ... 59 60 [61] 62 63 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения, примеры, вопросы (число прочтений - 400515 )
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #900 - 29. Июня 2010 :: 18:47
Печать  
Какая версия 1С++?
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #901 - 29. Июня 2010 :: 19:29
Печать  
Anatol писал(а) 29. Июня 2010 :: 18:42:
при определенных условиях данные в колоках путаются, задваиваются или просто исчезают из запроса

при определенных условиях и 1С-ка падает. Если писать правильно то подобного поведения не должно быть. Например если ты соединением приводишь к тому что данные "задваиваются" дык это проблема твоих рук, а не класса, он четко по индексам той таблицы откуда читает работает. Все остальные методы это на "вашей совести". Так что не надо делать соединение с таблицей строк документов Улыбка. Хотите поставщика строк документов? Дык так и напишите, может и сделаем.

Пы.сы. а если неуверенность в светлом будущем будет усиливаться, ты дай знать, расскажи свои сомнения. Может партия выслушает, поймет и примет меры  Подмигивание.
  

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


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #902 - 30. Июня 2010 :: 05:13
Печать  
может и я дурак, но вот смотри

в 1с вот такой кусочек кода

Код
Выбрать все
//======================================================================
Процедура РеестрПриПолученииЗапроса(ТабличноеПоле, СтруктураЗапроса)

	СтруктураЗапроса.Колонки = СтруктураЗапроса.Колонки + "
	|	, (CASE WHEN Жур2.CLOSED&1 = 1 THEN 1 ELSE 0 END) as Загружен
	|	, $Область.Наименование AS Район, $Область.Наименование AS Район
	|	, (CASE WHEN $ШапкаДокумента.Собран < 0 THEN 5 ELSE $ШапкаДокумента.Собран END) as Собран
	|";

	СтруктураЗапроса.Источник = СтруктураЗапроса.Источник + "
	|LEFT JOIN Справочник.Договоры КАК Договор $nolock
	|	ON $Договор.ТекущийЭлемент = $ШапкаДокумента.Договор
	|LEFT JOIN Справочник.кпкОбластьТорговли КАК Область $nolock
	|	ON $Договор.ОбластьТорговли = $Область.ТекущийЭлемент
	|
	|LEFT LOOP JOIN _1SCRDOC as Отбор_ (NOLOCK)
	|	ON Отбор_.MDID=0 AND 'O1'+$ВидДокумента36.Реализация+ТекущийОбъект.IDDOC = Отбор_.Parentval
	|LEFT LOOP JOIN	_1SJOURN as Жур2 (NOLOCK)
 	|	ON Отбор_.CHILD_DATE_TIME_IDDOC = Жур2.Date_Time_IDDoc
 	|";

 	СтруктураЗапроса.Условия = СтруктураЗапроса.Условия + "
 	|and (Жур2.IDDocDef = $ВидДокумента.ЗагрузочнаяНакладная or Жур2.IDDocDef is null)
 	| " + ТексДопУсловия;

КонецПроцедуры // ПриПолученииЗапроса
// 



в при отладке в скл уходит следующий запрос


Код
Выбрать все
select top 34
journ.DATE_TIME_IDDOC as ПозицияДокумента,
journ.IDDOC as ТекущийДокумент,
CASE WHEN journ.ISMARK = 1 THEN 7 ELSE CASE WHEN journ.CLOSED&1 = 1 THEN 8 ELSE 6 END END as Пиктограмма,
LTRIM(RTRIM(journ.DOCNO)) as НомерДокумента,
CAST(LEFT(journ.DATE_TIME_IDDOC, 8) as DATETIME) as ДатаДокумента,
CASE WHEN journ.CLOSED&1 = 1 THEN 1 ELSE 0 END as Проведен,
CASE WHEN journ.ISMARK = 1 THEN 1 ELSE 0 END as ПометкаУдаления,
journ.ROW_ID as НомерСтрокиЖурналаДокументов,
journ.IDDOCDEF as ВидДокументаСортировка,
journ.DOCNO as НомерДокументаСортировка,
dh1611.SP1583 as Контрагент,
dh1611.SP1584 as Договор,
dh1611.SP1604 as Сумма,
Область.DESCR as Район,
dh1611.SP8878 as Грузчик,
dh1611.SP8186 as ПровереноКладовщиком,
(CASE WHEN Жур2.CLOSED&1 = 1 THEN 1 ELSE 0 END) as Загружен
from _1SJOURN AS journ (nolock)
LEFT JOIN
	DH1611 AS dh1611 (nolock)
ON
	journ.IDDOC = dh1611.IDDOC


LEFT JOIN SC204 AS Договор (nolock)
	ON Договор.ID = dh1611.SP1584
LEFT JOIN SC9475 AS Область (nolock)
	ON Договор.SP9477 = Область.ID

LEFT LOOP JOIN _1SCRDOC as Отбор_ (NOLOCK)
	ON Отбор_.MDID=0 AND 'O1'+' 18R'+journ.IDDOC = Отбор_.Parentval
LEFT LOOP JOIN	_1SJOURN as Жур2 (NOLOCK)
	ON Отбор_.CHILD_DATE_TIME_IDDOC = Жур2.Date_Time_IDDoc
where CAST(LEFT(journ.DATE_TIME_IDDOC, 8) as DATETIME) BETWEEN '20100630' AND '20100630'
AND
	journ.IDDOCDEF = 1611
and (Жур2.IDDocDef = 8002 or Жур2.IDDocDef is null)
order by journ.DATE_TIME_IDDOC 




а если переставить колонки

Код
Выбрать все
	СтруктураЗапроса.Колонки = СтруктураЗапроса.Колонки + "
	|	, $Область.Наименование AS Район, $Область.Наименование AS Район
	|	, (CASE WHEN Жур2.CLOSED&1 = 1 THEN 1 ELSE 0 END) as Загружен
	|	, (CASE WHEN $ШапкаДокумента.Собран < 0 THEN 5 ELSE $ШапкаДокумента.Собран END) as Собран
	|";
 



текст отладки

Код
Выбрать все
....
dh1611.SP1583 as Контрагент,
dh1611.SP1584 as Договор,
dh1611.SP1604 as Сумма,
Область.DESCR as Район,
dh1611.SP8878 as Грузчик,
(CASE WHEN dh1611.SP8808 < 0 THEN 5 ELSE dh1611.SP8808 END) as Собран,
dh1611.SP8186 as ПровереноКладовщиком,
(CASE WHEN Жур2.CLOSED&1 = 1 THEN 1 ELSE 0 END) as Загружен
from _1SJOURN AS journ (nolock)
LEFT JOIN
	DH1611 AS dh1611 (nolock)
...
 



ну вот я немогу понять куда делать колонка Собран в первом случаи?
чего я такого страшного сделал?
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #903 - 30. Июня 2010 :: 05:23
Печать  
Надо смотреть на тестовой базе с ходу не берусь высказывать предположения. Попробуй методом "добавит колонку данных" и "добавить соединение данных".
  

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


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #904 - 30. Июня 2010 :: 05:31
Печать  
это в через ПоставщикДанных.Сервис?
  
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #905 - 30. Июня 2010 :: 05:35
Печать  
извините за офф.
Саша, а это что за хрень ?
where CAST(LEFT(journ.DATE_TIME_IDDOC, 8) as DATETIME) BETWEEN '20100630' AND '20100630'
Это что поставщик такой запрос делает? Ужас
  

1&&2&&3
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #906 - 30. Июня 2010 :: 05:54
Печать  
Дим, вообще это не офф, а очень даже по теме.

В новой версии он вроде бы должен писать
where LEFT(journ.DATE_TIME_IDDOC, 8) between '........' and '...........' без cast. Другое дело что и это можно поменять. Чтобы даже left не было. Но тут дело в том, что поля запроса прописываются один раз. Они используются для вывода данных, соответственно потом и при построении условий (при модификации отборов). Я как то уже "боролся" с данной хренью, в плане того чтобы не было условий вроде "case when ismark = '*' then 1 else 0 end = 0 или (1)". Но видимо не все доборол, кое что осталось.
Думаю надо написать себе проверить все расширения на предмет измененных полей чтобы в условиях они формировались правильно, без всякого рода преобразований.
Буду рад если кто укажет на подобные "что это за хрень".
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #907 - 30. Июня 2010 :: 06:02
Печать  
LEFT(journ.DATE_TIME_IDDOC, 8) - тоже не годится

Должно быть
DATE_TIME_IDDOC BETWEEN '20100630' AND '20100630Z' и никак иначе. Ведь индекс же.

Выражение для поля селект-листа "Дата" это одно.
А выражение для ограничения по периоду это совсем другое.
  

1&&2&&3
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #908 - 30. Июня 2010 :: 06:37
Печать  
trad писал(а) 30. Июня 2010 :: 06:02:
тоже не годится
Выражение для поля селект-листа "Дата" это одно.
А выражение для ограничения по периоду это совсем другое.


Абсолютно согласен, просто сначала то писал в угоду универсальности, потом начал заниматься оптимизацией. В общем я знаю что есть над чем работать. Тем баче когда "интерфейс" класса готов.
  

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


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #909 - 30. Июня 2010 :: 10:09
Печать  
а можно реализовать быстрый поиск по вхождению в строку?
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #910 - 30. Июня 2010 :: 10:17
Печать  
Anatol писал(а) 30. Июня 2010 :: 10:09:
а можно реализовать быстрый поиск по вхождению в строку?

Можно но "быстрым" он уже перестанет быть Улыбка. Поскольку одно дело проверять на = другое дело на like Улыбка.
  

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


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #911 - 30. Июня 2010 :: 11:31
Печать  
тем не мение хотелось бы.
ну что же это за счастье такое если при поиске документа по номеру нужно вбивать префикс и нули?
  
Наверх
wwwICQ  
IP записан
 
Anatol
Senior Member
****
Отсутствует


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #912 - 30. Июня 2010 :: 13:48
Печать  
vandalsvq писал(а) 30. Июня 2010 :: 05:23:
Надо смотреть на тестовой базе с ходу не берусь высказывать предположения. Попробуй методом "добавит колонку данных" и "добавить соединение данных".


так и сделал, вроде как даже без всяких глюков и отбор по ним стало возможно делать... красота =)
осталось только реализовать метод "ДобавитьУсловиеДанных", так, на светлое будушее  Круглые глаза


в ПриПолученииЗапроса отстался такой кусок кода

Код
Выбрать все
СтруктураЗапроса.Условия = СтруктураЗапроса.Условия + "
|and (Жур2.IDDocDef = $ВидДокумента.ЗагрузочнаяНакладная or Жур2.IDDocDef is null)
| " + ТексДопУсловия; 



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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #913 - 30. Июня 2010 :: 16:20
Печать  
Дело в том что "Условие" данных по идее можно будет контролировать через объект "ПоставщикДанных.ЭлементыОтбора". Но это в будущем.
  

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


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных" - обсуждения, примеры, вопросы
Ответ #914 - 01. Июля 2010 :: 08:33
Печать  
как раз вопрос по элементам отбора

в отбор добавляю новый элемент

Код
Выбрать все
ЭлементОтбора = СвойствоОтбор.Добавить("Контрагент",-1);
ЭлементОтбора.Представление = "Контрагент";
ЭлементОтбора.Использование = 0;
ЭлементОтбора.ИзменятьИспользование = 1;
ЭлементОтбора.Видимость = 1;
ЭлементОтбора.Вид = 1;
ЭлементОтбора.ТипДанных = "Справочник";
ЭлементОтбора.ВидДанных = "Контрагенты"; 



элемент добавляется в отбор, но форма выбора самого элемента не открывается  Печаль
  
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 59 60 [61] 62 63 ... 79
ОтправитьПечать