![]() |
|
(ЗУП) Распарсить в отчете строку с местом рождения | ☑ | ||
---|---|---|---|---|
0
vechiy
30.10.12
✎
10:47
|
Нужно разбить строку места рождения (из физ.лица) и вывести её в отчете.
Строка эта хранится в ЗУПе целиком и в коде парсится по запятым, на регион, город и т.д. Нужно парсить её и выводить в отчете, как это можно сделать? |
|||
1
RomaH
naïve
30.10.12
✎
10:48
|
....
пос. Некрасовское Ярославской обл. г. Ярославль Няндома как ты это "парсить" собираешься? примеры строк есть? |
|||
2
RomaH
naïve
30.10.12
✎
10:49
|
и главное - нафига?
|
|||
3
Serg_1960
30.10.12
✎
10:49
|
В ЗУП есть типовая функция для "сбора" и "разбора" адресной строки.
|
|||
4
RomaH
naïve
30.10.12
✎
10:50
|
(3) там не адрес
|
|||
5
RomaH
naïve
30.10.12
✎
10:52
|
а, извиняюсь - оказывается структурирована
вопрос в чем? как парсить или как парсить при выводе отчета? |
|||
6
vechiy
30.10.12
✎
10:55
|
(5) да, как парсить в вывод отчета)
как подставить строку в функцию парсинга и потом оттуда полученные строки вывести в отчет |
|||
7
vechiy
30.10.12
✎
10:56
|
в модуле отчета есть такая функция:
Процедура ДоработатьКомпоновщикПередВыводом() Экспорт Для каждого ВыбранноеПоле из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл Если ТипЗнч(ВыбранноеПоле) = Тип("ВыбранноеПолеКомпоновкиДанных") И ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ДанныеОФизЛице.ДеньРождения") тогда ВыбранноеПоле.Заголовок = "Ближайший день рождения"; КонецЕсли; КонецЦикла; ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период")); Если ЗначениеПараметра = Неопределено Тогда Возврат; КонецЕсли; Если ЗначениеПараметра.Значение = Неопределено или Дата(ЗначениеПараметра.Значение) = '00010101' Тогда ЗначениеПараметра.Значение = КонецДня(ТекущаяДата()); ЗначениеПараметра.Использование = Истина; КонецЕсли; СписокЗначений = Новый СписокЗначений; СписокЗначений.Добавить(Справочники.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная); СписокЗначений.Добавить(Справочники.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная); СписокЗначений.Добавить(Справочники.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая); ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "ТарифнаяСтавкаОклад", СписокЗначений); СтруктураМестоРождения = РегламентированнаяОтчетность.РазложитьМестоРождения(МестоРожденияСтрокой); КонецПроцедуры так понимаю, где-то здесь можно и получить, и вывести, но не знаю как) |
|||
8
vechiy
30.10.12
✎
11:00
|
сделать несколько полей с параметрами в отчете и заполнять их
|
|||
9
RomaH
naïve
30.10.12
✎
11:00
|
прямо в компановщике в расчитываемые поля добавляешь нужные
а в них в выражении пишешь функцию общего модуля |
|||
10
RomaH
naïve
30.10.12
✎
11:01
|
прямо в компановщике *** в макете СКД
|
|||
11
vechiy
30.10.12
✎
11:07
|
РегламентированнаяОтчетность.РазложитьМестоРождения(РаботникиОрганизации.Сотрудник.Физлицо.МестоРождения)
пробую, да, но не получается обратиться к полю |
|||
12
vechiy
30.10.12
✎
11:07
|
ругается на это
|
|||
13
vechiy
30.10.12
✎
11:12
|
я делаю параметр, к примеру, для города рождения, правильно?
поле &городРождения в вычисляемых полях указываю "путь к данным" - городРождения "Выражение" - РегламентированнаяОтчетность.РазложитьМестоРождения(ФизЛицоМестоРождения).НаселенныйПункт |
|||
14
vechiy
30.10.12
✎
11:31
|
РегламентированнаяОтчетность.РазложитьМестоРождения(ГородРождения)
вот это возвращает мне структуру, но к полям структуры не даёт обратиться (типа "синтаксическая ошибка") |
|||
15
RomaH
naïve
30.10.12
✎
11:34
|
я делаю параметр, к примеру, для города рождения, правильно?
поле &городРождения это не надо для начала нарисуй свои функцИИ - возращающие просто строку город/область и прочее |
|||
16
vechiy
30.10.12
✎
11:51
|
в модуле отчета надо определять функцию?
Делаю там, при выводе отчета функцию не находит |
|||
17
vechiy
30.10.12
✎
11:54
|
че то я туплю, как к ней обратиться, если она в модуле объекта отчета? Никак?)
|
|||
18
RomaH
naïve
30.10.12
✎
11:58
|
только функция общего модуля
|
|||
19
vechiy
30.10.12
✎
11:59
|
эх
|
|||
20
vechiy
30.10.12
✎
11:59
|
В модуле объекта отчета никак не сделать?
Если вроде этого: МестоРождения = Рез.МестоРождения.Получить(); Если ТипЗнч(МестоРождения) = Тип("Соответствие") Тогда Страна = МестоРождения.Получить("Страна"); Область = МестоРождения.Получить("Область"); Район = МестоРождения.Получить("Район"); НасПункт = МестоРождения.Получить("НасПункт"); Место = Врег(СокрЛП(Страна)+","+СокрЛП(Область)+","+СокрЛП(Район)+","+СокрЛП(Наспункт)); КонецЕсли; Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.МестоРождения = Место; |
|||
21
RomaH
naïve
30.10.12
✎
12:11
|
м модуле объекта - тогда в СКД передавать внешний источник данных
|
|||
22
vechiy
30.10.12
✎
12:38
|
только вот как это сделать)
|
|||
23
RomaH
naïve
30.10.12
✎
17:54
|
Что сделаь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |