Вопрос № 44685: Добрый день!
Подскажите пожалуйста, как это сделать. Мне нужно из одной базы создать документ в другой базе, конфигурации разные. Проблема при создании поля типа Перечисление: не удается присвоить полю нужное мне значение перечисления. Выдает оши...
Вопрос № 44.685
Добрый день!
Подскажите пожалуйста, как это сделать. Мне нужно из одной базы создать документ в другой базе, конфигурации разные. Проблема при создании поля типа Перечисление: не удается присвоить полю нужное мне значение перечисления. Выдает ошибку несоответствия типов.
Спасибо. Жду ответа!
Отправлен: 30.05.2006, 15:03
Вопрос задала: Kitty (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: BuhCIA
Здравствуйте, Kitty!
Нужно сравнивать как тексты. Например, (исправлено 31.05.2006, 09:11) если в "своей" базе значение перечисления находится в переменной ВидТовара, то нужно во второй базе найти перечисление, соответствующее по наименованию, и документу второй базы присваивать перечисление второй базы:
КолвоПереч=База2.Перечисление.ВидыТоваров.КоличествоЗначений();
Пока Ном=1 По КолвоПереч Цикл
Если ""+ВидТовара = ""+База2.Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном) Тогда
База2.НовыйДок.ВидТовара=База2.Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном);
КонецЕсли;
КонецЦикла;
Другой вариант:
Если ВидТовара.Идентификатор()=База2.Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном).Идентификатор() Тогда --------- Скажите, сколько времени? - (устало, показывая часы) Читайте, там же все написано!
Ответ отправил: BuhCIA (статус: Практикант)
Ответ отправлен: 30.05.2006, 15:29
Отвечает: Gorus
Здравствуйте, Kitty!
При работе с базой данных через OLE-интерфейс можна переносить только базовые типы данных (число, строка, дата), в Вашем случае скорее всего идет присвоение перечисления из одной базы в другую. Обойти можно например так:
Приложение:
Ответ отправил: Gorus (статус: 1-ый класс)
Ответ отправлен: 30.05.2006, 16:10
Отвечает: Elric
Здравствуйте, Kitty!
Если на вторую базу (OLE-объект) ссылается переменная База2, то достучаться до вида перечисления можно так:
Либо же во второй базе написать процедуру, присваивающую параметру (параметру процедуры) значение перечисления (опять таки, через идентификатор можно передавать значения из базы в базу)
--------- Мирный атом в каждый дом
Ответ отправил: Elric (статус: Студент)
Ответ отправлен: 31.05.2006, 01:16
Отвечает: Ovr1970
Здравствуйте, Kitty!
Дело в том, что при работе с OLE передаются только значения базовых типов (число, сторока, дата). Для того, чтобы присвоить значение перечисления, нужно передавать не само перечисление, а его идентификатор, т.к. он текстовый.
Т.е. примерно так : есть в текущей БД идентификатор перечисления "ЗначПеречис" и идентификатор переменной из другой базы "ОлеПеречис", вид перечисления - "ТипыДок", тогда для переприсвоения данных можно воспользоваться такими конструкциями:
ЗначПеречис=Перечисление.ТипыДок.ЗначениеПоИдентификатору(ОлеПеречис.Идентификатор()) и в обратную сторону:
ОлеПеречис=ОлеБД.Перечисление.ТипыДок.ЗначениеПоИдентификатору(ЗначПеречис.Идентификатор())
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 31.05.2006, 13:25