7.7 Работа с формой

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем bvv79, 12 мар 2014.

  1. TopicStarter Overlay
    bvv79
    Offline

    bvv79

    Регистрация:
    31 мар 2008
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    Подскажите пути решения такого вида задачи:
    Имеется некий документ, у которого допустим 5 реквизитов типа строка неограниченной длины (Таб01_Данные, Таб02_Даннные и т.д.) для хранения таблиц данных во внутреннем формате. В форме документа размещены 5 таблиц значений (Таб01, Таб02 и т.д.) с 5-ю кнопками для вызова обработки заполнения таблицы, у которых идентификаторы соответственно (Т01, Т02 и т.д.)
    Имеется единая обработка в режиме таблицы ввода данных, для заполнения таблиц, куда пересылается контекст и номер идентификатора обрабатываемой таблицы (01, 02 и т.д.)
    Обработка формирует таблицу по количеству строк, после нажатия "Выполнить" обработка пакует данные в строку и записывает через

    форма.параметр.установитьатрибут ("Таб"+сред(форма.параметр.Контекст_формы,2,2)+"_данные",ЗначениеВСтрокуВнутр(таб));

    в нужный реквизит документа, где Контекст_формы - это общий реквизит документа, куда пишется идентификатор (01, 02 и т.д.) вызываемой таблицы перед вызовом обработки.

    Проблема в том что бы после закрытия обработки в открытой форме обновлялась измененная таблица с новыми данными. До этого решалось просто:
    Код:
    Если форма.параметр.Контекст_формы ="Т01" тогда
            форма.параметр.Таб01.загрузить (таб);
        иначеесли форма.параметр.Контекст_формы ="Т02" тогда
            форма.параметр.Таб02.загрузить (таб);
        иначеесли форма.параметр.Контекст_формы ="Т03" тогда
            форма.параметр.Таб03.загрузить (таб);
        иначеесли форма.параметр.Контекст_формы ="Т04" тогда
            форма.параметр.Таб04.загрузить (таб);
        иначеесли форма.параметр.Контекст_формы ="Т05" тогда
            форма.параметр.Таб05.загрузить (таб);
        конецесли;
    можно ли сделать так, что бы выполнять метод Загрузить() по строковому наименованию таблицы значений, вообщем исключить "если-иначеесли", так как имеется порядка 30 различных форм документов и в каждом из них разное количество таблиц?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    У формы есть метод получения объекта по имени идентификатора (ПолучитьАтрибут)
    Можно попробовать так

    ТЗ=форма.параметр.ПолучитьАтрибут(форма.Параметр.КонтекстФормы);
    ТЗ.Загрузить(Таб);

    но не уверен что сработает..

    З/Ы использовать ТЗ для хранения данных в БД - не хорошо.
    В любой момент могут появится "объект не найден" после упаковки БД, т.к. система не в состоянии контролировать ссылочную часть.
    Для хранения таблиц я бы рекомендовал использовать служебный документ....

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