Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Неправильно работает метод "Свернуть" в ИТЗ (число прочтений - 6643 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Неправильно работает метод "Свернуть" в ИТЗ
01. Декабря 2006 :: 14:57
Печать  
Неправильно работает метод "Свернуть" в ИТЗ при установленном инверсном фильтре. Он сворачивает, учитывает фильтр, но видит его не как инверсный, а как обычный.
Вот мой код:
Код
Выбрать все
ИТЗ.ВыбратьСтроки();
	Пока ИТЗ.ПолучитьСтроку() = 1 Цикл
		ИТЗ.Родитель = ИТЗ.Лицо.Родитель;
	КонецЦикла;

	ИТЗ.ДобавитьИндекс("Родитель","Родитель");
	ИТЗ.УстановитьФильтр(Служебный,Служебный,"Родитель",,1);

	ИТЗ.Свернуть("Лицо,Номер,КонОст,Родитель","","Родитель"); 


В итоге таблица, в которой родитель у всех = служебный
и ещё сюда втисались двы элемента с др. родителем...

Пока обошёл вот так:
Код
Выбрать все
ИТЗ.УстановитьФильтр(Служебный,Служебный,"Родитель",,1);

	БезСл = СоздатьОбъект("ИндексированнаяТаблица");
	ИТЗ.Выгрузить(БезСл,"Родитель"); 


но это же не есть гуд.

v 2.0.3.1
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #1 - 01. Декабря 2006 :: 15:00
Печать  
А зачем сворачивать и ничего при этом не суммировать?
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #2 - 01. Декабря 2006 :: 15:01
Печать  
steban писал(а) 01. Декабря 2006 :: 15:00:
А зачем сворачивать ничего при этом суммируя?

Чтобы удалить элементы, у которых родиль=Служебный
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #3 - 01. Декабря 2006 :: 15:02
Печать  
другой вопрос: а зачем удалять элементы из ИТЗ?
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #4 - 01. Декабря 2006 :: 15:03
Печать  
JohnyDeath писал(а) 01. Декабря 2006 :: 14:57:
     ИТЗ.Свернуть("Лицо,Номер,КонОст,Родитель","","Родитель"); [/code]


Цитата:
ИмяСуществующегоИндекса - тип: Стрка, Число. Если указано имя индекса, то КолонкиСвёртки игнорируются, а свёртка осуществляется по указанному индексу. В свёртке учавствуют только те строки, которые входят в фильтр.

Почему же все с таким упорством указывают как первый, так и третий параметр? Озадачен
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #5 - 01. Декабря 2006 :: 15:07
Печать  
steban писал(а) 01. Декабря 2006 :: 15:02:
другой вопрос: а зачем удалять элементы из ИТЗ?

Хоть это и не в тему, но всё же:
Чтоб потом с ней работать, устанавливая нужные мне фильтры. Я так понял, ты хочешь сказать: "Поставь этот фильтр и работай с ней как хочешь". Не прокатит, т.к. в дальнейшем мне будет нужно установить др. фильтр, ну например "Лицо". ИТЗ же не работает по двум фильтрам одновременно, т.е. вот так:
Код
Выбрать все
ВыбратьСтроки("Родитель,Лицо") 


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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #6 - 01. Декабря 2006 :: 15:09
Печать  
kms писал(а) 01. Декабря 2006 :: 15:03:
JohnyDeath писал(а) 01. Декабря 2006 :: 14:57:
     ИТЗ.Свернуть("Лицо,Номер,КонОст,Родитель","","Родитель"); [/code]


Цитата:
ИмяСуществующегоИндекса - тип: Стрка, Число. Если указано имя индекса, то КолонкиСвёртки игнорируются, а свёртка осуществляется по указанному индексу. В свёртке учавствуют только те строки, которые входят в фильтр.

Почему же все с таким упорством указывают как первый, так и третий параметр? Озадачен

Да даже и не знаю, наверное от ТЗ привычка осталась...
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #7 - 01. Декабря 2006 :: 15:11
Печать  
JohnyDeath писал(а) 01. Декабря 2006 :: 15:07:
ИТЗ же не работает по двум фильтрам одновременно

По двум индексам действительно ИТЗ не фильтрует, а по двум колонкам запросто Улыбка
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #8 - 01. Декабря 2006 :: 15:14
Печать  
правда по одной колонке инверсный а по другой простой не получится Печаль
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #9 - 01. Декабря 2006 :: 15:17
Печать  
Погодите, если вернуться к теме.

Ты хочешь удалить строки и попутно свернуть таблицу, что ли?
Ну, поставь простой фильтр, удали строки, а потом сверни целиком.

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

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #10 - 01. Декабря 2006 :: 15:27
Печать  
kms писал(а) 01. Декабря 2006 :: 15:17:
Погодите, если вернуться к теме.

Ты хочешь удалить строки и попутно свернуть таблицу, что ли?
Ну, поставь простой фильтр, удали строки, а потом сверни целиком.

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

Выход-то из этой ситуации я нашёл и написал его сразу. Но проблема-то есть или всё же её нет? Кто-нибудь подтвердит?
Про починку, я думаю ему там не много делов, т.к. остальные методы работают нормально.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #11 - 01. Декабря 2006 :: 15:30
Печать  
В качестве маааленького отступления:
с 1С++ меня познакомила именно ИТЗ, помню просто балдел от её методов и скорости, по первой вообще не было инверсного фильтра, но мне и без него было очень хорошо, хотя был очень нужен...
потом постепенно начал всасывать остальные модули 1С++, ну и как водится, влюбился...  Язык
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #12 - 01. Декабря 2006 :: 15:42
Печать  
JohnyDeath писал(а) 01. Декабря 2006 :: 14:57:
В итоге таблица, в которой родитель у всех = служебный
и ещё сюда втисались двы элемента с др. родителем...


ИМХО все правильно.
Фильтром у тебя отобраны строки где Родитель<>Служебный.
Они и участвуют в свертке. Строки где Родитель=Служебный в свертке не участвуют.
Те две строки это и есть результат свертки.
В документации не написано, что при свертке удаляются строки, не попавшие в фильтр.
Заглянул в код - там действительно при свертке удаляются только строки с повторяющимися ключами.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #13 - 01. Декабря 2006 :: 15:53
Печать  
JohnyDeath писал(а) 01. Декабря 2006 :: 14:57:
Пока обошёл вот так:
Код
Выбрать все
ИТЗ.УстановитьФильтр(Служебный,Служебный,"Родитель",,1);

	БезСл = СоздатьОбъект("ИндексированнаяТаблица");
	ИТЗ.Выгрузить(БезСл,"Родитель"); 


но это же не есть гуд.


Код
Выбрать все
ИТЗ.УстановитьФильтр(Служебный,Служебный,"Родитель");
ИТЗ.УдалитьСтроки("Родитель"); 


а вот так гуд?
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Неправильно работает метод "Свернуть" в ИТЗ
Ответ #14 - 01. Декабря 2006 :: 15:53
Печать  
steban писал(а) 01. Декабря 2006 :: 15:42:
ИМХО все правильно.

+1

В плане работы ИТЗ - действительно, все правильно.
Другое дело, что автор хотел свернуть по "Лицо,Номер,КонОст,Родитель", и удалить прочие, но эту цель нужно достигать другими средствами.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать