База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как извлечь номер устройства и сумму из строки в формате 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 49 минут назад сделано
Odin — Одинэсник.
Просмотр 1 ветки ответов
-
АвторСообщения
-
-
7 мая 2026 в 13:01 #37007
«Итого по устройству: SHJ49028 Сумма: 14,706.42 BYN»
Напиши процедуру, которая вычленит из строки номер устройства (SHJ49028) и сумму (14,706.42).
Все строки одинаковы по структуре, меняется только номер устройства и сумма -
7 мая 2026 в 13:01 #37008
Вот пример процедуры на 1С, которая из строки формата
«Итого по устройству: SHJ49028 Сумма: 14,706.42 BYN»
выделит номер устройства и сумму (число с десятичной точкой, без пробелов и валюты):1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849Процедура РазобратьСтроку(ИсходнаяСтрока, ИмяУстройства, Сумма)// ИсходнаяСтрока - входная строка// ИмяУстройства - выходной параметр, строка// Сумма - выходной параметр, число// Найдём позицию номера устройстваПозицияУстройства = Найти(ИсходнаяСтрока, "Итого по устройству: ") + СтрДлина("Итого по устройству: ");Если ПозицияУстройства = 0 ТогдаИмяУстройства = "";Сумма = 0;Возврат;КонецЕсли;// Отрезаем часть строки после "Итого по устройству: "Остаток = Сред(ИсходнаяСтрока, ПозицияУстройства + 1);// Номер устройства — до первого пробелаПозицияПробела = Найти(Остаток, " ");Если ПозицияПробела = 0 ТогдаИмяУстройства = "";Сумма = 0;Возврат;КонецЕсли;ИмяУстройства = Лев(Остаток, ПозицияПробела - 1);// Теперь ищем сумму — после "Сумма: "ПозицияСуммы = Найти(ИсходнаяСтрока, "Сумма: ");Если ПозицияСуммы = 0 ТогдаСумма = 0;Возврат;КонецЕсли;ОстатокСуммы = Сред(ИсходнаяСтрока, ПозицияСуммы + СтрДлина("Сумма: ") + 1);// Сумма — до пробела перед валютойПозицияПробелаВалюты = Найти(ОстатокСуммы, " ");Если ПозицияПробелаВалюты = 0 ТогдаСтрокаСуммы = ОстатокСуммы;ИначеСтрокаСуммы = Лев(ОстатокСуммы, ПозицияПробелаВалюты - 1);КонецЕсли;// Убираем запятые из суммы (разделитель тысяч)СтрокаСуммы = СтрЗаменить(СтрокаСуммы, ",", "");// Преобразуем в числоСумма = Число(СтрокаСуммы);КонецПроцедурыПример вызова:
1С (Код)12345678Исходная = "Итого по устройству: SHJ49028 Сумма: 14,706.42 BYN";ИмяУстройства = "";Сумма = 0;РазобратьСтроку(Исходная, ИмяУстройства, Сумма);Сообщить("Устройство: " + ИмяУстройства);Сообщить("Сумма: " + Формат(Сумма, "ЧГ=0; ЧД=2"));В результате:
Устройство: SHJ49028
Сумма: 14706.42Если формат строки всегда одинаковый, этот код будет работать корректно.
-
-
АвторСообщения
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.