|
Разложить строку на составляющие | ☑ | ||
---|---|---|---|---|
0
amadeus2010
09.01.15
✎
02:21
|
Доброй ночи в справочнике Контрагенты, конфигурация УТ 10.3 есть измененный реквизит Наименование в который путем объединения строк записывается наименование контрагента
Наименование = ТорговаяТочка+Символы.НПП+"-"+Символы.НПП+"("+КонтактноеЛицо+"/"+Телефон+")"+Символы.НПП+"["+ИНН+"]"+Символы.НПП+"{"+ГрафикПосещений+ГрафикПосещений2+"}"; Результат процедуры Ailə Market - (Səbri / 050-535-87-01) [1001011] {1о2х3о4о5о6о} Были созданы соответствующие реквизиты. Теперь надо в каждый реквизит поставить свое значение. В Торговую точку надо вложить значение Торговая точка, в ИНН значение ИНН и т.д Я создал такую процедуру ////////////////////////////////////////// Процедура ДействияФормыРазбитьПоЧастям(Кнопка) //Дима+ Если Не ПустаяСтрока(Наименование) Тогда ТорговаяТочка = Лев(Наименование, 1); КонтактноеЛицо = Лев(Наименование, 6); Телефон = Лев(Наименование, 10); ГрафикПосещений = Прав(Наименование, 3); ГрафикПосещений2 = Прав(Наименование, 2); Маршрут = Лев(ИНН, 1); Маршрут2 = Лев(ИНН, 2); КонецЕсли; КонецПроцедуры /////////////////////////////////////// Но у меня данные располагаются в строках не верно. В Маршрут вместо 1001011 заносится 1 а не целое значение и так с другими строками |
|||
1
Zhuravlik
09.01.15
✎
02:42
|
выспись :)
|
|||
2
amadeus2010
09.01.15
✎
03:11
|
выспаться можно, но задача остается то:)
|
|||
3
Галахад
гуру
09.01.15
✎
05:10
|
ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок
|
|||
4
hhhh
09.01.15
✎
07:31
|
(2) Маршрут = Лев(ИНН, 1); - вы выбираете 1 символ из ИНН. Откуда вдруг длинная строка должна появиться?
|
|||
5
Рэйв
09.01.15
✎
07:35
|
Функция ИзСтрокиСРазделителями(Значение,Разделитель = ",") Экспорт
Если ТипЗнч(Значение)<>Тип("Строка") Тогда Сообщить("Функция ИзСтрокиСРазделителями.Некорректный вызов.Переданное значение должно быть строкой."); Возврат Неопределено; КонецЕсли; спЗначения=Новый СписокЗначений; Если Найти(Значение,Разделитель)=0 Тогда //Сообщить("Функция ИзСтрокиСРазделителями.В переданном значении("""+Значение+""") нет ни одного указанного разделителя("""+Разделитель+""")."); спЗначения.Добавить(Значение); Возврат спЗначения; КонецЕсли; ЗначениеРазбитое=СтрЗаменить(Значение,Разделитель,Символы.ПС); Для н=1 По СтрЧислоСтрок(ЗначениеРазбитое) Цикл спЗначения.Добавить(СтрПолучитьСтроку(ЗначениеРазбитое,н)); КонецЦикла; Возврат спЗначения; КонецФункции//ИзСтрокиСРазделителями |
|||
6
amadeus2010
09.01.15
✎
23:22
|
насколько я понял в Значение надо поставить наименование реквизита
|
|||
7
amadeus2010
10.01.15
✎
02:15
|
Пытаюсь при помощи функции
///////////////////////////////// Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Результат = Новый Массив; // для обеспечения обратной совместимости Если ПропускатьПустыеСтроки = Неопределено Тогда ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); Если ПустаяСтрока(Строка) Тогда Если Разделитель = " " Тогда Результат.Добавить(""); КонецЕсли; Возврат Результат; КонецЕсли; КонецЕсли; // Позиция = Найти(Строка, Разделитель); Пока Позиция > 0 Цикл Подстрока = Лев(Строка, Позиция - 1); Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда Результат.Добавить(Подстрока); КонецЕсли; Строка = Сред(Строка, Позиция + СтрДлина(Разделитель)); Позиция = Найти(Строка, Разделитель); КонецЦикла; Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда Результат.Добавить(Строка); КонецЕсли; Возврат Результат; КонецФункции ///////////////////////////////// разложить строку на подстроки, в результате в Торговая точка получаю значение Массив. Вот подстрока Наименование = ТорговаяТочка+Символы.НПП+"-"+Символы.НПП+"("+КонтактноеЛицо+"/"+Телефон+")"+Символы.НПП+"["+ИНН+"]"+Символы.НПП+"{"+ГрафикПосещений+ГрафикПосещений2+"}"; Из нее надо вытащить значение Торговая точка и т.д ТорговаяТочка= РазложитьСтрокуВМассивПодстрок(Наименование); |
|||
8
Zhuravlik
10.01.15
✎
02:24
|
МассивПодстрок= РазложитьСтрокуВМассивПодстрок(Наименование, Символы.НПП);
ТорговаяТочка = МассивПодстрок[0]; КонтактноеЛицо_Телефон = МассивПодстрок[2]; и т.д. |
|||
9
amadeus2010
10.01.15
✎
11:21
|
(8) Дополнил предложенный код
////////////////////////////////////////////// МассивПодстрок= РазложитьСтрокуВМассивПодстрок(Наименование, Символы.НПП); ТорговаяТочка = МассивПодстрок[0]; КонтактноеЛицо = МассивПодстрок[1]; Телефон = МассивПодстрок[2]; ИНН = МассивПодстрок[3]; ГрафикПосещений = МассивПодстрок[4]; ГрафикПосещений2 = МассивПодстрок[5]; /////////////////////////////////////////////// вышла ошибка {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(2751)}: Индекс находится за границами массива КонтактноеЛицо = МассивПодстрок[1]; |
|||
10
ДенисЧ
10.01.15
✎
11:24
|
продам инструкциб по пользованию отладчиком....
|
|||
11
Галахад
гуру
10.01.15
✎
11:29
|
МассивПодстрок= РазложитьСтрокуВМассивПодстрок(Наименование, Символы.НПП);
Для Каждого М из МассивПодстрок Цикл Сообщить(М); КонецЦикла; |
|||
12
Nlock
10.01.15
✎
11:32
|
Еще вариант:
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункци |
|||
13
anatoly
10.01.15
✎
12:13
|
зачем изобретать велосипед когда есть (3) ???
|
|||
14
amadeus2010
10.01.15
✎
12:18
|
я не собирался изобретать велосипед, мне нужно решить вопрос с разложением строки на подстроки
|
|||
15
anatoly
10.01.15
✎
12:25
|
(14) тогда позвать программиста. без него никак.
|
|||
16
Zhuravlik
10.01.15
✎
12:26
|
Интересно, как с такими знаниями можно УПП дорабатывать?..
|
|||
17
amadeus2010
10.01.15
✎
12:43
|
в доработке УПП не было необходимости делать эти задачи.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |