Имя: Пароль:
1C
1С v8
не пойму как записывается значение юр. адрес, физ. адрес в контрагентах (бух.)
,
0 lucifer
 
18.01.12
11:35
Я программно создаю элементы справочника контрагенты, если до этого создавалось название, инн, кпп, окпо и все, проблем не возникало т.к. эти все реквизиты есть, а вот юр. адрес, физ. адрес, тел.
нет таких реквизитов. В конфигураторе посмотрел там
ПолеКИ1 - юр. адрес
ПолеКИ2 - физ. адрес
ПолеКИ3 - тел.
тип значение у всех строка, но таких реквизитов ПолеКИ1 - ПолеКИ3 нет
как же при создании нового контрагента задать эти значения?
1 SuperMario
 
18.01.12
11:36
(0) Регистр сведений контактная информация
2 vmv
 
18.01.12
11:42
регистр КИ обладает высоким уровнем абстактности там индекированные имена полей, совет - клонировать технологию записи из модулей соответсвующих объектов
3 lucifer
 
18.01.12
12:23
(2) вот копаюсь смотрю, отладчик меня привел в процедуру
ЗаписатьКонтактнуюИнформациюСравниваяСКопией (она в общем модуле УправлениеКонтактнойИнформацией)
в нее передается параметр НаборЗаписей и уже циклом по нему проходится если значение было изменено то записывается в регистр сведений новое измененное значение, но вот откуда берется это НаборЗаписей не пойму, и что бы мне это проделать в коде своей обработки тоже не совсем понятно что нужно делать, все в НаборЗаписей упирается.

насколько я понимаю регистр сведений это что-то типа периодических реквизитов в 7, значит я могу посмотреть значение какое было к примеру пол года назад. Странно, я отладчиком просматривал значение переменных, дату не нашел, да в этом регистре нет ничего похожего на дату.
4 lucifer
 
18.01.12
12:46
ну что неужели никто не сталкивался с этим?
5 Быдло замкадное
 
18.01.12
12:48
этот регистр историю не хранит
6 lucifer
 
18.01.12
12:49
(5) ааа тогда я перепутал. А что за регистр в 8 который взял на себя ф-ции периодических реквизитов из 7 ?
7 Анатолий Никитин
 
18.01.12
12:49
В этом регистре нет даты. Пишешь в него контрагента, вид адреса и сам адрес.
8 Быдло замкадное
 
18.01.12
12:50
(6) те же регистры, но есть периодические.
9 lucifer
 
18.01.12
13:16
вот пример записи в регистр, что я вытащил из ЗаписатьКонтактнуюИнформациюСравниваяСКопией

Набор = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
Набор.Отбор.Объект.Установить(Ссылка); //ссылка на элемент контрагента
Набор.Отбор.Тип.Установить(Тип); //ссылка на эл. справочника типКонтактнойИнф.
Набор.Отбор.Вид.Установить(Вид); //ссылка на эл. справочника видКонтактнойИнф.
                                               
новЗапись = Набор.Добавить();
ЗаполнитьЗначенияСвойств(новЗапись, Запись);
Набор.Записать();

Запись - это
Для Каждого Запись Из НаборЗаписей Цикл

Опять этот НаборЗаписей, вот как мне добавить значение из внешний обработки ?
10 lucifer
 
18.01.12
13:37
ну помогите (
11 lucifer
 
18.01.12
15:21
что не у кого в практике не было такого, что приходилось программно создавать контрагентов
12 Анатолий Никитин
 
18.01.12
15:34
из внешней обработки ты пишешь в регистр новую запись.
Объект - это твой контрагент
Тип (ПеречислениеСсылка.ТипыКонтактнойИнформации) - тут выбираешь адрес
Вид (СправочникСсылка.ВидыКонтактнойИнформации) - здесь выбираешь юр. адрес
Представление - сюда пишешь сам адрес.
13 Анатолий Никитин
 
18.01.12
15:36
это если ты не хочешь приводить адреса к виду кладр
14 lucifer
 
18.01.12
15:39
(12) значит эту строку
ЗаполнитьЗначенияСвойств(новЗапись, Запись);
можно пропустить?
15 Анатолий Никитин
 
18.01.12
15:43
я разрешаю пропустить эту строку
16 155153144627
 
18.01.12
16:10
Я делал вот так:

Запись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
       АдресКлассиф = РегистрыСведений.АдресныйКлассификатор;
       Запись.Объект = Контрагент.Ссылка;
       Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
       Запись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
       Запись.Поле1 = СокрЛП(Текст.ПолучитьСтроку(14));           //Индекс
       Стр = СокрЛП(Текст.ПолучитьСтроку(6));
       Стр1 = "";
       Пока Найти(Стр," ")<>0 Цикл
           Стр1 = Стр1 + Лев(Стр,Найти(Стр," ")-1);
           Стр = Сред(Стр,Найти(Стр," ")+1);
       КонецЦикла;
       Запрос = Новый Запрос();
       Запрос.Текст = "Выбрать
       |АдресКлассиф.Наименование,
       |АдресКлассиф.Сокращение
       |ИЗ
       |РегистрСведений.АдресныйКлассификатор как АдресКлассиф
       |Где
       |АдресКлассиф.Наименование = &Наименование";
       Запрос.УстановитьПараметр("Наименование", Стр1);
       //ВыборкаАК = АдресКлассиф.Выбрать();
       //Пока ВыборкаАК.Следующий() Цикл
       //    Если ВыборкаАК.Наименование = СокрЛП(Стр1) Тогда
       //        Стр1 = Стр1 + " " + ВыборкаАК.Сокращение;
       //        Прервать;
       //    КонецЕсли;
       //КонецЦикла;
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
       Пока Выборка.Следующий() Цикл
           Стр1 = Выборка.Наименование + " " + Выборка.Сокращение;
           Прервать;
       КонецЦикла;
       Запись.Поле2 = Стр1;
       //Запись.Поле2 = СокрЛП(Текст.ПолучитьСтроку(6));           //Регион
       Стр = СокрЛП(Текст.ПолучитьСтроку(7));
       Стр1 = "";
       Пока Найти(Стр," ")<>0 Цикл
           Стр1 = Стр1 + Лев(Стр,Найти(Стр," ")-1);
           Стр = Сред(Стр,Найти(Стр," ")+1);
       КонецЦикла;
       //->
       Запрос = Новый Запрос();
       Запрос.Текст = "Выбрать
       |АдресКлассиф.Наименование,
       |АдресКлассиф.Сокращение
       |ИЗ
       |РегистрСведений.АдресныйКлассификатор как АдресКлассиф
       |Где
       |АдресКлассиф.Наименование = &Наименование";
       Запрос.УстановитьПараметр("Наименование", Стр1);
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
       Пока Выборка.Следующий() Цикл
           Стр1 = Выборка.Наименование + " " + Выборка.Сокращение;
           Прервать;
       КонецЦикла;
       //<-
       Запись.Поле3 = Стр1;          
       //Запись.Поле3 = СокрЛП(Текст.ПолучитьСтроку(7));           //Район
       Стр = СокрЛП(Текст.ПолучитьСтроку(8));                                    
       Стр1 = "";
       Если Найти(Стр," ")<>0 Тогда
           Стр1 = Сред(Стр,Найти(Стр," ")+1);
       Иначе
           Стр1 = Стр;
       КонецЕсли;
       //->
       Запрос = Новый Запрос();
       Запрос.Текст = "Выбрать
       |АдресКлассиф.Наименование,
       |АдресКлассиф.Сокращение
       |ИЗ
       |РегистрСведений.АдресныйКлассификатор как АдресКлассиф
       |Где
       |АдресКлассиф.Наименование = &Наименование";
       Запрос.УстановитьПараметр("Наименование", Стр1);
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
       Пока Выборка.Следующий() Цикл
           Стр1 = Выборка.Наименование + " " + Выборка.Сокращение;
           Прервать;
       КонецЦикла;
       //<-
       Запись.Поле4 = Стр1;
       //Запись.Поле4 = СокрЛП(Текст.ПолучитьСтроку(8));           //Город
       Стр = СокрЛП(Текст.ПолучитьСтроку(9));
       Стр1 = "";
       Если Найти(Стр," ")<>0 Тогда
           Стр1 = Сред(Стр,Найти(Стр," ")+1);
       Иначе
           Стр1 = Стр;
       КонецЕсли;
       //->
       Запрос = Новый Запрос();
       Запрос.Текст = "Выбрать
       |АдресКлассиф.Наименование,
       |АдресКлассиф.Сокращение
       |ИЗ
       |РегистрСведений.АдресныйКлассификатор как АдресКлассиф
       |Где
       |АдресКлассиф.Наименование = &Наименование";
       Запрос.УстановитьПараметр("Наименование", Стр1);
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
       Пока Выборка.Следующий() Цикл
           Стр1 = Выборка.Наименование + " " + Выборка.Сокращение;
           Прервать;
       КонецЦикла;
       //<-
       Запись.Поле5 = Стр1;
       //Запись.Поле5 = СокрЛП(Текст.ПолучитьСтроку(9));          //Населенный пункт
       Стр = СокрЛП(Текст.ПолучитьСтроку(10));
       Стр1 = "";
       Если (Найти(Стр," ")<>0) и ((Лев(Стр,1) = "у") или (Лев(Стр,1) = "У")) Тогда
           Стр1 = Сред(Стр,Найти(Стр," ")+1);
       Иначе
           Стр1 = Стр;
       КонецЕсли;
       //->
       Запрос = Новый Запрос();
       Запрос.Текст = "Выбрать
       |АдресКлассиф.Наименование,
       |АдресКлассиф.Сокращение
       |ИЗ
       |РегистрСведений.АдресныйКлассификатор как АдресКлассиф
       |Где
       |АдресКлассиф.Наименование = &Наименование";
       Запрос.УстановитьПараметр("Наименование", Стр1);
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
       Пока Выборка.Следующий() Цикл
           Если Выборка.Сокращение <> "д" Тогда
               Стр1 = Выборка.Наименование + " " + Выборка.Сокращение;
               Прервать;
           КонецЕсли;
       КонецЦикла;
       //<-
       Запись.Поле6 = Стр1;
       //Запись.Поле6 = СокрЛП(Текст.ПолучитьСтроку(10));          //Улица
       Стр = СокрЛП(Текст.ПолучитьСтроку(11));
       Стр1 = "";
       Если Найти(Стр," ")<>0 Тогда
           Стр1 = Сред(Стр,Найти(Стр," ")+1);
       Иначе
           Стр1 = Стр;
       КонецЕсли;
       Запись.Поле7 = Стр1;
       //Запись.Поле7 = СокрЛП(Текст.ПолучитьСтроку(11));          //Дом
       Стр = СокрЛП(Текст.ПолучитьСтроку(12));
       Стр1 = "";
       Если Найти(Стр," ")<>0 Тогда
           Стр1 = Сред(Стр,Найти(Стр," ")+1);
       Иначе
           Стр1 = Стр;
       КонецЕсли;
       Запись.Поле8 = Стр1;
       //Запись.Поле8 = СокрЛП(Текст.ПолучитьСтроку(12));          //Корпус
       Стр = СокрЛП(Текст.ПолучитьСтроку(13));
       Стр1 = "";
       Если Найти(Стр," ")<>0 Тогда
           Стр1 = Сред(Стр,Найти(Стр," ")+1);
       Иначе
           Стр1 = Стр;
       КонецЕсли;
       Запись.Поле9 = Стр1;
       //Запись.Поле9 = СокрЛП(Текст.ПолучитьСтроку(13));          //Квартира
       //Запись.Поле10 = ;
       Запись.Представление = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдреса(Запись);
       Запись.Записать();
       Сообщить("Данные факт. адреса контрагента "+ Контрагент.Наименование + " успешно записаны!");
17 cw014
 
18.01.12
16:15
(16) многа букав
18 155153144627
 
18.01.12
16:21
С кодами принадлежности не было времени разобраться сделал просто поиском по адресному классификатору, поэтому в в улицах стоит проверка что сокращение <> "д". Луговая это и название улицы и деревни :-)
19 lucifer
 
23.01.12
12:02
что я не так делаю?

контИнф=Справочники.ВидыКонтактнойИнформации;                
контИнф.НайтиПоКоду("00011",ложь,,); // нахожу элемент "Юридический адрес"          
Если контИнф<>Справочники.ВидыКонтактнойИнформации.ПустаяСсылка() тогда
Набор = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
//*** сначала пробовал так ***
//Набор.Отбор.Объект.Установить(спр);                            //Набор.Отбор.Тип.Установить(контИнф.ЮрАдресОрганизации.тип);                            //Набор.Отбор.Вид.Установить(контИнф.ЮрАдресОрганизации);
//новЗапись = Набор.Добавить();
//новЗапись.Представление=СокрЛП(дбфпокупатели.UAdress); //сам адрес (строка)
//******

//*** потом так ***
новЗапись = Набор.Добавить();
новЗапись.Объект=спр;
новЗапись.Вид=контИнф.ЮрАдресОрганизации.тип;                                    новЗапись.Тип=контИнф.ЮрАдресОрганизации;                                    новЗапись.Представление=СокрЛП(дбфпокупатели.UAdress);
//******
Иначе                                    
Сообщить("Не нашли ВидыКонтактнойИнформации 00011");                        
КонецЕсли;

не пашет ((
20 depthzer0
 
23.01.12
12:11
Тип - это перечисление, например,
новЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес
21 depthzer0
 
23.01.12
12:13
т.е.
новЗапись.Вид=контИнф.ЮрАдресОрганизации;
новЗапись.Тип=контИнф.ЮрАдресОрганизации.тип;
22 ssh2006
 
23.01.12
12:18
(19) вторая строка
23 hhhh
 
23.01.12
12:23
(19) отбор нужен. Возьми (9) и в него вставь уже строчки из (19)
24 lucifer
 
23.01.12
12:32
(23) "отбор нужен"
//*** сначала пробовал так ***
//Набор.Отбор.Объект.Установить(спр);                             //Набор.Отбор.Тип.Установить(контИнф.ЮрАдресОрганизации.тип);                  //Набор.Отбор.Вид.Установить(контИнф.ЮрАдресОрганизации);
//новЗапись = Набор.Добавить();
//новЗапись.Представление=СокрЛП(дбфпокупатели.UAdress); //сам адрес (строка)
//******
этот отбор?


(20)"новЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес"
не фига (( не пашет, ошибок нет, но и адрес не появляется
25 hhhh
 
23.01.12
12:40
(24) отбора по контрагенту нет, по идее тогда у вас следующий контрагент будет затирать предыдущего.
26 ssh2006
 
23.01.12
12:43
(24) вот здесь проблема
контИнф=Справочники.ВидыКонтактнойИнформации;                
контИнф.НайтиПоКоду("00011",ложь,,); // нахожу элемент "Юридический адрес"
27 hhhh
 
23.01.12
12:45
(26) ему вроде и нужен юридический.
28 depthzer0
 
23.01.12
12:56
там предопределенное значение
новЗапись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации;
новЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
29 depthzer0
 
23.01.12
12:57
если Объект не организация, а Контрагент, то нужно использовать ЮрАдресКонтрагента
30 lucifer
 
23.01.12
14:25
(28) делал я так.
(25) а это не оно?
Набор.Отбор.Объект.Установить(спр);
31 hhhh
 
23.01.12
14:35
(30) надо как в (29)

Набор.Отбор.Объект.Установить(спр);
у тебя же комментарий здесь.
32 lucifer
 
23.01.12
14:46
я закоментировал что бы показать что так я сначала попробовал, не получилось, потом стал пробовать др. вариант