К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

СКД или как получить нужные данные

Гость
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
Так мне нужно сначала разложить это в массив, а потом выдернуть нужные данные
Uho
3 - 23.05.2013 - 16:03
посмотри какой функцией в модулях парсится эта строка и примени ее в СКД
Гость
4 - 24.05.2013 - 09:05
3-Uho >Да что-то не парситься она нигде...
Uho
5 - 24.05.2013 - 09:20
4-vistwork > ну как это? например, в форме редактирования адреса?
6 - 24.05.2013 - 12:14
Цитата:
Сообщение от vistwork Посмотреть сообщение
Когда появились деревни, то поле город стало пустое, а данные нужно вытащить из колонки ЗначениеПолей
не нужно вытаскивать данные из колонки ЗначениеПолей.
Деревня тоже хранится в отдельной колонке, нужно оттуда тащить.
Гость
7 - 26.05.2013 - 14:51
6-Ирли Бёрд >Соглашусь только если вы укажите пальцем.
Гость
8 - 26.05.2013 - 15:04
В общих модулях добавил функцию
&НаСервере
Функция ОбработатьМассивНаСервере(Строка) Экспорт
СписокПолей=Новый СписокЗначений;
СписокПолей=УправлениеКонтактнойИнформацией.Преобр азоватьСтрокуВСписокПолей(Строка);
НаселенныйПункт ="";
Для каждого ТекЭлемент Из СписокПолей Цикл
Если ТекЭлемент.Представление="НаселенныйПункт" ИЛИ ТекЭлемент.Представление="Город" Тогда
НаселенныйПункт = ТекЭлемент.Значение;
КонецЕсли;
КонецЦикла;
Возврат НаселенныйПункт;
КонецФункции // ОбработатьМассивНаСервере()


в вычисляемых полях crl прописал вызов
МодулиДополнительные.ОбработатьМассивНаСервере(Зна ченияПолей)

Без этого поля отчет работает, но с этим полем пишет
{Форма.Форма.Форма(893)**: Ошибка при вызове метода контекста (Вывести)
ПроцессорВыводаРезультатаОтчета.Вывести(ПроцессорК омпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "МодулиДополнительные.ОбработатьМассивНаСервер е"
Uho
9 - 28.05.2013 - 09:33
4-vistwork > а это что?

// Получает значения поля адреса
//
// Параметры:
// СтрокаЗначенийПолей - строка значений полей
// ИмяПоля - имя поля
Функция ПолучитьЗначениеКонтактнойИнформации(СтрокаЗначени йПолей, ИмяПоля) Экспорт

ПозицияПоля = Найти(СтрокаЗначенийПолей, ИмяПоля);
Значение = "";
Если ПозицияПоля <> 0 Тогда
ЗначенияПолей = Прав(СтрокаЗначенийПолей, СтрДлина(СтрокаЗначенийПолей) - ПозицияПоля - СтрДлина(ИмяПоля));
ПозицияПС = Найти(ЗначенияПолей, Символы.ПС);
Значение = Сред(ЗначенияПолей, 0 , ПозицияПС - 1);
КонецЕсли;

Возврат Значение;

КонецФункции
Uho
10 - 28.05.2013 - 09:43
+9 попробовал - все отлично работает


К списку вопросов






Copyright ©, Все права защищены