8.х Получение индекса текущей строки в Табличном поле

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем KILogin, 5 июл 2008.

  1. TopicStarter Overlay
    KILogin
    Offline

    KILogin

    Регистрация:
    4 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток! Возникла проблема с определением индекса текущей строки в Табличном поле. С таблицей значений все просто:

    Код:
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Индекс(ЭлементыФормы.ТабличноеПоле.ТекущаяСтрока);
    
    
    Однако у Табличного поля отсутствует метод Индекс.
    Код:
    ТабличноеПоле.Индекс(...
    
    Вопрос: Как получить индекс текущей строки Табличного поля, если оно не привязано к данным?

    Теперь вторая часть вопроса. Что требуется передать методу Добавить() в качестве параметра, если мы хотим выделить строки во втором Табличном поле соответствующие по индексу строкам в первом Табличном поле? Код ниже не работает:
    Код:
    ЭлементыФормы.ТабличноеПоле2.ВыделенныеСтроки.Добавить(ТекущаяСтрока);
    
    А хочется получить следующее: при активации любой ячейки в первом Табличном поле происходит выделение строки во втором Табличном поле, имеющей индекс равный индексу текущей строки в первом Табличном поле. Ситуация приведена на картинке:
    [​IMG]
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    0. Давайте договоримся, что ОДНА тема ОДИН вопрос.
    1. ЭлементыФормы.<ТабличноеПоле>.Значение
    2. Передавайте туда ссылку на строку, и расскажите, что такое ТекущаяСтрока в вашей строчке кода
  3. TopicStarter Overlay
    KILogin
    Offline

    KILogin

    Регистрация:
    4 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    0. Собственно один вопрос, входит в состав другого.
    1 и 2. Табличные поля верхнее и нижнее привязал к одной Табличной части справочника. Только в верхней и нижней показываю различные колонки. При активизации строки Табличного поля верхнего происходит вот такая обработка события:
    Код:
    	ТаблицаНижняя = ЭлементыФормы.табНижняя;
    ТаблицаВерхняя = ЭлементыФормы.табВерхняя;
    ТаблицаНижняя.ВыделенныеСтроки.Очистить();
    ТаблицаНижняя.Значение = ТаблицаВерхняя.ТекущаяСтрока;
    
    В результате ТаблицаНижняя просто очищается. Результат не меняется даже если закоментрировать строку:
    Код:
    	ТаблицаНижняя.ВыделенныеСтроки.Очистить();
    
    Текущая строка в коде это результат вот такой конструкции:
    Код:
    ЭлементыФормы.<ТабличноеПоле>.ТекущаяСтрока
    
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    ТаблицаНижняя.Значение = ТаблицаВерхняя.ТекущаяСтрока;
    
    
    Вот это и очищает.
  5. TopicStarter Overlay
    KILogin
    Offline

    KILogin

    Регистрация:
    4 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Сделал как сказано. А к получению индекса текущей строки меня это не приблизило.
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    ЭлементыФормы.<ТабличноеПоле>.Значение
    
    Посмотри отладчиком тип и все станет ясно
  7. TopicStarter Overlay
    KILogin
    Offline

    KILogin

    Регистрация:
    4 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток! Несколько дней не было интернета. За это время я решил проблему, способом описанным ниже. А пока отвечу на предыдущий пост.
    Код:
    ЭлементыФормы.<ТабличноеПоле>.Значение
    
    Содержит ссылку на Таблицу значений которая указана в
    Код:
    ЭлементыФормы.<ТабличноеПоле>.Данные
    
    В моем случае это:
    СправочникТабличнаяЧасть.<МойСправочник>.<ТабличнаяЧастьСправочника>
    И опять меня это не приблизило к желаемой ситуации:
    Заострю внимание на паре моментов:
    1. МояТаблицаЗначений - это Табличная часть справочника. Часть ее колонок выводится в верхнюю таблицу, а часть в нижнюю, поэтому я использую СправочникОбъект.МояТаблицаЗначений в обоих событиях и для нижнего и для верхнего Табличного поля. Однако возможно использование различных Табличных частей справочника, но в этом случае необходимо контролировать количество строк в обоих таблицах - они должны быть равны.
    2. Колонка "НомерСтроки" создается автоматически имеет имя "НомерСтроки" и синоним "N".
    А решил я это следующим способом (без получения индекса строки):

    Код:
    // Выделение строки по индексу.
    Процедура табВерхняяПриАктивизацииСтроки(Элемент)
    ТаблицаНижняя = ЭлементыФормы.табНижняя;
    ТаблицаВерхняя = ЭлементыФормы.табВерхняя;
    
    // Выделяем всегда по одной строке, а значит среди выделенных она под индексом ноль
    ТекСтрока = ТаблицаВерхняя.ВыделенныеСтроки[0];
    // В другом Табличном поле очистили выделение
    ТаблицаНижняя.ВыделенныеСтроки.Очистить();
    ТаблицаНижняя.ВыделенныеСтроки.Добавить(СправочникОбъект.МояТаблицаЗначений[Число(ТекСтрока["НомерСтроки"]) - 1]);
    ТаблицаНижняя.ТекущаяСтрока = ТаблицаВерхняя.ВыделенныеСтроки[0];
    КонецПроцедуры
    
    Процедура табНижняяПриАктивизацииСтроки(Элемент)
    ТаблицаНижняя = ЭлементыФормы.табНижняя;
    ТаблицаВерхняя = ЭлементыФормы.табВерхняя;
    
    // Выделяем всегда по одной строке, а значит среди выделенных она под индексом ноль
    ТекСтрока = ТаблицаНижняя.ВыделенныеСтроки[0];
    // В другом Табличном поле очистили выделение
    ТаблицаВерхняя.ВыделенныеСтроки.Очистить();
    ТаблицаВерхняя.ВыделенныеСтроки.Добавить(СправочникОбъект.МояТаблицаЗначений[Число(ТекСтрока["НомерСтроки"]) - 1]);
    ТаблицаВерхняя.ТекущаяСтрока = ТаблицаНижняя.ВыделенныеСтроки[0];
    КонецПроцедуры
    
    Если что не понятно, спрашивайте. :unsure:

    P.S. К администраторам: может сделать менее размашистый шрифт во вставке кода, например уменьшением меж символьного растояния, иначе текст сложно воспринимается.
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ну так сам ответил свой вопрос!
    Должен быть тип не табличная часть, а СТРОКА табличной части (таблицы значений).
    Пытаться получиться из структуры число- бесполезная задача, и здесь тоже самое.

    1. Есть отдельный подфорум для обсуждения этих вопросов.
    2. Шрифт подобран тот, который используется по умолчанию в самой 1С.

Поделиться этой страницей