Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Експорт даних із 7.7 у 8.2 (контактні дані контрагентів)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
mister-x
код у 8.2:
База7 = Новый COMОбъект("V77s.Application");
    Если База7.Initialize (База7.RMTrade , "","NO_SPLASH_SHOW") = 0 Тогда
        База7 = Неопределено;
        Сообщить("Произошла ошибка. Подключение к OLE-объекту не произошло");        Возврат;
    Иначе
        
        Контрагент7 =  База7.CreateObject("Справочник.Контрагенты");
        
        
                
        Контрагент7.ВыбратьЭлементы(1);
        Пока Контрагент7.ПолучитьЭлемент()=1 цикл
            
            Если Контрагент7.ПометкаУдаления()=1 тогда
                Продолжить;
            КонецЕсли;
            
            
            
            Если (Контрагент7.ЭтоГруппа()=1) тогда
                Продолжить;
            Иначе
                //Сообщить(Контрагент7.Наименование);
                Контрагент8 = Справочники.Контрагенты.НайтиПоКоду(Контрагент7.Код);
                
                Если Контрагент8=Справочники.Контрагенты.ПустаяСсылка() тогда
                    сообщить("Не найдено контрагента из 7.7: "+Контрагент7.Наименование+" из кодом "+Контрагент7.код);
                    продолжить;
                конецесли;    
                    
                    Состояние("!!! Обрабатывается контрагент из версии 7.7: "+Контрагент7.Наименование + " !!!");
                    
                    //**************************
                    // адреса
                    НаборЮрАдрес=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
                    
                    НаборЮрАдрес.Отбор.Объект.Установить(Контрагент8.Ссылка);
                    НаборЮрАдрес.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
                    НаборЮрАдрес.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента.Ссылка);
                    
                    //НаборЮрАдрес.прочитать();
                    П77 = СокрЛП(Контрагент7.ЮрФизЛицо.ЮрАдрес);
                    ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса(П77,0)"));
...

із доків по ОЛЕ
Цитата
EvalExpr() - вычислить выражение.

Синтаксис метода такой: EvalExpr(<СтрокаВыражения>), где:
<СтрокаВыражения> - строковое выражение, записанное на встроенном языке 1С-Предприятия.

Результатом выражения может быть число, строка, дата или значение любого агрегатного типа данных. Результат с неопределенным типом преобразуется к строковому типу.

Вилітає із помилкою при використанні методу EvalExpr:
Цитата
{Форма.Форма.Форма(48)}: Ошибка при вызове метода контекста (EvalExpr)
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса(П77,0)"));
по причине:
Произошла исключительная ситуация (1С:Предприятие): 1 глПредставлениеАдреса(П77<<?>>,0)
Переменная не определена (П77)


Маємо у таблі (відлагоджувач):
П77=",,,,Тернопіль,Миру,,1В,,21" (тип - строка).

глоб. функція і3 7.7
Цитата
//******************************************************************************
// глПредставлениеАдреса(Знач Адрес, Способ = 0) Экспорт
//
// Параметры:
// Адрес (строка), адрес представление которого нужно вернуть.
// Способ - способ представления адреса (если=1, то возвращает представление адреса без индекса)
//
// Возвращаемое значение:
// Строку - представление адреса
//
// Описание:
// Предназначена для формирования адресной строки в "удобочитаемом" виде
// для отражения в формах.


хто юзав цей метод EvalExpr - що він хоче?
alex040269
Цитата(mister-x @ 23.04.13, 15:41) необходимо зарегистрироваться для просмотра ссылки
Переменная не определена (П77)

мабуть
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("+П77+",0)"));


smile.gif

П77 определена в области видимости 8, но не определена в 7.7
mister-x
пробував - от
Цитата
{Форма.Форма.Форма(48)}: Ошибка при вызове метода контекста (EvalExpr)
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("+П77+",0)"));
по причине:
Произошла исключительная ситуация (1С:Предприятие): 1 глПредставлениеАдреса(,,,,Тернопіль,Миру,,1В,<<?>>,21,0)
Ожидается выражение


не перетворює в стрічку зміну П77
мало б бути так
глПредставлениеАдреса(",,,,Тернопіль,Миру,,1В,,21",0)


і так
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("+строка(П77)+",0)"));

нічого не дає
Цитата
{Форма.Форма.Форма(48)}: Ошибка при вызове метода контекста (EvalExpr)
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("+строка(П77)+",0)"));
по причине:
Произошла исключительная ситуация (1С:Предприятие): 1 глПредставлениеАдреса(,,,,Тернопіль,Миру,,1В,<<?>>,21,0)
Ожидается выражение
pablo
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("""+П77+""",0)"));

А так?
alex040269
Цитата(mister-x @ 23.04.13, 16:23) необходимо зарегистрироваться для просмотра ссылки
пробував - от


не перетворює в стрічку зміну П77
мало б бути так
<!--shcode--><pre><code class='1c'>глПредставлениеАдреса(",,,,Тернопіль,Миру,,1В,<<?>>,21",0)</code></pre><!--ehcode-->


ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("""+П77+""",0)"));


т.е добавить двойные кавычки, сто бы 1С преобразовали и передала строку : глПредставлениеАдреса(",,,,Тернопіль,Миру,,1В,,21",0)
mister-x
Цитата
{Форма.Форма.Форма(49)}: Метод объекта не обнаружен (EvalExpr)
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("""+П77+""",0)"));
alex040269
ЮрАд = СокрЛП(База7.EvalExpr(""""+П77+""""));


а так возвращает строку?
mister-x
вертає

отак працює, в оле чотири лапки потрібно для перетворення в стрічку змінної із 8-ки в 7-ці, мда
ЮрАд = СокрЛП(База7.EvalExpr("глПредставлениеАдреса("+""""+П77+""""+",0)"));
alex040269
спочатку 8-ка "з'їдає" лапки, а потім 7-ка smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.