0
- 23.05.2013 - 15:45
|
Краткая предыстория. Отчет на скд, конфа ут11, управляемые формы, В отчет нужно добавить группировку клиентов по населенным пунктам, когда это были города, то было проще, он храниться в контактной информации партнера в табличной части, в которой одна из колонок типКонтактнойИнформации - фактический адрес, и есть колонка Город, т.е. в запросе я делаю отбор по типКонтактнойИнформации - фактический адрес, и выбираю Город, а потом делаю по нему группировку, Когда появились деревни, то поле город стало пустое, а данные нужно вытащить из колонки ЗначениеПолей в которой данные представлены в виде -------------------- "Индекс=1111111 КодРегиона=11 Регион=******* край Район=***** р-н НаселенныйПункт=Петровака с Улица=50 лет Октября ул Дом=111 Квартира=11 Страна=РОССИЯ КодСтраны=643 ТипДома=дом ТипКвартиры=кв." ------------------ Как мне при формировании запроса, использую конструктор разложить на лету это поле в массив и выбрать населененный пункт, или есть варианты попроще? | | |
1
- 23.05.2013 - 15:50
|
В колонке "ЗначенияПолей" находится же только то что в твоем примере справа от знакак равенства? Выбор Когда .... Тогда .... Конец Не? | | |
2
- 23.05.2013 - 15:53
| Так мне нужно сначала разложить это в массив, а потом выдернуть нужные данные | | |
3
- 23.05.2013 - 16:03
| посмотри какой функцией в модулях парсится эта строка и примени ее в СКД | | |
4
- 24.05.2013 - 09:05
| 3-Uho >Да что-то не парситься она нигде... | | |
5
- 24.05.2013 - 09:20
| 4-vistwork > ну как это? например, в форме редактирования адреса? | | |
6
- 24.05.2013 - 12:14
| Цитата:
Деревня тоже хранится в отдельной колонке, нужно оттуда тащить. | | |
7
- 26.05.2013 - 14:51
| 6-Ирли Бёрд >Соглашусь только если вы укажите пальцем. | | |
8
- 26.05.2013 - 15:04
|
В общих модулях добавил функцию &НаСервере Функция ОбработатьМассивНаСервере(Строка) Экспорт СписокПолей=Новый СписокЗначений; СписокПолей=УправлениеКонтактнойИнформацией.Преобр азоватьСтрокуВСписокПолей(Строка); НаселенныйПункт =""; Для каждого ТекЭлемент Из СписокПолей Цикл Если ТекЭлемент.Представление="НаселенныйПункт" ИЛИ ТекЭлемент.Представление="Город" Тогда НаселенныйПункт = ТекЭлемент.Значение; КонецЕсли; КонецЦикла; Возврат НаселенныйПункт; КонецФункции // ОбработатьМассивНаСервере() в вычисляемых полях crl прописал вызов МодулиДополнительные.ОбработатьМассивНаСервере(Зна ченияПолей) Без этого поля отчет работает, но с этим полем пишет {Форма.Форма.Форма(893)**: Ошибка при вызове метода контекста (Вывести) ПроцессорВыводаРезультатаОтчета.Вывести(ПроцессорК омпоновкиДанных); по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка в выражении по причине: Синтаксическая ошибка "МодулиДополнительные.ОбработатьМассивНаСервер е" | | |
9
- 28.05.2013 - 09:33
|
4-vistwork > а это что? // Получает значения поля адреса // // Параметры: // СтрокаЗначенийПолей - строка значений полей // ИмяПоля - имя поля Функция ПолучитьЗначениеКонтактнойИнформации(СтрокаЗначени йПолей, ИмяПоля) Экспорт ПозицияПоля = Найти(СтрокаЗначенийПолей, ИмяПоля); Значение = ""; Если ПозицияПоля <> 0 Тогда ЗначенияПолей = Прав(СтрокаЗначенийПолей, СтрДлина(СтрокаЗначенийПолей) - ПозицияПоля - СтрДлина(ИмяПоля)); ПозицияПС = Найти(ЗначенияПолей, Символы.ПС); Значение = Сред(ЗначенияПолей, 0 , ПозицияПС - 1); КонецЕсли; Возврат Значение; КонецФункции | | |
10
- 28.05.2013 - 09:43
| +9 попробовал - все отлично работает | |
| Интернет-форум Краснодарского края и Краснодара |