- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
Док.н212=ТекЛист.Cells(х,2).Text;
Док.н213=ТекЛист.Cells(х,3).Text;
Док.н214=ТекЛист.Cells(х,4).Text;
Док.н215=ТекЛист.Cells(х,5).Text;;
Док.н216=ТекЛист.Cells(х,6).Text;
Док.н217=ТекЛист.Cells(х,7).Text;;
Док.н218=ТекЛист.Cells(х,8).Text;
Док.н219=ТекЛист.Cells(х,9).Text;
Док.н220=ТекЛист.Cells(х,10).Text;
Док.н221=ТекЛист.Cells(х,11).Text;
Док.н222=ТекЛист.Cells(х,12).Text;
Док.н223=ТекЛист.Cells(х,13).Text;
Док.н224=ТекЛист.Cells(х,14).Text;
Док.н225=ТекЛист.Cells(х,15).Text;
Док.н226=ТекЛист.Cells(х,16).Text;
Док.н227=ТекЛист.Cells(х,17).Text;
Док.н228=ТекЛист.Cells(х,18).Text;
Док.н229=ТекЛист.Cells(х,19).Text;
Док.н230=ТекЛист.Cells(х,20).Text;
Док.н231=ТекЛист.Cells(х,21).Text;
Док.н232=ТекЛист.Cells(х,22).Text;
Док.н233=ТекЛист.Cells(х,23).Text;
Док.н234=ТекЛист.Cells(х,24).Text;
Док.н235=ТекЛист.Cells(х,25).Text;
Док.н236=ТекЛист.Cells(х,26).Text;
Док.н237=ТекЛист.Cells(х,27).Text;
Док.н238=ТекЛист.Cells(х,28).Text;
Док.н239=ТекЛист.Cells(х,29).Text;
Док.н240=ТекЛист.Cells(х,30).Text;
Док.н241=ТекЛист.Cells(х,31).Text;
Док.н242=ТекЛист.Cells(х,32).Text;
Док.н243=ТекЛист.Cells(х,33).Text;
Док.н244=ТекЛист.Cells(х,34).Text;
Док.н245=ТекЛист.Cells(х,35).Text;
Док.н246=ТекЛист.Cells(х,36).Text;
Док.н247=ТекЛист.Cells(х,37).Text;
Док.н248=ТекЛист.Cells(х,38).Text;
Док.н249=ТекЛист.Cells(х,39).Text;
Док.н250=ТекЛист.Cells(х,40).Text;
Док.н251=ТекЛист.Cells(х,41).Text;
Док.н252=ТекЛист.Cells(х,42).Text;
Док.н253=ТекЛист.Cells(х,43).Text;
Док.н254=ТекЛист.Cells(х,44).Text;
Док.н255=ТекЛист.Cells(х,45).Text;
Док.н256=ТекЛист.Cells(х,46).Text;
Док.н257=ТекЛист.Cells(х,47).Text;
Док.н258=ТекЛист.Cells(х,48).Text;
Док.н259=ТекЛист.Cells(х,49).Text;
Док.н260=ТекЛист.Cells(х,50).Text;
Док.н261=ТекЛист.Cells(х,51).Text;
Док.н262=ТекЛист.Cells(х,52).Text;
Док.н263=ТекЛист.Cells(х,53).Text;
Док.н264=ТекЛист.Cells(х,54).Text;
Док.н265=ТекЛист.Cells(х,55).Text;
Док.н266=ТекЛист.Cells(х,56).Text;
Док.н267=ТекЛист.Cells(х,57).Text;
Док.н268=ТекЛист.Cells(х,58).Text;
Док.н269=ТекЛист.Cells(х,59).Text;
// ...
// и так далее все реквизиты
Тот же программер с поиском даты заполняет реквизиты документа.
3.14159265 09.12.2010 12:39 # +4
то 1С - отечественный наркотик (вредный клон американского препарата) напрочь убивающий их.
KirAmp 09.12.2010 13:19 # 0
ingenuus 09.12.2010 13:24 # +2
3.14159265 09.12.2010 14:20 # +2
абсолютно полностью согласен.
1C - калечит мозг ---> искалеченный мозг генит такое
Ivon 09.12.2010 14:52 # 0
Не правда. 1С кроме удобств платформы так же накладывает некоторые ограничения на разработчика. Обход этих ограничений очень сильно развивает мозг.
ingenuus 09.12.2010 16:00 # +3
Мне кажется как раз наоборот. 1С накладывает ограничения именно на развитие. Решаемых с помощью 1С задачи очень ограниченное количество и дальше понимания как их решать развитие не идет.
Анонимус 09.12.2010 14:21 # +2
пых и 1с убивают
си развивает
как-то так
TarasB 09.12.2010 14:48 # 0
Анонимус 09.12.2010 14:53 # +2
но кроме того есть ублюдошный API, дебильная структура базы (наследние dbf), все болезни узкозаточенных языков (отсутствие многопоточности нормальной) итд...
я писал только на семерке, но не думаю что принципиально что-то изменилось.
убедится просто: сходите на форумы 1С программистов и посмотрите на код, который они там пишут
Ivon 09.12.2010 14:57 # 0
Анонимус 09.12.2010 14:58 # 0
ps: я не против 1С как решения, но программировать на нем я бы не хотел
Ivon 09.12.2010 15:13 # 0
Ну, я некоторое время писал на C#, была необходимость пописать на 1С 7.7, но, как говорится, "ниасилил". А вот 8.1 пошла на ура. Сейчас программлю на 1С 8.1 в полный рост, хотя разбирался во всем сам.
Анонимус 09.12.2010 15:19 # +2
Ivon 09.12.2010 15:26 # 0
Анонимус 09.12.2010 15:29 # 0
Выходит, что 1с8 не поддерживает создание собственных классов, верно?
Ivon 09.12.2010 15:30 # 0
Анонимус 09.12.2010 15:31 # 0
ingenuus 09.12.2010 15:56 # 0
Анонимус 09.12.2010 15:58 # 0
и что, правда удобно описывать сложную бизнес-логику в процедурном стиле?
хотя бы указатели на функции там есть?
ingenuus 09.12.2010 16:16 # 0
Про указатели шутку оценил =)
Если команда "Выполнить", в которую можно передать кусок кода в качестве текста.
В семерке работать было невозможно, т.к. все функции и процедуры были private.
В восьмерке можно уже явно указать функции public, но этим мало кто пользуется по старинке все так и реализуют всю логику заново в каждой обработке и каждом отчете.
Анонимус 09.12.2010 16:19 # +1
что-то типа eval?
Это единственный способ сделать стратегию?))
>>реализуют всю логику заново в каждой обработке и каждом отчете.
прекрасный язык)) прекрасная платформа
ingenuus 09.12.2010 16:34 # 0
Пример:
а = 0;
Выполнить("а = 2 + 2");
Сообщить(а);
Я честно говоря даже не представляю как через него стратегию реализовать.
Да, платформа действительно прекрасная, поэтому и ухожу потихоньку оттуда =)
Даже не знаю почему она стала настолько популярной...
Анонимус 09.12.2010 16:45 # 0
Через выполнить видимо это можно сделать так:
Как-то так можно сделать?
Ivon 09.12.2010 16:55 # 0
ingenuus 09.12.2010 16:56 # 0
Анонимус 09.12.2010 16:56 # 0
но по другому-то никак
ingenuus 09.12.2010 17:00 # 0
"Если Тогда"
Ivon 09.12.2010 17:09 # 0
Анонимус 09.12.2010 17:11 # 0
в случае чистых сей можно передать указатель на функцию. Это хуже (можно налажать с сигнатурой или еще чем), но опять же -- не надо писать код, как строку.
в 1С, как я понял, можно только как строку писать)
Ivon 09.12.2010 17:11 # 0
Анонимус 09.12.2010 17:16 # 0
стратегия может быть КАКАЯ УГОДНО. Там может быть сложный алгоритм. Смысл в том, што вычислитьНалог не знает об этом
Ivon 09.12.2010 17:27 # 0
Анонимус 09.12.2010 17:32 # 0
смысл в том, что функция снаружи получает кусок логики, которую исполняет
считайте, что Вы передаете функцию в функцию.
вот о стратегии: http://en.wikipedia.org/wiki/Strategy_pattern
там есть и примеры
Ivon 09.12.2010 17:41 # 0
Анонимус 09.12.2010 17:44 # 0
bugmenot 09.12.2010 18:00 # 0
не бывает такого!
Анонимус 09.12.2010 18:03 # 0
ingenuus 09.12.2010 18:03 # 0
Пример
ИмяФункции = "ПолучитьРезультат();";
Результат = "";
Выполнить("Результат = " + ИмяФункции);
Или при получении данных из неизвестных заранее полей таблицы/результата запроса.
ИмяПоля = "ПолеДанных";
Значение = "";
Выполнить("Значение = ТЗ." + ИмяПоля);
Ivon 09.12.2010 16:26 # 0
Не согласен. Мои коллеги пользуются либо общими модулями либо вызывают функцию из модуля нужного объекта. У нас самописный продукт под страховую компанию.
Анонимус 09.12.2010 16:34 # 0
Знаете такой паттерн?
Как реализовать его без передачи ссылок и без ООП?
ingenuus 09.12.2010 16:42 # 0
Анонимус 09.12.2010 16:46 # 0
http://govnokod.ru/4878#comment56399
ingenuus 09.12.2010 17:05 # 0
Посмотри типовые конфигурации и ужаснись =)
Ivon 09.12.2010 17:07 # 0
Ну, зато у них "1С:Совместимо"...
croacker 31.12.2010 07:34 # 0
Про API :) можно поподробнее?
И про многопоточность, если не трудно, в какое место ее стоит воткнуть?
bayan 07.03.2017 16:46 # −15
roman-kashitsyn 07.03.2017 16:54 # +15
Это только один из сценариев, где многопоточность приносит профит, причём даже не всегда основной.
Можно запускать различные задачи внутри одного приложения, работающего на одном ядре, чтобы код был более понятным. Например, удобно создавать по одному потоку на каждого клиента сервера.
bayan 07.03.2017 17:02 # −15
Чото жирно по одному потоку на каждого клиента.
Лучше все таки по потоку на ядро
roman-kashitsyn 07.03.2017 17:09 # +15
Корутина отличается от потока в основном тем, что шедулится в юзер-спейсе, а не ядром. Отсюда меньше накладных расходов на переключение контекста. Теоретически проблемы с ними примерно такие же, как с потоками.
>А чем плох один потом с нелокирующими действиями?
Тем, что код похож на кашу.
> корутины всякие?
А в твоём языке есть хорошая реализация корутин и шедулера для них, bayan?
bayan 07.03.2017 17:16 # −15
а так же на структуры(объекты в терминологии виндов) в памяти ядра, нет?
чото мне страшно за программу в которой будет 40 тысяч потоков, хотя я не пробовал.
Может быть всё будет хорошо.
Просто заюзать ядра процессора с корутиной нельзя, а с потоками ядра можно. Потому обычно люди стараются количество потоков сделать функцией от количества ядер чтобы они не топтались (ну там Io Completion Ports в винде, Grand Central Dispatch в яблоке)
>>Тем, что код похож на кашу.
ну при наличии async /await всяких не очень похож
>>А в твоём языке есть хорошая реализация корутин
ну вот ты же видел как в питоне asyncio сделано на корутинах и yield from?
Там довольно красиво и без каши
Вроде и в C# последнем не плохо
Вот если писать на джаве то конечно лучше юзать потоки)
guest 07.03.2017 17:56 # −15
> asyncio сделано на корутинах и yield from
Ты прикалываешься чтоли? Хорошая реализация корутин - это в го или boost.fibers. А async-await и прочие елда фром - это дно.
bayan 07.03.2017 17:57 # −15
что не так?
имхо дно это колбек спагетти
guest 07.03.2017 18:02 # −14
bayan 07.03.2017 18:04 # −15
ну извините
в языке их не было изначально, так что увы
guest 07.03.2017 18:08 # −15
Проблема в "необходимости явно протягивать передачу управления шедулеру через код".
> в языке их не было изначально, так что увы
Кого? В каком языке?
bayan 07.03.2017 18:11 # −15
Вот это:
"
loop = asyncio.get_event_loop()
loop.run_forever()
loop.close()
"?
не было корутин ни в питоне ни в C# ни в JS, иначе наверное их можно было вставить куда элегантнее, чтобы они внешне не отличались от обычных процедур
guest 07.03.2017 18:22 # −13
await протягивает передачу управления от socket.Read через peka выше по стеку до шедулера.
> не было корутин ни в питоне ни в C# ни в JS, иначе наверное их можно было вставить куда элегантнее
Это вообще не фича языка. В C(++) тоже ничего такого нет, что не мешает людям делать libcoro и прочие boost.fiber.
bayan 07.03.2017 18:27 # −15
ну так-таки ключевые слова. Если бы не async/await тут, то код бы смотрелся как обычный и был бы хорошим, правда?
Или тебе не нравится что стектрейс в эксепшенах и при дебаге будет адский?
Так-то в go тоже есть go )
guest 07.03.2017 18:39 # −15
> в go тоже есть go )
Как я уже сказал, мне похуй на ключевые слова. go просто запускает зеленый поток. ЕСТЕСТВЕННО должен быть какой-то способ запустить поток - будь то оператор языка go, библиотечная функция spawn или конструктор объекта std::thread.
bayan 07.03.2017 18:42 # −15
еще раз: тебе не нравится что портится стектрейс?
>>spawn или конструктор объекта std::thread.
ох) а началось все с того что я сказал что можно обойтись без системных тредов/процессов, а взять зеленые треды и корутины)
guest 07.03.2017 18:47 # −15
Я хз, какими тебе еще словами это повторить. Просто перечитай:
Необходимостью явно протягивать передачу управления шедулеру через код
Проблема в "необходимости явно протягивать передачу управления шедулеру через код".
await протягивает передачу управления от socket.Read через peka выше по стеку до шедулера
> еще раз: тебе не нравится что портится стектрейс?
Я ничего такого не говорил. Схуя ты это притянул сюда?
> зеленые треды и корутины)
Зеленые треды - это в го и boost.fiber, а async-await - это синтаксический сахарок над switch'ом по номеру состояния.
Ты ламер в общем, не о чем с тобой говорить.
bayan 07.03.2017 18:59 # −14
в пятый раз спрашиваю: чем тебе не нравится переитягивание?
только не надо отвечать что перетягивание тебе не нравится перетягиванием
>>Зеленые треды - это в го и boost.fiber, а async-await - это си
и как это опровергает мое противопоставление Native threads VS корутины, гринтреды и иже с ними?
>>Ты ламер в общем, не о чем с тобой говорить.
лол, ты пять раз не смог не вопрос ответить и в итоге психанул, гг
1024-- 07.03.2017 18:40 # +15
> ну так-таки ключевые слова. Если бы не async/await тут, то код бы смотрелся как обычный и был бы хорошим, правда?
Соглашусь с гостем.
Есть готовый код, который делает что надо. Начал зависеть от async-питушни - изволь переписать всё как async-питушню. Тот же самый по смыслу код должен зарасти ненужными ключевыми словами. А если была какая-то библиотека, то её вообще придётся переписать.
bayan 07.03.2017 18:49 # −14
я согласен, было бы лучше если бы код был одинаковый
для этого нужно править язык: нельзя сделать это сторонней либой.
guest 07.03.2017 18:58 # −15
Ну-ну. Еще раз, загугли boost.fiber, libcoro и gevent из твоего любимого питона.
bayan 07.03.2017 19:04 # −14
ну так либа-то там все равно своя, не так-ли?
я не могу сделать input или sleep. Надо делать gevent.sleep, разве нет?
а значит писать все равно надо "асинхронно" (да еще и специфично для либы)
guest 07.03.2017 19:10 # −15
bayan 07.03.2017 19:13 # −14
Выходит что и в gevent придется переписать
ну да: yield from там не будет
но переписать все равно надо
guest 07.03.2017 19:27 # −14
Могу только сказать, что заменить в паре мест socket.socket на gevent.socket проще, чем расставить по всему коду эвейты. И библиотеки вполне могут принимать сокет/поток от пользователя. Например, если есть парсилка json'а из iostream'а, то ей вполне можно подсунуть iostream, переключающий контекст под капотом.
bayan 07.03.2017 19:30 # −15
гость, вот же тебя стопицот раз спросил про слова, а ты меня ламером назвал, а потом сам же и говоришь что проблема в том что надо "думать о расстановке async"
Теперь я понимаю чем тебе не нравится пробрасываение. Чего сразу-то было не объяснить?
Похоже что 1024 думает примерно так же
guest 07.03.2017 19:38 # −15
bayan 07.03.2017 19:42 # −15
;)
>Спишем на недопонимание.
хорошо:)
В общем я согласен что функция с обычным return лучше и правильнее чем async/ await, yield from итд
guestinho 09.03.2017 02:36 # −15
guestinho 09.03.2017 02:33 # −15
А если эти вызовы в чужих модулях?
1024-- 07.03.2017 19:27 # +15
Не нравится, что они "лавинно" распространяются. (Как я понял, это тоже не нравится) Использовал в функции F асинхронный вызов - всё, переписывай функцию F как async. Потом во всех функциях, которые использовали F, дописывай async-await, потом во всех функциях, которые использовали функции, которые использовали F, дописывай async-await. Логика вычислений не изменилась (только в одном месте добавили асинхронный вызов), а код переписать надо (во всех местах).
Всё равно, что считали какую-то хрень для float'ов, а потом осознали, что точности не хватает - и пошли везде вставлять double. Но для этого как минимум придумали typedef и указание конкретного типа в одном месте или шаблоны. Или вообще конфиги, если рассматривать уровень программ. Чтобы не трогать алгоритм, когда меняется какое-то сопутствующее условие.
1024-- 07.03.2017 19:45 # +15
(Как я понял, гостю это тоже не нравится)
guest 07.03.2017 18:43 # −15
bayan 07.03.2017 18:48 # −15
я тебя четвертый раз спрашиваю чем тебе не нравится передача управления шедулеру?
1) тем что вместо return надо писать yield from?
2) тем что стектрейс в дебаге ужасный?
чем?
guestinho 09.03.2017 02:28 # −15
Извини, но именно так работает кооперативная многозадачность. Ты или крестик сними, или трусы одень.
CHayT 08.03.2017 12:08 # +1
Вроде не в этом же дело. Корутина -- это исключительно из области кооперативной многозадачности (явно нужно делать yield). Но в юзерспейсе можно и вытесняющую реализовать.
barop 09.03.2017 03:48 # −15
а если у тебя блокировка то нет
guestinho 09.03.2017 02:22 # −15
Если у тебя клиентов не 10к то норм.
croacker 08.03.2017 11:40 # 0
На вопрос, к сожалению вы не ответили.
barop 09.03.2017 01:26 # −14
За шесть лет Вы так и не узнали зачем нужна многопоточность
Хорошо быть 1С программистом
croacker 09.03.2017 05:52 # 0
Мой вопрос был, какие конкретно задачи планируется решать в 1С с помощью многопоточности?
bayan 09.03.2017 19:23 # −15
Я понятия не имею причем тут 1С, но исходя из того что бекенд 1Са давно уже сделан на нормальной реляционной БД (MS-SQL, например) то полагаю что 1С вполне себе получает бенефиты от многоядерности точно такие же, как и SQL сервер.
croacker 10.03.2017 04:48 # 0
меня интересует ответ на вопрос который задал. по этому зачем вы написали комментарий - загадка. википедия в РФ пока не забанена.
Есть только одно предположение, - вы тоже приболели капитанством. Это пройдет, верьте в себя. Буквально через год вы уже перестанете копипастить статьи на форумы.
ну и небольшой подарок - правильно пишется и говорится "скедьюлер", а не "шедулер". Не благодарите, мы все немного за просвещение.
guestinho 09.03.2017 01:42 # −15
croacker 09.03.2017 05:54 # 0
Она в 1С легко реализуется, просто у баропа уровень подготовки позволяет только капитанить в комментах.
guestinho 09.03.2017 11:31 # −15
croacker 09.03.2017 11:40 # 0
barop 09.03.2017 13:11 # −15
Анонимус 09.12.2010 15:30 # 0
в 1С нельзя написать свой класс. Можно только использовать те, что дает система. Примерно как в VBS. Так что ООП не поддерживается в полной мере.
Govnocoder#0xFF 09.12.2010 15:32 # 0
Ivon 09.12.2010 16:28 # 0
ingenuus 09.12.2010 17:07 # +2
Oleg_quadro 09.12.2010 16:12 # 0
Анонимус 09.12.2010 16:15 # +5
Это пример того, как коммунити влияет на подход.
Можно писать лучше, но все пишут плохо потому что ТАК ПРИНЯТО.
Тоже самое и с ПХП.
3.14159265 09.12.2010 16:23 # 0
>Тоже самое и с ПХП.
в точку. вообще Анонимусу +1 ко всем постам в треде.
Oleg_quadro 09.12.2010 16:32 # 0
Я негодую.
3.14159265 09.12.2010 18:03 # 0
>потому что ТАК ПРИНЯТО.
или Вы пасту про обезьян не читали?
Govnocoder#0xFF 09.12.2010 18:12 # 0
Oleg_quadro 09.12.2010 18:17 # 0
guest 01.01.2011 20:47 # −16
guest 01.01.2011 19:51 # −16
Тентаклист.
guest 01.01.2011 19:51 # −17
Эйвон, ты косметику производишь?
guest 01.01.2011 20:24 # −17
bugmenot 01.01.2011 20:42 # 0
guest 01.01.2011 20:46 # −16
guest 31.01.2017 00:57 # −15
<a href=http://altstar.com.ua/s/880182A>Купить Катушка зажигания</a>
<a href=http://altstar.com.ua/s/240971>Купить Компрессор кондиционера</a>
<a href=http://altstar.com.ua/s/ALB1032>Купить Генератор</a>
<a href=http://altstar.com.ua/s/AHM0437>Купить Щетки генератора</a>
guest 31.01.2017 21:53 # −15
<a href=http://altstar.com.ua/s/6008DDUC3E>Купить Подшипник шариковый</a>
<a href=http://altstar.com.ua/s/VR-B558B>Купить Регулятор генератора</a>
<a href=http://altstar.com.ua/s/STB4756>Купить Стартер</a>
<a href=http://altstar.com.ua/s/AFB1045>Купить Статор генератора</a>
bormand 01.02.2017 00:12 # −12
huesto 01.02.2017 00:23 # −5
inkanus-gray 01.02.2017 01:39 # +15
Если бы Страйкер заглядывал сюда почаще, можно было бы ему посоветовать поставить на капчу какой-нибудь малораспространённый шрифт.
guest 07.03.2017 15:32 # −15
guest 07.03.2017 15:33 # −14
guest 10.03.2017 06:12 # −15
guest 11.03.2017 10:43 # −15
guest 08.04.2017 01:24 # −15
guest 08.04.2017 18:27 # −7
guest 11.04.2017 02:20 # −11
guest 11.04.2017 19:49 # −11
guest 14.04.2017 08:14 # −11
guest 21.04.2017 02:03 # −5
rss 21.04.2017 23:06 # 0
guest 21.04.2017 23:32 # −5
CnEPMA 23.04.2017 20:17 # 0
CrashTesterAnusov 23.04.2017 22:04 # 0
CnEPMA 24.04.2017 09:53 # 0
CrashTesterAnusov 24.04.2017 20:22 # 0
guest 25.04.2017 02:44 # 0