Автоматизация бизнеса

Установка, настройка, внедрение и сопровождение любых конфигураций на платформе 1С:Предприятие. 

e-mail: info@programmist1c.ru

Минимальный объем работ от 50 000 рублей
  •   Удаленный админ
  •   Карта сайта
  •   Контакты


  • Поиск
     

    v8: Где в форме хранить промежуточные данные?

    Нестандартное использование динамически создаваемых элементов управления для хранения промежуточных данных в форме.
    Автор статьи: Гений 1С | Редакторы:
    Последняя редакция №5 от 15.02.07 |


    Ключевые слова: форма,промежуточные данные


    Иногда у программистов возникает потребность сохранить в форме некие промежуточные данные, да только неохота заводить у формы новую переменную с ключевым словом Экспорт (чтобы она была видна снаружи, из других модулей). Особенно это касается случаев, когда пишется универсальная обработка, не меняющая конфигурацию.

    Специально для таких случаев могу порекомендовать следующее.
    Программным путём (ЭлементыФормы.Добавить()) в форму добавляется невидимое поле ввода с каким-нибудь сложным именем, например "п_МояПеременнаяДляХраненияПромежуточныхДанныхЦЭИмяРек".
    Далее используется свойство Значение или СписокВыбора этого поля ввода, где можно хранить любое значение или список значений.

    Например, я использовал такой подход, когда мне нужно было сохранять названия старых процедур-обработчиков событий формы, когда я их заменял своими. Сначала вызывался мой обработчик, а из него через функцию Выполнить - старый обработчик. При этом название старой процедуры-обработчика сохранялось именно в такой динамической переменной.

    Еще один пример по УПП. В ней есть функция "ПриУстановкеЗаголовкСистемы", которая вызывается практически для каждой формы документа. Сделаем так, чтобы для любой формы можно было получить время ее открытия.
    Вот пример, который создает в форме поле, в котором хранится время открытия формы (временем открытия будем считать первый вызов фунцкции "ПриУстановкеЗаголовкСистемы"). Код нужно вставить в конец функции "ПриУстановкеЗаголовкСистемы":
    ТекстМаркера="UniqueMarkerForForm20050802createdin1501by1SCoderGoodIdeaForRedirectionMoscow_PR_FIX";
    Если Форма.ЭлементыФормы.Найти(ТекстМаркера)<>Неопределено Тогда
        Эл=Форма.ЭлементыФормы.Добавить(Тип("ПолеВвода"),ТекстМаркера,ложь); //Добавляет поле ввода
        Эл.Значение=ТекущаяДата(); //Сохраняет время открытия 
    КонецЕсли;
    

    А вот код, чтобы получить время открытия любой формы УПП:
    ВремяОткрытияФормы=Форма.ЭлементыФормы.UniqueMarkerForForm20050802createdin1501by1SCoderGoodIdeaForRedirectionMoscow_PR_FIX.Значение;
    


    Замечание: вместо длинного идентификатора лучше использовать идентификатор полученный из GUID - он точно будет уникальным
    21.02.18 | 10:31


    30.11.16 | 20:25


    28.11.16 | 09:22


    26.11.16 | 08:19


    22.11.16 | 20:17


    19.11.16 | 10:14


    18.11.16 | 20:09




    Внедрение 1С Автоматизация 1С Доработка 1С Сопровождение 1С Обслуживание 1С Программирование 1С 8 Hастройка 1С Карта сайта Контакты