Форум программистов, компьютерный форум, киберфорум
1С: Типовые и стандартные решения
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для philophobia
1 / 1 / 3
Регистрация: 16.02.2016
Сообщений: 83
1C 8.x

Разбор строки

16.02.2016, 22:23. Показов 2677. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите, пожалуйста, разобраться с такой ситуацией. Есть задание: вывести из папки Памятники те позиции, где в наименовании указаны габариты памятника (длина, ширина, высота), а в самих реквизитах габариты НЕ соответствуют наименованию. Габариты могут быть разделены как звездочкой, как и крестиком (русской и английской х). То есть, если встретится наименование Мемориал 1000*500*100 и Мемориал 1000х500х1000 их оба нужно будет проверить, и если их габариты не соответствуют указанным в наименовании - вывести. Кроме того, габариты из наименования должны автоматически заполнить поля реквизитов.

Код выглядит таким образом:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Процедура ЗаполнитьНаСервере()
    
    ТабЧасть.Очистить(); 
    
    ВыборкаНом = Справочники.Номенклатура.Выбрать();
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Номенклатура.Ссылка,
        |   Номенклатура.ОУ_Длина,
        |   Номенклатура.ОУ_Ширина,
        |   Номенклатура.ОУ_Высота,
        |   Номенклатура.Наименование,
        |   Номенклатура.ОУ_Вес
        |ИЗ
        |   Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |   Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)
        |   И Номенклатура.ЭтоГруппа = ЛОЖЬ";
    
    Запрос.УстановитьПараметр("Родитель", Справочники.Номенклатура.НайтиПоКоду("00-00000032"));   
    РезультатЗапроса = Запрос.Выполнить();   
    ВыборкаНом = РезультатЗапроса.Выбрать();
    
    Сч = 1;   
    
    Пока ВыборкаНом.Следующий() Цикл  
        
        //Оставляем из наименования номенклатуры только цифры
        НомерСимвола = 1;
        ИтоговаяСтрока = "";
        ИсходнаяСтрока = ВыборкаНом.Наименование;
        
        Массив = Новый Массив();
        //элемент 0 - длина
        //элемент 1 - ширина
        //элемент 2 - высота
        
        ПараметрНом = "";
        Пока НомерСимвола <= СтрДлина(ИсходнаяСтрока) Цикл
            Попытка
                Искомое = Сред(ИсходнаяСтрока, НомерСимвола, 1);
                Цифра = Число(?(Искомое = " ", "ффф", Искомое));
                ПараметрНом = ПараметрНом + Строка(Цифра);
                ИтоговаяСтрока = ИтоговаяСтрока + Строка(Цифра);
            Исключение
                Если ПараметрНом <> "" Тогда
                    Массив.Добавить(ПараметрНом)
                КонецЕсли;
                ПараметрНом = "";
            КонецПопытки;           
            НомерСимвола = НомерСимвола + 1;
        КонецЦикла;
        Если ПараметрНом <> "" Тогда
            Массив.Добавить(ПараметрНом)
        КонецЕсли;
                
        Попытка 
            ДлинаНом  = СтрЗаменить(СтрЗаменить(Строка(ВыборкаНом.ОУ_Длина), " ", ""), Символы.НПП, "");
            ШиринаНом = СтрЗаменить(СтрЗаменить(Строка(ВыборкаНом.ОУ_Ширина), " ", ""), Символы.НПП, "");
            ВысотаНом = СтрЗаменить(СтрЗаменить(Строка(ВыборкаНом.ОУ_Высота), " ", ""), Символы.НПП, "");
            
        Исключение
        КонецПопытки;
 
        ПараметрыНом = ДлинаНом + ШиринаНом + ВысотаНом;
                
        Если Найти(ИтоговаяСтрока, ПараметрыНом) = 0 Тогда
            ДобавитьСтрокуВТЧ(ВыборкаНом, Сч, Массив);
            Сч = Сч + 1;
        КонецЕсли;     
    КонецЦикла;        
КонецПроцедуры
Из него видно, что после выполнения запроса, мы просматриваем каждую строчку, убираем из нее все кроме цифр, и когда после последовательности цифр следует разделитель - заносим в массив.

Суть проблемы в чем:
В результатах запроса может встретиться позиция с таким именем Стела5/А105_1000*500*1000. Но эта процедура занесет в массив как 5 как длину, 105 как ширину и 1000 как высоту, а нужны 1000, 500 и 1000 соответственно. Подскажите, как это реализовать? Буду безгранично благодарна за оказанную помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2016, 22:23
Ответы с готовыми решениями:

Книга "Конечный автомат 2: Возвращение". Часть 1. Разбор. Глава 8. Имя, проверка строки и разбор до. На том ли я пути?
Наверное, иногда прилюдно выругаться полезно... Стоило мне в предыдущей теме написать &quot;омерзительный конечный автомат&quot;, как...

Разбор строки
Дана строка,в которой через кому записани всякие речи.Нада вивести,що ето(то що через коми),и ево тобто на строку 'abs',abs,123 ответ...

Разбор строки
Добрый день! Может подскажите как с помощью рег выражения, красиво разобрать строку вида Sun, 28 Jul 2013 2:59 pm FET чтобы отдельно...

4
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
17.02.2016, 11:18
рег экспом пользоваться нельзя?

У тебя по сути два шаблона

1.
_%*%*%
2.
_%х%х%

если все таки решишься на рег эксп, то что то типа такого
\d+(\*|\x)\d+(\*|\x)\d+
0
 Аватар для philophobia
1 / 1 / 3
Регистрация: 16.02.2016
Сообщений: 83
17.02.2016, 13:12  [ТС]
Проблема в том, что я новичок совсем в 1с, и не совсем понимаю, как что должно реализовываться. Что такое рег эксп?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
17.02.2016, 14:45
Цитата Сообщение от philophobia Посмотреть сообщение
Что такое рег эксп?

philophobia, это http://habrahabr.ru/post/55766/

Добавлено через 2 минуты
и из вики - https://ru.wikipedia.org/wiki/... 0%B8%D1%8F
0
 Аватар для philophobia
1 / 1 / 3
Регистрация: 16.02.2016
Сообщений: 83
18.02.2016, 11:46  [ТС]
Сделала. у меня есть результат запроса. Как проверить, содержит ли он шаблон?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2016, 11:46
Помогаю со студенческими работами здесь

разбор строки
Помогите плз продолжить код, разбора строки: void encodeStr(string str) { //m 1061.1665,374.02224 6.4094,0.44261...

Разбор строки
Есть строки такого типа: Nomer_tovara: 557436 Brend: VMS Garantiya: 2343454 Year : 2019 Nomer_tovara: 557436 Brend: ORP ...

Разбор строки
Доброго времени суток! Нуждаюсь очень в вашей помощи господа. Осваиваю stm32, столкнулся с такой трудностью: не могу понять как...

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

разбор строки...
Всем доброго время суток! Разбираю сообщения которые приходят мне в базу... обычное memo... Вот там в поле body следующее: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru