Коллеги, добрый день!

Формируем печатную формы сметы. Отображаем в смете продукты. При выводе на печать строки с продуктами в смете нужно пронумеровать.

Подскажите кто как решает вопрос нумерации строк в табличной части при ее выводе на печать?

Добавлять на деталь порядковый номер уж как то совсем костыль)). 

Спасибо!

Нравится

4 комментария

В печатных формах MS Word порядковый номер строки в таблице можно сделать средствами самого ворда:

https://support.office.com/ru-ru/article/Нумерация-ячеек-в-таблице-в-wo…

 Достаточно сделать для строки с продуктом в шаблоне и дальше оно само.

 

Елена, здравствуйте!

На стороне bpm'online такой возможности нет (зафиксировали пожелание).

Как вариант Вы можете настроить нумерацию прям в шаблоне Word. Алгоритм следующий:

- настраиваете табличную часть;

- в колонке ставите курсор и выбираете режим "Numbering" - http://prntscr.com/jmeujc. В результате должен появиться номер.

- проверяете, что нумерация работает - http://prntscr.com/jmeuoo и http://prntscr.com/jmew6d (необходимо курсор поставиь за пределы таблицы и нажать Enter);

- сохраняете шаблон.

Вильшанский Дмитрий,

Дмитрий, спасибо! Будем пробовать).

 

Борис Леонов, Борис, спасибо!  ))

 

Борис Леонов,

Борис Леонов,

Борис Леонов,

Борис Леонов пишет:

В печатных формах MS Word порядковый номер строки в таблице можно сделать средствами самого ворда:

https://support.office.com/ru-ru/article/Нумерация-ячеек-в-таблице-в-wo…

 Достаточно сделать для строки с продуктом в шаблоне и дальше оно само.

Борис Леонов,

Показать все комментарии

Возможно ли сделать нумерацию строк в реестре?

Возможно ли сделать нумерацию строк в каждом реестре BPM (разделы, детали)?

Пишу сюда в надежде на помощь ибо нет даже предположений как это сделать(

Нравится

5 комментариев

А вам нужна именно нумерация строк или записей?

Второе решается более-менее стандартными методами, а цель первого не совсем понятна

Владимир Соколов,

именно строк, меняем сортировку, фильтры - нумерация та самая - 1,2,3,4. Многие цели клиентов нам не понятны...

Добрый день, Виталий!

Самый простой способ сделать это в разделе - это заместить обьект и добавить к нему целочисленное поле, в котором динамически проставлять нумерацию. Можно сделать и добавление колнки динамически, а не через обьект, но это намного сложнее и может привести к проблемам в некоторых разделах. Например, к разделу "Контакт" добавим поле с именем UsrRowNumber. Для этого после добавления поля к обьекту "Контакт" нужно настроить отображение колонок и вывести новосозданное поле. А потом на странице раздела ContactPageV2 переопределить метод onGridDataLoaded, чтобы получилось примерно такое:

onGridDataLoaded: function() {
  this.callParent(arguments);
  for (var i = 0; i < this.getGridData().collection.items.length; i++) {
    var itemId = this.getGridData().collection.items[i].get("Id");
    this.getGridData().get(itemId).set("UsrRowNumber", (i + 1));
  }
},

Таким образом, будет работать нумерация в разделе "Контакты". Скорее всего вам не нужна будет сортировка по этой колонке реестра, так как это не даст никакой сортировки. В этом случае можно переопределить также метод sortColumn, в котором проверять какая колонка сейчас будет отсортирована и не сортировать, если это колонка UsrRowNumber. Как пример:

sortColumn: function(index) {
  var columnsSettingsProfile = this.get("Profile");
  var columnsConfig = columnsSettingsProfile.DataGrid.listedConfig;
  var columnName;
  if (!Ext.isEmpty(columnsConfig)) {
    var columns = this.Ext.decode(columnsConfig);
    var column = columns.items[index];
    columnName = column.bindTo;
  }
  if (columnName !== "UsrRowNumber") {
    this.callParent(arguments);
  }
}

Тогда при нажатии на заголовок колонки UsrRowNumber в реестре ничего не произойдет, а во всех других случаях все будет работать.

Если же говорить про детали, то тут немного проще динамически добавить колонку. Можно попробовать перехватить Profile детали в котором находятся конфиги на отображение в списочном и плиточном отображении (listedConfig и tiledConfig). 

К примеру в методе initProfile после вызова this.callParent(arguments) взять this.get("Profile") и динамически изменить listedConfig (или tiledConfig) для изменения конфигурации колонок грида. Сначала конфиг нужно распарсить (можно использовать либо Ext.decode, либо JSON.parse), модифицировать как вам необходимо и вернуть орбатно с помощью this.set("Profile", newProfile).

Может и пойдет такое, но хотят чтобы это было в каждом раздели и детали, представление только списком будет. Без создания колонки в объекте можно сделать? Динамически нужно)

Радчук Виталий Владимирович,

Чтобы сделать сразу на всех деталях нужно делать перехват Profile как описано выше, но этот перехват делать на базовой клиентской схеме детали грида (например, BaseGridDetailV2) и тогда все будет работать для всех деталей, которые от него наследуются.

То же самое можно сказать и для раздела, но там все сложнее. Модифицировать придется также базовый раздел BaseSection, но тут нет метода initProfile, поэтому сложнее динамически модифицировать колонки.

Показать все комментарии