Переключение на Главную Страницу Страницы: [1] 2 3 4 ОтправитьПечать
Очень популярная тема (более 25 ответов) ТП: Поставщик данных ИТ (число прочтений - 15427 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
ТП: Поставщик данных ИТ
30. Апреля 2008 :: 21:46
Печать  
Даешь праздничный релиз по случаю 1 Мая!

Добавлено в icpp/3.0

[+] Поставщик данных ИТ
[bug 3793]


Драфт документации:

Имя объекта:

ПоставщикДанныхИТ / VTExtProvider

Свойства:

- ИндексированнаяТаблица / IndexedTable; тип: ИндексированнаяТаблица
- Индекс / Index; тип: Строка, Число


Отображает данные ИТ в табличном поле с учетом индекса и фильтра (если установлен).
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #1 - 30. Апреля 2008 :: 22:16
Печать  
Фигасе подарочек выпал. Пару часов назад сидел и думал, как бы так в форуме намекнуть что прям жить не могу без такого провайдера, и тут на тебе. Миша, ты телепат? Подмигивание
Пошел отмечать сие событие...


P.S. На том же месте? Или завтра соберется?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Поставщик данных ИТ
Ответ #2 - 30. Апреля 2008 :: 22:20
Печать  
  

De quelle planète es-tu?
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #3 - 01. Мая 2008 :: 07:13
Печать  
Давно народ ждал этого! Спасибо!

Нарвался на непонятный и неприятный момент. Что делаю:
1. Создаю ИТ, содержащей 2 колонки: "Элемент" и "Родитель". На форме есть списокЗначений ("спГрупп"), куда выгружаются все группы:
Код
Выбрать все
Перем тпНаФорме;//:ТабличноеПоле
//*******************************************
Процедура СоздатьТП()
	итРезультат=СоздатьОбъект("ИндексированнаяТаблица");
	БД=СоздатьОбъект("OLEDBData");
	Каталог=?(Прав(КаталогИБ(), 1)= "\", Лев(КаталогИБ(), СтрДлина(КаталогИБ())-1), КаталогИБ());
	СтрокаСоединения="Provider=VFPOLEDB.1;Deleted=Yes;Data Source="+Каталог+";Mode=ReadWrite;Collating Sequence=Machine;";;
	Рез=БД.Соединение(СтрокаСоединения);
	Запрос=БД.СоздатьКоманду();

	ТекстЗапроса="
	|SELECT Спр.ID as [Элемент $Справочник.Контрагенты]
	|	,Род.ID as [Родитель $Справочник.Контрагенты]
	|FROM $Справочник.Контрагенты as Спр
	|LEFT JOIN $Справочник.Контрагенты as Род ON Род.ID=Спр.ParentID
	|";
	итРезультат.Загрузить(Запрос.ВыполнитьИнструкцию(ТекстЗапроса));
	итРезультат.ДобавитьИндекс("Родитель","Родитель");
	итРезультат.Выгрузить(спГрупп, "Родитель", "Родитель", 1);

	Поставщик=СоздатьОбъект("ПоставщикДанныхИТ");
	Поставщик.ИндексированнаяТаблица=итРезультат;
	тпНаФорме.ПоставщикДанных=Поставщик;

	Колонка=тпНаФорме.Колонки.Добавить("Элемент");
	Колонка.Данные = "Элемент";
	Колонка=тпНаФорме.Колонки.Добавить("Родитель");
	Колонка.Данные = "Родитель";
КонецПроцедуры	// СоздатьТП 


2. Хочу, чтобы ТП менялось при выьоре группы из списка. Пишу:
Код
Выбрать все
Процедура ПриВыбореРодителя()
	ТекРодитель=спГрупп.ПолучитьЗначение(спГрупп.ТекущаяСтрока());
	тпНаФорме.ПоставщикДанных.ИндексированнаяТаблица.УстановитьФильтр(ТекРодитель, ТекРодитель, "Родитель");
	тпНаФорме.ПоставщикДанных.Индекс="Родитель";
	тпНаФорме.ОбновитьСтроки();
КонецПроцедуры	// ПриВыбореРодителя 


Вроде бы всё нормально, НО при последующем выборе первый видимый элемент не перерисовывается. Т.е. была группа "Физ.лица" с первым элементом "Иванов", выбираем из списка групп "Юр.Лица", - всё поменялось кроме первого элемента, который так и остался = "Иванов". Если прокрутить вниз, а потом обратно вверх, то всё становится на свои места.  Печаль

Если кому-то лень делать тест, прикладываю здесь.
  

testProvIVT.ert ( 78 KB | Загрузки )
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #4 - 01. Мая 2008 :: 07:53
Печать  
kms писал(а) 30. Апреля 2008 :: 21:46:
Даешь праздничный релиз по случаю 1 Мая!

Первое мая - день ИТ!  Очень довольный
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #5 - 01. Мая 2008 :: 08:11
Печать  
kms

Дождались, СПАСИБО!
Очень довольный
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #6 - 01. Мая 2008 :: 08:12
Печать  
JohnyDeath писал(а) 01. Мая 2008 :: 07:13:
Вроде бы всё нормально, НО при последующем выборе первый видимый элемент не перерисовывается. Т.е. была группа "Физ.лица" с первым элементом "Иванов", выбираем из списка групп "Юр.Лица", - всё поменялось кроме первого элемента, который так и остался = "Иванов". Если прокрутить вниз, а потом обратно вверх, то всё становится на свои места.  Печаль

Если кому-то лень делать тест, прикладываю здесь.


У меня вроде все нормально.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #7 - 01. Мая 2008 :: 08:43
Печать  
Привиду пример как всё это происходит у меня.
1. Заполняем ИТ
2. Устанавливаем фмльтр по "Родителю" = "Юр лица":
  

2_001.jpg ( 52 KB | Загрузки )
2_001.jpg
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #8 - 01. Мая 2008 :: 08:44
Печать  
3. Устанавливаем фильтр = "Физ лица". Видим:
  

3.jpg ( 55 KB | Загрузки )
3.jpg
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #9 - 01. Мая 2008 :: 08:46
Печать  
4. Прокручиваем ПОДАЛЬШЕ вниз, и возвращаемс обратно:
  

4.jpg ( 60 KB | Загрузки )
4.jpg
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Поставщик данных ИТ
Ответ #10 - 01. Мая 2008 :: 09:03
Печать  
Зачотные картинки. Очень довольный

У меня тоже все нормально, хотя понятно, что тебя это не особо порадует.
Значит, надо искать причину дальше.
М.б. не контрагентов, а какой-то фиксированный набор данных удастся подобрать, чтобы было воспроизводимо.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #11 - 01. Мая 2008 :: 09:06
Печать  
PVR писал(а) 01. Мая 2008 :: 08:12:
JohnyDeath писал(а) 01. Мая 2008 :: 07:13:
Вроде бы всё нормально, НО при последующем выборе первый видимый элемент не перерисовывается. Т.е. была группа "Физ.лица" с первым элементом "Иванов", выбираем из списка групп "Юр.Лица", - всё поменялось кроме первого элемента, который так и остался = "Иванов". Если прокрутить вниз, а потом обратно вверх, то всё становится на свои места.  Печаль

Если кому-то лень делать тест, прикладываю здесь.


У меня вроде все нормально.

Проверял на версии от Uzhast все ОК,
на версии от kms подтверждаю баг.

В тесте заменял:
    итРезультат.Загрузить(Запрос.ВыполнитьИнструкцию(ТекстЗапроса));
на      
    Запрос.ВыполнитьИнструкцию(ТекстЗапроса,итРезультат);
для версии от Uzhast

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Поставщик данных ИТ
Ответ #12 - 01. Мая 2008 :: 09:09
Печать  
PVR писал(а) 01. Мая 2008 :: 09:06:
Проверял на версии от Uzhast все ОК,
на версии от kms подтверждаю баг.

А. Вот в чем дело.

Я эту фигню вчера уже починил, только было это в 4 утра, так что в снапшот не попало.
Но в CVS оно есть и Uzhast собрал последний вариант.

JohnyDeath

Короче, Жень, бери сборку Uzhast'a - а в следующем официальном снапшоте это уже будет включено.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Поставщик данных ИТ
Ответ #13 - 01. Мая 2008 :: 09:25
Печать  
JohnyDeath

Да, и не надо индекс каждый раз переставлять.
Достаточно изменить фильтр и обновить строки.

Кроме того, желательно ставить индекс ДО подключения поставщика к ТП.
В этом случае поведение вертикального скроллбара четко фиксировано.
В зависимости от типа индекса поведение будет разное.

Как-то так должно быть:
Создание:
Код
Выбрать все
	Поставщик=СоздатьОбъект("ПоставщикДанныхИТ");
	Поставщик.ИндексированнаяТаблица=итРезультат;
	Поставщик.Индекс="Родитель";
	тпНаФорме.ПоставщикДанных=Поставщик;
 



Фильтрация:
Код
Выбрать все
	ТекРодитель=спГрупп.ПолучитьЗначение(спГрупп.ТекущаяСтрока());
	тпНаФорме.ПоставщикДанных.ИндексированнаяТаблица.УстановитьФильтр(ТекРодитель, ТекРодитель, "Родитель");
	тпНаФорме.ОбновитьСтроки();
 


  

De quelle planète es-tu?
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Поставщик данных ИТ
Ответ #14 - 01. Мая 2008 :: 09:34
Печать  
kms писал(а) 01. Мая 2008 :: 09:25:
Кроме того, желательно ставить индекс ДО подключения поставщика к ТП.
В этом случае поведение вертикального скроллбара четко фиксировано.
В зависимости от типа индекса поведение будет разное.

А если я хочу изменит индекс, т.е. отображаемые данные, то как лучше делать, так:
1) Обнуляем поставщика, устанавливаем индекс поставщика, устанавливаем поставщика в ТП
или так:
2) Просто меняем индекс поставщика

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 4
ОтправитьПечать