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

#11
7.7 / Re: Обсуждение накопленного
Последний ответ от cr - 05 ноября 2026, 00:02
Цитата: Харлампий Дымба от 04 ноября 2026, 22:14В какую строку нужно поставить точку останова
Да, ёклмн!
Конечно в строку
еклмн=1;
в ПриЗакрытии() в форме побора.
Затем руками закрываешь форму подбора и по F8 смотришь куда она (когда не падает) пойдет после ПриЗакрытия()
В "родительской" форме тоже нужно создать всякие предопределенные процедуры с заглушками
а=1;
И тогда в том месте, куда она уходит в "родительской" форме можно поставить ловушку из переменной, объявленной в "родительской" форме:

Перем КонтекстФормы;

Процедура Сформировать()

    ОткрытьПодбор(<Объект>,<ИмяФормы>,КонтекстФормы,<ФлагМножВыбора>,<ТекЗнач>):
    а=1;

 //   ОткрытьПодбор("Справочник.Новый1",,ФормаПодбора,1);//если 0 - ошибки не будет
 //   ФормаПодбора.Сортировка("Код"); //если нет обращения к форме - ошибки не будет                                    
КонецПроцедуры

Процедура ПриЗакрытии() 
     Если 0+ТипЗначения(КонтекстФормы) = 100 Тогда
         СтатусВозврата(0);
     КонецЕсли;
КонецПроцедуры

Чтобы при первой попытке Окна - закрыть все , форма подбора закрылась, а "родительская" форма осталась открытой. И ничего не упадет. Со второй попытки Окна - закрыть все, "родительская форма тоже закроется без падения.
Все пункты с условиями - в топку! Они не при делах. Все формексы, попытки-исключения и недокументированные возможности - туда же, куда и условия.
#12
7.7 / Re: Обсуждение накопленного
Последний ответ от Харлампий Дымба - 04 ноября 2026, 22:14
Цитата: cr от 04 ноября 2026, 00:20Отладчик в руки и вперед
Сообщением выше - тестовый стенд. Там ровно 8 строчек на 2 модуля, из них только две строчки выполняют инструкцию. В какую строку нужно поставить точку останова и какой параметр отследить? Да и как это поможет?

Ежу понятно, что корень зла в том, что дочерняя форма закрывается позже родительской. Но ведь вся соль в том, что это только одно из пяти условий. Если любое из остальных четырех не выполнено - никакой ошибки нет, дочерняя форма спокойно закрывается при несуществующей уже родительской.

Универсальная заглушка на ошибку - с помощью Formex + недокументированного КонтекстПодбора:
Процедура Глобальная_ПриЗакрытии(Конт)
	Если ТипЗначения(Конт.КонтекстПодбора) = 100 Тогда // может быть стоит обернуть в Попытку
		Если Конт.КонтекстПодбора.Форма.РежимВыбора() = 2 Тогда
			СтатусВозврата(0);
		КонецЕсли;	
	КонецЕсли;	
КонецПроцедуры


#13
Дружественные проекты / Re: Внешняя компонента 1CMCP
Последний ответ от alyuev - 04 ноября 2026, 11:49
Я давал ранее задание Клоду научиться работать с компаунд файлами - MD и ert. Для этого он разработал себе скрипты и запомнил в своих навыках и теперь он сам налету разбирает до нужного модуля, достает что ему нужно, правит, собирает обратно и проверяет через MCP свою работу.
#14
7.7 / Re: Обсуждение накопленного
Последний ответ от cr - 04 ноября 2026, 00:20
Если в форме подбора есть ПриЗакрытии(), то после захода в неё, курсор вернется обратно в "родительскую" форму (скорее всего, на строку "родительской" формы следующую после ОткрытьПодбор(), но может, еще куда-то, ПриПовторномОткрытии(), например), а если "родительской" формы уже нет, курсору некуда вернуться и он роняет 1С.
Отладчик в руки и вперед ...
#15
7.7 / Re: Обсуждение накопленного
Последний ответ от Харлампий Дымба - 03 ноября 2026, 23:40
Цитата: cr от 03 ноября 2026, 19:49Чё как дети?
Не, ОбработкаВыбораСтроки() тут тоже не причём.
Но и у меня чё-то поплыли все рассуждения тоже. Многоуровневость оказывается не обязательна, проблема возникает если форму подбора дернуть из родительской формы после ОткрытьПодбор() по любому поводу, а в форме подбора (обычная форма списка справочника) есть процедура ПриЗакрытии.

Стенд:
Справочник.Новый1 - все установки по умолчанию, форма списка со следующим модулем:
Процедура ПриЗакрытии() //если нет этой процедуры - ошибки не будет
//код есть или кода нет - не важно
КонецПроцедуры
Отчет.Новый1 - все установки по умолчанию, модуль формы:
Процедура Сформировать()
    Перем ФормаПодбора;
    ОткрытьПодбор("Справочник.Новый1",,ФормаПодбора,1);//если 0 - ошибки не будет
    ФормаПодбора.Сортировка("Код"); //если нет обращения к форме - ошибки не будет                                    
КонецПроцедуры

Запускаем Отчет.Новый1, нажимаем Сформировать, выводим форму отчета на передний план, Окна-Закрыть все, падаем.

Цитата: Злоп от 03 ноября 2026, 21:57если выяснится что вход в ПриЗакрытии успешен - то дальше можно пытаться играться с контекстом родительской формы
Вход-то успешен, только вот родительской формы уже не существует, так что играться не с чем и мы в любом случае свалимся в ошибку. Есть вариант избежать, но абсолютно некрасивый.

#16
Дружественные проекты / Re: Внешняя компонента 1CMCP
Последний ответ от EvgPinsk - 03 ноября 2026, 22:13
Цитата: alyuev от 03 ноября 2026, 16:52https://github.com/alyuev/1cv7_mcp

Всем привет. Тем, кто пытается что-то делать с 7.7 с помощью ИИ - предлагаю эту ВК. Она поднимает MCP сервер внутри самой 1Ски. Есть страница настроек компоненты.
Передаете эти данные ИИ-агенту и он сможет запускать, закрывать, нажимать кнопки, выполнять код, в том числе в модуле форм - в общем разрабатывать и тестировать.


Добрый, я для работы с 77 юзаю Cursor и turboMD. в качестве папки проекта даю курсору папку unpack (в которую turboMD выгружает модули)
и получается что Cursor напрямую онлайн пишет код
#17
7.7 / Re: Обсуждение накопленного
Последний ответ от Злоп - 03 ноября 2026, 21:57
для начала надо выяснить валится на ПриЗакрытии() - на каком этапе? вход в процедуру успешен, валится на завершении? или как? если выяснится что вход в ПриЗакрытии успешен - то дальше можно пытаться играться с контекстом родительской формы, которую передавать через параметры при вызове подбора
#18
Дружественные проекты / Re: Внешняя компонента 1CMCP
Последний ответ от Злоп - 03 ноября 2026, 21:41
Понятно что здорово, но здорово непонятно..
#19
7.7 / Re: Обсуждение накопленного
Последний ответ от cr - 03 ноября 2026, 19:49
Чё как дети?
Есть 2 способа организации подбора. Обычный и специальный.
Можно просто ОткрытьПодбор() и здесь же (в "родительской" форме) в предопределенной процедуре ОбработкаПодбора() задать действия с выбранной строкой из списка подбора. Так чаще всего и делается, при этом если режим НЕполноэкранный и сделать видимыми в окне обе формы (и "родительскую" и форму списка), видно как при выборе строки в форме подбора, она сразу "попадает" в "родительскую" форму. В каком порядке эти формы будут закрываться - по барабану.
А можно иначе. Если в форме подбора в ПриОткрытии() установить ОбработкаВыбораСтроки() в 1, ОбработкаПодбора() в "родительской" форме срабатывать не будет, зато в форме подбора начнет срабатывать предопределенная процедура ПриВыбореСтроки(), в которой и задаются действия с выбранной строкой. В этом варианте подобранные значения из формы подбора автоматически "отправляются" в "родительскую" форму из ПриЗакрытии() (- а как еще-то?). 1С валится из ПриЗакрытии() формы подбора, когда совершает там недопустимую операцию с закрытой "родительской" формой.
#20
Дружественные проекты / Re: Внешняя компонента 1CMCP
Последний ответ от alyuev - 03 ноября 2026, 16:57
Да, Альфу спасибо за исходники Formeх. Оттуда взяты приемы подсветки реквизитов формы и самой формы. И сделано это в виде анимации. Т.е. не просто нарсован прямоугольник, а с плавным появлением, акцентированием (подмигиванием), плавным затуханием. Можно также посвечивать кнопки в панели или в меню. Также работа с открытыми формами взята из Formex. Так что - низкий поклон тебе, Альф.

Можно ИИ попросить, чтобы демо показал через MCP.