8.х Как удобно работать со стокой?

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем CSCO12103692, 25 апр 2013.

  1. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.

    Расскажите мне пожалуйста как правильно обрабатывать текст из файла.

    Есть текстовые файлы. В них бывают служебные сообщения ( для этого есть служебные поля, они все известны ), бывают полезные данные ( они начинаются одним известным заголовком, и идут на 3 - 4 строки обычно ), бывает и то и другое или фйлы могут быть вообще пустые ( очень редко, но тоже возможно ). Вопрос: как максимально эффективно извлекать полезные данные.

    То есть имеется файл с кучей строк внутри. Прочитали. Получилась строка 1С.... и что?

    Вариант 1 - самый прямой, и наверное неправильный.
    Ходить с помощью
    Код:
    результат = Найти( нашаСтрока, "тоЧтоИщем" );
    до потери пульса перебирая заголовки для полезных данных (которых может и не быть), ну а еслди все-же нашли, то начинается что-то вроде
    Код:
    Если результат <> 0 То
    полезныеДанные1 = Сред( нашаСтрока, результат + 10, 15 );
    полезныеДанные1 = Сред( нашаСтрока, результат + 50, 15 );
    ....
    КонецЕсли;
    Я специально написал криво и магическими числами, поскольку это пример. Но суть в общем именно такая - если нашли заголовок, то затем ищутся дальнейшие куски полезных данных относительно первой находки, выковыриваются по крупицам и тд.

    Да, так писать можно и даже будет работать, но это явно не по фен-шую.


    Вариант 2 - более красивый и системный, но с и большими накладными расходами:
    Раз текст в файле многострочный, значит есть симнолы новой строки ( hex( 0A ) ака LF )

    Мы, по этому символу, преобразуем нашу строчку - файл в массив строк, каждый элемент которого - одна строка из считанного файла.
    Далее обходя массив отрезаем по нескольку первых байт из каждого элемента, чтобы понять - это служебная строка или первая строка полезных данных. Далее, если сошлось, то можно просто по индексам отправить несколько строк с данными на обрабортку безо всяких Сред и Найти.

    Хотя второй подход более наглядный + дающий возможность оперировать по индексам, в отличии от первого подхода будет перебирать все строки пока не найдет что ищет или не дойдет до конца. Да еще и отдельно создает массив.


    Для тех, кто осилил пост до конца: что еще можно придумать? И какие вообще методики работы с текстом в 1С?
  2. Aston
    Offline

    Aston Опытный в 1С

    Регистрация:
    6 июн 2012
    Сообщения:
    467
    Симпатии:
    3
    Баллы:
    29
    В 1С работы с текстом серьёзной не реализовано. Подключай СОМ объект регулярных выражений, задавай шаблоны и работай. Ищи в гугле 1С и регулярные выражения.
  3. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Прямо целый мир открыл..

    Есть какой-то хороший ресурс/справочник/статья для нубов? А то внешний вид у них совсем не дружелюбный....
  4. Aston
    Offline

    Aston Опытный в 1С

    Регистрация:
    6 июн 2012
    Сообщения:
    467
    Симпатии:
    3
    Баллы:
    29
    Гугл в помощь. Сначало найди как подключать в 1С этот ком объект. Потом в гугле набери регулярные выражения и в википедии всё будет. То что вам надо за вас делать не будут, могут только подсказать в каком направлении идти.
  5. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Да неужели? А я в первом посте прямо указал входные данные, нужный результат и Email куда скинуть готовую обработку?


    Тем не менее это похоже то, что нужно. Вопрос закрыт.
  6. leemuar
    Offline

    leemuar Опытный в 1С

    Регистрация:
    21 окт 2010
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Добавлю:

    да, первый раз регулярки кажутся ну прооооосто жестью какой-то, на их изучение уходит приличное количество времени. Но это чрезвычайно мощный инструмент для разбора текста, так что его изучение стоит того.

    Рекомендую книгу Фридла по регуляркам
  7. TopicStarter Overlay
    CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Это видимо оно
    Регулярные выражения, 3-е издание

    Автор: Джеффри Фридл
    Издательство: Символ-Плюс
    Год выпуска: 2008
    Кол-во страниц: 598
    Формат: PDF
    Качество: eBook (изначально компьютерное)
    ISBN-13: 978-5-93286-121-9
    ISBN-10: 5-93286-121-5
    ISBN-10: 0-596-52812-4 (англ)
    Оригинальное издание:
    Jeffrey E.F.Friedl
    Mastering Regular Expressions, 3rd Edition
    O'Reilly Media, 2006

    -----------------------------------------------------------------------

    Ок, спасибо. Попробую поковырять по этой книге. Попавшиеся интернет ресурсы пока не нравятся :((
    Рассчитаны на людей уже знакомых с темой.

Поделиться этой страницей