Переключение на Главную Страницу Страницы: 1 ... 38 39 [40] 41 42 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения, примеры, вопросы (число прочтений - 359378 )
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #585 - 22. Апреля 2010 :: 20:12
Печать  
Зачем столь сложное получение объекта "ПрямойЗапрос"? Может просто:
Код
Выбрать все
РС = СОздатьОбъект("ODBCRecordSet");
РС.УстТекстПарам(...);
РС.ВыполнитьИнструкцию(...);
...тут получить нужное значение ИД-поля...
ТП.ТекущаяСтрока(НовыйИД); 

  
Наверх
ICQ  
IP записан
 
Anatol
Senior Member
****
Отсутствует


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

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПоставщикДанных"
Ответ #586 - 22. Апреля 2010 :: 20:38
Печать  
видимо в тп попадает несколько одинаковых записей
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

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

mctoha, твой поиск весьма не точен, он не учитывает сортировку. Но в принципе это не страшно.
Ты лучше создай отдельный объект "ПрямойЗапрос" и его используй для запроса. Использование данного объекта из самого класса в текущей версии опасно подобными "глюками".

Salimbek, ODBC - это для скулы. А я лично за "универсальность" Улыбка

Anatol, сдается мне что проблема либо в том что текст запроса меняется в  ПриПолученииЗапроса, но если этого нет, тогда проблема в том что сбиваются параметры самого поставщика когда mctoha выполяет поиск.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #588 - 24. Апреля 2010 :: 19:46
Печать  
В общем выпущен новый релиз.

3.04.020 от 24.04.10 г.
- Метод «Выбрать» у объектов-расширений табличного поля «ПоставщикДанных.Справочник», «ПоставщикДанных.Документы», «ПоставщикДанных.Журнал», «ПоставщикДанных.Операции» и «ПоставщикДанных.Регистр» может принимать строку с разделителями в качестве параметра.
- Добавлена колонка «ВремяДокумента» у объектов-расширений табличного поля «ПоставщикДанных.Документы», «ПоставщикДанных.Журнал». Колонка отображается в отборе и участвует в быстром поиске. При этом значения поиска могут задаваться как строка времени с разделителями (ЧЧ:ММ:СС) так и без разделителей (ЧЧММСС), при этом задание полного значения не обязательно. Например для поиска между 12 и 13 часами достаточно передать ЗначениеС = «12», ЗначениеПо = «13».
- Редактирование интервала с типом Число и Время в форме отбора происходит через дополнительное окно.
- ВНИМАНИЕ: при запуске в SQL формате БД создается процедура «ConvertIDTimeToTime». Данная процедура осуществляет конвертацию 36-тиричной строки TIME, в строку формата “ЧЧ:ММ:СС».
- Для объекта-расширения табличного поля «ПоставщикДанных.Журнал» добавлена возможность поиска по подстроке по графам журнала документов.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #589 - 24. Апреля 2010 :: 20:39
Печать  
Добавил новый функционал (пока в beta-версии):

Цитата:
Синтаксис: ДобавитьСоединениеДанных(ИдентификаторСоединения,ТекстЗапроса)
Параметры:
  • ИдентификаторСоединения - Строка. Идентификатор соединения для обращения к нему.
  • ТекстЗапроса - Строка. Текст запроса для добавления к основному запросу поставщика данных. Текст запроса должен начинаться с "left|inner|левое|внутреннее join|соединение" и содержать строку "on ....".

Назначение: добавляет к основному текст запроса данное соединение.


Цитата:
Синтаксис: УдалитьСоединениеДанных(ИдентификаторСоединения)
Параметры:
  • ИдентификаторСоединения - Строка.

Назначение: удаляет текст соединения. При этом удаление добавленных колонок не происходит. Пользователь должен сам позаботиться об очистке ТП от колонок использующих в данных соединение.


Цитата:
Синтаксис: ,ПризнакОтбора)
Параметры:
  • ИмяКолонки - Строка. Идентификатор колонки для обращения к ней. Не может совпадаться с реквизитами справочника и ранее добавленными колонками.
  • Заголовок - Строка. Заголовок колонки для подстановки в ТП.
  • РеквизитЗапроса - Строка. Текст запроса реквизита.
  • ТипВид - Строка. Тип и вид реквизита. Используется для типизации значения. По умолчанию: пустая строка.
  • Длина - Число. Максимальная длина значения реквизита. По умолчанию: 0.
  • Точность - Число. Максимальная точность значения реквизита. По умолчанию: 0.
  • ПризнакОтбор - Число (1,0). Признак участия реквизита в отборе данных. По умолчанию: 0.

Назначение: добавляет информацию о колонке данных в объект-расширение. При этом добавление колонки в ТП происходит стандартным образом через метод НоваяКолонка(). Для добавленных колонок при условии совпадения всех требований возможен отбор, поиск и быстрый поиск.


Цитата:
Синтаксис: УдалитьКолонкуДанных(ИмяКолонки)
Параметры:
  • ИмяКолонки - Строка.

Назначение: удаляет информацию о колонке данных. При этом удаление из ТП ее не происходит. Для удаления колонки пользователь обязан вызвать метод "УдалитьКолонку".
  

1Cv7_ext_TF_join_001.rar ( 400 KB | Загрузки )

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #590 - 24. Апреля 2010 :: 20:57
Печать  
Пример реализации колонки "Остаток ТМЦ" при помощи данного метода:

Код
Выбрать все
	ТекстСоединения = "left join
	|	$РегистрОстатки.ТМЦ(
	|		,
	|		,(Контрагент)
	|		,(Количество)) as vt_rg_total
	|on $ТекущийОбъект.ТекущийЭлемент = vt_rg_total.Контрагент
	|";
	Данные.ДобавитьСоединениеДанных("ОстаткиПоКонтрагенту",ТекстСоединения);
	Данные.ДобавитьКолонкуДанных("КолОстаток","ТМЦ остаток","vt_rg_total.КоличествоОстаток","Число",19,2,1);

	Данные.НоваяКолонка("Код");
	Данные.НоваяКолонка("Наименование");
	Данные.НоваяКолонка("КолОстаток",1); 



Преимущество данного метода над модицикацией текста запроса при помощи события ПриПолученииЗапроса() в том, что добавленная колонка "КолОстаток" будет учавствовать в отборе, быстром поиске, поиске по подстроке, и при этом по ней подсчитывается итог по текущей группе.
  

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


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #591 - 26. Апреля 2010 :: 06:54
Печать  
"- Для объекта-расширения табличного поля «ПоставщикДанных.Журнал» добавлена возможность поиска по подстроке по графам журнала документов."
Good!!!

vandalsvq - огромное Вам спасибо!!! -Вы помогли решить для нашей фирмы важную проблему с быстрым поиском по графам! А так же очень быстро решили нашу проблему. По поводу денег, я Вам ответил по icq.


Хочу у Вас узнать, там есть контекстное меню в таблице. Вопрос, можно ли изменить название пунктов? А так же добавить, новый например свой? Хочу добавить новый пункт. "Подчиненные документы" (а то в стандартном есть, а в этом меню нет Печаль


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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #592 - 26. Апреля 2010 :: 08:47
Печать  
По icq ответил уже. Меню надо составлять в таком случае самостоятельно. Можно скомуниздить процедуру из класса.

Пы.сы. нашел один неприятный баг, оказывается поиск в справочнике с иерархией перестал работать Улыбка. Сегодня исправлю и выложу.
  

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


1C++ rocks!

Сообщений: 39
Зарегистрирован: 26. Марта 2010
Re: Класс "ПоставщикДанных"
Ответ #593 - 26. Апреля 2010 :: 09:28
Печать  
дошли руки поисследовать проблему выпадания базы
так вот, все баги именно из-за того соединения в запросе для получения остатков  Плачущий
если его просто отключить - то и мой простенький поиск работает как надо, и в других местах выпаданий не случается
вот только не могу взять в толк, что ему не так с этими соединениями...
уже пробовал и создавать новый объект "ПрямойЗапрос" и им оперировать для получения дополнительных данных - без разницы
пробовал отключить автообновление - не влияет
понял почему работает на первом уровне - там нет остатков, так как одни группы
обидно
попробую еще через новую возможность с соединениями, но думаю результат будет тот же
складывается впечатление ,что в момент активизации строки происходит еще какой-то запрос, и поэтому база падает
потому что если значение второй раз в списке не найдено (не вызывается активизация строки) - то все в порядке....
  
Наверх
 
IP записан
 
mctoha
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 39
Зарегистрирован: 26. Марта 2010
Re: Класс "ПоставщикДанных"
Ответ #594 - 26. Апреля 2010 :: 09:40
Печать  
еще уточнение
прошелся профайлером - в момент активизации строки выполняется запрос для обновления данных это  активизируемой строки (т.е. выполняется мой запрос поставщика данных со всеми соединениями, с фильтром по ИД)
ну и дальше выпадание
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #595 - 26. Апреля 2010 :: 10:06
Печать  
А соединением с базой каким пользуешься? Случайно не тем же, на который ТП завязано?
  
Наверх
ICQ  
IP записан
 
mctoha
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 39
Зарегистрирован: 26. Марта 2010
Re: Класс "ПоставщикДанных"
Ответ #596 - 26. Апреля 2010 :: 10:16
Печать  
Salimbek писал(а) 26. Апреля 2010 :: 10:06:
А соединением с базой каким пользуешься? Случайно не тем же, на который ТП завязано?

я создаю объект "ПрямойЗапрос"
подозреваю, что соединение он будет пользовать тоже самое, что и объект "ПоставщикДанных"

ты это имеешь в виду?

Добаление:
поглядел конструктор класса ПрямойЗапрос
там присутствует вызов
Код
Выбрать все
ЗапросODBC = СоздатьОбъект("ODBCRecordSet");
 


так что наверное мимо
  
Наверх
 
IP записан
 
EugenVitla
Junior Member
**
Отсутствует


школьнег

Сообщений: 82
Местоположение: Москва
Зарегистрирован: 21. Марта 2008
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #597 - 26. Апреля 2010 :: 10:42
Печать  
В поиске не нарыл, так что сюда:
А вот как бы мне заменить стандартную форму списка справочника на ПоставщикДанных?
Код
Выбрать все
ПоставщикДанных.КонтейнерТабличногоПоля = "КонтейнерТП"; 

Не догоняю, что указать в качестве имени атрибута Печаль
  
Наверх
IP записан
 
mctoha
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 39
Зарегистрирован: 26. Марта 2010
Re: Класс "ПоставщикДанных"
Ответ #598 - 26. Апреля 2010 :: 10:54
Печать  
EugenVitla писал(а) 26. Апреля 2010 :: 10:42:
А вот как бы мне заменить стандартную форму списка справочника на ПоставщикДанных?
Код
Выбрать все
ПоставщикДанных.КонтейнерТабличногоПоля = "КонтейнерТП"; 

Не догоняю, что указать в качестве имени атрибута Печаль

есть 2 варианта Улыбка
1. пишешь все в обработке и для подбора открываешь обработку
баг - я не смог заставить эту обработку открываться 2 раза - например, подбор из 2-х разных документов. Как оказалось, у моих манагеров это востребовано
2. Пишешь тот же самый код в форме списка справочника, и скрываешь многострочную часть
как юзать ее в качестве Контейнера я не придумал, но в принципе мой вариант работает
т.е. я все отлаживаю в обработке, а потом переношу  код в форму справочника
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #599 - 26. Апреля 2010 :: 11:28
Печать  
mctoha писал(а) 26. Апреля 2010 :: 10:16:
я создаю объект "ПрямойЗапрос"
подозреваю, что соединение он будет пользовать тоже самое, что и объект "ПоставщикДанных"

ты это имеешь в виду?

Добаление:
поглядел конструктор класса ПрямойЗапрос
там присутствует вызов
Код
Выбрать все
ЗапросODBC = СоздатьОбъект("ODBCRecordSet");
 


так что наверное мимо

В твоем посте за #583 ты получаешь объект "ПрямойЗапрос" из Поставщика данных для твоего Табличного поля. Могу предположить, что когда ты, используя этот объект вызываешь свой запрос, твое Табличное поле начинает "глючить", т.к. вместо выдачи данных для твоего Табличного поля он обслуживает другой участок кода. Примера кода, когда ты делаешь, я создаю объект "ПрямойЗапрос" , я не видел.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 38 39 [40] 41 42 ... 79
ОтправитьПечать