|
Получить значение перечисления при COM соединении | ☑ | ||
---|---|---|---|---|
0
mzelensky
22.05.15
✎
12:06
|
Доброго всем! Не пинайте тапками - знаю, что тема стара как мир, но работающий код почему-то работать теперь отказывается - понять причину пока не получается.
Раньше делал просто вот так (то, что это работало еще месяц назад уверен на все 200%): СоединениеV8.String(СтруктураПараметров.СтавкаНДС) Где "СтруктураПараметров.СтавкаНДС" - комовское значение перечисления "ставки ДНС". Сейчас почему-то система никаких ошибок не выдает, но если поместить вышеописанную строчку в отладчик, то пишет "метод объекта String не обнаружен" |
|||
1
mzelensky
22.05.15
✎
12:07
|
(0) Платформа "8.3.5.1443"
соединяюсь через: V8 = Новый COMОбъект("V83.ComConnector"); |
|||
2
mzelensky
22.05.15
✎
12:08
|
Пробовал уже и вот так:
Ном = COM_ОбъектБД.Перечисления.ВидыТМЦ.Индекс(COM_ЭлементСправочника.Перечисление); Имя = COM_ОбъектБД.Метаданные().Перечисления.ВидПеречисления.EnumValues.Get(Ном).Name; и Запросом - не выходит каменный цветок. А главное не пойму почему и после чего перестало отрабатывать. |
|||
3
ДенисЧ
22.05.15
✎
12:08
|
Попробуй XMLСтрока()
|
|||
4
mzelensky
22.05.15
✎
12:08
|
(3) Пробовал - не канает
|
|||
5
mzelensky
22.05.15
✎
12:11
|
Опа...продолбался порядка полу часа...сейчас все само вдруг опять заработало.
СоединениеV8.String(СтруктураПараметров.СтавкаНДС) отрабатывает корректно и возвращает нужное значение. НИЧЕГО НЕ МЕНЯЛ!!!! |
|||
6
Бубка Гоп
22.05.15
✎
12:17
|
(5) позовите священника, окропите серверную святой водой
|
|||
7
mzelensky
22.05.15
✎
12:20
|
(6) честно говоря не очень смешно. Из-за этой хрени номенклатура подгружается криво. Получается то работает, то нет. И причина совершенно не ясна.
|
|||
8
Бубка Гоп
22.05.15
✎
12:25
|
(7) не отрабатывает на одних и тех же позициях? может иногда что то не то в ставкеНДС передается?
|
|||
9
DS
22.05.15
✎
12:26
|
(7) Самый простой и доступный способ - перезагрузить компьютер.
|
|||
10
mzelensky
22.05.15
✎
12:28
|
(8) Конкретно один документ, конкретно одна позиция. Пол часа назад НЕ работало, сейчас значение получается. Компы НЕ перезагружали.
|
|||
11
ЧеловекДуши
22.05.15
✎
12:31
|
(0) По индексу. Я пот делал через Метаданные и индекс. Порядок перечисления не изменен.
|
|||
12
Бубка Гоп
22.05.15
✎
12:36
|
(10) блин, ну не бывает так. подключение по сети? может перебой какой был?
|
|||
13
Serginio1
22.05.15
✎
12:38
|
||||
14
Serginio1
22.05.15
✎
12:40
|
||||
15
mzelensky
22.05.15
✎
12:46
|
(11) если ты про, как в (2) то
"EnumValues.Get" не отрабатывает. Пишет такого нет |
|||
16
mzelensky
22.05.15
✎
12:47
|
(12) Сам прекрасно знаю ,что не бывает и в сказки не верю. Подключение по сети. Сбой не разовый...т.е. вылазиет периодически.
|
|||
17
mzelensky
22.05.15
✎
12:51
|
(13) там используется:
"Соединение.XMLString(ЭлементПеречисления)" Пробовал - не отрабатывает (14) " Ном = COM_ОбъектБД.Перечисления.ВидыТМЦ.Индекс(COM_ЭлементСправочника.Перечисление); Имя = COM_ОбъектБД.Метаданные().Перечисления.ВидПеречисления.EnumValues.Get(Ном).Name; " Пробовал. Метод "EnumValues" не определен. А если просто сделать "Get" по индексу ,то комовский объект возвращает, но свойство "Name" (и "ИМЯ") не определено |
|||
18
Serginio1
22.05.15
✎
13:51
|
Скорее всего у тебя не перечисление.
Ну и не до конца ты прочитал. ИмяЗначенияПеречисленияCOM= V8.XMLString(СсылкаНаПеречислениеCOM); ПредставлениеПеречисленияCOM= V8.String(СсылкаНаПеречислениеCOM); //синоним ИмяПеречисленияCOM= СсылкаНаПеречислениеCOM.Метаданные().Имя; СсылкаНаПеречисление = XMLЗначение(Тип("ПеречислениеСсылка."+ИмяПеречисленияCOM), ИмяЗначенияПеречисленияCOM); // разумеется имена перечислений в обоих базах должны быть идентичными. // Пример получения значений перечисления запросом Запрос=новый запрос; запрос.Текст="ВЫБРАТЬ | ВидыОС.Ссылка, | ВидыОС.Порядок КАК Индекс |ИЗ | Перечисление.ВидыОС КАК ВидыОС"; Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() цикл Сообщить(""+Выборка.ссылка+" : "+Выборка.индекс); конецЦикла; // Пример для отбора на стороне COMсервера: Отбор = v8.Новый ("Структура"); МД=v8.XMLTypeOf(v8.Перечисления[ИмяПеречисления].ПустаяСсылка()); Отбор.Вставить("ВидДоговора", v8.XMLЗначение(v8.FromXMLType(МД),ИмяЗначенияПеречисления)); |
|||
19
Serginio1
22.05.15
✎
13:53
|
Ну и всетаки проще использовать внешние отчеты.
v8: 8.2, COM-соединение, C#, dynamic строки |
|||
20
Cube
22.05.15
✎
13:56
|
(0) Поиск? Не, не слышал...
v8: Перенести перечисление через COM соединение |
|||
21
Serginio1
22.05.15
✎
14:49
|
Кстати лучше пользоваться
ИмяЗначенияПеречисленияCOM= V8.XMLString(СсылкаНаПеречислениеCOM); ибо ПредставлениеПеречисленияCOM= V8.String(СсылкаНаПеречислениеCOM); //синоним |
|||
22
mzelensky
22.05.15
✎
14:57
|
Чуток позже попробую все это
|
|||
23
Лефмихалыч
22.05.15
✎
14:59
|
(0) в КЗ есть статья Ежова "Охота на СОМов", там тема раскрыта до неприличия
|
|||
24
mzelensky
22.05.15
✎
15:06
|
(23) НУ, там он предлагает строить соответствия и делать поиски по порядковому номеру. Но разница в том ,что он этот порядковый номер из запроса получает, а я на свое перечисленеи выхожу через объектную модель. Не пробовал конечно, но сдается мне ,что получить индекс элемента не получится.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |