| 
    
        
     
     | 
    
    
  | 
v7: Зачем функция глВзятьКонтекст? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    11:04 
 | 
         
        Тут
 
        Книга знаний: Параметр и контекст формы такую функцию нашел Функция глВзятьКонтекст(Конт) Экспорт Возврат Конт; КонецФункции // глВзятьКонтекст() Зачем она, объясните пожалуйста.  | 
|||
| 
    1
    
        Провинциальный 1сник    
     13.08.18 
            ✎
    11:12 
 | 
         
        Чтобы можно было сохранить контекст в переменную.     
         | 
|||
| 
    2
    
        Franchiser    
     13.08.18 
            ✎
    11:14 
 | 
         
        Наверно потому что так получишь копию контекста     
         | 
|||
| 
    3
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    11:20 
 | 
         
        Переспрошу.
 
        Может быть эта конструкция нужна, когда вы хотите передать свой контекст в чужую форму? А чтобы просто порулить чужой формой ничего в нее не передавая можно смело писать ОткрытьФорму("Обработка...", ЕйныйКонтекст)  | 
|||
| 
    4
    
        HawkEye    
     13.08.18 
            ✎
    11:22 
 | 
         
        (3) смело пиши....     
         | 
|||
| 
    5
    
        Fedor-1971    
     13.08.18 
            ✎
    11:51 
 | 
         
        (3) Всё крайне просто: Контекст записать ни куда нельзя, т.е. кон = Контекст вызовет ошибку, а через финт ушами из (0) всё пройдёт гладко.
 
        Смелое утверждение, но не имеющее практического применения, отправить контекст текущей формы в обработку интересно (опять же, при прямой передаче тебя пошлют в или на), но получить контекст открытой обработки - смысла нет, форма уже открыта и рулить ей будет пользователь.  | 
|||
| 
    6
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    12:04 
 | 
         
        >но получить контекст открытой обработки - смысла нет
 
        Ровно эта задача передо мной и стоит. Есть обработка, на ней 8 кнопочек, пользователь их нажимает по порядку и любуется на результат. Надо открыть, нажать 8 кнопочек по порядку автоматически и закрыть. Так что мне сейчас ровно получить контекст нужно.  | 
|||
| 
    7
    
        Fedor-1971    
     13.08.18 
            ✎
    12:19 
 | 
         
        (6) Ну раз тебе нужно просто нажать кнопки. 
 
        Не ищи себе проблемы и не геморойся с контекстами. Передаёшь в Параметр из ОткрытьФорму() строку "АвтоматомНажатьКнопкиИЗакрыть" в форме обработки ПриОткрытии() ловишь Если Форма.Параметр = "АвтоматомНажатьКнопкиИЗакрыть" тогда //жмакаем кнопки в нужном порядке СтатусВозврата(0); // типа запретили открывать Возврат; КонецЕсли;  | 
|||
| 
    8
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    12:23 
 | 
         
        Так и хотел сначала делать)) А потом, когда прочитал про контекст, решил что мне удобнее сделать не "ПриОткрытии", а через контекст чужой формы     
         | 
|||
| 
    9
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    12:24 
 | 
         
        Гемороя вроде как нет никакого, пока не вижу во всяком случае.     
         | 
|||
| 
    10
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    12:29 
 | 
         
        Ну и передавать в моей задаче в варианте с ПриОткрытии надо не строку, а список значений,где строка - один из элементов, поскольку еще параметры есть.     
         | 
|||
| 
    11
    
        Fedor-1971    
     13.08.18 
            ✎
    12:33 
 | 
         
        (8)пока не видишь, но когда тебе придётся что-то исправить (а может и не тебе), замучаешься искать где рулил контекстом данной обработки (уберут одну кнопочку и понеслась веселуха искать где мы рулили и всюду ли поправили). 
 
        Второй момент: нужно реализовать проверку факта "Форма открыта и заполнена" (открыта - тип 100, а заполнена ли?) (10) я предложил вариант "Замкнутая система", как делать тебе виднее.  | 
|||
| 
    12
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    12:35 
 | 
         
        (11) Большое спасибо за обсуждение вам и другим коллегам, стало понятнее про контексты.     
         | 
|||
| 
    13
    
        Злопчинский    
     13.08.18 
            ✎
    14:48 
 | 
         
        я думаю, что ВызовМоейФункции(Контекст) или открыть форму с прямым указанием Контекста - проканает.
 
        только становится интересно, как будет возвращаться через Конекст то, что возвращается при открытии формы обработки...  | 
|||
| 
    14
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    15:07 
 | 
         
        Если честно, мне так до конца и не понятно, почему вызов функции прокладки что-то меняет. Копирования контекста не происходит, контекст явно мутабельный, т.е это ссылка. Т.е эта функция не делает ничего. Разве что 1с пытается вернуть новый контекст не по адресу старого контекста, а по адресу функции. И поэтому от прокладки получается какая-то польза.     
         | 
|||
| 
    15
    
        Злопчинский    
     13.08.18 
            ✎
    15:11 
 | 
         
        (14) ОткрытьФорму("Отчет",Контекст,ИмяОбработки);
 
        - в третьем параметре _возвращается_ кое-что при открытии обработки. как думаешь, что будет с системой когда обработка в чужлй Конекст попыфтается что-то принудительно запихнуть...? мне вот тоже интересно, но лень проверять  | 
|||
| 
    16
    
        Fedor-1971    
     13.08.18 
            ✎
    15:19 
 | 
         
        (13) вызов функции проканает, предать Контекст в ОткрытьФорму, нет, т.к. считается прямым сохранением контекста (по крайней мере, когда я пытался, платформа выдавала ошибку)
 
        (14) есть платформа и она запрещает сохранять контекст формы, но есть лазейка, его можно отправить в функцию, а то что возвращает функция, как-бы уже и не контекст, а переменная (15)потому и реализован запрет на передачу в ОткрытьФорму контекста текущей формы на уровне платформы  | 
|||
| 
    17
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    15:22 
 | 
         
        (16) Шаманство))     
         | 
|||
| 
    18
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    15:23 
 | 
         
        Если то, что возвращает функция, отличается от того, что в нее передали, тогда что-то проясняется)     
         | 
|||
| 
    19
    
        Shrk_V_V_V    
     13.08.18 
            ✎
    15:25 
 | 
         
        ну да, в семерке же нет явного понятия ссылки. Если документ, полученный методом "СоздатьОбъект", и тот, который живет в реквизите. Это, наверное, способ сделать из объекта ссылку.     
         | 
|||
| 
    20
    
        Провинциальный 1сник    
     13.08.18 
            ✎
    18:24 
 | 
         
        (16) "есть платформа и она запрещает сохранять контекст формы, но есть лазейка"
 
        Скорее не так. Платформа не запрещает сохранять контекст. В ней просто не реализовано обращение в контексту в операторе присваивания. Литерал "Контекст" - это не псевдопеременная, а некий псевдооператор, который может быть только параметром вызова функции. И вот из-за этой недоделки и придумали костыль - присваивать через функцию.  | 
|||
| 
    21
    
        Franchiser    
     13.08.18 
            ✎
    21:39 
 | 
         
        (0) далее в статье контекст передается через список значений, не понятно зачем пишут про эту функцию 
 
        Процедура ОткрытьПример() Парам = СоздатьОбъект("СписокЗначений"); Парам.ДобавитьЗначение(Контекст,"Конт"); ОткрытьФорму("Обработка.Пример",Парам); ПримерКонт = Парам; КонецПроцедуры //ОткрытьПример  | 
|||
| 
    22
    
        Провинциальный 1сник    
     13.08.18 
            ✎
    22:10 
 | 
         
        (21) Ну вот значит еще один вариант костыля - запихать контекст в переменную через список значений, без создания функции. В общем, главное чтобы контекст передавался как параметр куда-то откуда его можно взять.     
         | 
|||
| 
    23
    
        Злопчинский    
     14.08.18 
            ✎
    01:44 
 | 
         
        (22) взять не проблема, лучше в него ничего не пихать...     
         | 
|||
| 
    24
    
        Провинциальный 1сник    
     14.08.18 
            ✎
    07:43 
 | 
         
        (23) Пихать не всем требуется, многим достаточно брать оттуда что-то     
         | 
|||
| 
    25
    
        НЕА123    
     14.08.18 
            ✎
    07:54 
 | 
         
        (19)
 
        >способ сделать из объекта ссылку ИМХО, это и есть ответ на (0). Получить ссылку на Контекст.  | 
|||
| 
    26
    
        ADirks    
     14.08.18 
            ✎
    08:59 
 | 
         
        (25) единственно правильный ответ - в (20)
 
        всё остальное, уж простите ребята, но это ваши собственные измышления, не имеющие ничего общего с реальностью. и да, запихать в контекст что-либо у вас просто не получится.  | 
|||
| 
    27
    
        Fedor-1971    
     14.08.18 
            ✎
    10:01 
 | 
         
        (20) простыми буквами "платформа не может" - понятно 98%,
 
        как реализовано: нет присваивания или есть функция запрета (то же присваивание, но с вызовом исключения) - это технические варианты реализации, они волнуют около 5-10% вопрошающих / утверждающих (вот, как в 26) и не имеют достоверного ответа, а остальным тех.подробности без разницы (нет, так нет, будем извращаться). (26) Реальность вещь изменчивая. На вопрос человека, не знакомого с благами цивилизации, "Как работает факс?" можно долго рассказывать про электричество и протоколы передачи данных, а можно ответить "Дух природы взял листок из этой коробки и отнёс в другую коробку у получателя". И ты не обманул (тем более, что тонкостей всех использованных технологий можешь и сам не знать) и человеку стал более - менее понятен принцип данного способа обмена информацией. Что немаловажно, без визгов про демонов и проч. злыдней и записывания тебя в их приспешники. Про телефон, ещё более круто: "Зачем это Толик залез в столь маленькую коробку и говорит из неё?" (Баба яга в одной из экранизаций сказок).  | 
|||
| 
    28
    
        ADirks    
     14.08.18 
            ✎
    12:49 
 | 
         
        (27) Чтобы было понятно всем и окончательно, как раз и надо с подробностями объяснять. а то измыщлений не избежать.
 
        Например с факсом, после такого объяснения, может возникнуть вопрос "а почему бы духу природы не перенести получателю жареную курицу?" Что же касается данной конкретной реальности, то это именно особенность синтаксического анализатора, а не сознательный запрет. (он у 1С вообще забавный, анализатор этот)  | 
|||
| 
    29
    
        Fedor-1971    
     14.08.18 
            ✎
    13:07 
 | 
         
        (28) не может дух отнести курицу, стащит из вредности, а бумагу 100% передаст, бо она ему не нужна (даже для самой употребимой цели, поскольку дух бесплотен)
 
        Может синтаксический анализатор, может недоработка, может запрет, а может и ошибка - суть остаётся той-же платформа не позволяет сделать операцию. Почти плакат получился "ЛЮДИ!!! примите к сведению ..."  | 
|||
| 
    30
    
        ADirks    
     14.08.18 
            ✎
    13:35 
 | 
         
        На плакате должно быть так:
 
        ТЫ ПРИНЯЛ К СВЕДЕНИЮ?!! и красноармеец с ружьём  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |