Версия для печати темы (https://pro1c.org.ua/index.php?s=e6cc113c7b5409ca9b6c257efecdde75&showtopic=60456)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Перебор таблицы значений из реквизита формы

Автор: pablo 24.07.20, 14:07

Имеется таблица значений в реквизите формы. В ней есть несколько строк. Пользователь изменил порядок строк в ТЗ. Как программно перебрать строки ТЗ в порядке, который задал пользователь?

Автор: Vofka 24.07.20, 14:44

Эта ТЗ выведена на форму обычным способом? И в таком случае если пользователь на форме меняет порядок, в источнике порядок не меняется?

Автор: pablo 24.07.20, 14:52

Vofka @ Сегодня, 14:44 * ,
1. Да, самым обычным
2. Не меняется sad.gif
Единственный обходной путь, который нашел - это сделать обработку и в ней табличную часть для тех же нужд. У ТЧ есть предопределенный реквизит НомерСтроки и он меняется в зависимости от порядка на форме.

Автор: Vofka 24.07.20, 15:55

pablo, а если поменять порядок, а потом поменять значение в какой-то ячейке какой-то строки, то значение в реквизите поменяется, но порядок строк будет изначальный?

Автор: pablo 27.07.20, 8:21

Да.

Автор: bakalavr 27.07.20, 10:40

У меня работает: меняю порядок строк и в реквизите порядок меняется. Платформа 8.3.14.

Автор: pablo 27.07.20, 13:24

bakalavr, Как вы проверяете порядок?
мне такой код:

    Для индекс =0 по ТоварыБУ.Количество()-1 цикл
        Сообщить(ТоварыБУ.НайтиПоИдентификатору(индекс).номенклатура);
    КонецЦикла;

Выдает порядок, отличный от порядка на экране.
Платформа 8.3.11.3034.

Здесь ТоварыБУ - ТЗ в реквизите, а Номенклатура - текстовое поле.

Автор: bakalavr 27.07.20, 14:18

Вот так

Для каждого СтрокаТаблицы Из ТоварыБУ Цикл
    Сообщить(СтрокаТаблицы.Номенклатура);
КонецЦикла;


Автор: pablo 27.07.20, 14:45

Логично и просто, но для моей более крупной задачи не подходит sad.gif Там нужно сохранить сопоставление из двух отсортированных пользователем ТЧ.

Автор: bakalavr 27.07.20, 15:16

Почему не подходит? Чего не хватает для сопоставления?

Автор: Vofka 27.07.20, 15:32

pablo, если вы сопоставляете таблицы по индексу, то это скорее всего проблема. Индекс может поменяться, если таблица есть на форме и строки в ней могут двигать. Я для таких вещей делаю идентификационное строковое поле, в которое пишу УИД.

Автор: Макс1С 28.07.20, 9:14

Согласен с Владимиром, наверное оптимальный вариант. В типовой BAS ERP во многих документах именно такой подход, и даже в некоторых регистрах привязка к строкам делается именно так

Автор: pablo 28.07.20, 11:16

bakalavr @ Вчера, 15:16 * ,
Перебора не хватает. Как перебрать одновременно две ТЗ (не ТЧ) посредством цикла для каждого из Вашего предложения? после сортировки пользователя строки на одинаковых позициях в списке должны сопоставиться программно.
Процесс сопоставления организован через идентификаторы, как и предлагает Vofka. Для хранения сопоставления есть отдельная ТЗ и там в принципе проблем нет.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua