Имя: Пароль:
1C
1С v8
Управляемое приложение.программная запись адреса через общую форму ввода адреса
,
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) Да, собственно, я ничем не помог... :)