Вход | Регистрация
 

Как программно заполнить контактную инф данными из ФНС? БП3.0 внешн

Как программно заполнить контактную инф данными из ФНС? БП3.0 внешн
Я
   Shecurok
 
07.04.21 - 19:39
Добрый вечер. Пишу внешнюю обраюотку для бух 3.0, и тут у меня создаются новые контрагенты, есл не найдены были в базе. Всё отлично записывается, кроме конт. информации. Процедуру взял типовую. Ошибка на моменте Строки = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор); пишет, что поле КонтИнф... не найдено. Судя по всему ЭтотОбъект она считает не нового контрагента, а эту самую внешнюю обработку. Как переделать? Весь код выглдяит так:

Если ЭтоЮрЛицо Тогда
        
        // Заполнение адресов
        
        //++++++++++++++++++++++++++++++++++++++++
        //РАБОТАЕТ, НО НАМ НАДО ИЗ ФСИН АДРЕС ПОЛУЧАТЬ
        //Об=СпрКонтрагент;
        //Адрес=Об.КонтактнаяИнформация.Добавить();
        //Адрес.Тип=Перечисления.ТипыКонтактнойИнформации.Адрес;
        //Адрес.Вид=Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
        //Адрес.Представление=Строка(СтрокаТЗ.АдресПокупателя);
        //Об.Записать();
        //----------------------------------------
        
        ЗаполнитьЭлементКонтактнойИнформации(СпрКонтрагент, "КонтактнаяИнформацияПолеЮрАдресКонтрагента", РеквизитыКонтрагента.ЮридическийАдрес);
        
        ЗаполнитьЭлементКонтактнойИнформации(СпрКонтрагент, "КонтактнаяИнформацияПолеФактАдресКонтрагента", РеквизитыКонтрагента.ЮридическийАдрес);
        ЮрФактАдресаСовпадают = Истина;
        
        ЗаполнитьЭлементКонтактнойИнформации(СпрКонтрагент, "КонтактнаяИнформацияПолеПочтовыйАдресКонтрагента", РеквизитыКонтрагента.ЮридическийАдрес);
        ЮрПочтовыйАдресаСовпадают = Истина;
<...>

&НаСервере
Процедура ЗаполнитьЭлементКонтактнойИнформации(СпрКонтрагент, ИмяРеквизита, СтруктураДанных)
    
        
    Если СтруктураДанных = Неопределено Тогда
        Возврат;
    КонецЕсли;

    Отбор  = Новый Структура("ИмяРеквизита", ИмяРеквизита);
    Строки = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор);
    ДанныеСтроки = ?(Строки.Количество() = 0, Неопределено, Строки[0]);
    Если ДанныеСтроки = Неопределено Тогда
        Возврат;
    КонецЕсли;
    ЗаполнитьЗначенияСвойств(ДанныеСтроки, СтруктураДанных);
    ДанныеСтроки.Значение = СтруктураДанных.КонтактнаяИнформация;
    ЭтотОбъект[ИмяРеквизита] = СтруктураДанных.Представление;
    
КонецПроцедуры
   Garykom
 
1 - 07.04.21 - 19:43
гугл программист однако
   Shecurok
 
2 - 07.04.21 - 19:43
Если что, СпрКонтрагент видит корректно. с типом Объект
   Garykom
 
3 - 07.04.21 - 20:02
(2) ну и если логически подумать? совсем немного
   Shecurok
 
4 - 07.04.21 - 20:06
(3) ну я понимаю, что этого поля там нет. Его надо откуда то добавить. А вот откуда не пойму
   Garykom
 
5 - 07.04.21 - 20:12
Строки = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор);


Ответь что такое "КонтактнаяИнформацияОписаниеДополнительныхРеквизитов"?

Если ответ "не знаю" то упс, вам пора нанять программиста
   Garykom
 
6 - 07.04.21 - 20:13
(5)+ Подумай у этого объекта вызывают некую функцию НайтиСтроки(Отбор)
Глянь в СП что это?
   Shecurok
 
7 - 07.04.21 - 20:17
(5) смею предположить, что это коллекция, вроде так называется. Смотрел через отладчик в модуле формы спр контрагенты. Там это есть, соответственно ошибки нет. У меня нет, это надо добавить... поиск по ключевым словам пока мне не помог
   Shecurok
 
8 - 07.04.21 - 20:20
(6) ну судя по сп я близок был к правде. Осуществляет поиск строк из коллекции строк дерева значений
   Garykom
 
9 - 07.04.21 - 20:24
(7) >это надо добавить

добавить фигня, вот заполнить...
   Garykom
 
10 - 07.04.21 - 20:25
но проще выкинуть все это и написать правильно
   Shecurok
 
11 - 07.04.21 - 20:25
(10) где можно подсмотреть?)
   Shecurok
 
12 - 07.04.21 - 20:25
копать судя по всему в сторону общего модуля УправлениеКонтактнойИнформацией
   Garykom
 
13 - 07.04.21 - 20:26
   Garykom
 
14 - 07.04.21 - 20:27
(12) в БП3 КИ находится в ТЧ объектов, банально же
Нахер общий модуль
   Cthulhu
 
15 - 07.04.21 - 20:28
F11
   Shecurok
 
16 - 07.04.21 - 20:31
(14) откуда начинать в таком случае, чтоб привело к месту где эта коллекция заполняется и появляется. хотя тут уже туплю, скорее всего пр нажатии на кнопку заполнить по ИНН)
   Shecurok
 
17 - 07.04.21 - 20:32
(14) в каком месте мне реально копать, чтоб это найти?
   Shecurok
 
18 - 07.04.21 - 20:39
полная поебота эти коллекции и пр дерьмо.
   Shecurok
 
19 - 07.04.21 - 20:39
но сделать надо
   Shecurok
 
20 - 07.04.21 - 20:43
буду писать здесь и как будто с кем то общаюсь. Смотрю у себя в обработке строчку ЗаполнитьЗначенияСвойств(СпрКонтрагент, РеквизитыКонтрагента);.

В реквизитыКонтрагента есть рквизт юр.адрес с тем, что мне и надо. Угу. Пошли дальше
   Shecurok
 
21 - 07.04.21 - 20:46
Дальше ничего особоенного нет, только заполнение истории ки
   Shecurok
 
22 - 07.04.21 - 20:48
потом сразу строка ЗаполнитьЭлементКонтактнойИнформации(СпрКонтрагент, "КонтактнаяИнформацияПолеЮрАдресКонтрагента", РеквизитыКонтрагента.ЮридическийАдрес);
которая и переносит меня в процедуру где ошибка встречается... окее. посомтрим что идет в документе при заполнении по инн контр, начиная с кнопки заполнить
   Shecurok
 
23 - 07.04.21 - 20:50
Тут мы через все если проскакиваем и попадаем в процедуру Процедура ВыполнитьЗаполнениеРеквизитовПоИНН(ПроверитьИНН = Ложь). Ну пошли
   Shecurok
 
24 - 07.04.21 - 20:58
Так, ну тут были пару момоентом с переходмаи в другие процедуры и пр, но единственное наверн, что может быть интересно это процедура РеквизитыЮридическогоЛицаПоИНН, где мы их заполнили. Т.е. адрес появился в реквизите, но он еще где то там
   Shecurok
 
25 - 07.04.21 - 21:02
прошли процедуру ДанныеЕдиныхГосРеестровПоИНН(ИННОбъекта, ЭтоЮрЛицо);, получили ДанныйЗаполнения. Но там тоже вроде ничего такого
   Shecurok
 
26 - 07.04.21 - 21:06
Переходим в процедуру ЗаполнитьРеквизитыНаСервере(АдресРеквизитовКонтрагента, ПроверитьИНН)

Тут первые две строчки сразу

 
РеквизитыКонтрагента = ПолучитьИзВременногоХранилища(АдресРеквизитовКонтрагента);
    
    Если Объект.ЮридическоеФизическоеЛицо <> РеквизитыКонтрагента.ЮридическоеФизическоеЛицо Тогда
    
        Вид = ?(РеквизитыКонтрагента.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо, "ЮридическоеЛицо", "ФизическоеЛицо");
        ВидПриИзмененииНаСервере();

Встаем на Если Объект...., смотрим отладчиком что у нас там по объекту... А там уже все это есть. Збс. Класс. Где упустил, хрен знает. Завтра попробую продублровать это все в обрабтку, сомневаюсь, что из этого что-то выйдет, но всё же.
        
    КонецЕсли;
   Shecurok
 
27 - 08.04.21 - 10:12
Хотел как лучше, получилось как всегда...

Забил я пока на эти коллекции данных,  у меня же адрес из ФНС был в РеквизитыКонтрагента. В итоге сделал так:

Об=СпрКонтрагент;
        Адрес=Об.КонтактнаяИнформация.Добавить();
        Адрес.Тип=Перечисления.ТипыКонтактнойИнформации.Адрес;
        Адрес.Вид=Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента; 
        //Адрес.Представление=Строка(СтрокаТЗ.АдресПокупателя);

        Адрес.Представление=РеквизитыКонтрагента.ЮридическийАдрес.Представление;
        Об.Записать();


Список тем форума
 
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.