Переключение на Главную Страницу Страницы: 1 2 3 [4]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ускорение работы документа с большой ТЗ при помощи 1С++ (число прочтений - 11219 )
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #45 - 29. Августа 2010 :: 17:31
Печать  
ev-kov писал(а) 23. Августа 2010 :: 14:35:
(0) А почему не делаете вместо одного документа с кол-вом строк в тч 25000 например 50 доков с 500 строками ?


возни много, чтобы все это заработало
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #46 - 29. Августа 2010 :: 17:42
Печать  
А как в табличном поле вывести колонку с порядковым номером строки моей индексированной таблицы, которая содержит строки документа?

Я сделал так:

Код
Выбрать все
	мТабличноеПолеСоответствие = оФорма.СоздатьЭлементУправления("ТабличноеПоле", Форма.дТабСоответствие);

	лКолонки = мТабличноеПолеСоответствие.Колонки;

	лКол = лКолонки.Добавить("НомерСтроки");
	лКол.Данные = "НомерСтроки";
	лКол.Заголовок = "№";
	лКол.Ширина = 10;
 



Но получилось не совсем корректно.

При первом заполнении ИТ номера строк правильные, но после выполнения какой-либо сортировки, порядок строк ИТ меняется, но реквизит ИТ "НомерСтроки" не меняется. И получается в первой строке в колонке "НомерСтроки" выводится число, например, "2134".

Как это побороть?
  
Наверх
ICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #47 - 30. Августа 2010 :: 19:43
Печать  
А почему бы вообще не отказаться от документа и сделать своими двумя табличками? Выгоды сразу две: 1- проведение и запись документа на блокирует _1SJOURN, 2 - создаешь индексы по своему вкусу.
  
Наверх
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #48 - 31. Августа 2010 :: 09:52
Печать  
pvase писал(а) 30. Августа 2010 :: 19:43:
А почему бы вообще не отказаться от документа и сделать своими двумя табличками? Выгоды сразу две: 1- проведение и запись документа на блокирует _1SJOURN, 2 - создаешь индексы по своему вкусу.


1) и 2) пункты для меня в данный момент не являются критичными, про это вообще даже не было мыслей,

а вот документ дает некоторые преимущества
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #49 - 31. Августа 2010 :: 09:53
Печать  
Вообще-то все сейчас работает в том виде как описывалось.
По скорости - приемлемо.
Осталась одна проблема с нумерацией строк в табличном поле
  
Наверх
ICQ  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #50 - 31. Августа 2010 :: 12:05
Печать  
es3000 писал(а) 31. Августа 2010 :: 09:53:
Вообще-то все сейчас работает в том виде как описывалось.
По скорости - приемлемо.
Осталась одна проблема с нумерацией строк в табличном поле

Варианты:
1. Не создавай колонку с номером строки, а в событии "ПриВыводеСтроки" выводи номер в ячейку
Яч.Текст = ИТЗ.НомерСтроки("_ИндексТекущейСортировки_");
2. При наложении сортировки - перенумеровывай Индексированную таблицу, удобно через "ЗаполнитьКолонкуПоАлгоритму" http://www.1cpp.ru/bugs/show_bug.cgi?id=3813
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #51 - 01. Сентября 2010 :: 13:16
Печать  
Salimbek писал(а) 31. Августа 2010 :: 12:05:
es3000 писал(а) 31. Августа 2010 :: 09:53:
Вообще-то все сейчас работает в том виде как описывалось.
По скорости - приемлемо.
Осталась одна проблема с нумерацией строк в табличном поле


Варианты:
1. Не создавай колонку с номером строки, а в событии "ПриВыводеСтроки" выводи номер в ячейку
Яч.Текст = ИТЗ.НомерСтроки("_ИндексТекущейСортировки_");
2. При наложении сортировки - перенумеровывай Индексированную таблицу, удобно через "ЗаполнитьКолонкуПоАлгоритму" http://www.1cpp.ru/bugs/show_bug.cgi?id=3813


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

Кроме того номер строки нужен при записи в SQL-таблицу в поле lineno_

2. с этим понятно, попробую
  
Наверх
ICQ  
IP записан
 
viddik
Junior Member
**
Отсутствует



Сообщений: 37
Зарегистрирован: 22. Октября 2008
Пол: Мужской
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #52 - 02. Сентября 2010 :: 23:41
Печать  
es3000 писал(а) 01. Сентября 2010 :: 13:16:
1. Так ведь я сортирую ИТ командой "Сортировать". То есть индекса никакого нету.

В доке написано:
Таблица всегда имеет 1 индекс (в дальнейшем будем называть его "основной индекс"), который нельзя удалить. Номер этого индекса - 1, имя - "" (пустая строка). Если в операциях, использующих индекс, не указано имя индекса, то используется основной индекс.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #53 - 03. Сентября 2010 :: 11:06
Печать  
es3000 писал(а) 01. Сентября 2010 :: 13:16:
1. Так ведь я сортирую ИТ командой "Сортировать". То есть индекса никакого нету. По идее ИТ.НомерСтроки должен совпадать  с реальным физическим номером строки. А он не совпадает.
Поэтому я думаю, что ИТЗ.НомерСтроки("") также выведет какой-нибудь неправлиьный номер.

Кроме того номер строки нужен при записи в SQL-таблицу в поле lineno_

2. с этим понятно, попробую


Ага, первый вариант не сработает, а второй выдаст ошибку, т.к. такой колонки "НомерСтроки" нет. Таким образом остается лишь создание собственной колонки и заполнение ее по алгоритму. Пример прикладываю.
  

_1_.ert ( 29 KB | Загрузки )
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #54 - 06. Сентября 2010 :: 12:52
Печать  
Посмотрел, идея понятна, спасибо.
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #55 - 06. Сентября 2010 :: 12:52
Печать  
А почему не правильно работает НомерСтроки("")?
Это баг?
  
Наверх
ICQ  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Ускорение работы документа с большой ТЗ при помощи 1С++
Ответ #56 - 06. Сентября 2010 :: 13:24
Печать  
es3000 писал(а) 06. Сентября 2010 :: 12:52:
А почему не правильно работает НомерСтроки("")?
Это баг?

Похоже на то, все же ожидается, что после "Сортировать" - номера строк будут по порядку Улыбка
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 
ОтправитьПечать