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

#1
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от Евгений - Сегодня в 17:31
Тема закрыта.
#2
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от Евгений - Сегодня в 17:31
Спасибо Всем за помощь.
Сработал пункт 1. Удалить базу из списка баз, закрыть меню запуска, открыть меню запуска, добавить базу в список баз, проверить.
#3
А есть ALS полный по 1C++
?
#4
FormEx / Re: Таймер.ЗадатьОбработчикВОб...
Последний ответ от Злоп - Сегодня в 00:23
Спасибо
#5
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от Харлампий Дымба - Сегодня в 00:17
Варианты для поиска решения проблемы:
1. Удалить базу из списка баз, закрыть меню запуска, открыть меню запуска, добавить базу в список баз, проверить.
2. Скопировать BIN с другого рабочего компа, запуститься через него, проверить.
3. Скопировать als с другого рабочего компа проверить.
4. Не класть BIN в Program Files.
5. Права доступа на файлы.
#6
FormEx / Re: Таймер.ЗадатьОбработчикВОб...
Последний ответ от Харлампий Дымба - Сегодня в 00:10
Цитата: Злоп от 18 сентября 2026, 02:50что есть "объект", для которого задается обработчик?
Ну я так понимаю, что это может быть контекст формы, для которой задается таймер. Рабочий пример привел здесь
https://forum.dorex.pro/index.php?topic=373

#7
FormEx / Re: формекс + пометка списка з...
Последний ответ от Харлампий Дымба - Сегодня в 00:05
Это потому, что ПриНажатииЛевойКнопки <> ПослеНажатииЛевойКнопки. В момент ПриНажатииЛевойКнопки 1Ска ещё не успевает отработать изменение строки списка и установку/снятие пометки. Так что тебе нужно исполнять свою логику а-ля ПослеНажатииЛевойКнопки. Буквально в соседней теме лежит пример код от ADirksa, как по таймеру отсрочить выполнение своего код. Рабочий демонстрационный пример в твоём случае:
Перем Таймер_ОбработкаКликаПоСписку;

Процедура ОбработкаКликаПоСписку() Экспорт
    Таймер_ОбработкаКликаПоСписку.Остановить();
    Таймер_ОбработкаКликаПоСписку.УдалитьОбработчик();
    Таймер_ОбработкаКликаПоСписку = "";
    Сообщить("Состояние ПослеНажатииЛевойКнопки: строка: " + Список.ТекущаяСтрока() + ", пометка: "  + ?(Список.ТекущаяСтрока()=0,0,Список.Пометка(Список.ТекущаяСтрока())));
КонецПроцедуры

Процедура ПриНажатииЛевойКнопки(Сост,КоординатаX,КоординатаY,ФСО)
    //Если координаты Х.Y принадлежат списку, то
    Сообщить("Состояние ПриНажатииЛевойКнопки: строка: " + Список.ТекущаяСтрока() + ", пометка: "  + ?(Список.ТекущаяСтрока()=0,0,Список.Пометка(Список.ТекущаяСтрока())));
    Таймер_ОбработкаКликаПоСписку = СоздатьОбъект("Таймер");
    Таймер_ОбработкаКликаПоСписку.ЗадатьОбработчикВОбъекте(глВзятьКонтекст(Контекст), "ОбработкаКликаПоСписку");
    Таймер_ОбработкаКликаПоСписку.Запустить(30);//миллисекунды сам подбери
    //КонецЕсли;
КонецПроцедуры   

глВзятьКонтекст - из любой типовой.
Со списком с пометками у тебя будет ещё тонкость в том, что клик по строке, а не по квадратику пометки не изменяет пометку. То есть либо учитывать для КоординатыX размер квадратика, либо в своей логики процедуры обработки учитывать, что клик не обязательно меняет состояние пометки строки.

#8
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от cr - 09 октября 2026, 23:34
*.als из папки BIN подтягивается "во все конфигураторы", а *.als из папки базы - только в конфигуратор этой базы.
Твой *.als, который ты не видишь, где лежит?
#9
FormEx / Re: формекс + пометка списка з...
Последний ответ от Andrewalexk - 09 октября 2026, 17:39
:)
я про интерфейс
в таблице колонки 3 типов данных
параметр
период
доп параметр для периода
=3 списка
жаль нельзя загрузить с диска картинку
в итоге я плюнул на событие клика
и сделал по кнопке
#10
Дружественные проекты / Ошибки в наименованиях методов...
Последний ответ от alyuev - 09 октября 2026, 15:00
В исходниках 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, смешаны намеренно и проблемой не являются.