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

#1
7.7 / Re: Выпадающий список (быстрый...
Последний ответ от alyuev - Вчера в 16:11
Попробуй эту сборку 1.0.1.2 - https://github.com/alyuev/svcsvc
#2
7.7 / Re: Выпадающий список (быстрый...
Последний ответ от alyuev - Вчера в 15:42
Да, с svcsvc подтвержаю - окно выскочило на другом экране.
#3
7.7 / Выпадающий список (быстрый выб...
Последний ответ от item - Вчера в 11:49
Доброго дня, друзья!
Может кто уже боролся успешно с глюком выпадающих списков на втором (не основном) мониторе?

Некорректно работает не только штатный список (отображается на основном мониторе), но и svcsvc ведет себя не лучшим образом - список уходит в центр активного экрана, с потерей ширины списка.
#4
FormEx / Исходники Formex
Последний ответ от alyuev - 05 ноября 2026, 19:29
Альф, привет. Обнови, пожалуйста архив исходников на странице https://dorex.pro/?projects&formex&download - там сейчас лежит 197 версия. А уже, на сколько помню, есть и 199ая.
#5
7.7 / Re: Обсуждение накопленного
Последний ответ от Харлампий Дымба - 05 ноября 2026, 01:30
Цитата: cr от 05 ноября 2026, 00:02смотришь куда она (когда не падает) пойдет после ПриЗакрытия()
НИКУДА. Зачем 3 раза отправлять меня в Отладчик, если можно убедиться, что там нечего ловить?

Цитата: cr от 05 ноября 2026, 00:02Чтобы при первой попытке Окна - закрыть все , форма подбора закрылась, а "родительская" форма осталась открытой
Цитата: Харлампий Дымба от 03 ноября 2026, 23:40Есть вариант избежать, но абсолютно некрасивый.
Вот именно этот вариант со СтатусомВозврата(0) в ПриЗакрытии родительской формы мне и не понравился, поэтому и приводить не стал.
Не понравился по многим причинам:
Ты не закроешь родительскую форму обычным способом, если открыта дочерняя (крестиком, кнопкой Закрыть, Окна-Закрыть). Надо будет обязательно закрыть дочернюю, хотя раньше этого не требовалось - это неудобно.
То же самое касается и всех других вариантов открытия дочерней формы: в режиме одиночного подбора, без обращения к контексту дочерней формы.
Пользователь может спокойно ткнуть в несколько подборов в одном отчете в той же типовой ТиС (склад, номенклатура), а "Перем ФормаПодбора" на всех одна.
В той же типовой ТиС вызов идёт в глобальной процедуре - там ещё больше вариантов налететь на протухшую переменную.
И самое главное: этот код надо вставлять в ПриЗакрытии() во все модули, где есть ОткрытьПодбор(), а в случае типовой ТиС - всюду, где возможен вызов глРаботаСТаблицейМФ - т.е. во все отчеты.

Ну собственно первое и последнее - определяющее.
С другой стороны, использование ванильной 1С - это плюсик.

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

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

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

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

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

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

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

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

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


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

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

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

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