|   |   | 
| 
 | Производительность 1С по выделению i-го символа в огромной строке. | ☑ | ||
|---|---|---|---|---|
| 0
    
        Гений 1С гуру 11.09.20✎ 12:07 | 
        У нас тут с коллегой не из мира 1С возник вопрос по производительности разбора строк.
 https://geniy1s.ru/developments-1s/1s-data-exchanges/csv-xml-translation Дело в том, что я скопировал из интернетов функцию по разбору CSV. Она берет файл в одну строку и перебирает по символьно, то есть использует Сред(Строка, Поз, 1). Алгоритм работает медленно и я сказал товарищу, что проблема имеенно в том, что 1С постоянно ищет символ с номером Поз. Он предложил написать тестовый замер скорости на поиск, я отказался. Файлы там большие, думаю, занимают несколько страниц в памяти по 64Кб. Как думаете, поиск в огромной строке по номеру позиции всегда нагружает систему или 1С как-то этот момент кэширует. | |||
| 1
    
        ДенисЧ 11.09.20✎ 12:09 | 
        "я отказался."
 Ну и кто тут злобный аутодендромутант? | |||
| 2
    
        acht 11.09.20✎ 12:09 | 
        (0) > Он предложил написать тестовый замер скорости на поиск, я отказался.
 Браво! И приперся делегировать эту задачу на форум. | |||
| 3
    
        Гений 1С гуру 11.09.20✎ 12:12 | 
        (2) ну тут есть любознательные. ;-) Я отказался, потому что думаю, что 1с не умеет кэшировать. Может, кто заморачивался на каких проектах     | |||
| 4
    
        fisher 11.09.20✎ 12:12 | 
        (0) "или 1С как-то этот момент кэширует"
 Какой "момент"? | |||
| 5
    
        Ботаник Гарден Меран 11.09.20✎ 12:15 | 
        Есть ЧтениеТекста, читает за раз столько символов, сколько укажешь.     | |||
| 6
    
        fyn 11.09.20✎ 12:24 | 
        (0) Дед, иди к себе в коммерчески успешный бложег и не отвлекай нормальных людей от работы     | |||
| 7
    
        Вафель 11.09.20✎ 12:26 | 
        1с работает тормозно со строками     | |||
| 8
    
        Вафель 11.09.20✎ 12:27 | 
        можно строку в массив разбить     | |||
| 9
    
        H A D G E H O G s 11.09.20✎ 12:30 | 
        (7) Нет     | |||
| 10
    
        Вафель 11.09.20✎ 12:35 | 
        значит только сложение тормозит?     | |||
| 11
    
        H A D G E H O G s 11.09.20✎ 12:37 | 
        (10) Сложение строк тормозит везде, если только нет хитрых вещей типа буфера.     | |||
| 12
    
        H A D G E H O G s 11.09.20✎ 12:39 | 
        (10) На самом деле нормальный человек натравит замер на этот кусок копра в (0) в академических интересах и потом выкинет его накуй.     | |||
| 13
    
        Гений 1С гуру 11.09.20✎ 12:41 | 
        (12) для меня производительность была не критичной. Статью написал позже. не подумал замеры сделать.     | |||
| 14
    
        Вафель 11.09.20✎ 12:41 | 
        (12) а какой хороший код по разбору csv?     | |||
| 15
    
        Гений 1С гуру 11.09.20✎ 12:44 | 
        (14) Ну как минимум использовать построчный разбор, а не тянуть весь файл из одной строки.     | |||
| 16
    
        vit-alx 11.09.20✎ 12:44 | 
        (14) лучший код это впулить его булкой в скуль и работать уже с курсором. остальное от лукавого     | |||
| 17
    
        Гений 1С гуру 11.09.20✎ 12:44 | 
        (16) это надо скуля иметь.     | |||
| 18
    
        Web00001 11.09.20✎ 12:47 | 
        Когда то очень давно когда начинал писать https://www.1c-cod.ru/ я с дурости сначала взял и прям чуть ли не посимвольно, раскраску кода с ИТС переписал на питоне. То, что отрабатывало за секунды на 1с, на питоне занимало чуть ли не минуты     | |||
| 19
    
        Повелитель 11.09.20✎ 12:49 | 
        (0) Слушайте, если действительно было бы интересно.
 То накодить это не дольше чем тему на форуме создать. На вскидку там 10-15 строк кода + замер. | |||
| 20
    
        Гений 1С гуру 11.09.20✎ 12:53 | 
        (19) счас, я замерю, так и быть.     | |||
| 21
    
        Гений 1С гуру 11.09.20✎ 12:55 | 
        (19) и потом, есть молодые, борзые и дерзские, им только задачу интересную дай - порвут на куски. А я так сказать, мудрый Акелла     | |||
| 22
    
        МихаилМ 11.09.20✎ 13:23 | ||||
| 23
    
        МихаилМ 11.09.20✎ 13:28 | 
        +(22) пример не совсем удачный, тк можно избежать строки внутренней . преобразование поддерживает тип valuetable те может вернуть сразу таблицу значений.     | |||
| 24
    
        H A D G E H O G s 11.09.20✎ 13:39 | 
        (14) Прочитать через ЧтениеФайла с разделителем csv через ПрочитатьСтроку     | |||
| 25
    
        H A D G E H O G s 11.09.20✎ 13:46 | 
        Даже проще - прочитать через ЧтениеФайла с разделителем ПС в переменную
 Переменную разложить в массив подстрок по csv разделителю | |||
| 26
    
        Вафель 11.09.20✎ 13:58 | 
        (25) для строк с кавычками так не сработает     | |||
| 27
    
        Вафель 11.09.20✎ 14:01 | 
        а для csv как в тж, где кавычки 2х типов и переносы строк внутри тем паче     | |||
| 28
    
        Zamkadysh 11.09.20✎ 14:08 | 
        (0) Строка хранится в памяти как массив символов. При обращении по номеру символа, ни какого "поиска", конечно, нет - сложность там O(1) (и не как в хеш мапе - при определенной фазе луны, а всегда - это ведь просто взятие куска памяти по смещению).
 Если просто посимвольно перебирать строку - всё время уйдёт в выделение и освобождение памяти (ведь каждый вызов Сред должен выделить новую строку, а потом когда она станет не нужна - освободить). | |||
| 29
    
        polosov 11.09.20✎ 14:20 | 
        (28) Зачем выделать/освобождать, если можно пользоваться одной символьной переменной?
 Java головного мозга? | |||
| 30
    
        Asmody 11.09.20✎ 14:20 | 
        (0) вопрос 1: это нужно было 1 раз, изредка или всегда?     | |||
| 31
    
        fisher 11.09.20✎ 14:27 | 
        (28) Сложность и быстродействие - не одно и тоже. Можно и при константной сложности иметь неважное быстродействие. Скорость интерпретации как таковой в 1С тоже играет роль ибо вполне существенна. Сплошь и рядом в 1С можно выиграть на банальном уменьшении количестве операций интерпретатора при использовании более высокой сложности, но задействовав библиотечные функции.     | |||
| 32
    
        Zamkadysh 11.09.20✎ 14:27 | 
        (29) Символьного типа во встроенном языке 8ки нет, а даже если бы и был, в данном случае это не изменило бы ничего.
 Строки во встроенном языке (как и в подавляющем большинстве современных ЯП) изменять нельзя. Переменная-то одна, но объект каждый раз заново выделяется. (0) Посмотрел код. В качестве некоторой оптимизации - можно в теле цикла вместо СтрокаФайла = Новый Массив, вызывать СтрокаФайла.Очистить(). | |||
| 33
    
        Zamkadysh 11.09.20✎ 14:30 | 
        (31) В (0) ведь не какой абстрактный вопрос, а вполне конкретное предположение:
 >проблема имеенно в том, что 1С постоянно ищет символ с номером Поз Именно его я пытался прокомментировать. | |||
| 34
    
        Гений 1С гуру 11.09.20✎ 14:34 | 
        Короче, сделал замер разбора CSV 76 Гб, операции сравнения строк тоже затратные, не только выделение символа:
 https://www.evernote.com/l/Act81qhAMvtHeKEf4KgHo0cYLKE26Iy6Nik/ | |||
| 35
    
        polosov 11.09.20✎ 14:40 | 
        (32) С чего ты взял, что в 1С строки имеют объектную природу?     | |||
| 36
    
        Ботаник Гарден Меран 11.09.20✎ 14:43 | 
        Еще можно небольшие циклы в одну строку написать. На таком количестве циклов должно иметь эффект.     | |||
| 37
    
        Asmody 11.09.20✎ 14:44 | 
        (36) да ладно!     | |||
| 38
    
        Zamkadysh 11.09.20✎ 14:45 | 
        (35) Все значения во встроенном языке независимо от типа всегда размещаются в "кучу" (heap'е). Других вариантов просто не предусмотрено.
 P.S. Я ничего не говорил про "объектную" природу - это уже какое-то семантическое качество, в этой же ветке вроде производительность обсуждается. P.P.S. "С чего взял" - "сорока на хвосте принесла". | |||
| 39
    
        Zamkadysh 11.09.20✎ 14:46 | 
        (3?) Эффект точно будет - отладчик и замер производительности работать перестанут ;)     | |||
| 40
    
        Garykom гуру 11.09.20✎ 14:47 | 
        (25) Гм ты реально не в курсе про особенности вполне валидных CSV ?     | |||
| 41
    
        Asmody 11.09.20✎ 14:48 | 
        (34) это ты 76 гб в одну строку запихал?! Гений чо!     | |||
| 42
    
        Leonardo1c 11.09.20✎ 14:49 | 
        А файл читать построчно что не захотел?     | |||
| 43
    
        Гений 1С гуру 11.09.20✎ 14:59 | 
        (42) код не мой. Проще так оставить, чем перепиисывать     | |||
| 44
    
        Повелитель 11.09.20✎ 15:03 | 
        (34) По замеру не понятно, кэширует или нет?     | |||
| 45
    
        mistеr 11.09.20✎ 15:17 | 
        (28) >При обращении по номеру символа, ни какого "поиска", конечно, нет - сложность там O(1)
 Не все так просто. Все строки в 1С это Юникод, в кодировке UTF-8. Это кодировка с переменной шириной символа. Он может занимать и 2, и 3, и 4 байта, а в самых экзотических случаях и больше. Поэтому просто взять смещение в памяти не получится, это именно поиск, с самого начала строки. Этот код, конечно, оптимизирован, но время занимает. В других языках, более богатых типами, можно хранить строки в кодировке с фиксированной шириной символа, например двухбайтовой. Тогда выделение подстроки будет действительно выполняться за константное время. В 1С такой возможности нет. Поэтому в подобных задачах файлы лучше считывать построчно и искать/парсить в пределах строки. | |||
| 46
    
        Гений 1С гуру 11.09.20✎ 15:21 | 
        (44) Такие вот в 1с замеры     | |||
| 47
    
        hhhh 11.09.20✎ 15:41 | 
        (46) пробуй новую функцию СтрРазделить. Она работает в сотни раз быстрее, чем старые строковые функции. То есть читаешь файл полностью и разбиваешь на массив строк - занимает несколько миллисекунд.     | |||
| 48
    
        acht 11.09.20✎ 15:52 | 
        (45) Там внутри двухбайтовый char16_t, т-щ программист.
 Они про это рассказывали когда описывали процесс перехода на C++17 Но выдумать проще и притягательней, согласен. | |||
| 49
    
        mistеr 11.09.20✎ 15:54 | 
        (48) Ссылка есть?
 А в доке пишут utf-8. | |||
| 50
    
        acht 11.09.20✎ 15:56 | 
        (49) В доке на что?     | |||
| 51
    
        mistеr 11.09.20✎ 16:00 | 
        (50) Ну не в доке, в одной из книжек по 1С видел. Про архитектуру что-то.
 А про двухбайтовые строки очень интересно подтверждение, если есть. | |||
| 52
    
        acht 11.09.20✎ 16:00 | 
        Ты попробуй, например, вывести СтрДлина(Символ(65536)), весьма удивишься     | |||
| 53
    
        mistеr 11.09.20✎ 16:00 | 
        (51) "по 1С" читать как "от 1С"     | |||
| 54
    
        acht 11.09.20✎ 16:01 | 
        Вот тут, например, они немного рассказывают как от STLPort уходили
 https://habr.com/ru/company/1c/blog/429678/ | |||
| 55
    
        acht 11.09.20✎ 16:02 | 
        Теперь ты давай свою "одну из книжек от 1С про архитектуру что-то."     | |||
| 56
    
        Serginio1 11.09.20✎ 16:04 | 
        Попробуй этот http://catalog.mista.ru/1c/articles/371887/
 Он использует Найти | |||
| 57
    
        Zamkadysh 11.09.20✎ 16:09 | 
        (45) >Не все так просто. 
 Да нет, всё именно так просто. >Все строки в 1С это Юникод Это да >в кодировке UTF-8. А вот это нет. UTF-8 используется только в качестве внешней кодировки по умолчанию. В памяти всё в UTF-16. Как в java. Т.е. символ это всегда 2 байта. В unicode символ это совсем не всегда 2 байта. Но и "символы" во встроенном языке это совсем не всегда символы - можно получить вместо символы половину суррогатной пары. Например, если сделать строку из одного символа эмозди и получить через Сред первый символ - вместо символа получится нечитаемый мусор (а длина строки будет 2). | |||
| 58
    
        mistеr 11.09.20✎ 16:15 | 
        (54) Спасибо. Значит UTF-16.
 >к весне 2017 (версия 8.3.11 1С:Предприятия) миграция была завершена Книжка, в которой я видел utf-8, скорее всего более ранняя. | |||
| 59
    
        mistеr 11.09.20✎ 16:17 | 
        (57) UTF-16 это тоже кодировка с переменной длиной, строго говоря.
 >если сделать строку из одного символа эмозди и получить через Сред первый символ Проверял? | |||
| 60
    
        acht 11.09.20✎ 16:24 | 
        (58) А по состоянию на "более раннюю книжку" у них был wchar_t. Который в Windows 2 байта, а в Linux 4. Ссылка та же.     | |||
| 61
    
        acht 11.09.20✎ 16:25 | 
        (60) А откуда ты теперь UTF-16 нафантазировал?     | |||
| 62
    
        acht 11.09.20✎ 16:25 | 
        (61) к (59)     | |||
| 63
    
        Zamkadysh 11.09.20✎ 16:25 | 
        (58) >Книжка, в которой я видел utf-8, скорее всего более ранняя.
 В stlport'е тоже, конечно utf-8 не используется. Стандартная плюсовая строка вообще ни как не может быть из символов разного размера. (59) >Проверял? Нет. Как и многие другие вещи. Это просто теоретическое построение на основе того что: * все эмодзи - это суррогатные пары * 8ка использует 16битные "символы" (т.е. строго говоря это могут быть и не символы, а только их части - как и в java, но почти всем на это наплевать потому что в жизни суроггатные пары встречаются редко) * 16 битный символ содержит половину суррогатной пары Какой смысл после этого проверять что первый "символ" от эмодзи будет содержать половину суррогатной пары? | |||
| 64
    
        Zamkadysh 11.09.20✎ 16:27 | 
        (62) А есть (более менее реалистичные) варианты что ещё хранить в 2байтовом символе?     | |||
| 65
    
        acht 11.09.20✎ 16:29 | 
        (64) UCS-2 например, фиксированная ширина.
 UTF, они ж по определению переменной ширины, чиселки после - это всего разрядность одной части | |||
| 66
    
        Вафель 11.09.20✎ 16:36 | 
        но получение символа по номеру в строке  должно же учитывать переменность длины     | |||
| 67
    
        Zamkadysh 11.09.20✎ 16:36 | 
        (65) Но там просто нет символов за пределами 65к вообще.
 В 8ке же они есть (на счёт поддержки именно эмодзи на самом деле есть определенные сомнения, а проверять лень). | |||
| 68
    
        mistеr 11.09.20✎ 16:37 | 
        (61) Из той же статьи, https://habr.com/ru/company/1c/blog/429678/#comment_19365358     | |||
| 69
    
        NorthWind 11.09.20✎ 16:37 | 
        (67) держит, я пробовал.     | |||
| 70
    
        NorthWind 11.09.20✎ 16:39 | ||||
| 71
    
        Garykom гуру 11.09.20✎ 16:40 | 
        Для извращенцев.
 В 1С встроен движок JavaScript внутри ПолеHTML, так что закидываем туда CSV и вперед... | |||
| 72
    
        Zamkadysh 11.09.20✎ 16:40 | 
        (66) В каком-то лучшем из миров - наверное.
 Но на практике, не учитывает. В java метод строки charAt тоже может спокойно вернуть половину суррогатной пары (собственно ему больше нечего возвращать, ведь char в java 16 битный - "целый" символ туда может просто не поместиться). Про C# не в курсе, но что-то мне подсказывает что и там не лучше. Лучше будет только если сделать символ 32битным (или правда сделать получение символа по индексы "поиском" - т.е. сразу сломать в смысле производительности кучу алгоритмов). | |||
| 73
    
        Вафель 11.09.20✎ 16:40 | 
        (72) а в 1с? ктонибуль проверял? накидай код посмотрим | |||
| 74
    
        acht 11.09.20✎ 16:44 | 
        (70) Ну, собственно в твоем куске кода оттуда:
 ПолеВвода1 = Символ (55357) + Символ (56832);// D83D и DE00 И есть ответ | |||
| 75
    
        acht 11.09.20✎ 16:44 | 
        (68) О, точно, спасибо     | |||
| 76
    
        Zamkadysh 11.09.20✎ 16:47 | 
        (73) Мне не удалось вставить
 😁 Ни в исходный текст модуля (в конфигураторе), ни в поле ввода. Я думаю 8ка просто их не поддерживает ;( | |||
| 77
    
        Вафель 11.09.20✎ 16:54 | 
        через буфер нельзя но файл открывается     | |||
| 78
    
        Ненавижу 1С гуру 11.09.20✎ 17:15 | 
        (0) на мисте ты обещал, что в твоем уютном бложике https://geniy1s.ru/ будут (почти) ежедневно статьи появляться. Не смог? Или биржевые спекуляции затянули?     | |||
| 79
    
        VladZ 11.09.20✎ 17:26 | 
        Реклама блога Гения1С.     | |||
| 80
    
        Zamkadysh 11.09.20✎ 17:43 | 
        (77) Попробовал через файл (засунул его в макет, дальше прочитал через ЧтениеТекста), результат вполне ожидаем:
 СтрДлина(Строка) = 2 Сред(Строка, 1, 1) = "?" Сред(Строка, 2, 1) = "?" Сред(Строка, 1, 2) = "😁" ? стал уже после копирования через clipboard исходно там визуально был пробел. | |||
| 81
    
        ДенисЧ 11.09.20✎ 17:51 | 
        (80) А если код символа посмотреть?     | |||
| 82
    
        Zamkadysh 11.09.20✎ 18:00 | 
        (81) КодСимвола(Строка, 1) = 55 357
 КодСимвола(Строка, 2) = 56 833 | |||
| 83
    
        NorthWind 11.09.20✎ 22:43 | 
        (76) слушай, ну я вставлял и работало. См. (70), (74). Они в стандартных шрифтах не особо красивые рожицы, но есть. Их видно, и они именно такие как должны быть.     | |||
| 84
    
        NorthWind 11.09.20✎ 22:49 | 
        (45) в винде стандарт USC-2, а не UTF-8.     | |||
| 85
    
        NorthWind 11.09.20✎ 22:56 | 
        (65) там не вполне так. UCS-2 и UTF-16 по сути одно и то же, только первый вариант более устаревший и там что-то не поддерживается. А переменная длина символа там, кажется, может быть у всего, кроме самой широкой. Другой вопрос что это не всегда используется.     | |||
| 86
    
        Конструктор1С 12.09.20✎ 06:56 | 
        (13) "для меня производительность была не критичной"
 Под таким девизом проходят многие говноподелки. И ладно если бы речь шла об оптимизации, в ряде случаев до нормальной производительности "руку протянуть": при написании запроса попадать в индексы и использовать подходящие средства платформы. Например, в 1с XML можно читать и записывать разными средствами, но часто использую те, которые более привычны | |||
| 87
    
        Конструктор1С 12.09.20✎ 07:19 | 
        (0) ой ё... Нафига я скачал этот говнокод? Чувак, у тебя просто талант писать дерьмище
 Как раз в тему, тут недавно был разговор про говнокод и его последствия. А это прям наглядное пособие. Элементарный функционал, но всё так сделано через одно место... Т.е. если такая поделка встретится где-то в проде, то чтобы её переделать потребуется времени больше, чем заново написать такое же с нуля | |||
| 88
    
        dangerouscoder 12.09.20✎ 07:37 | 
        (87) варить лохам найденный в гугл говнокод надо тоже уметь..     | |||
| 89
    
        dangerouscoder 12.09.20✎ 07:38 | 
        (88) *впарить     | |||
| 90
    
        Zamkadysh 12.09.20✎ 08:33 | 
        (83) Ну а я вставлял и не работало:
 * предприятие 8.3.18 (на других не пробовал, может и правда сломали) * Window 10 * копировал из notepad++ * в веб клиенте ожидаемо работает (но это явно заслуга браузера) * шрифты тут не причем, если из файла прочитать и вставить в поле ввода - отображается ведь | |||
| 91
    
        NorthWind 12.09.20✎ 15:09 | 
        (90) это была 8.3.12, обычная форма, на форме поле ввода и в него кодом то что в (74). Запускаешь форму - и в поле ввода мордочки. Windows 10.     | |||
| 92
    
        mistеr 12.09.20✎ 18:17 | 
        (91) Выводит строку на экран Windows 10, тут много умк не нужно. А вот функцию Сред() выполняет уже 1С. :)     | |||
| 93
    
        Гений 1С гуру 12.09.20✎ 20:05 | 
        (79) да ладно тебе, тут больше кипежа по теме поста, чем той рекламы.     | |||
| 94
    
        Гений 1С гуру 22.09.20✎ 20:09 | 
        Кстати, все же поправил код разбора CSV на построчность, получилось так:
 &НаКлиенте Функция ПрочитатьCSV(Знач ТД, Разделитель, КоличествоКолонок) Экспорт //http://chel1c.ru/импорт-из-csv-в-1с/ //ТД - текстовый документ Результат = Новый Массив; // массив строк Скобка=ЛОЖЬ; Начало=1; Колонка=0; СтрокаФайла=новый Массив; // массив колонок в строке ТекЗн = ""; ВсегоСтрок = ТД.КоличествоСтрок(); Для НомерСтроки = 1 ПО ВсегоСтрок Цикл ТекСтрока = ТД.ПолучитьСтроку(НомерСтроки) + Символы.ПС; //Имитируем перевод строки в конце строки ДлинаСтроки = СтрДлина(ТекСтрока); для Позиция = 1 по ДлинаСтроки Цикл // обходим файл посимвольно Символ = Сред(ТекСтрока, Позиция, 1); //если встречается кавычка, фиксируем ее открытие, прекращаем итерацию и продолжаем цикл. Если Символ="""" И Скобка=Ложь Тогда Скобка=Истина; Продолжить; //Если встречается закрывающаяся кавычка, фиксируем ее закрытие и тоже продолжаем цикл ИначеЕсли Символ="""" И Скобка=Истина ТОгда Скобка=Ложь; Продолжить; КонецЕсли; //Если встречается разделитель или перенос строки вне кавычек, //вносим информацию в массив Если (Символ=Разделитель ИЛИ Символ=Символы.ПС) И Скобка=Ложь Тогда Конец=Позиция; Колонка=Колонка+1; //Получаем текущий элемент ТекЗн = СокрЛП(Сред(ТекСтрока, Начало, Конец-Начало)); Если Лев(ТекЗн, 1) = """" Тогда ТекЗн = Сред(ТекЗн, 2); КонецЕсли; Если Прав(ТекЗн, 1) = """" Тогда ТекЗн = Сред(ТекЗн, 1, СтрДлина(ТекЗн) - 1); КонецЕсли; СтрокаФайла.Добавить(ТекЗн); //Если набралось количество колонок, равное их количеству в шапке, записываем всю строку //в массив и переходим к следующей Если Колонка = КоличествоКолонок ИЛИ Символ=Символы.ПС Тогда Результат.Добавить(СтрокаФайла); СтрокаФайла=Новый Массив; Колонка=0; КонецЕсли; ТекЗн = ""; //Сбрасываем ТекЗн Начало = Позиция + 1; КонецЕсли; КонецЦикла; ТекЗн = ТекЗн + Сред(ТекСтрока, Начало); //До конца строки Начало = 1; //Начало с новой строки... КонецЦикла; //Удаляем шапку таблицы из массива строк //Результат.Удалить(0); Возврат Результат; КонецФункции | |||
| 95
    
        Ненавижу 1С гуру 22.09.20✎ 20:13 | 
        (94) жестко
 Если Символ="""" И Скобка=Ложь Тогда Скобка=Истина; Продолжить; //Если встречается закрывающаяся кавычка, фиксируем ее закрытие и тоже продолжаем цикл ИначеЕсли Символ="""" И Скобка=Истина ТОгда Скобка=Ложь; Продолжить; КонецЕсли; | |||
| 96
    
        Гений 1С гуру 22.09.20✎ 20:38 | 
        (95) код не мой     | |||
| 97
    
        H A D G E H O G s 22.09.20✎ 20:41 | 
        Сергей пытается в оптимальность
 https://coub.com/view/2jbxaw | |||
| 98
    
        dangerouscoder 22.09.20✎ 20:54 | 
        (96) Скобка =?(Символ="""" ,НЕ Скобка,Скобка)     | |||
| 99
    
        Vakhrin 22.09.20✎ 21:04 | 
        (98) ошибка )
 Если Символ="""" Тогда Скобка = НЕ Скобка; Продолжить; КонецЕсли; | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |