Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:11

Как передать номер строки в табличной части документа

Автор Namik, 29 апр 2015, 17:40

0 Пользователей и 1 гость просматривают эту тему.

Namik

Добрый день

Есть некий код, который сохраняет историю изменения документа.

//проверка таб частей
      Для Каждого ТЧ Из Мета.ТабличныеЧасти Цикл
         ИмяТЧ=ТЧ.Имя;
         Если Ссылка[ИмяТЧ].Количество()<>ЭтотОбъект[ИмяТЧ].Количество() Тогда
            НовСтр=тПроверка.Добавить();
            НовСтр.Автор=Строка(ИмяЮзверя);
            НовСтр.Реквизит="ТЧ.Строка №"+НомСтр;
            НовСтр.СтароеЗначение="--->";
            НовСтр.НовоеЗначение="Удалено строка №"+НомСтр;
            НовСтр.Время=Строка(ТекущаяДата());
            ЕстьИзменения=Истина;
            //Продолжить;    //если количество строк не совпадает уже наш клиент
         КонецЕсли;   
         КолСтр=Ссылка[ИмяТЧ].Количество();
         ЕстьИзм=Ложь;
         Для НомСтр=0  По КолСтр-1  Цикл
            ДЛя Каждого РекТЧ Из Мета.ТабличныеЧасти[ИмяТЧ].Реквизиты Цикл
               ИмяРек=РекТЧ.Имя;
               
               Если Ссылка[ИмяТЧ][НомСтр][ИмяРек]<>ЭтотОбъект[ИмяТЧ][НомСтр][ИмяРек] Тогда
                  НовСтр=тПроверка.Добавить();
                  НовСтр.Автор=Строка(ИмяЮзверя);
                  НовСтр.Реквизит="ТЧ.Строка №"+(НомСтр+1) +"."+ ИмяРек;
                  НовСтр.СтароеЗначение=Ссылка[ИмяТЧ][НомСтр][ИмяРек];
                  НовСтр.НовоеЗначение=ЭтотОбъект[ИмяТЧ][НомСтр][ИмяРек];
                  НовСтр.Время=Строка(ТекущаяДата());
                  ЕстьИзм=Истина;
                  ЕстьИзменения=Истина;
                  //Прервать;//все изменения таб частей детално отслеживать не будем.Просто фиксируем факт
               КонецЕсли;   
            КонецЦикла;

Как передать (вывести) номер строки табличной части документа в строки?

НовСтр.Реквизит="ТЧ.Строка №"+НомСтр (????);
НовСтр.НовоеЗначение="Удалено строка №"+НомСтр (???);

Указанный НомСтр выдает ошибку: не обнаружено поле.

vitasw

Какая-такая строка? на этом этапе ее уже нет, строка удалена и номера у нее нет.

cska-fanat-kz

если у вас вот такой цикл
Для НомСтр=0  По КолСтр-1  Цикл

то номер строки логично равен (НомСтр+1)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Namik

до удаления строки у нее же был номер. вот этот номер нужно вывести в макет в виде типа удалена такая-та строка номер такой то. как это осуществить?

варианты НомСтр = ЭтотОбъект.ТЧ.Колонки.НомерСтроки в разныъ вариациях (элементы, формы, формадокумента) не подходит.

cska-fanat-kz

Цитата: Namik от 30 апр 2015, 08:43варианты НомСтр = ЭтотОбъект.ТЧ.Колонки.НомерСтроки в разныъ вариациях (элементы, формы, формадокумента) не подходит.

...ибо глупость.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Namik

подскажите, пожалуйста, как правильно и не глу

cska-fanat-kz

у вас просто в ЭТОМ месте
"
....
ИмяТЧ=ТЧ.Имя;
         Если Ссылка[ИмяТЧ].Количество()<>ЭтотОбъект[ИмяТЧ].Количество() Тогда
            НовСтр=тПроверка.Добавить();
            НовСтр.Автор=Строка(ИмяЮзверя);
            НовСтр.Реквизит="ТЧ.Строка №"+НомСтр;
            НовСтр.СтароеЗначение="--->";
            НовСтр.НовоеЗначение="Удалено строка №"+НомСтр;
            НовСтр.Время=Строка(ТекущаяДата());
            ЕстьИзменения=Истина;
            //Продолжить;    //если количество строк не совпадает уже наш клиент
         КонецЕсли;
.....
"

не построчно же сравнивается, а просто сравнивается количество строк и если не совпадает, то записывается в проверку что удалены строки, поэтому так как сейчас номер удаленной строки не получить, надо переделывать.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Namik

Намекните, пожалуйста, как  переделать. немного подсказки

cska-fanat-kz

обходите одну ТЧ и по индексу первой строки находите строку во второй ТЧ.
ТЕОРИЯ! с помощью ЗначениеВСтрокуВнутр() получаете внутренние представления обоих строк и сравниваете.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Namik

знание по 1с как у первоклашки. усложнили еще. теперь читать и практиковаться.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск