Имя: Пароль:
1C
1С v8
Константы (в смысле С++) как сделать в 1с?
0 ERWINS
 
19.05.14
11:15
собственно использую компоненту в 1с
Там много констант ошибок, как определить их в 1с?
1 Ненавижу 1С
 
гуру
19.05.14
11:17
(0) зачем?
2 Ненавижу 1С
 
гуру
19.05.14
11:18
констант таких нет, можешь использовать параметр сеанса (фиксированная структура) и не менять его
3 ERWINS
 
19.05.14
11:18
(1) есть внешняя компонента в ней определены константы

для чего? что бы не писать магические числа.
4 ERWINS
 
19.05.14
11:19
(2) параметр сеанса причем?
это нужно в модуле.
писать не 0x70000006, а ERROR_NOBLOCKS
5 Чайник Рассела
 
19.05.14
11:21
(4)
Если КонстантаСиПласПлас = "0x70000006" Тогда
ХреньСобачья = "ERROR_NOBLOCKS";
КонецЕсли;
6 ERWINS
 
19.05.14
11:23
рез =Инициализация (...)
Если рез=0x70000006 тогда
....
конецЕсли;

а хочется по нормальному
рез =Инициализация (...)
Если рез=ERROR_NOBLOCKS тогда
....
конецЕсли;
7 Ненавижу 1С
 
гуру
19.05.14
11:25
(4)(6) ну заведи их локальными переменными тогда
8 ptiz
 
19.05.14
11:26
Функция МояКонстанта(Стр)
Если Стр = "ERROR_NOBLOCKS" Тогда
  Возврат "0x70000006"
...
9 ERWINS
 
19.05.14
11:28
(8) причем тут строки?
10 spectre1978
 
19.05.14
11:29
Я не пробовал, но что если просто создать модулек, объявить в нем переменные экспортные и проинициализировать. Если обозвать модулек МояВК, то будет что-то типа

Если рез=МояВК.ERROR_NOBLOCKS тогда
....
конецЕсли;

не так уж плохо имхо
11 ERWINS
 
19.05.14
11:30
(10) в модуле нельзя определить переменные
12 Fish
 
19.05.14
11:31
(11) Используй константы. Чем они тебе не нравятся?
13 spectre1978
 
19.05.14
11:32
ну объяви функции

Функция ERROR_NOBLOCKS() Экспорт
Возврат 0x70000006;
КонецФункции
14 Лефмихалыч
 
19.05.14
11:32
(0) а нельзя заставить ВК генерить человеческое исключение, в котором человеческое же ОписаниеОшибки()?
15 Defender aka LINN
 
19.05.14
11:43
(14) Так неинтересно
16 ERWINS
 
19.05.14
11:55
(14) например ошибка - "длительная операция".
надо просто подождать, но в твоем варианте мне пришлось бы разбираться с текстом Ошибки.
Не есть Гуд.
17 vhl
 
19.05.14
11:56
Функция ПолучитьОписаниеОшибки(КодОшибки) Экспорт
Если КодОшибки = "0x70000006" Тогда
Возврат "ERROR_NOBLOCKS";
ИначеЕсли КодОшибки = "0x70000007" Тогда
Возврат "ERROR_YESBLOCKS";
Иначе
Возврат "Неизвестный код:"+КодОшибки;
КонецЕсли;
КонецФункции
18 ERWINS
 
19.05.14
12:02
0x70000006 - это число!!!!
19 Лефмихалыч
 
19.05.14
12:02
(16) а зачем с ним разбираться? Ты собираешься вне ВК хэндлить ошибки, которые произошли внутри ВК?
Чорт! Это ведь логично и правильно - сложить на клиента геморрой по отработки своих исключений
20 Лефмихалыч
 
19.05.14
12:03
'отработкЕ
21 ERWINS
 
19.05.14
12:06
(19) это как?

Есть длл которая делает, что мне надо,
мне просто надо сделать проброс ее функций в 1с

ДЛЛ и так высокоуровневая.
22 Fish
 
19.05.14
12:06
(18) Ты удивишься, но для 1С это таки строка.
23 Fish
 
19.05.14
12:07
(21) Что ты понимаешь под "сделать проброс ее функций в 1с"?
24 Лефмихалыч
 
19.05.14
12:08
я к тому, что, если результатом "разбираться" будет сообщение пользователю, что он неудачник, то это может сделать сама ВК. А если "разбираться" - это программно что-то предпринять и продолжить работу, то это ОБЯЗАНА делать ВК.

(21) что за проброс?
25 ERWINS
 
19.05.14
12:27
Есть библиотека на С++
надо дать возможность вызывать из нее функции.

А ваша позиция смешна.
Представь, что я принес к кому нить компоненту и она не работает (так бывает)

Если код реализован в 1с я могу оперативно поправить или понять в чем дело, а если код внутри компоненты пиши пропало, пока поставишь Вижуал студио и т д.
А 1с там есть по определению
26 hhhh
 
19.05.14
12:32
(25) ну ведь 0x70000006 - это нормальный результат, по нему если погуглить, сразу миллион советов, что и как поправить.

а ваше "ERROR_NOBLOCKS" - это ведь вы правильно заметили, хрень собачья. Зачем этот бред может кому-то понадобиться?
27 spectre1978
 
19.05.14
12:34
(26) погуглить по всем возможным кодам ошибок всех внешних компонент, в том числе и тех которые написаны программистом для узких нужд и никогда в инет не выкладывались?
28 ERWINS
 
19.05.14
12:36
(27) это данный случай.
29 Fish
 
19.05.14
12:38
(25) Тогда не используй ВК, а пиши всё в 1С.
30 spectre1978
 
19.05.14
12:38
(28) мне кажется, что вариант (13) может, не идеальный, но во всяком случае рабочий
31 ERWINS
 
19.05.14
12:40
(29) внешняя библиотека закрытая.
32 ERWINS
 
19.05.14
12:40
(30) спасибо, так и сделал
33 МойКодУныл
 
19.05.14
12:41
Перем ОпознавалкаОшибок;

//{Нетленка

Описание = ОпознавалкаОшибок.Получить(КодОшибки);
Если ОписаниеОшибки <> Неопределено Тогда
Сообщить("Ашипка: "+ Описание);
КонецЕсли;

//Нетленка}

ОпознавалкаОшибок = Новый Соответствие;
ОпознавалкаОшибок.Вставить("0x7000000","ERROR_NOBLOCKS");
34 МойКодУныл
 
19.05.14
12:42
(33) *Если Описание <> Неопределено
35 spectre1978
 
19.05.14
12:45
(34) ребят, вы все не о том. Человеку надо не расшифровку ошибок пользователю показывать, а сделать читаемый код для себя. Чтобы он, посмотрев через год на код, не думал что это такое за хрень 0x7000000.
36 spectre1978
 
19.05.14
12:46
+ (34) т.е. он хочет избавиться от так называемых "мэджик намберс" в коде
37 vhl
 
19.05.14
16:25
(35) Изи:
//0x70000006 = ERROR_NOBLOCKS()
//0x70000007 = ERROR_YESBLOCKS()
//...
38 YF
 
19.05.14
16:42
ниче не понял, что хочет автор ... чтобы все сделалось само в 1С телепатируя ошибки некой закрытой длл
39 spectre1978
 
19.05.14
18:35
(38) вот тут написано понятнее, если знаешь английский:
http://lurkmore.so/images/e/ec/Pro_desu.gif
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.