Имя: Пароль:
1C
1С v8
Интеграция через com
0 Slavenia
 
17.11.14
17:25
Всем привет!
Есть пример на С# работы с внешней приблудой, которую можно интегрировать в 1С через com.
Есть основной класс, по которому создаю com-объект, у этого объекта есть метод, в который необходимо передать параметр с типом enum.
Если передаю число - ругается на несоответствие типов. Подскажите, как быть?
1 Slavenia
 
17.11.14
17:26
(0) COM-объект создаю, естественно, в 1С.
2 prosto-nik
 
17.11.14
17:27
передавать то что требуется(в смысле нужного типа) не вариант?
3 Лефмихалыч
 
17.11.14
17:28
упс...

(0) ни чего не понятно кто, откуда и куда интегрируется, кого вызывает и при чем тут enum?
4 DS
 
17.11.14
17:33
Как передать из 1с в компоненту тип, который есть в компоненте, но нету в 1с? Как передать то, чего нет?
5 Slavenia
 
17.11.14
17:39
(2) Требуется передать непростой тип - в С# проекте, если посмотреть в VS.Net, это перечисление, константы, которого имеют тип int. Вопрос как раз в том, как мне передать данный параметр с конкретной константой этой компоненте?
6 H A D G E H O G s
 
17.11.14
17:45
(5) Передавай Число.
7 prosto-nik
 
17.11.14
17:49
чё то как то замудрено и как Лефмихалыч заметил, нифига не понятно
8 18_plus
 
17.11.14
17:50
(6) из (0) "Если передаю число - ругается на несоответствие типов. Подскажите, как быть?"

тут без поллитры, то есть без демонстрации кода не разберёшься
9 prosto-nik
 
17.11.14
17:51
(8) ну да по фрагменту кода хоть понять можно кого и из какого ЯП вызывают :)
10 Slavenia
 
17.11.14
18:09
Вот фрагмент api:
bool ScanAndRecognize(DocumentType documentType, ref IRecognizedResult recognizedResult) Распознать данные с
изображения, которое будет получено путём сканирования. documentType — тип документа, recognizedResult — распознанные
данные. Метод возвращает true, если распознавание прошло успешно, и false, если качество исходных данных недостаточно для
успешного распознавания.
Речь идет про DocumentType.
Код:
try
            {
                recognizer = new Recognizer();
                result = recognizer.Recognize(fileName, GetDocumentType());
                ProcessDocument();
            }
            catch
            {
            }
и функция получения типа из комбобокса:
private DocumentType GetDocumentType()
        {
            return (DocumentType) DocumentTypeComboBox.SelectedIndex;
        }

В 1С соответственно, я создаю
мRecognizer = Новый COMОбъект("Adaptive.DocumentOcrSdk.Recognizer");
и пытаюсь вызвать данный метод
Перем Распознанное;
Результат = мRecognizer.ScanAndRecognize(1,Распознанное);

ругается "Типы не совпадают (0)"
11 18_plus
 
17.11.14
18:16
ещё раз. что на вход принимает ScanAndRecognize ?
лучше копипастой из ide
12 18_plus
 
17.11.14
18:18
ну и вообще, ты пихаешь переменную неопределённого типа и такого же значения, я б тоже ругнулся.
13 Slavenia
 
17.11.14
18:26
Так неопределенная вторая переменная, а речь про тип первой. Насчет метода, прошу извинить, вот код с вызовом того, о котором говорили:
try
            {
                recognizer = new Recognizer();
                result = recognizer.ScanAndRecognize(GetDocumentType());
                if (result != null)
                    ProcessDocument();
            }
            catch
            {
            }
14 18_plus
 
17.11.14
18:28
(13) а ты уверен, что ругается именно на первый?
что скажет ScanAndRecognize(1) ?
15 Serginio1
 
17.11.14
18:28
Тебе нужно Энум оборачивать через Сом либо
v8: v8: Использование сборок .NET в 1С 7.x и 8.x
2 + 2 = 3.9999999999999999999999999999999...