Имя: Пароль:
1C
1С v8
Загрузка контрагентов в буху 2.0
0 lesstat
 
06.08.12
19:44
делаю обработку по загрузке контрагентов и exel и появилось 2 вопроса, как избавиться от галочки "Входит в холдинг"? Делал так:

Спр = Справочники.Контрагенты.СоздатьЭлемент();    
Если НЕ Спр.ЭтоГруппа Тогда
Спр.ГоловнойКонтрагент = Спр.Ссылка;
КонецЕсли;
Спр.Код = ТекКонт;
Спр.Наименование = Фирма;
Спр.НаименованиеПолное = ФирмаПолн;
Спр.ИНН = ИНН;
Спр.КПП = КПП;
Спр.Родитель = ВыбГруппа;
Спр.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
Спр.Записать();

И второй вопрос про контактную информацию, данные совпадают с кладром
делаю так:



КонтИнф = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
КонтИнф.Объект = Спр.Ссылка;
КонтИнф.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
КонтИнф.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
КонтИнф.Поле1 = ИндексА;
КонтИнф.Поле2 = ОбластьА;
КонтИнф.Поле3 = РайонА;
КонтИнф.Поле4 = ГородА;
КонтИнф.Поле5 = НасПунктА;
КонтИнф.Поле6 = УлицаА;
КонтИнф.Поле7 = ДомА;
КонтИнф.Поле8 = КорпусА;
КонтИнф.Поле9 = КвартираА;
КонтИнф.Записать();

После загрузки захожу в адреса и их там нет, точнее стоит галочка одной произвольной страной, а мен нужно чтобы радельно, как решить эти 2 вопроса?
1 lesstat
 
06.08.12
19:46
если поставить галочку раздельно по полям то все кроме индекса заполнено, но контриков очень много и снимать или переставлять галочки очень напряжно и индексы перебивать.
2 Aleksey
 
06.08.12
19:47
Спр.Ссылка; у тебя не определена
3 Aleksey
 
06.08.12
19:47
делай через двойную запись, или через получить ссылку нового

Спр.Записать();
Если НЕ Спр.ЭтоГруппа Тогда
Спр.ГоловнойКонтрагент = Спр.Ссылка;
КонецЕсли;
Спр.Записать();
4 Aleksey
 
06.08.12
19:56
По второму - там есть представления информации, ее заполни
5 lesstat
 
06.08.12
20:05
(4) а если в представление загонять то потом при сдаче отчетности проблем с адресами не будет?
6 Aleksey
 
06.08.12
20:34
(5) В представлении ты загоняешь то что отображается в программе. Т.е. программа не "собирает" адрес, а показывает то что в представлении
7 Aleksey
 
06.08.12
20:38
собственно я так загружаю адрес из 7-ке


Функция ВернутьСтрутуруАдреса(Адрес)
   //1 - Структура строки с адресом в 7-ке
   //2 - Код страны
   //3 - Индекс
   //4 - Наименование региона
   //5 - Наименование района
   //6 - Наименование города
   //7 - Наименование нас пункта
   //8 - Наименование улицы
   //9 - Номер дома
   //10- Номер корпуса
   //11- Номер квартиры
   СписокСАдресом = Разложить(Адрес);
   Результат  = новый Структура();
   Результат.Вставить("Поле1",?(СписокСАдресом.количество()>1,СписокСАдресом[1].Значение,""));
   Результат.Вставить("Поле2",?(СписокСАдресом.количество()>2,СписокСАдресом[2].Значение,""));
   Результат.Вставить("Поле3",?(СписокСАдресом.количество()>3,СписокСАдресом[3].Значение,""));
   Результат.Вставить("Поле4",?(СписокСАдресом.количество()>4,СписокСАдресом[4].Значение,""));
   Результат.Вставить("Поле5",?(СписокСАдресом.количество()>5,СписокСАдресом[5].Значение,""));
   Результат.Вставить("Поле6",?(СписокСАдресом.количество()>6,СписокСАдресом[6].Значение,""));
   Результат.Вставить("Поле7",?(СписокСАдресом.количество()>7,СписокСАдресом[7].Значение,""));
   Результат.Вставить("Поле8",?(СписокСАдресом.количество()>8,СписокСАдресом[8].Значение,""));
   Результат.Вставить("Поле9",?(СписокСАдресом.количество()>9,СписокСАдресом[9].Значение,""));
   Результат.Вставить("Поле10","");
   Результат.Вставить("Представление","");
   
   Возврат Результат
КонецФункции

Функция ОбновитьАдрес(СтрокаАдреса, ТекОбъект, ТекТип, ТекВид)
   НовыйАдрес = ВернутьСтрутуруАдреса(СтрокаАдреса);
   АдресИзменен = False;
   Результат = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
   Результат.Отбор.Объект.Установить(ТекОбъект.Ссылка);
   Результат.Отбор.Тип.Установить(ТекТип);
   Результат.Отбор.Вид.Установить(ТекВид);
   Результат.Прочитать();
   Если Результат.Количество() = 0 Тогда
       Адрес = Результат.Добавить();
       Адрес.Объект = ТекОбъект.Ссылка;
       Адрес.Тип = ТекТип;
       Адрес.Вид = ТекВид;
   Иначе
       Адрес = Результат[0];
   КонецЕсли;
   Для Каждого ТекРеквизит из НовыйАдрес Цикл
       Если Адрес[ТекРеквизит.Ключ]<>ТекРеквизит.Значение и
           ЗначениеЗаполнено(ТекРеквизит.Значение) тогда
           Адрес[ТекРеквизит.Ключ]=ТекРеквизит.Значение;
           АдресИзменен = True;
       КонецЕсли;
   КонецЦикла;
   
   Адрес.Представление = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдреса(Адрес);
   
   Если АдресИзменен тогда
       Результат.Записать();
   КонецЕсли;
   
   Возврат АдресИзменен;
   
Конецфункции


ТекТип = Перечисления.ТипыКонтактнойИнформации.Адрес;
ТекВид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
ОбновитьАдрес(РеквизитыОбъекта["ФактАдрес"], Спр, ТекТип, ТекВид);
8 lesstat
 
07.08.12
05:38
еще вопрос появился, пытаюсь загрузить банковские счета

Объект = Справочники.БанковскиеСчета.СоздатьЭлемент();
       
//КонтрАгент
Спр = Справочники.Контрагенты;
   
Если ЗначениеЗаполнено(Спр.НайтиПоКоду(Код)) Тогда
Спр = Справочники.Контрагенты.ПолучитьСсылку();
Объект.Владелец = Спр.Ссылка;
объект.ТекстКорреспондента = Спр.НаименованиеПолное;
Объект.Наименование = НаименованиеБанка;
Объект.ВидСчета = "Расчетный";
Объект.ВалютаДенежныхСредств = Справочники.Валюты.НайтиПоНаименованию("РУб");
Объект.НомерСчета = РС;
Попытка
Объект.Записать();
Исключение;
КонецПопытки;
КонецЕсли;

в отладчике где спр.найтипоКоду(Код) встает правильное значение и контрагент с таким кодом есть но в следующей строке где пишу
Спр = Справочники.Контрагенты.ПолучитьСсылку();

выдает уже что объект не найден в чем трабл?
9 BuHu
 
07.08.12
05:43
(8)а что по твоему должно вернуть Справочники.Контрагенты.ПолучитьСсылку(); ?
10 BuHu
 
07.08.12
05:45
+(9)посмотри в СП как работает НайтиПоКоду()
11 lesstat
 
07.08.12
06:04
(10) (9) да спасибо, действительно смотрим в книгу видим фигу, эту проблему решил
12 lesstat
 
07.08.12
06:19
еще вопрос, когда БИК заполняется можно как то сделать чтобы банк подставлялся автоматом, список всех банков подгружен?
13 BuHu
 
07.08.12
06:27
(12) где заполняется БИК ?
14 lesstat
 
07.08.12
07:10
(13) да, чет я и не заметил что он не заполняется, ну по идее будет что то типа Объект.БИК = БИК;
Тогда банк будет заполняться? просто до вечера не смогу проверить
15 BuHu
 
07.08.12
07:20
(14) скорей всего нет
16 Oleg_Kag
 
07.08.12
07:22
Если известен БИК, то что мешает сделать
Объект.Банк=ИзвестныйНамБик
17 Oleg_Kag
 
07.08.12
07:28
ой там же справочник Банков...
Тогда:
СпрБанки=Справочник.Банки;
НашБанк=СпрБанки.НайтиПоКоду(ИзвестныйНамБик);
Если НашБанк=СпрБанки.ПустаяСсылка()Тогда
Сообщить("Банк с БИК "+ИзвестныйНамБик+" не обнаружен в справочнике банков.");
Иначе
Объект.Банк=НашБанк;
КонецЕсли;