Имя: Пароль:
1C
1С v8
Зазеркалье: 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(Выражение, Контекст)
  Выполнить(Выражение);
  Возврат Истина;
КонецФункции


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

Сейчас не вспомню, но что-то типа
Выполнить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
А куда пул-реквесты 1С-у засылать?
https://prnt.sc/s7j438
Виснет на диалогах, 8.3.17.1386
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с уйдут