Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 215
от 04.06.2006, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 223, Экспертов: 29
В номере:Вопросов: 1, Ответов: 4


Вопрос № 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, то достучаться до вида перечисления можно так:

База2.Док.Реквизит=База2.Перечисление.ПолучитьАтрибут(<ИмяВидаПеречисл>).ЗначениеПоИдентификатору(<Идентификатор>)

Либо же во второй базе написать процедуру, присваивающую параметру (параметру процедуры) значение перечисления (опять таки, через идентификатор можно передавать значения из базы в базу)
---------
Мирный атом в каждый дом
Ответ отправил: Elric (статус: Студент)
Ответ отправлен: 31.05.2006, 01:16

Отвечает: Ovr1970
Здравствуйте, Kitty!
Дело в том, что при работе с OLE передаются только значения базовых типов (число, сторока, дата). Для того, чтобы присвоить значение перечисления, нужно передавать не само перечисление, а его идентификатор, т.к. он текстовый.
Т.е. примерно так : есть в текущей БД идентификатор перечисления "ЗначПеречис" и идентификатор переменной из другой базы "ОлеПеречис", вид перечисления - "ТипыДок", тогда для переприсвоения данных можно воспользоваться такими конструкциями:
ЗначПеречис=Перечисление.ТипыДок.ЗначениеПоИдентификатору(ОлеПеречис.Идентификатор()) и в обратную сторону:
ОлеПеречис=ОлеБД.Перечисление.ТипыДок.ЗначениеПоИдентификатору(ЗначПеречис.Идентификатор())
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 31.05.2006, 13:25


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное