#0
by HE1Cer
Подскажите, можно ли как-то приспособить функцию ИзСтрокиСРазделителями к файлу с разделителями - точка с запятой. Или может есть что-то аналогичное?
#2
by Злопчинский
читай построчно, используя указанную функцию из строки формируй СЗ из Сз извлекай нужные данные. . как вариант есть мнение что м.б. твой случай можно читать через установленные драйвера в системе..? .
#3
by Torquader
Если файл специально "подготовить", то можно - только проще сразу читать. Проблема 1С в том, что она не умеет искать в строке символ, начиная с какой-то фиксированной позиции (и восьмая версия тоже) и пока она это не умеет, называть 1С серьёзной системой для анализа содержимого файлов просто нельзя. VbScript вам в помощь и функцию InStr(Начало,Строка,ЧтоИщем,ТипСравнения)
#4
by Злопчинский
есть МОЯстрока = 23;47;58 98 45;60;20 СЗ = глРазложитьИзСтроки(мояСтрока,";"); получится список значений, состоящий из строк: 23 47 58 98 45 60 20
#6
by Злопчинский
можно использовать типовую функцию глРазложить - но она существенно тормознее - при больших обемах уже заметно немного.
#7
by vcv
Интересны три вопроса 1. Почему нет "Перем темпСтрока;" 2. Зачем нужно "темпСтрока = "";" 3. Что будет, если в разбиваемой строке есть ковычки. (последний вопрос самый неинтересный, а на первые два хотелось бы услышать ответ)
#8
by Злопчинский
1. наверное, надо? Почему? - явное определение переменной ускоряет выполнение кода? 2. шоб було. люблю занулять используемые переменные во избежание, возможно и не надо. 3. двойная кавычка заменяется на два апострафа
#9
by vcv
Точно уже не вспомню, но было "исследование" быстродействия переменных, определенных в функции/процедуре, переменных текущего модуля и глобальных переменных. Первые были быстрее. А вот на счет разницы между явным и неявным определением переменной не знаю. Разве что есть вероятность наткнуться на одноименную глобальную переменную или одноименный реквизит...
#11
by Torquader
Для 1С разницы в явном или неявном определении переменной нет, так как выделение памяти и ресурсов под переменную происходит в момент компиляции кода, а не в момент исполнения. Глобальная переменная может быть немного "медленнее", так как живёт не в локальной памяти модуля, а требует обращения в блоку переменных модуля. Реквизит будет намного медленнее, чем любая переменная, так как требует выполнение преобразования типа.
#12
by mikecool
"называть 1С серьёзной системой для анализа содержимого файлов просто нельзя." - а с какого перепугу 1с это система анализа содержимого файлов???
#13
by vcv
Мало того, что намного медленнее, еще и обращение к базе с большой вероятностью будет. Например, на форме есть реквизит "Фирма". Выполняю строчку "ТекФирма = Фирма" и получаю вызов хранимой процедуры (на SQL). Недавно смотрел на свою базу в штатный отчет в SQL2005. За пару часов работы хранимая процедура получения фирмы по ID вызвалась более пяти миллионов раз.
#14
by Torquader
Это "хвалёный" механизм представлений, когда для каждого объекта система ещё и формирует представление - особенно, это касается реквизитов, когда в памяти хранится ID, а на экране отображается строка. Потом, у 1С даже целый кеш под эти нужды создан.
#15
by vcv
Вот теперь в раздумьях. Можно ли как-то технично это изменить. Всё же за несколько часов дернуть хранимку пять миллионов раз, даже если всё берется из кеша, это лишнего грузит интерпретатор, оптимизатор и прочие механизмы SQL. Предположительно такое количество обращений к справочнику фирм связано с тем, что очень много процедур в глобальнике обращается к "Конт.Фирма". Для сильно переписанной конфигурации можно завести глобальную переменную под это дело и заполнять её один раз перед проведением документа. Но это тупо и в лоб. Может есть лучшее решение. Завтра попробую разобраться, откуда обращений к хранимой процедуре справочника фирм в несколько раз больше, чем к любой другой хранимой.
#16
by Torquader
Везде, где используется фирма, будет вызываться хранимая процедура, так как ссылка на объект хранится вместе с представлением (для этого его придумали), а система всегда обновляет представление при выполнении каких-то операций. Не знаю, можно ли отключить представление. Самое простое решение - использовать вместо ссылки сам ГУИД, как это обычно делается в Access-е, но это считается неправильным для 1С.
#18
by Torquader
А теперь скорость выполнения - во-втором случае, мы создаёт отдельную строку с началом на нужном символе. Если строка очень длинная, то скорости выполнения могут отличаться на несколько порядков.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- Не могу понять как закрасить фон ячейки
- Макоюзеры тупые :)
- Выделение строк списка с помощью WSCript.Shell
- Данный фискальный регистратор не имеет возможности отражать в чеке факт наличных
- как выделить цветом строки в отчете
- Как из РИБ сделать основную БД
- 1с8 УФ ищу элегантный способ передачи данных формы в общий модуль на сервере
- вычет в конце налогового периода НДС по приобретенным услугам
- v7: Новая колонка с типом "Справочник.Склады"
- ИмяКомпа и ИмяПользователя подключившегося по RDP из 1С
- Перенос из 1с77 в 1с8
- Проведение реализации завтрашним числом в УТ11
- УТ 11.1 документ сделка с клиентом
- как установить текущие данные таблицы при открытии документа автоматически 1с 8
- v7: Как подключить вебкамеру?
- 1c-Отчетность. Проблема после установки VipNet CSP
- Как из таблицы значений на форме получить ссылку на сотрудника из справочника
- УТ11 подбор товаров в реализации
- КА: Ввод остатка по 73.03 счету
- Сборник задач 1С специалист платформа, редакция