|
Зазеркалье: Async - Await | ☑ | ||
---|---|---|---|---|
0
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/ |
|||
82
Garykom
гуру
23.04.20
✎
14:08
|
(80) Хочешь чтобы были замыкания/коллбэки в 1с в виде:
Процедура Верхняя() Ждать Процедура Нижняя() //.. тут левый код КонецПроцедуры КонецПроцедуры |
|||
83
Serginio1
23.04.20
✎
16:28
|
(80) Там автомат строится
https://habr.com/ru/company/otus/blog/488082/ и вызывается в начале и после каждого awaite |
|||
84
jbond
23.04.20
✎
16:36
|
||||
85
Ненавижу 1С
гуру
23.04.20
✎
17:13
|
(84) заканчивайте отмечать 1-е апреля
|
|||
86
Вафель
23.04.20
✎
17:47
|
Я про жс говорил.
Там как раз авайт через промис и колбэк с замыканием 1с вроде тем же путем пошла |
|||
87
Serginio1
23.04.20
✎
20:08
|
(86) Что жс,что .Net суть таже. В свое время когда на жс не было async awaite TS сам генерил автомат
awaite это автомат, а проимис в resolve запускет MoveNext этого автомата. Да внутри это по сути замыкание с автоматом. Но 1С почему то игнорирует замыкания. |
|||
88
Вафель
23.04.20
✎
20:11
|
(87) в смысле игнорирует?
Какие могут быть замыкания если нет функции параметров? Что куда замыкать? |
|||
89
Serginio1
23.04.20
✎
20:24
|
https://ru.stackoverflow.com/questions/233227/Реализация-замыканий-в-c
По сути получается переменный метода в отдельный класс, переменные замыкания и метод в другой класс. С точки зрения жс это и есть класс с состоянием |
|||
90
Serginio1
23.04.20
✎
20:37
|
||||
91
Вафель
23.04.20
✎
20:43
|
Не понятно что что ты хочешь от 1с когда говоришь про замыкания.
Покажи пример кода как оно могло бы быть |
|||
92
Serginio1
23.04.20
✎
21:00
|
(91) Ну я тебе в 89 ссылочку дал.
Замыкания можно использовать при передаче в другую функцию, а также внутри функции или как переменную которую можно изменять. |
|||
93
Serginio1
23.04.20
✎
21:05
|
Ну например
Функция НайтиПоУсловию(Тз,Условие,Список="",Модуль="") Экспорт Массив = новый массив; Для каждого Стр из Тз Цикл Если Вычислить(Условие) Тогда массив.Добавить(стр) КонецЕсли КонецЦикла; возврат Тз.Скопировать(массив) КонецФункции Приходится использовать Вычислить. А мог бы так Функция НайтиПоУсловию(Тз,Условие) Экспорт Массив = новый массив; Для каждого Стр из Тз Цикл Если Условие(стр) Тогда массив.Добавить(стр) КонецЕсли КонецЦикла; возврат Тз.Скопировать(массив) КонецФункции |
|||
94
ДенисЧ
23.04.20
✎
21:11
|
(93) Это не замыкание, это, условно говоря, делегат
|
|||
95
Asmody
23.04.20
✎
21:31
|
(92) ты путаешь лямбды и замыкания
|
|||
96
Serginio1
23.04.20
✎
21:43
|
(94) Ничего я не путаю. В качестве Условие может выступать как статическая функция так и метод объекта.
С точки зрения .Net замыкание это метод класса. Просто класс генерится автоматически и захватывает переменные метода, которые могут изменятся и из других замыканий. Я уже давал ссылку на реализацию замыкания в .Net https://ru.stackoverflow.com/questions/233227/Реализация-замыканий-в-c |
|||
97
Serginio1
23.04.20
✎
21:44
|
Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своей области видимости.
|
|||
98
Serginio1
23.04.20
✎
21:46
|
Лямбда-выражение в программировании — специальный синтаксис для определения функциональных объектов, заимствованный из λ-исчисления. Применяется как правило для объявления анонимных функций по месту их использования, и обычно допускает замыкание на лексический контекст, в котором это выражение использовано. Используя лямбда-выражения, можно объявлять функции в любом месте кода.
|
|||
99
Serginio1
23.04.20
✎
21:52
|
Сам делегат Условие может замыкать на себя данные метода из которого вызывается функция НайтиПоУсловию(Тз,Условие)
Например это могут использоваться данные из запроса и также другие замыкания. На яркий пример Linq который построен на лямдах выражениях в которых захватывается контекст метода |
|||
100
Asmody
23.04.20
✎
22:18
|
В примере (93) у тебя и не лямбда, и не замыкание. А функция высшего порядка
|
|||
101
Вафель
23.04.20
✎
22:23
|
Ну собственно про что я и говорил
О каких замыканиях идёт речь пока нет функций параметров |
|||
102
Serginio1
23.04.20
✎
22:30
|
(100) Меня Вафель спаривал зачем мне замыкания. Я ему привел пример. В качестве делегата может выступать замыкание и как правило оно и будет выступать.
В примере как раз не лямда, а функция (делегат). Лямбда выражение это немного другое, это локальная функция которая может захватывать контекст https://ru.wikipedia.org/wiki/Лямбда-выражение x => x * 5 |
|||
103
Вафель
23.04.20
✎
22:40
|
Ты видно совсем не понимаешь о чем я говорю
|
|||
104
Serginio1
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) |
|||
106
Serginio1
23.04.20
✎
22:42
|
Или переменные функции. Суть переменных функций без замыканий мало. Так или иначе замыкания нужны и уже давно.
|
|||
107
Serginio1
23.04.20
✎
22:45
|
(105) Так назовем нужен тип Функция. Так тебя устроит?
То что нет типа функция поэтому нет и параметров функция и замыканий. Или так нужен тип параметра функция! Так тебя устроит? |
|||
108
Вафель
23.04.20
✎
22:50
|
Ну вот другое дело
|
|||
109
Serginio1
23.04.20
✎
23:05
|
Так какой смысл замыкания без типа функция? Понятно, что должен быть и тип это помему и … понятно?
|
|||
110
Cthulhu
23.04.20
✎
23:08
|
еще замыкание - и можно переименовывать в 1с# ?.......
|
|||
111
Serginio1
23.04.20
✎
23:21
|
(110) Так они ввеели async awaite из JS так что 1С_JS
|
|||
112
Serginio1
23.04.20
✎
23:23
|
Кстати метод "Выполнить" захватывает локальный контекст.
|
|||
113
DTX 4th
24.04.20
✎
00:43
|
Я ржу
Асинки без замыканий и стрелочных функций, огонь Пздц, бафните язык уже, а то кодить большой. |
|||
114
DTX 4th
24.04.20
✎
00:45
|
больно*
|
|||
115
Asmody
24.04.20
✎
01:17
|
(113) я ржу с Обещание.
Такое впечатление, что архитекторам языка иногда заносят интересные книжки. |
|||
116
Cthulhu
24.04.20
✎
01:54
|
на самом деле вот про 1с... так, на всякий случай - взгляните на рукописное начертание буквы "алеф"...
|
|||
117
APXi
24.04.20
✎
08:27
|
(19) А разве у процедуры ЗаполнитьТовары(Команда) не должно быть впереди Асинк?
|
|||
118
Сияющий в темноте
24.04.20
✎
17:05
|
(100) скорее даже,указатель на функцию,который,кстати в 1с реализовали через обработкаоповещения.
(113) у них в общих модулях только локальные переменные,так что до замыканий им очень далеко. хотя,через ту же обработку оповещения это все реализуется. а собственно,как и сама обработка через структуру. хочешь указатель на функцию-все просто: новый Структура("Имя,Модуль,Параметры,КонтекстЗамыкания") и в путь ^_^ |
|||
119
Serginio1
24.04.20
✎
17:16
|
(118) Замыкание кстати может изменять контекст. Придется вручную восстанавливать контекст
|
|||
120
ptiz
24.04.20
✎
17:21
|
Навеяло вашими диалогами.
Может когда-нибудь в 1С 8 сделают и такую вещь как "Контекст"? В 7.7 ведь было! |
|||
121
Serginio1
24.04.20
✎
17:28
|
(120) Здесь под контекстом понимаются переменные функции и родительских замыканий. Замыкание может быть вложено в замыкание
|
|||
122
Сергиус
24.04.20
✎
17:29
|
(120)В чем суть 7-ного контекста?
|
|||
123
Eiffil123
24.04.20
✎
17:34
|
Особо обрадуются разработчики, которые использовали переменные с именами новых ключевых слов.
|
|||
124
Serginio1
24.04.20
✎
17:53
|
(123) Ну наверное нужно сделать рефакторинг.
|
|||
125
Djelf
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 его заменили обьектом,где также экспортные функции доступны.
|
|||
129
Serginio1
24.04.20
✎
18:56
|
(126) Прелесть лямбда выражений, что они создаются по месту. В .Net в начале не было замыканий, можно было использовать только методы.
Было очень неудобно. Затем появились анонимные делегаты, а затем и лябда выражения и те и другие замыкали контекст, но с лямбда выражениями запись была более лаконичной. Но хотя бы можно было передать метод класса. В 1С и этого нет. Ну как я уже писал Функция НайтиПоУсловию(Тз,Условие) Экспорт Массив = новый массив; Для каждого Стр из Тз Цикл Если Условие(стр) Тогда массив.Добавить(стр) КонецЕсли КонецЦикла; возврат Тз.Скопировать(массив) КонецФункции нужно передать не только контекс, но и метод отбора. Пока это вызывается так Функция НайтиПоУсловию(Тз,Условие,Список="",Модуль="") Экспорт Массив = новый массив; Для каждого Стр из Тз Цикл Если Вычислить(Условие) Тогда массив.Добавить(стр) КонецЕсли КонецЦикла; возврат Тз.Скопировать(массив) КонецФункции // Примеры использования //тз=НайтиПоУсловию(тз,"Стр.Колонка1<20 и Стр.Колонка2>500"); // или //Список=ОбщегоНазначение.РазложитьСтрокуВМассивПодстрок("Иванов,Сидоров,Петров"); //Рез=НайтиПоУсловию(тз,"Список.Найти(стр.ФизЛицо)<>Неопределено"); //Или //Рез=НайтиПоУсловию(тз,"Найти(Врег(стр.Значение),Врег(""акф""))>0"); //Рез=НайтиПоУсловию(тз,"Модуль.ФункцияСравнения(Стр,Список)",МассивСтруктур,ЭтотОбъект); //То есть в модуле обработки должна быть функция // Функция ФункцияСравнения(стр,МассивСтруктур) Экспорт |
|||
130
Serginio1
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) в точто тебе через "контест" - доступны переменные, процедуры и функции этого контекста.
например из открытой формы обработки можно вызвать другую обработку - и передать в нее "контекст" родительской обработки. Дочерняя обработка может обновить например форму родительской обработки, стукнуться и выполнить ее процедуры... |
|||
133
Djelf
24.04.20
✎
19:23
|
(126) А кто тебе обязан отдать "обещание"? Это флирт, и по факту флирта, никто, никому, ничему, ничего не обязан.
|
|||
134
Garykom
гуру
24.04.20
✎
19:27
|
(133) Он ждал, ждал - а она не дала... результат функция
|
|||
135
Djelf
24.04.20
✎
19:30
|
(134) А если вообще не дала и упала в колодец? Или зависла на 100 дней над наблюданием прохождения Юпитера над Сатурном?
|
|||
136
Djelf
24.04.20
✎
19:33
|
Я не говорю что это не правильно, нужно посмотреть это на реальных примерах.
|
|||
137
Serginio1
24.04.20
✎
19:40
|
(136) Для этого есть
awaite Task.WhenAny(ВыполняемаяЗадача, Task.Delay(сколько нужно миллисекунд) Правда нужно предусмотреть и прекратить задачу |
|||
138
Djelf
24.04.20
✎
20:16
|
(137) Отсутствие этого в 1С, меня и ввело в ступор непонимания, как оно должно и будет работать.
Волноваться и внедрять пока незачем, посмотрим как оно будет в бсп внедрено и какие костыли к этому решению они там придумают. |
|||
139
mikecool
24.04.20
✎
21:22
|
читаю холивар про замыкания и не пойму их прикладного примера )
|
|||
140
Serginio1
24.04.20
✎
21:54
|
(139)
НайтиПоУсловию(тз,Стр=>Стр.Колонка1<20 и Стр.Колонка2>500); |
|||
141
Serginio1
24.04.20
✎
21:58
|
Список=ОбщегоНазначение.РазложитьСтрокуВМассивПодстрок("Иванов,Сидоров,Петров");
Рез=НайтиПоУсловию(тз,стр=>Список.Найти(стр.ФизЛицо)<>Неопределено); Рез=НайтиПоУсловию(тз,стр=>Найти(Врег(стр.Значение),Врег("акф"))>0"); Рез=НайтиПоУсловию(тз,Модуль.ФункцияСравнения); где Фун Модуль.ФункцияСравнения(Стр) функция модуля |
|||
142
DTX 4th
24.04.20
✎
21:59
|
(115) Я сначала тоже.. Но потом вспомнил, что мы на русском кодим, и как-то отлегло)
(118) От указателя на функцию без возможности динамического создания функций (локальных функций, ну или как это называется) толку особо нет (139) Удобно доработки группировать. Если скинуть все таблицы обработки клиент банка к себе модуль, модуль превратиться в помойку. На клиенте могут помочь формы, а вот на сервере туго (140) +++ Давно о такой штуке мечтаю. Думал даже общий модуль запилить, но потом понял, что нельзя нормально вернуть объект с процедурами... |
|||
143
Serginio1
24.04.20
✎
22:02
|
(142) Я Вычислить часто использую, когда нужно унивесальную функцию запилить см (129)
|
|||
144
Serginio1
24.04.20
✎
22:06
|
Функция НайтиПоУсловию(Тз,Условие,Список="",Модуль="") Экспорт
Массив = новый массив; Для каждого Стр из Тз Цикл Если Вычислить(Условие) Тогда массив.Добавить(стр) КонецЕсли КонецЦикла; возврат Тз.Скопировать(массив) КонецФункции Например ФункцияСравнения определена в этом же модуле (ЭтотОбъект) МассивСтруктур определен в функции Рез=НайтиПоУсловию(тз,"Модуль.ФункцияСравнения(Стр,Список)",МассивСтруктур,ЭтотОбъект); тогда Список и Модуль будут подставляться из параметров |
|||
145
DTX 4th
24.04.20
✎
22:14
|
(143) Интересная идея, запомню)
У меня из таких хаков самая часто используемая -
И можно во время пазу процедуры выполнять :) Сейчас не вспомню, но что-то типа Выполнить2("Контекст.Сортировать(""Колонка1""), Таблица) :) |
|||
146
DTX 4th
24.04.20
✎
22:14
|
*во время паузы в отладчике
|
|||
147
_KaA
24.04.20
✎
22:23
|
(39)
Вы очень сильно "округлили". А как же пользователей сервисов 1cFresh? А как же мобильные клиенты? И даже если сейчас пользователи ВЕБа и Мобилки это, навскидку, от 10 до 20%, то в будущем этот процент будет только увеличится... И незабываем, что очень много процессов между собой связаны, поэтому вполне можно допустить что это новшество является частью другого проекта на развитие... |
|||
148
Serginio1
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с а в жаваскрипте
|
|||
153
Serginio1
24.04.20
✎
23:08
|
(149) Одна из проблем 1С это то, что отсутствует сборка мусора. Жизненный цикл ссылки построен на подсчете ссылок. Но и в этом тоже не проблема.
По сути при использовании замыкания нужно заниматься кодогенерацией. Но это не проблема при компиляции в БайтКод. Все давным давно придумано |
|||
154
Serginio1
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) @сервере можно после завершения исполнения кода все,чтотон себе выделил@
Память не ресурс (с) У меня тут где-то метла завалялась... Пойду, испоганю... |
|||
158
Serginio1
25.04.20
✎
16:24
|
(156) На сервер передаются сериализованные данные (можно конечно держать серверную ссылку на клиенте, но это не для 1С). Никто не держит ссылки на сервере или клиенте. Там своя кухня.
Хотя это и возможно https://habr.com/ru/post/323096/ При финализации объекта. Единственно, что можно присвоить результат сервера клиенту. А вот про сборщик мусора в 1С поподробнее пожалуйста? В .Net головная боль сочетать COM с подсчетом ссылок и сборка мусора |
|||
159
Garykom
гуру
25.04.20
✎
16:35
|
(149) Интересно когда в 1С можно будет новые расширения писать и добавлять программно ))
|
|||
160
Сияющий в темноте
25.04.20
✎
20:05
|
(159)
расширения и сейчас можно программно добавить,но само расширение,это перехват вызова функции. |
|||
161
Garykom
гуру
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
|
на самом деле,программно и конфигурацию редактировать уже можно без особых проблем
просто исполнителя запустить на другой временно созданной конфигурации |
|||
165
Bro
26.04.20
✎
13:03
|
(158) Кстати тоже интересно про сборку мусора. Потому как та же Java только к 11-й версии выкатила что-то более удобоваримое в виде G1. Потому как тот же CMS приводил к фрагментации и периодически (особенно при нагрузке) уходил в STW сборку мусора (причем в однопоточную (!) так как Oracle решил похоронить CMS уже очень давно). Причем даже G1 достаточно сложный неочевидный сборщик мусора (и там по дефолту в Java очень странная есть настройка, которая уже на среднем highload'е может приводить к жестким STW паузам).
ЗЫ: Самое главное в сборщике мусора это работа с цикличными ссылками если что (без цикличных ссылок, обычный подсчет ссылок работает на ура). |
|||
166
Fragster
гуру
27.04.20
✎
21:24
|
У кого есть доступ, поддержите тупых 1сников, которые считают, что асинхронность в текущем виде должна быть невидимой со стороны прикладного кода https://partners.v8.1c.ru/forum/topic/1906773
|
|||
167
DTX 4th
28.04.20
✎
20:08
|
(142) Вспомнил, чего мне не хватает
Хочу иметь возможность чейнить такие методы. Типа ТЗ.Выбрать(Строка => Строка.Колонка3).Сортировать().ВыбратьПервые(10) |
|||
168
DTX 4th
28.04.20
✎
20:09
|
Мб кто что подскажет
|
|||
169
Cyberhawk
28.04.20
✎
20:27
|
(166) Как предлагается поддержать? Удали ту ссылку и дай нормальную с номером сообщения, которое надо плюсануть, и не позорься
|
|||
170
trdm
28.04.20
✎
20:43
|
||||
171
Serginio1
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 |
|||
172
Ненавижу 1С
гуру
29.04.20
✎
07:58
|
(171) для вот данного примера в (167) они не нужны
|
|||
173
Serginio1
29.04.20
✎
10:01
|
(172) ТЗ.Выбрать(Строка => Строка.Колонка3). а это что?
|
|||
174
Fragster
гуру
29.04.20
✎
11:14
|
(173) вероятно оставить от таблицы только колонку 3
|
|||
175
Serginio1
29.04.20
✎
11:28
|
(174) Это понятно, разговор про то, что в данном примере замыкания (лямбда выражения) не нужны Строка => Строка.Колонка3
|
|||
176
Fragster
гуру
29.04.20
✎
11:34
|
(175) ну, то, что возврат копии объекта (или самого объекта) из методов не требует лямбд - правда. а вот для сортировки, фильтрации, сворачивания и преобразования - очень даже нужны, упрощают код для написания и понимания в разы.
|
|||
177
Serginio1
29.04.20
✎
12:02
|
(176) Пойми я этим линком пользуюсь каждый день и прекрасно понимаю, что и зачем. Мало того, что линк используется для коллекций, но еще и для БД с формированием запросов.
Тут даже на С++ прикручивают. А 1С плетется в хвосте. Надеюсь async awaite это первая ласточка |
|||
178
DTX 4th
29.04.20
✎
13:56
|
(171) Да, да, у меня шарп входит в тройку основных языков помимо js и 1С)
Только вчера приложение под мак на netCore собрал, которое дергает скрипт питона, чтобы получить активное окно :D |
|||
179
jbond
29.04.20
✎
15:41
|
После короны в России останутся живые Java и Salesforce программисты?
|
|||
180
sitex
naïve
29.04.20
✎
15:48
|
(179) Если только будут удаленно работать на запад.
|
|||
181
Fragster
гуру
29.04.20
✎
15:50
|
все в 1с уйдут
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |