8.х Индексы таблицы значений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем OXED, 16 май 2016.

  1. TopicStarter Overlay
    OXED
    Offline

    OXED Опытный в 1С

    Регистрация:
    10 апр 2012
    Сообщения:
    256
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Есть форма с таблицей значений. По кнопке в эту таблицу импортируются данные из excel.
    При первом открытии формы и нажатии на кнопку загрузилось например 10 строк. Для каждой строки автоматически проставились индексы от 0 до 9. При повторной загрузке (без закрытия формы) я очищаю таблицу и добавляю в нее еще например 5 строк. Индексы продолжают нумерацию и будут равны 10-14. Как обнулить счетчик индексов и запустить его заново?
    Спасибо
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Ну видимо подпилить обработку. Смотрите в коде, где эти индексы задаются, и при необходимости - обнуляйте.
  3. TopicStarter Overlay
    OXED
    Offline

    OXED Опытный в 1С

    Регистрация:
    10 апр 2012
    Сообщения:
    256
    Симпатии:
    0
    Баллы:
    26
    А как их обнулять? В этом-то весь и вопрос

    Вот так чистится таблица
    Код:
        Если Объект.ИмпортируемыеДанные.Количество() > 0 Тогда
            Ответ = Вопрос("Таблица будет очищена. Продолжить?",РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Нет,,);
            Если Ответ = КодВозвратаДиалога.Да Тогда
                Объект.ИмпортируемыеДанные.Очистить();
            Иначе
                Возврат;
            КонецЕсли;
        КонецЕсли;       
    
    а далее в цикле добавляются строки
    Код:
    НоваяСтрока = Объект.ИмпортируемыеДанные.Добавить();
    Задаются индексы автоматически. Команда "очистить();" очищается строки, но не нумератор индексов
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Ну почему же, если предварительно очистить ТЧ от данных, то и индексы должны обнуляться.
  5. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Индексы существуют только для существующих записей таблицы значений. Значит не очищаете, или что вы подразумеваете под индексами?


    Отправлено из моего iPhone используя Tapatalk
  6. TopicStarter Overlay
    OXED
    Offline

    OXED Опытный в 1С

    Регистрация:
    10 апр 2012
    Сообщения:
    256
    Симпатии:
    0
    Баллы:
    26
    Метод "Элементы.ЗагруженныеДанные.ВыделенныеСтроки" возвращает массив с индексами выделенных строк

    А далее цикл упирается в ошибку "индекс за границей...". и в массиве выделенных строк индексы действительно далеко за пределами, поскольку нумерация продолжается
    Код:
        Для Каждого Элемент Из Элементы.ЗагруженныеДанные.ВыделенныеСтроки Цикл
            Строка = Объект.ИмпортируемыеДанные.Получить(Элемент);
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    По элементам - не самый лучший способ. Нужно отталкиваться от объекта табличной части, а не элемента. Элемент - это на клиенте.
    --- Объединение сообщений, 16 май 2016 ---
    Ну и на управляемых формах работа с ТЗ отличается.
  8. TopicStarter Overlay
    OXED
    Offline

    OXED Опытный в 1С

    Регистрация:
    10 апр 2012
    Сообщения:
    256
    Симпатии:
    0
    Баллы:
    26
    Выделенные строки могут быть только на клиенте. Как мне тогда в этом случае определить с какими строками ТЧ работать?
    Задача в том, что пользователь выбирает несколько строк и тыкает кнопку. И мне надо понять какие строки править, а какие нет
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Ну так очищайте всю табличную часть, а не снимайте выделения. Или вам нужно обрабатывать только выделенные ?
  10. TopicStarter Overlay
    OXED
    Offline

    OXED Опытный в 1С

    Регистрация:
    10 апр 2012
    Сообщения:
    256
    Симпатии:
    0
    Баллы:
    26
    Только выделенные
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Как вы определили, что именно индекс ТЗ не обнуляется при очистке ТЗ? Выделенные строки - это коллекция из ДанныеФормыКоллекция, у него свои индексы, не равные индексам ТЗ(реквизита формы/объекта), из которой он получает данные.
    У вас должно быть что-то вроде:

    ДанныеФормыЭлементКоллекции = ТабличнаяЧастьНаФорме.НайтиПоИдентификатору(ИдентификаторСтрокиКакЭлементМассиваВыделенныхСтрок)
    Последнее редактирование: 16 май 2016
  12. TopicStarter Overlay
    OXED
    Offline

    OXED Опытный в 1С

    Регистрация:
    10 апр 2012
    Сообщения:
    256
    Симпатии:
    0
    Баллы:
    26
    Вы были правы. Я не так искал. Был уверен что индексы и идентификаторы это одно и то же. Вопрос закрыт. Огромное спасибо за помощь

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