|
Управляемое приложение.программная запись адреса через общую форму ввода адреса | ☑ | ||
---|---|---|---|---|
0
NastyNasty
08.10.12
✎
08:36
|
Очень нужна помощь. Пытаюсь программно записать адрес в справочник (реализовано через общую форму ввода адреса). Адрес записывается в объект и хранится там- всё в порядке, но на форме его нет. если раскрыть адрес в форме справочника, то он пуст. Подскажите как правильно нужно записывать адрес в таком случае
|
|||
1
mikecool
08.10.12
✎
08:55
|
1) где фотка в карточке?
2) смотреть, что происходит при открытии формы, понять, что недозаполнила |
|||
2
NastyNasty
08.10.12
✎
09:13
|
http://imageshack.us/photo/my-images/210/97648046.png/
Вот то, что хранится в объекте после записи |
|||
3
NastyNasty
08.10.12
✎
09:33
|
Сначала я создаю список значений, в который передаю значения полей адреса.
Далее создаю новую структуру, в которую передаю преобразованный список значений (УправлениеКонтактнойИнформацией.ПреобразоватьСписокПолейВСтроку) из п.1 и представление адреса А потом добавляю строку в ТЧ КонтактнаяИнформация в справочнике. |
|||
4
Cube
08.10.12
✎
09:34
|
(0) На этом форуме девушкам принято сначала фотку в личную карточку выкладывать, а потом уже спрашивать :)
|
|||
5
Мимохожий Однако
08.10.12
✎
09:39
|
Возьми из типовой конфигурации. Свой лисапед лучше?
|
|||
6
NastyNasty
08.10.12
✎
09:41
|
Готово :)
|
|||
7
NastyNasty
08.10.12
✎
09:44
|
конфу делала не я. мне только нужно программно заполнить справочник по недвижимости. Я и так прописала так, как в общем модуле написано. До отпуска парилась с этой записью, сегодня вернулась и такое ощущение, что я никогда не сделаю эту запись((((
|
|||
8
YF
08.10.12
✎
09:45
|
(6) Вот, другое дело.
Если адрес записывается, то посмотреть, как он выводится на форму (нужно перечитать данные) |
|||
9
mikecool
08.10.12
✎
09:46
|
(6) вот и как теперь думать про 1с? ))
|
|||
10
Cube
08.10.12
✎
09:50
|
(6) Ухууу)) Молодец %)
|
|||
11
Cube
08.10.12
✎
09:51
|
(7) Давай код, которым записываешь адрес.
|
|||
12
Cube
08.10.12
✎
09:51
|
(7) Это полностью самописный код или слизано с типовых конфигураций 1С?
|
|||
13
NastyNasty
08.10.12
✎
09:53
|
после перечитки ничего не произошло
|
|||
14
NastyNasty
08.10.12
✎
09:53
|
КонтактнаяИнформация = НовыйЭлемент.КонтактнаяИнформация;
СтрокаКИ = КонтактнаяИнформация.Добавить(); Страна = Справочники.СтраныМира.Россия; ЗначенияРеквизитов = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Страна, "Код, Наименование"); КодСтраны = ЗначенияРеквизитов.Код; НаименованиеСтраны = ЗначенияРеквизитов.Наименование; Регион = "Омская обл"; КодРегиона = "55"; Район = ""; Город = "Омск г"; НаселенныйПункт = ""; Улица = Массив [7]; Дом = Массив [8]; Корпус = Массив [9]; Квартира = Массив [10]; Индекс = УправлениеКонтактнойИнформациейКлассификаторы.ПолучитьИндекс(Регион , Район, Город, НаселенныйПункт, Улица, Дом, Корпус); ТипДома = "дом"; ТипКорпуса = "корпус"; ТипКвартиры = "кв."; НаименованиеВида = "Адрес"; Представление = ""; СтруктураАдреса = Новый Структура(); СтруктураАдреса.Вставить("Индекс", Индекс); СтруктураАдреса.Вставить("Регион", Регион); СтруктураАдреса.Вставить("Район", Район); СтруктураАдреса.Вставить("Город", Город); СтруктураАдреса.Вставить("НаселенныйПункт", НаселенныйПункт); СтруктураАдреса.Вставить("Улица", Улица); СтруктураАдреса.Вставить("Дом", Дом); СтруктураАдреса.Вставить("Корпус", Корпус); СтруктураАдреса.Вставить("Квартира", Квартира); СтруктураАдреса.Вставить("Страна", Страна); СтруктураАдреса.Вставить("НаименованиеСтраны", НаименованиеСтраны); СтруктураАдреса.Вставить("ТипДома", ТипДома); СтруктураАдреса.Вставить("ТипКорпуса", ТипКорпуса); СтруктураАдреса.Вставить("ТипКвартиры", ТипКвартиры); СтруктураАдреса.Вставить("НаименованиеВида", НаименованиеВида); СтруктураАдреса.Вставить("Представление", Представление); ПредставлениеСВидом = УправлениеКонтактнойИнформациейКлиентСервер.СформироватьПредставлениеАдреса(СтруктураАдреса , Представление, НаименованиеВида); ЗначенияПолей = Новый СписокЗначений; //Если ЗначениеЗаполнено(Индекс) Тогда ЗначенияПолей.Добавить("644010", "Индекс"); //КонецЕсли; Если ЗначениеЗаполнено(КодРегиона) Тогда ЗначенияПолей.Добавить(КодРегиона, "КодРегиона"); КонецЕсли; Если ЗначениеЗаполнено(Регион) Тогда ЗначенияПолей.Добавить(Регион, "Регион"); КонецЕсли; Если ЗначениеЗаполнено(Район) Тогда ЗначенияПолей.Добавить(Район, "Район"); КонецЕсли; Если ЗначениеЗаполнено(Город) Тогда ЗначенияПолей.Добавить(Город, "Город"); КонецЕсли; Если ЗначениеЗаполнено(НаселенныйПункт) Тогда ЗначенияПолей.Добавить(НаселенныйПункт, "НаселенныйПункт"); КонецЕсли; Если ЗначениеЗаполнено(Улица) Тогда ЗначенияПолей.Добавить(Улица, "Улица"); КонецЕсли; Если ЗначениеЗаполнено(Дом) Тогда ЗначенияПолей.Добавить(Дом, "Дом"); КонецЕсли; Если ЗначениеЗаполнено(Корпус) Тогда ЗначенияПолей.Добавить(Корпус, "Корпус"); КонецЕсли; Если ЗначениеЗаполнено(Квартира) Тогда ЗначенияПолей.Добавить(Квартира, "Квартира"); КонецЕсли; Если ЗначениеЗаполнено(НаименованиеСтраны) Тогда ЗначенияПолей.Добавить(НаименованиеСтраны, "Страна"); КонецЕсли; Если ЗначениеЗаполнено(КодСтраны) Тогда ЗначенияПолей.Добавить(КодСтраны, "КодСтраны"); КонецЕсли; Если Не ПустаяСтрока(Дом) Тогда ЗначенияПолей.Добавить(ТипДома, "ТипДома"); КонецЕсли; Если Не ПустаяСтрока(Корпус) Тогда ЗначенияПолей.Добавить(ТипКорпуса, "ТипКорпуса"); КонецЕсли; Если Не ПустаяСтрока(Квартира) Тогда ЗначенияПолей.Добавить(ТипКвартиры, "ТипКвартиры"); КонецЕсли; Результат = Новый Структура; Результат.Вставить("ЗначенияПолей", ЗначенияПолей); Результат.Вставить("Представление", Представление); Если ТипЗнч(Результат) = Тип("Структура") Тогда СтрокаКИ.Представление = Результат.Представление; СтрокаКИ.ЗначенияПолей =УправлениеКонтактнойИнформацией.ПреобразоватьСписокПолейВСтроку(Результат.ЗначенияПолей); КонецЕсли; СтрокаКИ.Страна = Страна; СтрокаКИ.Город = "Омск г"; СтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес"); СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; СтрокаКИ.Регион = "Омская обл"; |
|||
15
NastyNasty
08.10.12
✎
09:54
|
тут встречаются принудительные моменты в записи (типо Омская область - это временное). Запись брала из общего модуля, кусками дергала
|
|||
16
Cube
08.10.12
✎
09:56
|
(14) И где там запись? Это похоже на 1С-овский код... Значит, КИ хранится в РС - так?
|
|||
17
NastyNasty
08.10.12
✎
09:58
|
строка записи дальше идет, недокопировала ее. в регистры он не пишет контактную информацию
|
|||
18
Мимохожий Однако
08.10.12
✎
09:58
|
КонтактнаяИнформация - это ТЧ в справочнике?
|
|||
19
Cube
08.10.12
✎
10:00
|
(17) А где хранится КИ?
|
|||
20
NastyNasty
08.10.12
✎
11:01
|
КИ хранится в ТЧ
|
|||
21
Cube
08.10.12
✎
11:04
|
(20) Ясно. А точно ты записываешь КИ в ТЧ? То есть, после записи проверь через консоль запросов, есть ли там информация.
|
|||
22
NastyNasty
08.10.12
✎
11:07
|
Точно записываю. я картинку в (2) вставляла(правда качество плохое), я после записи открываю элемент и по точке останова вычисляю значение, ТЧ заполнена
|
|||
23
Cube
08.10.12
✎
11:15
|
(22) А сейчас проблема в том, что на редактирование КИ не открывается? Точнее форма для редактирования КИ открывается, но не заполняется - так?
|
|||
24
NastyNasty
08.10.12
✎
11:16
|
да. И представление не заполнено на форме и при раскрытии адреса все поля пустые
|
|||
25
Cube
08.10.12
✎
11:20
|
(24) На счет представления нужно смотреть, что происходит тут:
ПредставлениеСВидом = УправлениеКонтактнойИнформациейКлиентСервер.СформироватьПредставлениеАдреса(СтруктураАдреса, Представление, НаименованиеВида); |
|||
26
Cube
08.10.12
✎
11:21
|
(24) На счет заполнения формы редактирования КИ, нужно смотреть, что происходит при открытии. Если там код не большой - кидай сюда всю процедуру. Если большой, то найди косячный блок и давай его сюда.
|
|||
27
NastyNasty
08.10.12
✎
12:26
|
После закрытия формы ввода адреса, он передает значения в элемент формы справочника. Проблема в том, что я не получаю формы. Походу дела переписывать буду этот механизм ввода адреса и брать нормальный типовой, где данные хранятся в РС
ПараметрыДляФормы = Новый Структура; ПараметрыДляФормы.Вставить("ЗначенияПолей", ДанныеСтроки.ЗначенияПолей); ПараметрыДляФормы.Вставить("Вид", ДанныеСтроки.Вид); ПараметрыДляФормы.Вставить("БылиВнесеныИзменения", Ложь); ПараметрыДляФормы.Вставить("Представление", Элемент.ТекстРедактирования); ПараметрыДляФормы.Вставить("РедактированиеТолькоВДиалоге", Не Элемент.РедактированиеТекста); ПараметрыДляФормы.Вставить("АдресТолькоРоссийский", ДанныеСтроки.ТолькоРоссийский); Результат = ОткрытьФормуМодально(ИмяФормыРедактирования, ПараметрыДляФормы); Если ТипЗнч(Результат) = Тип("Структура") Тогда Форма[Элемент.Имя] = Результат.Представление; ДанныеСтроки.ЗначенияПолей = Результат.ЗначенияПолей; Модифицированность = Истина; КонецЕсли; |
|||
28
Cube
08.10.12
✎
12:40
|
(27) Что-то я запутался. Ты в (22) утверждала, что адрес у тебя прекрасно записывается в элемент справочника. Уже нет?
То есть, создай новый элемент, укажи адрес, сохрани и закрой все формы. Открой консоль запросов и посмотри, есть ли адрес или нет. |
|||
29
NastyNasty
08.10.12
✎
12:44
|
у меня есть ТЧ контактная информация - в нее я благополучно записываю адрес. а есть реквизит формы КонтактнаяИнформацияПоле2, в который идет запись в (27). Я запись (27) не могу сделать, т.к. не получаю форму. отсюда и проблема, что на форме у меня нет данных
|
|||
30
Cube
08.10.12
✎
12:50
|
(29) "т.к. не получаю форму" - в смысле?
И в (27) нет никакого КонтактнаяИнформацияПоле2... |
|||
31
NastyNasty
08.10.12
✎
12:59
|
Форма[Элемент.Имя] - это КонтактнаяИнформацияПоле2
|
|||
32
NastyNasty
08.10.12
✎
13:01
|
Я обращаюсь к объекту для записи нового элемента на сервере, а форму я там не могу получить. КонтактнаяИнформацияПоле2 этот реквизит программно создается при открытии формы элемента
|
|||
33
Cube
08.10.12
✎
13:04
|
(32) А, так ты программно создаешь новый элемент? Адрес в ТЧ, на сколько я понял, ты записать можешь - так?
А представление делай как в (25). |
|||
34
NastyNasty
08.10.12
✎
13:15
|
НовыйЭлемент = Справочники.Недвижимость.СоздатьЭлемент();
ТЧ заполнятся нормик. Само представление также заполняется в процедуре (25). Может есть какой то другой способ в УП записать программно адрес? или заполнить программно элементы формы. В типовых же УП также реализовано через форму ввода адреса |
|||
35
Cube
08.10.12
✎
13:17
|
(34) Если Адрес в ТЧ "заполняется нормик" и "само представление также заполняется", то что не получается тогда?))) Что-то я уже совсем запутался)
|
|||
36
NastyNasty
08.10.12
✎
13:23
|
1. В справочнике Недвижимость есть табличная часть КИ, которую я благополучно заполняю.
2. В форме элемента справочника Недвижимость программно создается поле КонтактнаяИнформацияПоле2, в которое должно записываться представление адреса и значение полей(это прописано в (27) когда закрывается форма ввода адреса). Так вот у меня проблема с п.2 |
|||
37
Cube
08.10.12
✎
13:28
|
(36) У тебя поле КонтактнаяИнформацияПоле2 связано с какими-нибудь данными же? вот в эти данные и записывай значения.
|
|||
38
NastyNasty
08.10.12
✎
14:05
|
Я это сделала!!!!!!!!!!!
В общем модуле УправлениеКонтаткнойИнформацией есть Процедура ПриСозданииНаСервере(Форма, Объект, ИмяЭлементаДляРазмещения). Так вот в этой процедуре есть такой блок СтрокаВТаблице = ТаблицаКИ.Найти(СтрокаКИ.Вид, "Вид"); Если СтрокаВТаблице <> Неопределено Тогда Форма[ИмяРеквизита] = СтрокаВТаблице.Представление; НоваяСтрока.ЗначенияПолей = ПреобразоватьСтрокуВСписокПолей(СтрокаВТаблице.ЗначенияПолей); КонецЕсли; Где "ТаблицаКИ" это ТЧ КИ элемента, а "Вид" это Справочник Виды контактной информации. Вот тут то и была загвозка. У меня в ТЧ КИ был один вид КИ "Адрес", а сравнивался с видом "Адрес" другим (одно и то же наименование, но разные элементы). И в итоге условие "СтрокаВТаблице <> Неопределено" у меня не срабатывало и поля не заполнялись. Cube спасибо тебе большое, ты с самого утра со мной, без тебя я бы не справилась :***** Я счастлива :) |
|||
39
Cube
09.10.12
✎
04:39
|
(38) Да, собственно, я ничем не помог... :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |