Последние сообщения

#1
FormEx / Re: формекс + пометка списка з...
Последний ответ от Andrewalexk - Сегодня в 17:39
:)
я про интерфейс
в таблице колонки 3 типов данных
параметр
период
доп параметр для периода
=3 списка
жаль нельзя загрузить с диска картинку
в итоге я плюнул на событие клика
и сделал по кнопке
#2
В исходниках 1С++ нашлись два метода, у которых в одном из имён (русском или английском) одна буква набрана «не той» раскладкой. На экране такие буквы выглядят одинаково, но для 1С это разные символы. Поэтому вызов по имени, набранному честно на одной раскладке, падает с ошибкой «Метод не найден», хотя в справке и в исходниках имя выглядит правильно.

Ниже ошибочная буква выделена красным.

1. ЗаменитьБазовыйОбъект / ReplaceBaseObject (стандартный метод КОП)

  • Где: Source\UserClassesImpl.cpp, строка 1676:
defFnNames->AddParam("ReplaсeBaseObject", "ЗаменитьБазовыйОбъект", ...)

  • Ошибка в 6-й букве, первая «c» сразу после Repla: ReplaсeBaseObject — эта «с» русская. Вторая «c» (в слове Object) латинская, с ней всё в порядке.
  • Что не работает: ReplaceBaseObject(...), набранное латиницей, выдаёт «Метод не найден».
  • Что работает:
  • русское имя ЗаменитьБазовыйОбъект(...);
  • старый синоним ЗаменитьЭксзБазовогоКласса / ReplaceInstBaseClasses. Он помечен как устаревший, но имена у него корректные.
[/list]

2. СнятьПерехватСобытийГК / UnHookEventsOfGroupContext (класс Перехватчик / Hooker)

  • Где: Source\System\Hooker.cpp, строка 26:
BL_METH_PROC("UnHookEventsOfGroupContext", "СнятьПерехватСобытийГK", ...)

  • Ошибка в последней букве: СнятьПерехватСобытийГK — эта «K» латинская.
  • Что не работает: Перехватчик.СнятьПерехватСобытийГК(...) с русской «К» выдаёт «Метод не найден». Парный метод ПерехватитьСобытияГК написан правильно, поэтому ошибиться очень легко.
  • Что работает: английское имя UnHookEventsOfGroupContext(...).
  • Та же латинская «K» стоит в тексте сообщения об ошибке (Hooker.cpp, строка 120). Это только косметика.

Как обойти сейчас, не пересобирая компоненту

  • Вместо ReplaceBaseObject пишите ЗаменитьБазовыйОбъект.
  • Вместо СнятьПерехватСобытийГК пишите UnHookEventsOfGroupContext.
  • Если имя скопировано из старой документации (Hooker.rst, history.txt) или из юнит-тестов 1С++, оно может содержать ту же «неправильную» букву. Тогда вызов работает, но только до исправления компоненты. Лучше сразу перейти на варианты выше: они работают в любой версии.

Как исправить в исходниках (предложение)

Правильное имя нужно добавить, а ошибочное оставить синонимом, чтобы не сломать уже написанный код:

// UserClassesImpl.cpp
defFnNames->AddParam("ReplaceBaseObject", "ЗаменитьБазовыйОбъект", funcReplaceInstBaseClasses, 1, 2);  // латинская c
// + синоним с прежним (ошибочным) написанием "Repla\xF1eBaseObject" для совместимости

// System\Hooker.cpp
BL_METH_PROC("UnHookEventsOfGroupContext", "СнятьПерехватСобытийГК", 1, &procUnHookEventsOfGroupContext) // русская К
// + синоним с прежним написанием "СнятьПерехватСобытийГK" (латинская K)

Перед правкой стоит проверить, что карта методов допускает два имени для одного номера метода. Если не допускает, синоним оформляется отдельной записью с тем же обработчиком: так в 1С++ уже сделано для ЗаменитьЭксзБазовогоКласса.

Как это нашли

Скриптом проверили все строковые литералы исходников 1С++ на слова, где смешаны кириллица и латиница из похожих букв (А/A, С/C, К/K, О/O, Р/P и т.д.). Кроме этих двух методов нашлось одно сообщение об ошибке: SQL\MetaDataWork.cpp, строка 414, «Cписок значений...», где первая буква «C» латинская (косметика). Всё остальное оказалось в комментариях. Такие имена, как ВыполнитьSQL_ИзТЗ, РежимRPC, СоздатьALS, смешаны намеренно и проблемой не являются.
#3
FormEx / Re: формекс + пометка списка з...
Последний ответ от alyuev - Сегодня в 14:47
А как это - список значений с колонками? Это где такое?
#4
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от Евгений - Сегодня в 11:19
Да, в конфигураторе
#5
FormEx / формекс + пометка списка зннач...
Последний ответ от Andrewalexk - Вчера в 11:29
:)
привет
хочу по нажатию списка значений с колонками менять видимость колонок таблицы через формекс
1. ловлю нажатие на списке через
ПриНажатииЛевойКнопки
ПолучитьАтрибутПоКоординатам
2. получаю ссылку на объект через
ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+Атрибут.Идентификатор+")]"))
3. но 1с видит текущую строку списка как = 0
и пометки с запаздыванием на 1 клик
чяднт?
#6
FormEx / Re: Не выводится Описание форм...
Последний ответ от Злоп - 06 октября 2026, 18:57
#7
FormEx / Не выводится Описание формы вн...
Последний ответ от leov-001 - 06 октября 2026, 15:15
Перем ФормаРасш;
//*******************************************
Процедура Сформировать()
	Сообщить(ФормаРасш.Описание);
	Сообщить(ФормаРасш.ТекстМодуля);
КонецПроцедуры

Процедура ПослеОткрытия()
	ФормаРасш = СоздатьОбъект("РасширениеФормы"); 
	ФормаРасш.УстановитьФорму(Форма);
КонецПроцедуры
#8
Дружественные проекты / Re: Как принудительно типизиро...
Последний ответ от ADirks - 06 октября 2026, 06:40
Цитата: Грузчик от 05 октября 2026, 16:32Бекапнулся и попробовал ваш набор. Как будто нет мучительного ожидания подсказки методов для объектов неопознанного типа, например:
База = СоздатьОбъект("SQLiteBase");
Запрос = База.НовыйЗапрос();
Запрос. // <- вот здесь у меня пауза секунд на 5, а в некоторых более других случаях можно и на перекур уходить.
Если за давностию лет не забылось ещё, ткните меня в то место, где эта бяка исправляется. Или это не "один регексп поправить", а комплексная проблема с комплексным же решением, раскиданным по многим файлам? Просто полностью переходить на вашу сборку скриптов не хочется, всё под себя настраивалось годами.
Честно говоря, даже не помню. Скорее всего, это действительно перенос части функционала из vbs в какие-то из .wsc, а там он на JS написан. Т.е. сами скрипты возможно и не надо трогать, заменить лишь wsc-библиотеки (скорее всего SyntaxAnalysis.wsc), и intellisence.vbs.
#9
Бекапнулся и попробовал ваш набор. Как будто нет мучительного ожидания подсказки методов для объектов неопознанного типа, например:
База = СоздатьОбъект("SQLiteBase");
Запрос = База.НовыйЗапрос();
Запрос. // <- вот здесь у меня пауза секунд на 5, а в некоторых более других случаях можно и на перекур уходить.
Если за давностию лет не забылось ещё, ткните меня в то место, где эта бяка исправляется. Или это не "один регексп поправить", а комплексная проблема с комплексным же решением, раскиданным по многим файлам? Просто полностью переходить на вашу сборку скриптов не хочется, всё под себя настраивалось годами.
#10
Дружественные проекты / Re: Как принудительно типизиро...
Последний ответ от ADirks - 05 октября 2026, 13:38
Цитата: Грузчик от 05 октября 2026, 09:17А вообще странно: в вашем файле версия указана 1.73, в моём 1.75, но как будто у меня более старый вариант. Видимо, разные "ветки" разработки.
Да, в какой-то момент немного разъехались. Синхронизироваться было лень, а потом всё так и осталось.
В моей версии нет отладки, и местами какие-то косяки поправлены.