Разделение численно-буквенного на...

  • Автор темы bremlin
  • Дата начала
B

bremlin

#1
Доброго времени суток! Возникла недавно потребность в следующей заморочке:
Существует отчет, который выдает список контрагентов и их некоторых данных. Первый столбец собственно идет "Ит.ПредставлениеСубконто()". Там числобуквенное значение, а иногда еще и "/". Номер квартиры(если малосемейка, то 3/1, 3/2).
Вот нужно вместо одного столбца с таким содержимым, сделать 2 столбца, в одном из них должны быть цифры(номер квартиры), а если представлено как 3/2 , то должно быть 3/2. А во втором стобце, должны быть просто фамилии.
Не подскажите, можно ли это реализовать в самой таблице командами "Формат". Или как-нибудь с занесением данных в переменую в модуле программы и выведением их значений?
При Формат(Ит.ПредставлениеСубконто(),"Ч-5"); выдает только первые цифры до "/". Как можно исправить?

И еще, если чтоб для выдачи номера квартиры, можно использовать Формат(Ч). То как сделать чтоб выдавало только текст из всего содержимого?
 
A

ania

#2
попробуйте Шаблон("[Ит.ПредставлениеСубконто()]")
 
B

bremlin

#3
Увы - нет. Просто также выводит те же данные.
 
K
#4
Функции работы со строкой Найти,Лев,Сред,Прав
 
B

bremlin

#5
Kaa, большое спасибо за совет. Получается что это самое то:) Попробовал что-то вроде такого:

Раздел = "/";
Кварт = Найти(Раздел+Ит.ПредставлениеСубконто(), + Раздел+Число(Ит.ПредставлениеСубконто())+Раздел);
Т.ВывестиСекцию("Секция_2");

И в общем-то это работает:) Только выводит в квартирах с "/" единицу, а в остальных 0. В общем-то получилась простая проверка строк на использование разделителей.
Я так понимаю тут надо будет использовать еще и условие. Что-то вроде если разделителя нет, то выводим обычное Число(Ит.ПредставлениеСубконто(), а если разделитель есть, то...
Можно подсказочку, как вывести такое число с разделителем?
 
B

bremlin

#7
Это я понимаю. У меня проблема в том, чтобы вывести первое число + разделитель + второе число, а при:

Раздел = "/";
Условие = Найти(Раздел+Ит.ПредставлениеСубконто(), + Раздел +Число(Ит.ПредставлениеСубконто())+Раздел);
Если Условие = 0 Тогда
Кварт = Число(Ит.ПредставлениеСубконто());
Иначе
Кварт = Число(Ит.ПредставлениеСубконто())+"/"+Число(Ит.ПредставлениеСубконто());
КонецЕсли;
Т.ВывестиСекцию("Секция_2");

В квартирах с номерами без разделителя выводит нормальный номер квартиры, а в квартирах с номерами где разделитель есть, выводит их удвоенное первое число:)
1 - 1
2 - 2
3 - 3
4 - 4
5/1 - 10
5/2 - 10
5/3 - 10

Как победить такую штуку?:)
 
K
#8
Кварт = Ит.ПредставлениеСубконто();
Поз = Найти(Кварт,"/");
Если Поз = 0 Тогда
Кварт1 = Кварт;
Иначе
Кварт1 = Лев(Кварт,Поз-1)
Кварт2 = Сред(Кварт,Поз+1);
КонецЕсли;
 
B

bremlin

#9
Большое спасибо, kaa. Подтесал немножко, работает идеально вот так:
Поз = Найти(Ит.ПредставлениеСубконто(),"/");
Раздел = Найти(Ит.ПредставлениеСубконто()," ");
Если Найти("/"+Ит.ПредставлениеСубконто(), + "/" +Число(Ит.ПредставлениеСубконто())+"/") = 0 Тогда
Кварт = Число(Ит.ПредставлениеСубконто());
Фамка = Сред(Ит.ПредставлениеСубконто(),Раздел+1);
Иначе
Кварт = (Лев((Ит.ПредставлениеСубконто()),Поз+1));
Фамка = Сред(Ит.ПредставлениеСубконто(),Поз+3);
КонецЕсли;
Т.ВывестиСекцию("Секция_2");

И маленькая проблема :( При сохранении выдаваемой таблицы в Excel, при сортировке по столбцу с квартирами, Excel сортирует по квартирам без "/". А те которые с "/" закидывает в конец файла;) Можно как-нибудь сделать так, чтобы 1С сам сортировал элементы во время выдачи таблицы на экран?

Просто я так думаю из-за "/" Excel считает эту строку текстовой, хотя пробовал все ячейки отформатировать как число.
 
K
#10
Заполний сперва таблицу значений потом сортируй как надо и выводи в печатную форму