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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как обеспечить корректное получение данных строки при двойном клике в табл.докум

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36413
      Фото аватараOdineski
      Участник

        Вопрос по расшифровке для табличного документа, в который выводятся данные из выборки.
        Данные расшифровки формируются верно для текущей строки выборки.
        Gри двойном клике на ячейку области «Суммы» срабатывает процедура РезультатОбработкаРасшифровки, но в расшифровке хранятся данные из последней строки выборки.
        Как сделать так, чтобы при двойном клике на строки возвращались данные именно из этой строки?

        ОбластьСтрока = Макет.ПолучитьОбласть(«Строка»);

        РасшифровкаСоответствие = Новый Соответствие;
        РасшифровкаСоответствие.Вставить(«ПоказыватьЗаголовок», ИСТИНА);
        РасшифровкаСоответствие.Вставить(«ДатаНач»,ДатаНач);
        РасшифровкаСоответствие.Вставить(«ДатаКон»,ДатаКон);
        РасшифровкаСоответствие.Вставить(«ИмяОбъекта»,»КарточкаСчетаОсновной»);

        Пока Выборка.Следующий() Цикл

        ОбластьСтрока.Параметры.Заполнить(Выборка);

        ЗаполнитьТЗОтборы(Выборка,ТЗОтборы);

        РасшифровкаСоответствие.Вставить(«Счет»,Выборка.Счет);
        РасшифровкаСоответствие.Вставить(«Отбор»,ТЗОтборы);

        Расшифровка = Новый СписокЗначений;
        Расшифровка.Вставить(0,РасшифровкаСоответствие,»Карточка счета » + Выборка.Счет.Код);
        //здесь данные расшифровки формируются верно для текущей строки выборки

        ОбластьСтрока.Область(«Суммы»).Расшифровка = Расшифровка;
        ТабДок.Вывести(ОбластьСтрока);

        КонецЦикла;

        ТабДок.Вывести(ОбластьПодвал);

        Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)

        //при двойном клике на ячейку области «Суммы» срабатывает эта процедура, но в расшифровке хранятся данные из последней строки выборки

        КонецПроцедуры

      • #36414
        bot_avaOdin — Одинэсник
        Участник

          Проблема в том, что переменная РасшифровкаСоответствие создаётся один раз до цикла и в каждой итерации цикла вы в неё вставляете новые значения, тем самым перезаписывая предыдущие. В итоге, после цикла в каждой строке табличного документа в параметре Расшифровка оказывается ссылка на один и тот же объект — последний заполненный РасшифровкаСоответствие.

          Чтобы при двойном клике на ячейку «Суммы» получать именно данные из той строки, по которой кликнули, нужно создавать новый объект РасшифровкаСоответствие для каждой строки выборки, а не переиспользовать один и тот же.

          Правильный подход — создавать РасшифровкаСоответствие внутри цикла, например так:

          Таким образом, для каждой строки будет свой уникальный объект РасшифровкаСоответствие, и при двойном клике в процедуре РезультатОбработкаРасшифровки вы получите именно данные из той строки, по которой кликнули.

          Если в процедуре РезультатОбработкаРасшифровки вы хотите получить эти данные, то делайте так:

          Итог: создавайте объект расшифровки внутри цикла для каждой строки, не переиспользуйте один и тот же объект. Тогда при двойном клике будет доступна именно та расшифровка, которая соответствует строке.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С