Имя: Пароль:
1C
1С v8
ПостроительОтчетов
0 Alpachino
 
16.04.13
11:35
Ребята, подскажите пожалуйста как в Построителе отчетов можно сделать номер п/п!? Макет написанный. Пробовал как Книга знаний: v8: Нумерация строк в запросе не помогает запрос тяжелый, да и номерацию проставляется не по порядку.
1 х86
 
16.04.13
11:36
количество строк много?
2 Alpachino
 
16.04.13
11:39
(1) Номенклатура вытягивается из рег.Хозрасчетных. А там по последовательности в разброс.
3 Skylark
 
16.04.13
11:59
А почему построитель? Это давно не модно. Делай на СКД он там сам в системных полях номер п/п предлагает.
4 бомболюк
 
16.04.13
11:59
я после формирования табличного документа делаю. при формировании вывожу в то место где нужен номер строки символ "#", а потом:

   // нумеруем строки
   к = 0;
   ОбластьПоиска = ТабличныйДокумент.Область(1,2,ТабличныйДокумент.ВысотаТаблицы,2);
   Ячейки = ТабличныйДокумент.НайтиТекст("#", , ОбластьПоиска, Ложь, Истина, Истина, Истина);
   Пока Ячейки <> Неопределено цикл
       к = к + 1;
       Ячейки.Текст = "" + к;
       Ячейки = ТабличныйДокумент.НайтиТекст("#", Ячейки, ОбластьПоиска, Ложь, Истина, Истина, Истина);
   КонецЦикла;
5 GANR
 
16.04.13
12:01
(0) Переделать на СКД - вот нормальный вариант.
6 Alpachino
 
16.04.13
12:33
(3) Я знаю что не модно. Но отчет работает отлично, времени нету все перетаскивать туда.
7 Alpachino
 
16.04.13
12:37
(4) сейчас попробую твоим методом. я так то пробовал
ПостроительОтчетаДанныеОДвиженииМТР.Вывести(ЭлементыФормы.ПолеТабличногоДокумента);

//Номер по порядку
   
НПП = 0;
Номер = 1;
Пока Номер <= ЭлементыФормы.ПолеТабличногоДокумента.ВысотаТаблицы Цикл
   

Если ЭлементыФормы.ПолеТабличногоДокумента.Область(Номер, 2, Номер,2).Текст = "" Тогда
НПП = НПП + 1;
ЭлементыФормы.ПолеТабличногоДокумента.Область(Номер, 2, Номер, 2).Текст = ""+ НПП;
 
КонецЕсли;
Номер = Номер + 1;
КонецЦикла;
Он мне определяет высоту таблицы с заголовка отчета
8 Alpachino
 
16.04.13
12:37
(5) Долго, а времени нет
9 Alpachino
 
16.04.13
13:47
(4) ОбластьПоиска = ТабличныйДокумент.Область(1,2,ТабличныйДокумент.ВысотаТаблицы,2);

1,2, ТабличныйДокумент.ВысотаТаблицы - понятно.
а 2- это что, а то не могу подогнать????????????????
10 бомболюк
 
16.04.13
14:07
номер колонки, где номера строк у меня. СП читай.
11 Ёпрст
 
16.04.13
14:16
можно и в самом запросе перенумеровать
12 Alpachino
 
16.04.13
14:16
(10)   бомболюк Благодарю.
13 Ёпрст
 
16.04.13
14:20
ВЫБРАТЬ
   Табличка1.Ссылка,
   Количество(Табличка2.Ссылка) как НумерПОПорядку
ИЗ
   (ВЫБРАТЬ
       Номенклатура.Ссылка КАК Ссылка
   ИЗ
       Справочник.Номенклатура КАК Номенклатура) КАК Табличка1
Внутреннее соединение
   (ВЫБРАТЬ
       Номенклатура.Ссылка КАК Ссылка
   ИЗ
       Справочник.Номенклатура КАК Номенклатура) КАК Табличка2 По Табличка1.Ссылка>Табличка2.Ссылка
Сгруппировать по  Табличка1.Ссылка
Упорядочить по НумерПОПорядку
14 бомболюк
 
16.04.13
14:21
(13) для больших выборок не годится, будет безбожно тормозить.
15 Alpachino
 
16.04.13
14:39
(13) Пробовал, результат не устраивает, номер не порядку проставляет.
16 Ёпрст
 
16.04.13
15:10
(15) дыу упорядочивание же есть - упорядочи наборы ДО группировки - будет быстро.
Можешь еще и во временную положить
17 GANR
 
16.04.13
16:07
(16) То есть, в таблицу значений выгрузить и сортировать? тогда уж проще в ТЗ и пронумеровать.

А как внутри запроса ДО группировки упорядочить??? Можно индексировать поля ВТ, но зачем? Ссылка - это, вроде, кластерный индекс.

По крайней мере, у меня этот запрос (~3500 нумеруемых элементов)

-----------------------------

ВЫБРАТЬ
   МойДокумент.Ссылка КАК Ссылка
ПОМЕСТИТЬ МойДокумент
ИЗ
   Документ.МойДокумент КАК МойДокумент

ИНДЕКСИРОВАТЬ ПО
   Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   МойДокумент_1.Ссылка,
   КОЛИЧЕСТВО(*) КАК НомерПоПорядку
ИЗ
   МойДокумент КАК МойДокумент_1
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ МойДокумент КАК МойДокумент_2
       ПО МойДокумент_1.Ссылка >= МойДокумент_2.Ссылка

СГРУППИРОВАТЬ ПО
   МойДокумент_1.Ссылка

УПОРЯДОЧИТЬ ПО
   НомерПоПорядку


-----------------------------
  и вот этот
-----------------------------


ВЫБРАТЬ
   МойДокумент_1.Ссылка,
   КОЛИЧЕСТВО(*) КАК НомерПоПорядку
ИЗ
   Документ.МойДокумент КАК МойДокумент_1
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.МойДокумент КАК МойДокумент_2
       ПО МойДокумент_1.Ссылка >= МойДокумент_2.Ссылка

СГРУППИРОВАТЬ ПО
   МойДокумент_1.Ссылка

УПОРЯДОЧИТЬ ПО
   НомерПоПорядку

-----------------------------

примерно одинаково медленно выполняются. Или в (16) имеется ввиду что-то другое?
18 Ёпрст
 
16.04.13
17:05
(17) дык каждый подзапрос упорядочи по наименованию, к примеру.
19 GANR
 
16.04.13
17:20
(18) Но если верить конструктору запросов, то http://ximage.ru/data/imgs/1366118369.jpg
20 GANR
 
16.04.13
17:37
+(19) Временные таблицы также нельзя упорядочивать - индексировать только
21 Ёпрст
 
16.04.13
17:44
Надо погиграться со снеговиком - лень
22 GANR
 
16.04.13
17:46
(21) Ну, в MS SQL-то можно, конечно http://www.sql-tutorial.ru/ru/book_ranking_functions.html.
23 Ёпрст
 
16.04.13
17:48
в скуле (начиная с 2005) всё делается проще - там есть row_number в over
24 GANR
 
16.04.13
17:50
(23) Да там целый комплекс функций для нумерации по порядку.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.