Вход | Регистрация
    1  2
1С:Предприятие :: 1С:Предприятие 8 общая

Зазеркалье: Async - Await

Зазеркалье: Async - Await
Я
   pechkin
 
20.04.20 - 16:07
Скоро случится чудо и в 1с завезут Async - Await
https://wonderland.v8.1c.ru/blog/uluchsheniya-v-sintaksise-yazyka-1s-dlya-raboty-s-asinkhronnymi-funktsiyami/
   Вафель
 
101 - 23.04.20 - 22:23
Ну собственно про что я и говорил
О каких замыканиях идёт речь пока нет функций параметров
   Serginio1
 
102 - 23.04.20 - 22:30
(100) Меня Вафель спаривал зачем мне замыкания. Я ему привел пример. В качестве делегата может выступать замыкание и как правило оно и будет выступать.
В примере как раз не лямда, а функция (делегат). Лямбда выражение это немного другое, это локальная функция которая может захватывать контекст
https://ru.wikipedia.org/wiki/Лямбда-выражение
x => x * 5
   Вафель
 
103 - 23.04.20 - 22:40
Ты видно совсем не понимаешь о чем я говорю
   Serginio1
 
104 - 23.04.20 - 22:40
(101)  Вот пример использования без параметров
Можно внутри функции создавать и использовать замыкание
Процетура ТестЗамыканий();
 delegates = новый Массив;
        outside = 0;// #1 Создает экземпляр переменной только однажды


        Пока (i<2)
        {
            inside = 0;// #2 Создает экземпляр переменной многократно 

            массив.Добавить(() => delegate// #3 Захват переменной анонимным методом 

            {
               Сообщить(""+ outside+"," inside);
                outside=outside+1;
                inside=inside+1;
            };
        }

first=массив[0];
second=массив[0];

 first();
first();

        first();

        second();
        second();
        first();

        
        second();
КонецПроцедуры

 Сначала нужны переменные типа замыкания
   Вафель
 
105 - 23.04.20 - 22:41
Я не спрашивал тзачем нужны замыкания
Я спрашивал (101)
   Serginio1
 
106 - 23.04.20 - 22:42
Или переменные функции. Суть переменных функций без замыканий мало. Так или иначе замыкания нужны и уже давно.
   Serginio1
 
107 - 23.04.20 - 22:45
(105) Так назовем нужен тип Функция. Так тебя устроит?
То что нет типа функция поэтому нет и параметров функция и замыканий.

Или так нужен тип параметра функция! Так тебя устроит?
   Вафель
 
108 - 23.04.20 - 22:50
Ну вот другое дело
   Serginio1
 
109 - 23.04.20 - 23:05
Так какой смысл замыкания без типа функция? Понятно, что должен быть и тип это помему и … понятно?
   Cthulhu
 
110 - 23.04.20 - 23:08
еще замыкание - и можно переименовывать в 1с# ?.......
   Serginio1
 
111 - 23.04.20 - 23:21
(110) Так они ввеели async awaite из JS так что 1С_JS
   Serginio1
 
112 - 23.04.20 - 23:23
Кстати метод "Выполнить" захватывает локальный контекст.
   DTX 4th
 
113 - 24.04.20 - 00:43
Я ржу
Асинки без замыканий и стрелочных функций, огонь
Пздц, бафните язык уже, а то кодить большой.
   DTX 4th
 
114 - 24.04.20 - 00:45
больно*
   Asmody
 
115 - 24.04.20 - 01:17
(113) я ржу с Обещание.
Такое впечатление, что архитекторам языка иногда заносят интересные книжки.
   Cthulhu
 
116 - 24.04.20 - 01:54
на самом деле вот про 1с... так, на всякий случай - взгляните на рукописное начертание буквы "алеф"...
   APXi
 
117 - 24.04.20 - 08:27
(19) А разве у процедуры ЗаполнитьТовары(Команда) не должно быть впереди Асинк?
   Сияющий в темноте
 
118 - 24.04.20 - 17:05
(100) скорее даже,указатель на функцию,который,кстати в 1с реализовали через обработкаоповещения.
(113) у них в общих модулях только локальные переменные,так что до замыканий им очень далеко.
хотя,через ту же обработку оповещения это все реализуется.
а собственно,как и сама обработка через структуру.

хочешь указатель на функцию-все просто:
новый Структура("Имя,Модуль,Параметры,КонтекстЗамыкания")
и в путь ^_^
   Serginio1
 
119 - 24.04.20 - 17:16
(118) Замыкание кстати может изменять контекст. Придется вручную восстанавливать контекст
   ptiz
 
120 - 24.04.20 - 17:21
Навеяло вашими диалогами.
Может когда-нибудь в 1С 8 сделают и такую вещь как "Контекст"? В 7.7 ведь было!
   Serginio1
 
121 - 24.04.20 - 17:28
(120) Здесь под контекстом понимаются переменные функции и родительских замыканий. Замыкание может быть вложено в замыкание
   Сергиус
 
122 - 24.04.20 - 17:29
(120)В чем суть 7-ного контекста?
   Eiffil123
 
123 - 24.04.20 - 17:34
Особо обрадуются разработчики, которые использовали переменные с именами новых ключевых слов.
   Serginio1
 
124 - 24.04.20 - 17:53
(123) Ну наверное нужно сделать рефакторинг.
   Djelf
 
125 - 24.04.20 - 18:19
(115) Да, "Обещание" как то не очень.
Оно может что-то вернуть, или не вернуть, и вообще обмануть...
Нужно было бы использовать слово "Клятва", чтобы гарантировать возврат.
   Сияющий в темноте
 
126 - 24.04.20 - 18:32
(125)обещание результата.
вполне нормально.
(119) ну,если контекст это структура,то вполне нормально-ссылок много,а структура одна.
просто,переопределить работу со структурой,и все будет работать.
(123) они это уже проходиди,у них в БСП были функции,которые потом стали встроенными,но с другим набором параметров,так что им по граблям не привыкать ходить,и другим предлагают.
   Сияющий в темноте
 
127 - 24.04.20 - 18:35
потом,в 1с просто нет статических переменных,а время жизни переменной-вопрос открытый,боюсь,что компилятор их выкидывает из памяти еще до выхода из функции.
   Сияющий в темноте
 
128 - 24.04.20 - 18:47
В 7.7 контекст работал очень похоже на значение контекста,а в 8 его заменили обьектом,где также экспортные функции доступны.
   Serginio1
 
129 - 24.04.20 - 18:56
(126) Прелесть лямбда выражений, что они создаются по месту. В .Net в начале не было замыканий, можно было использовать только методы.
Было очень неудобно. Затем появились анонимные делегаты, а затем и лябда выражения и те и другие замыкали контекст, но с лямбда выражениями запись была более лаконичной.

Но хотя бы можно было передать метод класса. В 1С и этого нет.

Ну как я уже писал
Функция НайтиПоУсловию(Тз,Условие) Экспорт
Массив = новый массив;
 Для каждого Стр из Тз Цикл
   Если Условие(стр) Тогда
     массив.Добавить(стр)
   КонецЕсли
 КонецЦикла;
возврат Тз.Скопировать(массив)
КонецФункции

нужно передать не только контекс, но и метод отбора.

Пока это вызывается так 

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

// Примеры использования

//тз=НайтиПоУсловию(тз,"Стр.Колонка1<20 и Стр.Колонка2>500");
//  или

//Список=ОбщегоНазначение.РазложитьСтрокуВМассивПодстрок("Иванов,Сидоров,Петров");

//Рез=НайтиПоУсловию(тз,"Список.Найти(стр.ФизЛицо)<>Неопределено");


//Или


//Рез=НайтиПоУсловию(тз,"Найти(Врег(стр.Значение),Врег(""акф""))>0");


//Рез=НайтиПоУсловию(тз,"Модуль.ФункцияСравнения(Стр,Список)",МассивСтруктур,ЭтотОбъект);


//То есть в модуле обработки должна быть функция

//  Функция ФункцияСравнения(стр,МассивСтруктур) Экспорт
   Serginio1
 
130 - 24.04.20 - 18:57
При этом Вычислить как раз и замыкает контекст.
http://catalog.mista.ru/public/371762/
 
 Рекламное место пустует
   Злопчинский
 
131 - 24.04.20 - 19:14
(128) "а в 8 его заменили объектом," - а что тут есть "объект"..?
   Злопчинский
 
132 - 24.04.20 - 19:16
(122) в точто тебе через "контест" - доступны переменные, процедуры и функции этого контекста.
например из открытой формы обработки можно вызвать другую обработку - и передать в нее "контекст" родительской обработки. Дочерняя обработка может обновить например форму родительской обработки, стукнуться и выполнить ее процедуры...
   Djelf
 
133 - 24.04.20 - 19:23
(126) А кто тебе обязан отдать "обещание"? Это флирт, и по факту флирта, никто, никому, ничему, ничего не обязан.
   Garykom
 
134 - 24.04.20 - 19:27
(133) Он ждал, ждал - а она не дала... результат функция
   Djelf
 
135 - 24.04.20 - 19:30
(134) А если вообще не дала и упала в колодец? Или зависла на 100 дней над наблюданием прохождения Юпитера над Сатурном?
   Djelf
 
136 - 24.04.20 - 19:33
Я не говорю что это не правильно, нужно посмотреть это на реальных примерах.
   Serginio1
 
137 - 24.04.20 - 19:40
(136) Для этого есть
 awaite Task.WhenAny(ВыполняемаяЗадача, Task.Delay(сколько нужно миллисекунд)
Правда нужно предусмотреть и прекратить задачу
   Djelf
 
138 - 24.04.20 - 20:16
(137) Отсутствие этого в 1С, меня и ввело в ступор непонимания, как оно должно и будет работать.
Волноваться и внедрять пока незачем, посмотрим как оно будет в бсп внедрено и какие костыли к этому решению они там придумают.
   mikecool
 
139 - 24.04.20 - 21:22
читаю холивар про замыкания и не пойму их прикладного примера )
   Serginio1
 
140 - 24.04.20 - 21:54
(139)
НайтиПоУсловию(тз,Стр=>Стр.Колонка1<20 и Стр.Колонка2>500);
   Serginio1
 
141 - 24.04.20 - 21:58
Список=ОбщегоНазначение.РазложитьСтрокуВМассивПодстрок("Иванов,Сидоров,Петров");

Рез=НайтиПоУсловию(тз,стр=>Список.Найти(стр.ФизЛицо)<>Неопределено);





Рез=НайтиПоУсловию(тз,стр=>Найти(Врег(стр.Значение),Врег("акф"))>0");


Рез=НайтиПоУсловию(тз,Модуль.ФункцияСравнения);

где Фун Модуль.ФункцияСравнения(Стр) функция модуля
   DTX 4th
 
142 - 24.04.20 - 21:59
(115) Я сначала тоже.. Но потом вспомнил, что мы на русском кодим, и как-то отлегло)

(118) От указателя на функцию без возможности динамического создания функций (локальных функций, ну или как это называется) толку особо нет

(139) Удобно доработки группировать.
Если скинуть все таблицы обработки клиент банка к себе модуль, модуль превратиться в помойку. На клиенте могут помочь формы, а вот на сервере туго

(140) +++
Давно о такой штуке мечтаю. Думал даже общий модуль запилить, но потом понял, что нельзя нормально вернуть объект с процедурами...
   Serginio1
 
143 - 24.04.20 - 22:02
(142) Я Вычислить часто  использую, когда нужно унивесальную функцию запилить см (129)
   Serginio1
 
144 - 24.04.20 - 22:06
Функция НайтиПоУсловию(Тз,Условие,Список="",Модуль="") Экспорт
Массив = новый массив;
 Для каждого Стр из Тз Цикл
   Если Вычислить(Условие) Тогда
     массив.Добавить(стр)
   КонецЕсли
 КонецЦикла;
возврат Тз.Скопировать(массив)
КонецФункции


Например ФункцияСравнения определена в этом же модуле (ЭтотОбъект)
МассивСтруктур определен в функции


Рез=НайтиПоУсловию(тз,"Модуль.ФункцияСравнения(Стр,Список)",МассивСтруктур,ЭтотОбъект);

тогда Список и Модуль будут подставляться из параметров
   DTX 4th
 
145 - 24.04.20 - 22:14
(143) Интересная идея, запомню)
У меня из таких хаков самая часто используемая -
Функция Выполнить2(Выражение, Контекст)
  Выполнить(Выражение);
  Возврат Истина;
КонецФункции


И можно во время пазу процедуры выполнять :)

Сейчас не вспомню, но что-то типа
Выполнить2("Контекст.Сортировать(""Колонка1""), Таблица)
:)
   DTX 4th
 
146 - 24.04.20 - 22:14
*во время паузы в отладчике
   _KaA
 
147 - 24.04.20 - 22:23
(39)

Вы очень сильно "округлили". А как же пользователей сервисов 1cFresh? А как же мобильные клиенты? И даже если сейчас пользователи ВЕБа и Мобилки это, навскидку, от 10 до 20%, то в будущем этот процент будет только увеличится...

И незабываем, что очень много процессов между собой связаны, поэтому вполне можно допустить что это новшество является частью другого проекта на развитие...
   Serginio1
 
148 - 24.04.20 - 22:30
(145) Вот поэтому и хочется нормальных замыканий как во всех языках.
Хотя и Выполнить очень удобная функция, особенно когда внутри вызываются ёмкие функции
   Сияющий в темноте
 
149 - 24.04.20 - 22:33
На самом деле,все растет от интерпретатора.

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

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

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

просто,в некоторых языках есть возможность использования указателя на функцию,ну,на самом деле,указатель на функцию есть везде,только в компилируемвх языках это адрес в памяти,и текстовое соответствие теряется в процессе компиляции,а в интерпретируемвх,наоборот,есть строка,а адрес часто недоступен.
но,если мы хотим использовать передачу динамически созданной функции,то нам нужен адрес и по нескольким причинам:
во-первых,если замыкание,то мы каждый раз определяем новую функцию,и нам нужно как-то их различать,чтобы ввхвать по месту то,что нужно
во-вторых,в заиыкание попадают переменные со значениями,и они должнв жить,пока они нужны,а если ыункция определяется по имени,то ее нужно удалять вручную,что тоже отдельная и сложная история.
и самоый главный момент-динамически сохдавать функцию имеет смысл только если мы собираем ее тело динамтчески,а емли оно всегда одинаеово,то проще контекст делать параметром
в 1с оператор выполнить позаоляет получить динамический код без создания функции.
если хочется,то уеазателем на уже существующую функцию можно считать строку с ее именем.
опять же,замыкания нужны там,где мы передаем функцию как указатель для ввзова с заранее заданнвм набором параметров,как это бывает,например,в javascript при обработке событий,куда параметр контекст забыли добавить.
если рассмотреть,например,работу с собвтиями WMI,то таи для обработчиков отдельно задана переменная контекста,куда можно запихать значение,и никакие замыкания не нужны.
на самом деле,замыкание-это из пушки по воробьям-для передачи одного значения мы пихаем в контекст весь стек,и он живет,пока не закончится аыполнение функции,а в случае событий-до завершения программы.
ну и для этого же есть глобальные переменные и область видимости,когда статическая глобальная переменная нкжна только в тех местах,где ее явно указали,но в 1с нет и этого.
зато,есть ОписаниеОповещения,где есть параметр,который можно рассматривать как контекст.

асинхронное исполнение,кстати,страдает тем же дефектом-все переменные функции будут жить до ее завершения.
ну и,можно было реализовать что-то типа DoEvents,как это бвло в VbScript для обработки асинхронных событий,когда мы в коде разрешаем их выполнить,а потом проверяем результаты,но нет,было решено изобретать велосипед с квадратными колесами.
соответственно,ждем возможность ожидать заданный интервал времени и возможность ожидать несколько зааершений сразу с аозможностью обработки завершенного-тогда весь код формы можно будет реализовать в одном цикле.
собственно говоря DoEvents делает именно это-отдать управление системе и сохранить контекст.
просто,вместо выхода из функции,можно вызывать другую функцию,которая реально делает ввход с сохранением еонтекста и потом вход обратно.
   Сияющий в темноте
 
150 - 24.04.20 - 22:41
еще одно очень полезное применение указателя на функцию-это итераторы.
например,обход дерева-это вложенные рекурсивные вызовы,но не хочется об этом думать каждый раз-пишкм один раз алгоритм обхода,а потом передаем ему функцию,которую он ввзовет для каждого элемента,и все.
   Вафель
 
151 - 24.04.20 - 22:48
(150) это называется функциональное программирование
   Вафель
 
152 - 24.04.20 - 22:51
(149) вообще-то этот велосипед уже давно был изобретен и не 1с а в жаваскрипте
   Serginio1
 
153 - 24.04.20 - 23:08
(149) Одна из проблем 1С это то, что отсутствует сборка мусора. Жизненный цикл ссылки построен на подсчете ссылок. Но и в этом тоже не проблема.
По сути при использовании замыкания нужно заниматься кодогенерацией. Но это не проблема при компиляции в БайтКод.
Все давным давно придумано
   Serginio1
 
154 - 24.04.20 - 23:16
Уще когда в JS не было async awaite TS генерил код плохочитаемый
https://stackoverflow.com/questions/56306701/typescript-generates-awaiter-generator-when-using-promises

Вот здессь хоть с ошибками но попонятнее
https://stackoverflow.com/questions/42412145/what-is-a-state-machine-in-terms-of-javascript-promises-and-c-sharp-asyc-await
   Сияющий в темноте
 
155 - 25.04.20 - 14:11
в 1с уже есть сборщик мусора не только на подсчете ссылок.
но граф с клиента на сервер или обратно она так передавать и не научилась.
и по вложенности тоже двоит обьекты.

а обещание,это еще и шаг в многопоточность
потом могут сделать ВыполнитьВНовомПотоке и в ответе тоже обещание,тем более,что новые браузеры фоновое исполнение уже умеют.
   Сияющий в темноте
 
156 - 25.04.20 - 14:17
и важна сборка мусора на клиенте,так как на сервере можно после завершения исполнения кода все,чтотон себе выделил,просто осаободить и нн бояться.
   ДенисЧ
 
157 - 25.04.20 - 14:38
(156) @сервере можно после завершения исполнения кода все,чтотон себе выделил@
Память не ресурс (с)

У меня тут где-то метла завалялась... Пойду, испоганю...
   Serginio1
 
158 - 25.04.20 - 16:24
(156) На сервер передаются сериализованные данные (можно конечно держать серверную ссылку на  клиенте, но это не для 1С). Никто не держит ссылки на сервере или клиенте. Там своя кухня.
Хотя это и возможно https://habr.com/ru/post/323096/  При финализации объекта.
Единственно, что можно присвоить результат сервера клиенту.

А вот про сборщик мусора в 1С поподробнее пожалуйста? В .Net головная  боль сочетать COM с подсчетом ссылок и сборка мусора
   Garykom
 
159 - 25.04.20 - 16:35
(149) Интересно когда в 1С можно будет новые расширения писать и добавлять программно ))
   Сияющий в темноте
 
160 - 25.04.20 - 20:05
(159)
расширения и сейчас можно программно добавить,но само расширение,это перехват вызова функции.
 
 Рекламное место пустует
   Garykom
 
161 - 25.04.20 - 20:43
(160) Подразумевал когда конфа (точнее расширение) саму себя "дописывает" ))
Новые расширения делает и подключает.
   Вафель
 
162 - 25.04.20 - 22:01
(161) уже сейчас можно
   Сияющий в темноте
 
163 - 26.04.20 - 11:53
расширение можно загрузить из xml в отдельный конфигуратор
потов выгрузить в cfe и программно подключить в конфу
   Сияющий в темноте
 
164 - 26.04.20 - 11:54
на самом деле,программно и конфигурацию редактировать уже можно без особых проблем
просто исполнителя запустить на другой временно созданной конфигурации
   Bro
 
165 - 26.04.20 - 13:03
(158) Кстати тоже интересно про сборку мусора. Потому как та же Java только к 11-й версии выкатила что-то более удобоваримое в виде G1. Потому как тот же CMS приводил к фрагментации и периодически (особенно при нагрузке) уходил в STW сборку мусора (причем в однопоточную (!) так как Oracle решил похоронить CMS уже очень давно). Причем даже G1 достаточно сложный неочевидный сборщик мусора (и там по дефолту в Java очень странная есть настройка, которая уже на среднем highload'е может приводить к жестким STW паузам).

ЗЫ: Самое главное в сборщике мусора это работа с цикличными ссылками если что (без цикличных ссылок, обычный подсчет ссылок работает на ура).
   Fragster
 
166 - 27.04.20 - 21:24
У кого есть доступ, поддержите тупых 1сников, которые считают, что асинхронность в текущем виде должна быть невидимой со стороны прикладного кода https://partners.v8.1c.ru/forum/topic/1906773
   DTX 4th
 
167 - 28.04.20 - 20:08
(142) Вспомнил, чего мне не хватает
Хочу иметь возможность чейнить такие методы.
Типа ТЗ.Выбрать(Строка => Строка.Колонка3).Сортировать().ВыбратьПервые(10)
   DTX 4th
 
168 - 28.04.20 - 20:09
Мб кто что подскажет
   Cyberhawk
 
169 - 28.04.20 - 20:27
(166) Как предлагается поддержать? Удали ту ссылку и дай нормальную с номером сообщения, которое надо плюсануть, и не позорься
   trdm
 
170 - 28.04.20 - 20:43
А куда пул-реквесты 1С-у засылать?
https://prnt.sc/s7j438
Виснет на диалогах, 8.3.17.1386
   Serginio1
 
171 - 28.04.20 - 20:50
(167) Это Linq называется. Опять же нужны замыкания https://metanit.com/sharp/tutorial/15.1.php
Но на том же C# есть методы расширения https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/extension-methods
для расширения Linq
   Ненавижу 1С
 
172 - 29.04.20 - 07:58
(171) для вот данного примера в (167) они не нужны
   Serginio1
 
173 - 29.04.20 - 10:01
(172)  ТЗ.Выбрать(Строка => Строка.Колонка3). а это что?
   Fragster
 
174 - 29.04.20 - 11:14
(173) вероятно оставить от таблицы только колонку 3
   Serginio1
 
175 - 29.04.20 - 11:28
(174) Это понятно, разговор про то, что в данном примере замыкания (лямбда выражения) не нужны Строка => Строка.Колонка3
   Fragster
 
176 - 29.04.20 - 11:34
(175) ну, то, что возврат копии объекта (или самого объекта) из методов не требует лямбд - правда. а вот для сортировки, фильтрации, сворачивания и преобразования - очень даже нужны, упрощают код для написания и понимания в разы.
   Serginio1
 
177 - 29.04.20 - 12:02
(176) Пойми я этим линком пользуюсь каждый день и прекрасно понимаю, что и зачем. Мало того, что линк используется для коллекций, но еще и для БД с формированием запросов.
Тут даже на С++ прикручивают. А 1С плетется в хвосте. Надеюсь async awaite это первая ласточка
   DTX 4th
 
178 - 29.04.20 - 13:56
(171) Да, да, у меня шарп входит в тройку основных языков помимо js и 1С)
Только вчера приложение под мак на netCore собрал, которое дергает скрипт питона, чтобы получить активное окно :D
   jbond
 
179 - 29.04.20 - 15:41
После короны в России останутся живые Java и Salesforce программисты?
   sitex
 
180 - 29.04.20 - 15:48
(179) Если только будут удаленно работать на запад.
   Fragster
 
181 - 29.04.20 - 15:50
все в 1с уйдут
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.