helpf.pro
Регистрация

v8: Разбор списка значений через разделитель #

voiage20
22.10.2012 13:34Прочитано: 1895
есть текстовый файл с такими полями
---------------
0.05#0.050
0.1#0.100
0.2#0.200
0.25#0.250
0.250#0.250
---------------

нужно чтобы в наименовании номенклатуры искалось то что до # а выводилось в табличную часть то что после #

вот сама обработка:
---------------
Цитата
Процедура ЗаполнитьНажатие(Элемент)
Перем СтрИскл;
Перем СтрОб;

СтрИскл = "";
СтрОб = "";

ТабличнаяЧасть.Очистить();


// Шаблоны исключений
ТекстИскл = Новый ЧтениеТекста (ПутьФайла + "\Шаблоны исключений.txt");
ШаблонИсключений = Новый Массив ();

Пока СтрИскл <> Неопределено Цикл
СтрИскл = ТекстИскл.ПрочитатьСтроку();
ШаблонИсключений.Добавить (СокрЛП(СтрИскл));
//Сообщить (СтрИскл);
КонецЦикла;
ТекстИскл.Закрыть ();



// Шаблоны объемов
ТекстОб = Новый ЧтениеТекста (ПутьФайла + "\Шаблоны объема.txt");
ШаблонОбъемов = Новый Массив ();

Пока СтрОб <> Неопределено Цикл
СтрОб = ТекстОб.ПрочитатьСтроку();
ШаблонОбъемов.Добавить (СокрЛП(СтрОб));
//Сообщить (СтрОб);
КонецЦикла;
ТекстОб.Закрыть ();



Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Если ЗначениеЗаполнено(ГруппаСправочник) Тогда
Запрос.Текст = Запрос.Текст + "
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)";
КонецЕсли;

ГруппаСправочника = Справочники.Номенклатура.НайтиПоНаименованию(ГруппаСправочник);
Запрос.УстановитьПараметр("Родитель",ГруппаСправочника );
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

НаименованиеНом = СокрЛП(Выборка.Ссылка.Наименование);
НаименованиеНом = СтрЗаменить(НаименованиеНом, " ", "");
НаименованиеНом = СтрЗаменить(НаименованиеНом, "-", "");
НаименованиеНом = СтрЗаменить(НаименованиеНом, ",", ".");

Для Индекс = 0 По ШаблонИсключений.Количество() - 1 Цикл
НаименованиеНом = СтрЗаменить(НаименованиеНом, ШаблонИсключений[Индекс], "");
КонецЦикла;

ОбъемСтр = "";

Для Индекс = 0 По ШаблонОбъемов.Количество() - 1 Цикл
ОбъемПоз = Найти(НаименованиеНом, ШаблонОбъемов[Индекс]);
Если ОбъемПоз Тогда
ОбъемСтр = Сред(НаименованиеНом, ОбъемПоз, СтрДлина(ШаблонОбъемов[Индекс]));
Прервать;
КонецЕсли;
КонецЦикла;

СтрокаТаб = ТабличнаяЧасть.Добавить();
СтрокаТаб.Номенклатура = Выборка.Ссылка;
СтрокаТаб.Объем = ОбъемСтр;

КонецЦикла;

КонецПроцедуры
Yandex
Возможно, вас также заинтересует
Реклама на портале
voiage20
22.10.2012 14:27Ответ № 1
*01
E_Migachev
22.10.2012 15:22Ответ № 2
(0) voiage20, используй Функция разбора (разложения) строки в массив
построчно считывай каждую строчку и
Код 1C v 8.х
  НашМассив = РазложитьСтрокуВМассив(ТекСтрока, "#") ;    
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.