Аналог ИзСтрокиСРазделителями() из 7.7

20.11.13

Разработка - Механизмы платформы 1С

Появилась необходимость загружать данные из 1С 7.7 в 8-ку выгруженные с помощью функции сз.ВСтрокуСРазделителями().
Ничего нормального не нашел. Может плохо искал :)
Пришлось изобретать самому.

Скачать файлы

Наименование Файл Версия Размер
ИзСтрокиСРазделителями
.epf 7,25Kb
23
.epf 7,25Kb 23 Скачать

В разбираемой строке могут быть данные двух типов числа и строки разделенные запятой.

Строка, дополнительно, заключается в двойные кавычки.

Может кому пригодится.

Буду длагодарен за тестирование.

 

 Строка для тестирования:

стр = " 53.35 , ""67"""" ,""""890"", 88.88,,"""",0, ""Груз. накл. С01-000001 (10.01.12)"",""=="""",,,""""==12""""345"",23.32,""123"", 5 , ,";

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4545    dsdred    53    

72

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5296    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6411    dsdred    36    

112

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18479    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12090    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8831    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6281    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15989    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Hany 10.07.12 18:14 Сейчас в теме
Не имею чести видеть Ваш файл с данными из 7.7, но вот такой простейший вариант разбора строк с разделителями не подошел бы? (Разделитель в данном случае ",")

СтрокаСРазделителями = "2, 43, ""34535345""22, 44";
Сообщить("" + СтрокаСРазделителями);
СтрокаСПереносами = СтрЗаменить(СокрЛП(СтрокаСРазделителями), ",", Символы.ПС);
Сообщить("" + СтрокаСПереносами);
5. slawa 26 11.07.12 00:27 Сейчас в теме
(1) Hany, Такую строку невозможно получить с помощью функции ВСтрокуСРазделителями.
СтрокаСРазделителями = "2, 43, ""34535345""22, 44";
Не понятно какого типа 3-й элемент.
Элемент с типом строка должны быть заключен в кавычки.
6. slawa 26 11.07.12 00:37 Сейчас в теме
(2) Поручик, эти варианты я все видел. Зря минуснул.
Не один из них не работает корректно.

Строка для проверки:
стр = " 53.35 , ""67"""" ,""""890"", 88.88,,"""",0, ""Груз. накл. С01-000001 (10.01.12)"",""=="""",,,""""==12""""345"",23.32,""123"", 5 , ,";
7. Поручик 4670 11.07.12 00:45 Сейчас в теме
(6) Минуснул на ашипку, читай пост 3
8. Поручик 4670 11.07.12 00:50 Сейчас в теме
(6) Исправишь, сниму. Заманали своими идиотскими креативами.
9. Altair777 644 11.07.12 12:23 Сейчас в теме
(6) а я минусанул за оформление. Уважайте посетителей портала, раскрасьте код.
11. Поручик 4670 11.07.12 13:46 Сейчас в теме
12. Altair777 644 11.07.12 13:48 Сейчас в теме
(11) Поручик, спасибо что напомнил :)
а то я вчера скачал, а плюсануть не успел - забегался...
3. Поручик 4670 10.07.12 19:20 Сейчас в теме
(0) Цыфра пишется через И
4. Andry.Boris 59 10.07.12 23:29 Сейчас в теме
Старайся... лучше сначала искать...
+ за желание... ;)
10. Altair777 644 11.07.12 12:32 Сейчас в теме
Кстати, на каком языке это написано?

Если (_код >= 48) и (_код Возврат Истина;
 ИначеЕсли _код = 46 Тогда // точка
 Возврат Истина;
 КонецЕсли;
13. Рэйв 126 16.07.12 06:31 Сейчас в теме
Функция ИзСтрокиСРазделителями(Значение,Разделитель = ",") Экспорт

Если ТипЗнч(Значение)<>Тип("Строка") Тогда
Сообщить("Функция ИзСтрокиСРазделителями.Некорректный вызов.Переданное значение должно быть строкой.");
Возврат Неопределено;
КонецЕсли;
спЗначения=Новый СписокЗначений;
Если Найти(Значение,Разделитель)=0 Тогда
Сообщить("Функция ИзСтрокиСРазделителями.В переданном значении("""+Значение+""") нет ни одного указанного разделителя("""+Разделитель+""").");
спЗначения.Добавить(Значение);
Возврат спЗначения;
КонецЕсли;

Значение=СтрЗаменить(Значение,Разделитель,Символы.ПС);
Для н=1 По СтрЧислоСтрок(Значение) Цикл
спЗначения.Добавить(СтрПолучитьСтроку(Значение,н));
КонецЦикла;
Возврат спЗначения;

КонецФункции//ИзСтрокиСРазделителями
14. slawa 26 16.07.12 06:39 Сейчас в теме
(13) Рэйв, проверь стр = " 53.35 , ""67"""",""""890"", 88.88,,"""",0, ""Груз. накл. С01-000001 (10.01.12)"",""=="""",,,""""==12""""345"",23.32,""123"", 5 , ,";
что получится в результате работы твоей и моей функции?
15. Рэйв 126 16.07.12 07:32 Сейчас в теме
(14) Получится вот такое

53.35
"67""
""890"
88.88
""
0
"Груз. накл. С01-000001 (10.01.12)"
"==""
""==12""345"
23.32
"123"
5

Наверное надо повнимательней быть с кавычками:-)
16. Рэйв 126 16.07.12 07:34 Сейчас в теме
+ все по честному отработало при разделителе ","
17. slawa 26 16.07.12 07:56 Сейчас в теме
(16) Рэйв, не на каждой запятой нужно делить
попробуй эту-же строку подсунуть реальной функции 7.7 ИзСтрокиСРазделителем
Результат будет несколько иной, чем выдает твоя
18. Рэйв 126 16.07.12 08:09 Сейчас в теме
(17)Если не на каждой, то используй разделитель не равный ","
Например "^". И проставь вместо запятых только в тех местах где надо делить.

Тогда вызов моей функции будет

спСтр=ИзСтрокиСРазделителями(Стр,"^") ;
19. slawa 26 16.07.12 08:14 Сейчас в теме
(18) Рэйв, я это не могу сделать
Есть готовая выгрузка из 7.7 с помощью функции ВСтрокуСРазделителями() ее нужно грузить в 8-ку.
Менять выгрузку из 7.7 нет возможности
20. Рэйв 126 16.07.12 08:30 Сейчас в теме
(19)А.. Ну это совсем другая песня:-)
Моя функция для работы в 8.
21. capitan 2466 16.09.12 12:52 Сейчас в теме
Плюс
Единственная обработка, которая корректно отработала строку в кавычках, внутри которой есть запятые.
Стандартные из типовых конфигураций от 1С не смогли.
22. chmv 28.11.13 09:15 Сейчас в теме
23. пользователь 23.05.17 11:11
Сообщение было скрыто модератором.
...
24. Омский Домовой 408 23.03.22 23:12 Сейчас в теме
А СтрРазделить не подходит?
25. slawa 26 24.03.22 14:11 Сейчас в теме
(24)
Попробуй

Строка для проверки:
стр = " 53.35 , ""67"""" ,""""890"", 88.88,,"""",0, ""Груз. накл. С01-000001 (10.01.12)"",""=="""",,,""""==12""""345"",23.32,""123"", 5 , ,";

Что получится?

попробуй эту-же строку подсунуть реальной функции 7.7 ИзСтрокиСРазделителем()

Одинаковое получилось?
Оставьте свое сообщение