Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Как программно задать адрес контрагента? (1Сv8)


Автор: Zerstroer 21.10.2010, 08:17
Приветствую всех!
Сам я программистом 1С не являюсь, поэтому обращаюсь за помощью.
Занимаюсь экспортом информации из другой прогарммы в 1С.
Столкнулся с такой задачей - экспорт справочника контрагентов из проги в 1С версии 8.1. Точнее, адреса контрагента.
Для выполнения этой задачи, мне нужно знать код 1С, который создает для заданного контрагента адрес (или другую контактную информацию).
Порылся в 1Ске, нашел, что контактная информация хранится в Регистре Сведений "КонтактнаяИнформация", но как задать туда данные и пришить их к конкретному контрагенту, я так и не смог понять.
В связи с чем, прошу показать пример программного задания адреса указанному контрагенту.

Заранее спасибо.

Автор: Itsys 21.10.2010, 10:41
Когда-то делал так (пример загрузки из 7.7.)

Автор: Zerstroer 27.10.2010, 06:56
Спасибо! Помогло.
Хотя я воспользовался алтернативным способом.
У itsys было так:
Код

Если НЕ ПустаяСтрока(СокрЛП(Спр77.ЮридическийАдрес)) Тогда

                                               Отбор = Новый Структура;

                                               Отбор.Вставить("Объект", Спр.Ссылка);

                                               Отбор.Вставить("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);

                                               Отбор.Вставить("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);

                                               Реквизиты = РегистрыСведений.КонтактнаяИнформация.Получить(Отбор);

                                               Если ПустаяСтрока(Реквизиты.Представление) Тогда

                                                           ЗаписьРег = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();

                                                           ЗаписьРег.Объект = Спр.Ссылка;

                                                           ЗаписьРег.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;

                                                           ЗаписьРег.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;

                                                           ЗаписьРег.Представление = СокрЛП(Спр77.ЮридическийАдрес);

                                                           ЗаписьРег.Записать();

                                               КонецЕсли;

                                   КонецЕсли;



Я воспользовался этим:
Код

НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();

        НаборЗаписей.Прочитать();

        флЗаписи = Ложь;

        Если ЗначениеЗаполнено(БД.address) Тогда

            ЗаписьАдрес          = НаборЗаписей.Добавить();           

            ЗаписьАдрес.Объект = СпрЭлем.Ссылка;

            ЗаписьАдрес.Тип      = Перечисления.ТипыКонтактнойИнформации.Адрес;

            ЗаписьАдрес.Вид      = Справочники.ВидыКонтактнойИнформации.ЮридическийАдрес;

            ЗаписьАдрес.Представление = СокрЛП(БД.address);

            флЗаписи = Истина;

        КонецЕсли;         

        Если флЗаписи Тогда

            НаборЗаписей.Записать();

        КонецЕсли;



В конечном итоге задача была выполнена! Спасибо!

Автор: Itsys 27.10.2010, 09:00
В вашем варианте при повторной загрузке адреса задвоятся.

Автор: Zerstroer 27.10.2010, 21:00
Я знаю)), исключение задвоения адресов предусмотрено. 1С-ный код который я искал (и нашел!) используется не напрямую в 1С, а преобразуется в специальный программный код, который я использую в программе, экспортирующей данные из прочих систем в 1С.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)