Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перебор таблицы значений из реквизита формы
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
pablo
Имеется таблица значений в реквизите формы. В ней есть несколько строк. Пользователь изменил порядок строк в ТЗ. Как программно перебрать строки ТЗ в порядке, который задал пользователь?
Vofka
Эта ТЗ выведена на форму обычным способом? И в таком случае если пользователь на форме меняет порядок, в источнике порядок не меняется?
pablo
Vofka @ Сегодня, 14:44 необходимо зарегистрироваться для просмотра ссылки ,
1. Да, самым обычным
2. Не меняется sad.gif
Единственный обходной путь, который нашел - это сделать обработку и в ней табличную часть для тех же нужд. У ТЧ есть предопределенный реквизит НомерСтроки и он меняется в зависимости от порядка на форме.
Vofka
pablo, а если поменять порядок, а потом поменять значение в какой-то ячейке какой-то строки, то значение в реквизите поменяется, но порядок строк будет изначальный?
pablo
Да.
bakalavr
У меня работает: меняю порядок строк и в реквизите порядок меняется. Платформа 8.3.14.
pablo
bakalavr, Как вы проверяете порядок?
мне такой код:
    Для индекс =0 по ТоварыБУ.Количество()-1 цикл
        Сообщить(ТоварыБУ.НайтиПоИдентификатору(индекс).номенклатура);
    КонецЦикла;

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

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

pablo
Логично и просто, но для моей более крупной задачи не подходит sad.gif Там нужно сохранить сопоставление из двух отсортированных пользователем ТЧ.
bakalavr
Почему не подходит? Чего не хватает для сопоставления?
Vofka
pablo, если вы сопоставляете таблицы по индексу, то это скорее всего проблема. Индекс может поменяться, если таблица есть на форме и строки в ней могут двигать. Я для таких вещей делаю идентификационное строковое поле, в которое пишу УИД.
Макс1С
Согласен с Владимиром, наверное оптимальный вариант. В типовой BAS ERP во многих документах именно такой подход, и даже в некоторых регистрах привязка к строкам делается именно так
pablo
bakalavr @ Вчера, 15:16 необходимо зарегистрироваться для просмотра ссылки ,
Перебора не хватает. Как перебрать одновременно две ТЗ (не ТЧ) посредством цикла для каждого из Вашего предложения? после сортировки пользователя строки на одинаковых позициях в списке должны сопоставиться программно.
Процесс сопоставления организован через идентификаторы, как и предлагает Vofka. Для хранения сопоставления есть отдельная ТЗ и там в принципе проблем нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.