7.7 Перенос по OLE OC 7.7 > 7.7

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем PaPaY, 19 авг 2009.

  1. TopicStarter Overlay
    PaPaY
    Offline

    PaPaY

    Регистрация:
    5 июл 2009
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Добрый день.
    Уважаемые ГУРУ, переношу основные средства из рабочей базы в чистую.
    строка
    Приёмник.БазЕдиница = V7.EvalExpr("перечисление.Единицы.ЗначениеПоИдентификатору("""+String(Источник.БазЕдиница)+""")");
    ничего не переносит. (а по идее должны переноситься значения)
    В то же время следующие строки правильно заполняются
    Приёмник.Счет = V7.EvalExpr("СчетПокоду("""+String(Источник.Счет)+""")");
    Приёмник.СчетЗатрат = V7.EvalExpr("СчетПокоду("""+String(Источник.СчетЗатрат.получить(Date_unload))+""")");

    Поле "БазЕдиница" и в источнике и в приёмнике ТипЗначения (Перечисление.Единицы) идентификаторы тоже совпадают.

    Вариант, что данная переменная ниже по тексту перезаполняется другим значением перепроверил. Вроде нигде не перезаполняется. В отладчике ничего не видно - метод EvalExpr() ничего не показывает :(

    Что не так делаю? Или Каким другим методом пойти нужно?
    Пасиба.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    С перечислениями можно обойтись ВООБЩЕ без Evalexpr. Напимер:
    Код:
    Если Реализация.СтавкаНДС.Идентификатор()= V7.Перечисление.СтавкиНДС.НДС10.Идентификатор() Тогда
    
    КонецЕсли; 
    
    
  3. TopicStarter Overlay
    PaPaY
    Offline

    PaPaY

    Регистрация:
    5 июл 2009
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Пасиба. Как вариант работает. Правда, длинновато немного получается. Задействованных значений перечисления с десяток, может даже и больше, каждое нужно описывать в данном случае (если, конешно, правильно уловил мысль). Методом EvalExpr() коротше код должен получиться. Из мыслей которые приходят в голову это то, что в метод ЗначениеПоИдентификатору похоже передаю не идентификатор, а представление объекта ( ОбъектСправочникИсточник.Поле (String(Источник.БазЕдиница)))
    Как это правильно поменять пока не знаю.
  4. ЕленаАА
    Offline

    ЕленаАА

    Регистрация:
    26 авг 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Можно использовать как вариант:

    Функция НайтиЭлементВПеречислении(V_Объект);
    Возврат Перечисление.ПолучитьАтрибут(V_Объект.Вид()).ЗначениеПоИдентификатору(V_Объект.Идентификатор())
    КонецФункции
    .
    .
    где
    СпрСправочник.УстановитьАтрибут(Идентификатор,НайтиЭлементВПеречислении(Спр_V7.ПолучитьАтрибут(Идентификатор)))
    СпрСправочник - переменная справочника,
    Идентификатор - строка со значением реквизита справочника
    Если есть вопросы по переносу данных могу сбросить обработку по переносу справочников, документов. Она основана на использование указателя "Метаданные". проверяла работает
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Проверьте ее на предмет переноса объектов типа Расчет и объект неопределенно типа. Это 2 основные "ямки" при переносе данных ч/з OLE

Поделиться этой страницей