-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
При вызове через COM пропущенные параметры получают значение Неопределено вместо значения по умолчанию #1405
Comments
А если из другого языка вызвать, скажем, из VBScript? |
Работает ожидаемо из COM клиента 1C. Запустить обычное приложение и нажать кнопку "COM вызов" и закрыть окно нового приложения.
Выводит сообщение |
Не воспроизводится. Функция Тест(П = Истина) Экспорт
Сообщить(Строка(ТипЗнч(П))+"="+П);
Возврат П;
КонецФункции Запускается OneScript 1.9.1: Соединение = Новый COMОбъект("V83.Application");
Соединение.Connect("File=""C:\_lab\1S\default\""");
Рез = Соединение.Тест();
Сообщить(Строка(ТипЗнч(Рез))+"="+Рез);
Соединение = 0; Оба сообщения: Булево=Да |
@bolsun Тогда возможно проблема в Турбоконфе, т.к. я уже десятки раз это проверял и всегда получал в этих параметрах Неопределено. Создал связанную заявку по Турбоконфу https://turboconf.ru/Tasks/9425 |
Моя ошибка. Неверно обрезал тест. Прошу проверить новый тест. Ключевое отличие - пропуск параметра перед явно передаваемым параметром.
Вызов из 1С через COM опять же показывает ожидаемый результат "Булево". |
Новый тест подтверждает ошибку. |
Потому что значение зависит от вызывающего клиента. Там в COM надо передавать специальное значение. Полагаю, v77 и 1Скрипт этого не делают, или делают способом отличным от того, что ожидает v8. https://stackoverflow.com/questions/32521574/passing-a-com-method-default-parameter |
Проверил В дополнение: FSO = ПолучитьCOMОбъект("","Scripting.FileSystemObject");
Рез = FSO.DriveExists("C", ); // <-- вызвает падение платформы 1С по версию 8.3.25.1286 включительно. OneScript отрабатывает в целом нормально: |
Может быть захардкодить v77, а для остальных случаев передавать Missing.Value? |
Пока непонятно, каким значением хардкодить. Даже вызов v77 из v77 с пропущенным параметром не приводит к подстановке значения по умолчанию, остается неопределенное значение (ТипЗначения==0). |
fix #1405: значение для пропущенного параметра
@Mr-Rm можно попросить фикс этого для 2.0? |
fix #1405 для v2: значение для пропущенного параметра +рефакторинг
Имею ОСкрипт 1.7-9 внутри Турбоконфа.
Зову из скрипта функцию базы 1С
через COM V83.Application:
COM.Ф()
И вижу в отладчике что фактический параметр приходит Неопределено вместо ожидаемого Ложь.
The text was updated successfully, but these errors were encountered: