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

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

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

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

Спасибо!

Нравится

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…

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

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

Показать все комментарии
Сейчас при экспорте в табличную часть документа/справочника в 1С всегда происходит добавление новой строки, а не ее поиск и обновление текущими данными из Террасофт. Таким образом, если не очищать каждый раз табличную часть, то в нее происходит добавление N строк, где N - количество строк в соответствующем датасете (например, детали) в Террасофт.Предлагаю реализовать возможность обновления строк в табличной части документа/справочника в 1С. В качестве ключевого поля использовать НомерСтроки. Конечно, со стороны Террасофт тоже должно быть аналогичное поле, которое хранит номер строки (ранее я озвучил идею добавления нумерации строк для детали "Продукты"). Для чего это нужно? В ситуации, когда в табличной части 1С храниться важная информация, которую нельзя просто так удалять/затирать, пригодиться эта возможность именно обновления данных в строке, а нее удаления и нового добавления. Алгоритм следующий. Для примера возьмем деталь "Продукты" и табличную часть документа. В детали "Продукты" заранее было добавлено поле "Номер", которое автоматически ставиться больше на 1 для каждой новой записи. При настройке синхронизации детали сопоставляем поле "Номер" в Террасофт с полем "НомерСтроки" в 1С. Снимаем галочку с поля "Не экспортировать", что будет в дальнейшем сигналом для обновления строк в табличной части, а не для их добавления. Если в настройках синхронизации табличной части не стоит "Очищать табличную часть", сопоставлено поле "НомерСтроки" с полем в Террасофт, не стоит галочка "Не экспортировать", то происходит обновление строки табличной части, а не добавление. Если при экспорте такого номера строки не находит, то происходит добавление строки. Пример как это сейчас сделано у меня. В функции ExportFields, чтобы избежать попытки записи в поле НомерСтроки, добавляем пропуск этого поля: // Kosh. 11.01.14. Modified: added skip LineNumber change if ((!IsAppend && !ObjectField.IsEdit) || IsEmptyValue(ObjectField.Name1C) || (Param.IsTabularSection && ObjectField.Name1C == 'НомерСтроки')) { // * Kosh         continue; } В функции ExportObject изменить код, где мы получаем Select1C строки табличной части: if (Param.IsTabularSection) {         Param.IsAppend = true;         if (Param.Version != 'V77') {                 // Kosh. 11.01.14. Modified: possibility to change line in tabular section                 var LineNumberObj = GetLineNumberObj(ObjectFields, Dataset);                 if (Param.DeleteData || !LineNumberObj.UseLineNumber) {                         Select1C = Param.Select1C[Param.TabularSectionName].Add();                 } else {                         Param.IsAppend = false;                         try {                                 Select1C = Param.Select1C[Param.TabularSectionName].                                         Get(LineNumberObj.LineNumber - 1);                         } catch(e) {                                 if (e.message.indexOf('Значение индекса выходит за границы диапазона') != -1 ) {                                         Param.IsAppend = true;                                         Select1C = Param.Select1C[Param.TabularSectionName].Add();                                 } else {                                         throw e.message;                                 }                         }                 }                 // * Kosh         } else { Используется функция: function GetLineNumberObj(ObjectFields, Dataset) {         var Result = {};         Result.UseLineNumber = false;         Result.LineNumber = 0;         for (var i = 0; i ObjectFields.length; i++) {                 if (ObjectFields[i].Name1C == 'НомерСтроки') {                         var ObjectField = ObjectFields[i];                         if (!ObjectField.DoNot && !IsEmptyValue(ObjectField.NameTS)) {                                 var TSLineNumber = Dataset(ObjectField.NameTS);                                 if (TSLineNumber) {                                         Result.LineNumber = TSLineNumber;                                         Result.UseLineNumber = true;                                 }                         }                         break;                 }         }         return Result; } Пример сделан для конфигурации 8.0-8.2.
1 комментарий

Добрый день!

Идея передана в проектный департамент на рассмотрение.
Как только будет решение, мы обязательно сообщим.

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