Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) ТП: Поставщик данных ИТ (число прочтений - 15655 )
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 записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Поставщик данных ИТ
Ответ #15 - 01. Мая 2008 :: 10:12
Печать  
Просто меняем индекс.
Особый случай - переход от обычного индекса к индексу "" (и наоборот) - я еще посмотрю, как там лучше сделать.

Да, и (на всякий случай): поставщик не простит, если в процессе работы индекс будет физически удален из ИТ.
Т.е. пока поставщик подключен и индекс у него установлен, этот индекс должен непрерывно существовать в ИТ.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Поставщик данных ИТ
Ответ #16 - 01. Мая 2008 :: 11:14
Печать  
Короче, опубликован текущий снапшот.

(current)      15:08, 1 May 2008      Kms (Talk | contribs)            463 KB      3793, OLEDB

Исправлено:
  • обновление строки при изменении фильтра
  • визуальное отображение скроллбара при переходе от неиндексированного индекса ("" без сортировки) к индексированному.

  •   

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



    Сообщений: 2537
    Местоположение: Нижний Новгород
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #17 - 01. Мая 2008 :: 12:09
    Печать  
    Получить ИТЗ от Поставщика по аналогии с ТЗ реализовать можно или мудрить с наследником? Подмигивание
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #18 - 01. Мая 2008 :: 12:14
    Печать  
    Arta писал(а) 01. Мая 2008 :: 12:09:
    Получить ИТЗ от Поставщика по аналогии с ТЗ реализовать можно или мудрить с наследником? Подмигивание

    У смысле?
    Получай как "ТП.ПоставщикДанных.ИндексированнаяТаблица".
    Оно? Или еще чего-то не хватает для полноты картины?
      

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



    Сообщений: 2537
    Местоположение: Нижний Новгород
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #19 - 01. Мая 2008 :: 12:56
    Печать  
    Вопрос снят Улыбка
      
    Наверх
     
    IP записан
     
    Arta
    1c++ power user
    Отсутствует



    Сообщений: 2537
    Местоположение: Нижний Новгород
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #20 - 01. Мая 2008 :: 22:23
    Печать  
    Сам().ВыделенныеСтроки.Количество() для ПоставщикаИТ возвращает номер последней выделенной строки, а не количество элементов в коллекции.
    Это только у меня или баг?


    Миш, кстати, этот момент как раз переплетается с этим
    А что должно попасть в коллекцию? Номера строк ИТЗ?
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #21 - 02. Мая 2008 :: 16:28
    Печать  
    Arta писал(а) 01. Мая 2008 :: 22:23:
    Сам().ВыделенныеСтроки.Количество() для ПоставщикаИТ возвращает номер последней выделенной строки, а не количество элементов в коллекции.

    Не подтверждается.

    Цитата:
    А что должно попасть в коллекцию? Номера строк ИТЗ?

    Да, номера строк.
      

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



    Сообщений: 2537
    Местоположение: Нижний Новгород
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #22 - 02. Мая 2008 :: 17:06
    Печать  
    kms писал(а) 02. Мая 2008 :: 16:28:
    Не подтверждается.

    Зуб даю Улыбка
    Пошел тест писать.
      
    Наверх
     
    IP записан
     
    JohnyDeath
    1c++ power user
    1c++ donor
    Отсутствует



    Сообщений: 3050
    Местоположение: Волгоград
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #23 - 03. Мая 2008 :: 07:53
    Печать  
    Т.к. ТП теперь может отображать несколько картинок и может принимать ИТ в качестве поставщика, разрешите немного пофантазировать.
    Реально ли сделать из ТП с поставщиком ИТ, которое было сгруппировано и имеет колонку "тзПотомки", некое дерево? Т.е. чтобы можно было сворачивать/разворачивать потомков?
      
    Наверх
     
    IP записан
     
    lustin
    1c++ power user
    Отсутствует


    1C *.*, ROR, Java - на
    этом остановимся

    Сообщений: 907
    Местоположение: Москва
    Зарегистрирован: 20. Октября 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #24 - 03. Мая 2008 :: 12:17
    Печать  
    JohnyDeath писал(а) 03. Мая 2008 :: 07:53:
    Т.к. ТП теперь может отображать несколько картинок и может принимать ИТ в качестве поставщика, разрешите немного пофантазировать.
    Реально ли сделать из ТП с поставщиком ИТ, которое было сгруппировано и имеет колонку "тзПотомки", некое дерево? Т.е. чтобы можно было сворачивать/разворачивать потомков?


    если уж фантазировать, то фантазировать -  Очень довольный - было бы классно если бы "Дерево-Таблица Олега Садовникова" передало некоторый функционал в ТабличноеПоле  Улыбка
      

    бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
    Наверх
    GTalkSkype/VoIPICQ  
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #25 - 03. Мая 2008 :: 12:47
    Печать  
    JohnyDeath писал(а) 03. Мая 2008 :: 07:53:
    Т.к. ТП теперь может отображать несколько картинок и может принимать ИТ в качестве поставщика, разрешите немного пофантазировать.
    Реально ли сделать из ТП с поставщиком ИТ, которое было сгруппировано и имеет колонку "тзПотомки", некое дерево? Т.е. чтобы можно было сворачивать/разворачивать потомков?

    Конечно, реально.
    Причем никакой дополнительной поддержки от ТП для построения дерева уже не требуется.
    Ну, разве что событие "ПриВыбореКартинки" еще должно появиться.

    lustin писал(а) 03. Мая 2008 :: 12:17:
    если уж фантазировать, то фантазировать -  Очень довольный - было бы классно если бы "Дерево-Таблица Олега Садовникова" передало некоторый функционал в ТабличноеПоле  Улыбка

    Каким образом?
    Нет, поближе к реальности, пожалуйста.
      

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



    Сообщений: 3050
    Местоположение: Волгоград
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #26 - 03. Мая 2008 :: 12:55
    Печать  
    kms писал(а) 03. Мая 2008 :: 12:47:
    Конечно, реально.
    Причем никакой дополнительной поддержки от ТП для построения дерева уже не требуется.
    Ну, разве что событие "ПриВыбореКартинки" еще должно появиться.

    Тут дело даже не в "ПриВыбореКартинки", а в возможности добавления/удаления строк в ТП.
    Например есть ИТ (уже сгруппированная):
    Цитата:
    1. Петров 500 тзПотомки
    2. Иванов 700 тзПотомки

    Я хочу "развернуть" первую строку, т.е. хочу увидеть следующее:
    Цитата:
    1. Петров 500
    --1.1 Петров 100
    --1.2 Петров 400
    2. Иванов 700


    Сейчас, кроме как выгрузки в какую-нибудь временную ТЗ/ИТЗ, я не представляю себе как это можно сделать...
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #27 - 03. Мая 2008 :: 13:16
    Печать  
    Ну, надо подумать, можно ли положить логику дерева на один специально составленный индекс и плоскую таблицу.
    Я подумаю чуть позже, если никто раньше не сделает.
      

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



    Сообщений: 622
    Зарегистрирован: 19. Ноября 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #28 - 03. Мая 2008 :: 17:37
    Печать  
    kms писал(а) 03. Мая 2008 :: 13:16:
    Ну, надо подумать, можно ли положить логику дерева на один специально составленный индекс и плоскую таблицу.
    Я подумаю чуть позже, если никто раньше не сделает.


    Именно это сделал, +нормальная сортировка(с учетом вложенности групп):

    PVR писал(а) 30. Марта 2008 :: 16:30:
    по http://www.1cpp.ru/forum/YaBB.pl?num=1206094105/17#17

    реальный код где это используется класс "ТПОтчетДерево.ert"

    хочется довести все минусы класса до +++

    Собираюсь переделать полностью на ИТ (без промежуточной ТЗ), +добавить фильтры
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #29 - 03. Мая 2008 :: 20:49
    Печать  
    PVR писал(а) 03. Мая 2008 :: 17:37:
    Собираюсь переделать полностью на ИТ (без промежуточной ТЗ), +добавить фильтры

    ОК, всецело поддерживаю. Улыбка
      

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



    Сообщений: 622
    Зарегистрирован: 19. Ноября 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #30 - 04. Мая 2008 :: 12:20
    Печать  
    Подскажите пожалуйста, в ИТ оптимизировано по памяти хранение одинаковых значений?
    Например:
    Две колонки Контрагент, Номенклатура
    строки
    1 Пупкин, Пиво
    2 Пупкин, Вино
    3 Пупкин, Водка
    В каждой строке Справочник=Пупкин много Байт, или Ссылка 4-8 Байта?
    И если не оптимизировано, то планируется что-то в этом направлении?
      
    Наверх
     
    IP записан
     
    JohnyDeath
    1c++ power user
    1c++ donor
    Отсутствует



    Сообщений: 3050
    Местоположение: Волгоград
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #31 - 08. Мая 2008 :: 07:52
    Печать  
    Если поставщик - ИТ, то не работает:
    Код
    Выбрать все
    тпНаФорме.НачальноеПредставление=0; 
    
    

    т.е. при первом отображении текущей строкой всегда является последняя.
    На всякий пожарный: http://www.1cpp.ru/bugs/show_bug.cgi?id=3827
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #32 - 08. Мая 2008 :: 08:15
    Печать  
    JohnyDeath писал(а) 08. Мая 2008 :: 07:52:
    Если поставщик - ИТ, то не работает:
    Код
    Выбрать все
    тпНаФорме.НачальноеПредставление=0; 
    
    

    т.е. при первом отображении текущей строкой всегда является последняя.
    На всякий пожарный: http://www.1cpp.ru/bugs/show_bug.cgi?id=3827

    Я знал, что это вызовет вопросы. Но это не баг, это фича такая Улыбка

    При установке поставщика ТП позиционируется на текущую строку ИТ с учетом активного индекса.
    Поэтому ДО установки поставщика надо сделать
    Код
    Выбрать все
    ит.ВНачало();
     
    
    

    Либо можно точно также на любую другую строку.

    А вот что такое
    Цитата:
    тпНаФорме.НачальноеПредставление=0;

    не понятно.
    Я вроде такого свойства не делал. Озадачен
      

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


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #33 - 08. Мая 2008 :: 08:17
    Печать  
    Хм.
    Документацию на "НачальноеПредставление" нашел.
    Ну и ну.
      

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



    Сообщений: 3050
    Местоположение: Волгоград
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #34 - 08. Мая 2008 :: 08:49
    Печать  
    kms писал(а) 08. Мая 2008 :: 08:17:
    Хм.
    Документацию на "НачальноеПредставление" нашел.
    Ну и ну.

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


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #35 - 08. Мая 2008 :: 09:55
    Печать  
    Это значит, что все работает ровно так, как я задумал.
    Но во избежание дальнейших недоразумений, поведение пришлось изменить.

    (*) обновление ТП отключено для момента установки поставщика

    Changed files:
    icpp/Source/CursorGrid/VTExtProvider.cpp,1.3

    ===
    Отключена привязка к текущей строке индекса при установке поставщика.
    Для обновления ТП в дальнейшем требуется явный вызов

    ТП.ОбновитьСтроки()

    или установка свойства

    ТП.ТекущаяСтрока

    Будет в следующем снапшоте icpp/3.0.
      

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



    Сообщений: 3050
    Местоположение: Волгоград
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #36 - 08. Мая 2008 :: 10:07
    Печать  
    kms писал(а) 08. Мая 2008 :: 09:55:

    (*) обновление ТП отключено для момента установки поставщика


    Печаль Я так понимаю - это действует не только для поставщика ИТ? Просто у меня много мест, где провайдером является ТЗ и там я не делал ни обновитьСтроки() ни "текущаяСтрока". Переписывать?
    А вообще зачем ты отключил эту фичу? И без этого можно было написать:
    Код
    Выбрать все
    ТП.ТекущаяСтрока = 1 
    
    
    и всё было бы хорошо...

    Нельзя ли сделать просто в зависимости от значения свойства "НачальноеПредставление" (для поставщика ИТ) делать либо Поставщик.ИТ.ВНачало(), либо Поставщик.ИТ.ВКонец() ?
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #37 - 08. Мая 2008 :: 10:15
    Печать  
    JohnyDeath писал(а) 08. Мая 2008 :: 10:07:
    Я так понимаю - это действует не только для поставщика ИТ? Просто у меня много мест, где провайдером является ТЗ и там я не делал ни обновитьСтроки() ни "текущаяСтрока". Переписывать?

    Не волнуйся, с поставщиком ТЗ это никак не связано.
    Переделывать не придется.

    Такое поведение как будет в поставщике ИТ, кстати, реализовано также для поставщика ODBC.
    Логика в том, что я хочу иметь возможность спозиционироваться на конкретную строку за одно обновление, а не за два.
      

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



    Сообщений: 3050
    Местоположение: Волгоград
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #38 - 08. Мая 2008 :: 10:25
    Печать  
    фууух.. это радует, а то я уж испугался...  Улыбка
    А с "НачальнымПредставлением" что? Оно на ТП с ИТ никак не влияет?
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #39 - 08. Мая 2008 :: 11:00
    Печать  
    JohnyDeath писал(а) 08. Мая 2008 :: 10:25:
    фууух.. это радует, а то я уж испугался...  Улыбка
    А с "НачальнымПредставлением" что? Оно на ТП с ИТ никак не влияет?

    С этим тоже все нормально будет Улыбка
    После последнего вливания будет влияние.
      

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


    I Love YaBB 2!

    Сообщений: 9
    Зарегистрирован: 24. Октября 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #40 - 15. Мая 2008 :: 21:13
    Печать  
    Здраствуйте. Можно ли выполнить сортировку не по индексу т.е. например ставлю фильтр по дате приема в ИТ, он по ней и сортирует в ТП, а хотелось бы сортировать по любой колонке не учитывая фильтр. Это можно добиться?
      
    Наверх
     
    IP записан
     
    Arta
    1c++ power user
    Отсутствует



    Сообщений: 2537
    Местоположение: Нижний Новгород
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #41 - 15. Мая 2008 :: 21:18
    Печать  
    Наверное следует сделать составной индекс (ДатаПриема,ДругаяКолонка) и передавать его ТП.
      
    Наверх
     
    IP записан
     
    mdocs
    YaBB Newbies
    *
    Отсутствует


    I Love YaBB 2!

    Сообщений: 9
    Зарегистрирован: 24. Октября 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #42 - 16. Мая 2008 :: 13:40
    Печать  
    Скажем так есть практическая "хотелка" - загнать в ИТ справочник сотрудники и дать возможность пользователю отбора по многим реквизитам, например по дате приема, при этом всегда желательная сортировка по наименованию независимо от установленного отбора. Дабавив Наименование в составной индекс я установлю отбор и по нему, а мне этого не надо, нужна только сортировка Печаль
    Если я правильно понимая, нужен метод аналогичный УстКлючПорядка().
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #43 - 16. Мая 2008 :: 13:53
    Печать  
    mdocs писал(а) 16. Мая 2008 :: 13:40:
    Если я правильно понимая, нужен метод аналогичный УстКлючПорядка().

    Не нужен.

    Когда пользователь определится, по каким полям он будет фильтровать, ты создаешь индекс по данным полям отбора плюс поля сортировки ("Наименование" в данном случае).
    Далее накладываешь фильтр методом "Подмножество" на поля отбора.
    Все.
      

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


    I Love YaBB 2!

    Сообщений: 9
    Зарегистрирован: 24. Октября 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #44 - 16. Мая 2008 :: 16:31
    Печать  
    kms писал(а) 16. Мая 2008 :: 13:53:
    Когда пользователь определится, по каким полям он будет фильтровать, ты создаешь индекс по данным полям отбора плюс поля сортировки ("Наименование" в данном случае).
    Далее накладываешь фильтр методом "Подмножество" на поля отбора.
    Все.

    Опять же для сортировки наименование должно идти в индексе первым? Пропустить установку индекса по этому полю методом Подмножество() уже не получится. А нельзя чтобы Сортировать() в ПостащикеДанных работало?
      
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


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

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #45 - 16. Мая 2008 :: 17:24
    Печать  
    mdocs писал(а) 16. Мая 2008 :: 16:31:
    Опять же для сортировки наименование должно идти в индексе первым? Пропустить установку индекса по этому полю методом Подмножество() уже не получится. А нельзя чтобы Сортировать() в ПостащикеДанных работало?

    Ну я же четко написал - наименование идет первым ПОСЛЕ полей фильтра.

    +
    Ну, если это кажется сложновато  - можно вообще в два этапа сделать.
    Выгружаешь отфильтрованные данные из исходной ИТЗ во временную ИТЗ (или ТЗ), сортируешь - и телемаркет.
      

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


    I Love YaBB 2!

    Сообщений: 9
    Зарегистрирован: 24. Октября 2006
    Re: ТП: Поставщик данных ИТ
    Ответ #46 - 16. Мая 2008 :: 19:40
    Печать  
    kms писал(а) 16. Мая 2008 :: 17:24:
    Ну я же четко написал - наименование идет первым ПОСЛЕ полей фильтра.

    +
    Ну, если это кажется сложновато  - можно вообще в два этапа сделать.
    Выгружаешь отфильтрованные данные из исходной ИТЗ во временную ИТЗ (или ТЗ), сортируешь - и телемаркет.

    Спасибо, вторым способом получилось.
      
    Наверх
     
    IP записан
     
    vandalsvq
    1c++ power user
    Отсутствует


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

    Сообщений: 2487
    Местоположение: Уфа
    Зарегистрирован: 18. Июля 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #47 - 22. Июля 2008 :: 03:36
    Печать  
    Короче кто прочитал.. простите что смутил народ, я сам ступил, каждый раз обнулял данные на кой черт не помню... в общем приношу извинения за дезинформацию
    « Последняя редакция: 22. Июля 2008 :: 04:42 - vandalsvq »  

    _test.ert ( 13 KB | Загрузки )

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


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

    Сообщений: 2487
    Местоположение: Уфа
    Зарегистрирован: 18. Июля 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #48 - 02. Сентября 2008 :: 05:08
    Печать  
    Михаил, у меня тут это... ну идея есть... хочу обсудить.

    В связи с возможностью использовать ИТЗ в качестве поставщика данных очень не хватает возможности добавлять строки в определенное место, а не только в конец таблицы.
    Может я что-то не вижу (хотя только что перечитал всю документацию и поиском пробежался малость) но не нашел такого способа.
    В свете предложения видиться такая реализация, в метод "НоваяСтрока" добавить возможность указывать номер создаваемой строки.

    Пы.Сы. кстати иногда хочется после ИТЗ.НомерСтроки = 10 чтобы метод "СледующаяСтрока()" уже шел на 11-ю и т.д. строку, а "ПредыдущаяСтрока()" 9-ю и т.д... т.к. иногда надо бы пробежаться по строкам с определенной позиции вверх или вниз.
    Буду премного благодарен при рассмотрении моих просьб.
      

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



    Сообщений: 622
    Зарегистрирован: 19. Ноября 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #49 - 02. Сентября 2008 :: 05:21
    Печать  
    Это противоречит идеологии ИТ, таблица никогда не меняется, изменения только в индексе Печаль
      
    Наверх
     
    IP записан
     
    vandalsvq
    1c++ power user
    Отсутствует


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

    Сообщений: 2487
    Местоположение: Уфа
    Зарегистрирован: 18. Июля 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #50 - 02. Сентября 2008 :: 05:28
    Печать  
    PVR писал(а) 02. Сентября 2008 :: 05:21:
    Это противоречит идеологии ИТ, таблица никогда не меняется, изменения только в индексе Печаль


    Однако последнее слово за разработчиками.  Класс
      

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



    Сообщений: 1599
    Местоположение: г.Новокузнецк
    Зарегистрирован: 21. Февраля 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #51 - 02. Сентября 2008 :: 05:33
    Печать  
    vandalsvq писал(а) 02. Сентября 2008 :: 05:08:
    Михаил, у меня тут это... ну идея есть... хочу обсудить.

    В связи с возможностью использовать ИТЗ в качестве поставщика данных очень не хватает возможности добавлять строки в определенное место, а не только в конец таблицы.
    Может я что-то не вижу (хотя только что перечитал всю документацию и поиском пробежался малость) но не нашел такого способа.
    В свете предложения видиться такая реализация, в метод "НоваяСтрока" добавить возможность указывать номер создаваемой строки.

    Пы.Сы. кстати иногда хочется после ИТЗ.НомерСтроки = 10 чтобы метод "СледующаяСтрока()" уже шел на 11-ю и т.д. строку, а "ПредыдущаяСтрока()" 9-ю и т.д... т.к. иногда надо бы пробежаться по строкам с определенной позиции вверх или вниз.
    Буду премного благодарен при рассмотрении моих просьб.


    Так нумеруй их сам и заведи индекс по этому полю. А вставка в любое месть для ИТ по моему лишнее.
      
    Наверх
    ICQ  
    IP записан
     
    vandalsvq
    1c++ power user
    Отсутствует


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

    Сообщений: 2487
    Местоположение: Уфа
    Зарегистрирован: 18. Июля 2007
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #52 - 02. Сентября 2008 :: 06:56
    Печать  
    Nick писал(а) 02. Сентября 2008 :: 05:33:
    Так нумеруй их сам и заведи индекс по этому полю. А вставка в любое месть для ИТ по моему лишнее.


    Я позицию понял.
    Догадывался что в отсутствии такой возможности есть глубинный смысл  Очень довольный
      

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


    1C++ rocks!

    Сообщений: 44
    Зарегистрирован: 03. Июня 2022
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #53 - 05. Июля 2024 :: 12:39
    Печать  
    Здравствуйте!

    Подскажите, как правильно обновить ТП?

    Есть ТП + ПоставщикДанныхИТ + ИТ.
    В цикле в ИТ добавляются строки.

    Нужно сделать, чтобы после добавления каждой новой строки в ИТ, ТП обновилось и показало эту последнюю строку.
    Какие методы каких объектов для этого нужно вызвать?

    Сейчас у меня сделано просто вот так:
    [code c++]

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

    [/code]

    Вроде работает, но интерфейс сильно "дергается" при этом.
    Можно ли это сделать как-то по другому, чтобы было меньше "дерганий"?

      
    Наверх
     
    IP записан
     
    Arbuz
    Junior Member
    **
    Отсутствует


    1C++ rocks!

    Сообщений: 65
    Зарегистрирован: 06. Февраля 2019
    Re: ТП: Поставщик данных ИТ
    Ответ #54 - 09. Июля 2024 :: 12:24
    Печать  
    [quote author=39262F262D33312C24430 link=1209592007/53#53 date=1720183148]
    Вроде работает, но интерфейс сильно "дергается" при этом.
    Можно ли это сделать как-то по другому, чтобы было меньше "дерганий"?

    [/quote]

    чтобы было меньше "дерганий" не надо вызывать ОбновитьСтроки() в цикле. Это неверно. ОбновитьСтроки() должно стоять вне цикла. Если процесс заполнения [b]сильно длительный[/b] и ты хочешь видеть процесс заполнения, то перед циклом запускай таймер и им делай ОбновитьСтроки(), но не быстрее чем 150-250 мс (зависит от тяжести ТП, скорости компа, etc). Ну, или просто обновляй не на каждую итерацию цикла.
      
    Наверх
     
    IP записан
     
    zelenprog
    Junior Member
    **
    Отсутствует


    1C++ rocks!

    Сообщений: 44
    Зарегистрирован: 03. Июня 2022
    Пол: Мужской
    Re: ТП: Поставщик данных ИТ
    Ответ #55 - 11. Июля 2024 :: 06:01
    Печать  
    [quote author=695A4A5D52280 link=1209592007/54#54 date=1720527877]
    чтобы было меньше "дерганий" не надо вызывать ОбновитьСтроки() в цикле...
    [/quote]

    Идею понял, спасибо.

    Непосредственно добавление и заполнение строки выполняется быстро - по сути это время выполнения метода ИТ.НоваяСтрока().
    А вот "вычисление" нужных значений перед заполнением строки может выполняться  от долей секунды до нескольких секунд. Поэтому была мысль сделать отображение каждой строки.

    Пока ждал здесь ответа, этот вопрос обсудили на Мисте:
    https://forum.mista.ru/topic/894401

    Оказалось, что мелькание происходит при включенном вертикальном скроллбаре.
    Если при создании ТП у него включается "ВертСкроллер = 1":
    [code c++]
         мТабличноеПоле = мФорма.СоздатьЭлементУправления("ТабличноеПоле", "дКнТабличноеПоле");
         мТабличноеПоле.ВертСкроллер = 1;
    [/code]
    « Последняя редакция: 12. Июля 2024 :: 05:41 - zelenprog »  
    Наверх
     
    IP записан
     
    Arbuz
    Junior Member
    **
    Отсутствует


    1C++ rocks!

    Сообщений: 65
    Зарегистрирован: 06. Февраля 2019
    Re: ТП: Поставщик данных ИТ
    Ответ #56 - 11. Июля 2024 :: 11:16
    Печать  
    Да, я читал там и примеры запускал. Действительно, при включённом скроллбаре пока не заполнится вся видимая область ТП, ёё дёргает, даже на таймере — я проверил.
      
    Наверх
     
    IP записан
     
    Переключение на Главную Страницу Страницы: [1] 
    ОтправитьПечать