Появилась необходимость загружать данные из 1С 7.7 в 8-ку выгруженные с помощью функции сз.ВСтрокуСРазделителями().
Ничего нормального не нашел. Может плохо искал 🙂
Пришлось изобретать самому.
Ничего нормального не нашел. Может плохо искал 🙂
Пришлось изобретать самому.
В разбираемой строке могут быть данные двух типов числа и строки разделенные запятой.
Строка, дополнительно, заключается в двойные кавычки.
Может кому пригодится.
Буду длагодарен за тестирование.
Строка для тестирования:
стр = » 53.35 , «»67″»»» ,»»»»890″», 88.88,,»»»»,0, «»Груз. накл. С01-000001 (10.01.12)»»,»»==»»»»,,,»»»»==12″»»»345″»,23.32,»»123″», 5 , ,»;





Не имею чести видеть Ваш файл с данными из 7.7, но вот такой простейший вариант разбора строк с разделителями не подошел бы? (Разделитель в данном случае «,»)
СтрокаСРазделителями = «2, 43, «»34535345″»22, 44»;
Сообщить(«» + СтрокаСРазделителями);
СтрокаСПереносами = СтрЗаменить(СокрЛП(СтрокаСРазделителями), «,», Символы.ПС);
Сообщить(«» + СтрокаСПереносами);
(0) Нифига ты не искал.
Минус за лень.
(0) Цыфра пишется через И
Старайся… лучше сначала искать…
+ за желание… 😉
(1) Hany, Такую строку невозможно получить с помощью функции ВСтрокуСРазделителями.
СтрокаСРазделителями = «2, 43, «»34535345″»22, 44»;
Не понятно какого типа 3-й элемент.
Элемент с типом строка должны быть заключен в кавычки.
(2) Поручик, эти варианты я все видел. Зря минуснул.
Не один из них не работает корректно.
Строка для проверки:
стр = » 53.35 , «»67″»»» ,»»»»890″», 88.88,,»»»»,0, «»Груз. накл. С01-000001 (10.01.12)»»,»»==»»»»,,,»»»»==12″»»»345″»,23.32,»»123″», 5 , ,»;
(6) Минуснул на ашипку, читай пост 3
(6) Исправишь, сниму. Заманали своими идиотскими креативами.
(6) а я минусанул за оформление. Уважайте посетителей портала, раскрасьте код.
Кстати, на каком языке это написано?
(6) Раскраска кода —
(11) Поручик, спасибо что напомнил 🙂
а то я вчера скачал, а плюсануть не успел — забегался…
Функция ИзСтрокиСРазделителями(Значение,Разделитель = «,») Экспорт
Если ТипЗнч(Значение)<>Тип(«Строка») Тогда
Сообщить(«Функция ИзСтрокиСРазделителями.Некорректный вызов.Переданное значение должно быть строкой.»);
Возврат Неопределено;
КонецЕсли;
спЗначения=Новый СписокЗначений;
Если Найти(Значение,Разделитель)=0 Тогда
Сообщить(«Функция ИзСтрокиСРазделителями.В переданном значении(«»»+Значение+»»») нет ни одного указанного разделителя(«»»+Разделитель+»»»).»);
спЗначения.Добавить(Значение);
Возврат спЗначения;
КонецЕсли;
Значение=СтрЗаменить(Значение,Разделитель,Символы.ПС);
Для н=1 По СтрЧислоСтрок(Значение) Цикл
спЗначения.Добавить(СтрПолучитьСтроку(Значение,н));
КонецЦикла;
Возврат спЗначения;
КонецФункции//ИзСтрокиСРазделителями
(13) Рэйв, проверь стр = » 53.35 , «»67″»»»,»»»»890″», 88.88,,»»»»,0, «»Груз. накл. С01-000001 (10.01.12)»»,»»==»»»»,,,»»»»==12″»»»345″»,23.32,»»123″», 5 , ,»;
что получится в результате работы твоей и моей функции?
(14) Получится вот такое
53.35
«67»»
«»890»
88.88
«»
0
«Груз. накл. С01-000001 (10.01.12)»
«==»»
«»==12″»345»
23.32
«123»
5
Наверное надо повнимательней быть с кавычками:-)
+ все по честному отработало при разделителе «,»
(16) Рэйв, не на каждой запятой нужно делить
попробуй эту-же строку подсунуть реальной функции 7.7 ИзСтрокиСРазделителем
Результат будет несколько иной, чем выдает твоя
(17)Если не на каждой, то используй разделитель не равный «,»
Например «#k8SjZc9Dxk». И проставь вместо запятых только в тех местах где надо делить.
Тогда вызов моей функции будет
спСтр=ИзСтрокиСРазделителями(Стр,»#k8SjZc9Dxk») ;
(18) Рэйв, я это не могу сделать
Есть готовая выгрузка из 7.7 с помощью функции ВСтрокуСРазделителями() ее нужно грузить в 8-ку.
Менять выгрузку из 7.7 нет возможности
(19)А.. Ну это совсем другая песня:-)
Моя функция для работы в 8.
Плюс
Единственная обработка, которая корректно отработала строку в кавычках, внутри которой есть запятые.
Стандартные из типовых конфигураций от 1С не смогли.
Интересно и полезно