Имя: Пароль:
1C
1С v8
Форма: не обновляется надпись на кнопке
0 slafor
 
11.08.23
10:32
Есть такая кнопка, которая может запускать или останавливать какое-то действие. В данном случае при старте она создает запись в РС с заполненным ресурсом НачалоСобытия, а при остановке - добавляет в эту же запись ресурс ОкончаниеСобытия. И надпись на кнопке должна меняться в соответствии с тем, заполнено ОкончаниеСобытия или нет.
Но это так, в общих чертах, на практике там больше условий и больше текста. Но дело не в этом.
Просто когда мы стартуем событие, надпись на кнопке меняется с "Старт" на "Стоп". Это работает нормально.
Но когда мы перед тем, как остановить событие, выясняем, что с момент начала прошло не более часа, мы должны задать пользователю вопрос - мол, ты ничего не путаешь, может, продолжим уже работающее события, или вообще удалим старое из РС и создадим новое, с текущим временем? Если он выбирает первое, то ничего не делается, а если старое удаляется и создается новое, то заголовок кнопки "Стоп" должен меняться на "Старт". Так и происходит.
Но вот когда я снова стартую событие, "Старт" на "Стоп" уже не меняется. Хотя там стоит строка "Элементы.ФормаСтартСтоп.Заголовок = "Стоп"", где элемент формы ФормаСтартСтоп - это кнопка. Причём в отладчике значение заголовка изменилось! А на форме - нет... Только если я закрою и снова открою форму - оно покажется с заголовком "Стоп".
А вот если перед остановкой пользователю не задавать никакого вопроса (если прошло больше часа после старта), то все работает нормально. То есть: сначала "Стоп" меняется на "Старт", а потом, если пользователь нажимает "Старт", оно меняется на "Стоп".

Не подскажете, где я мог ошибиться? Или чего я не учёл?
1 AlvlSpb
 
11.08.23
11:21
Изменяются не данные, а элементы формы. В открытой форме надо перечитать данные, обновить
2 Keep calm and use 1C
 
11.08.23
15:12
Вообще похоже на ошибку в платформе, хорошо бы попробовать другие версии.
Возможноый вариант обхода - это попробовать менять надпись на кнопке через обработчик ожидания.
Что-то типа: ПодключитьОбработчикОжидания("ВЭтойПроцедуреЯУстановлюПравильноеЗначение", 0.1, Истина)
3 slafor
 
12.08.23
17:46
(1) И ЭтаФорма.Перечитать() выполнял. На моей копии работает, на рабочей - нет.
(2) Вы правы. Работает - но на другой платформе. Программирую я на 8.3.20.1710, файловая, а клиенты работают на 8.3.18.1363, серверная, SQL, и на новую переходить не хотят. Боятся наверное.
С помощью ПодключитьОбработчикОжидания срабатывает процедура, вызываемая этим обработчиком - появляется сообщение (сделал через каждые 5 секунд - с таким шагом оно и появляется), но заголовок кнопки всё равно не меняется.
А вот если просто нажать "Записать" - записывает и перепроводит (если был проведён ранее) документ, и тогда на кнопке появляется "свежая" надпись. Только так.
Причём "беда" эта вылезает только при той последовательности событий, которое я описал в своём первом сообщении. Во всех остальных случаях заголовок кнопки меняется при любом наборе манипуляций.
4 Мимохожий Однако
 
13.08.23
14:24
(3) А ты не бойся. Установи у себя ту же платформу и отлаживай. Подозреваю, что дело не в платформе.