Обычные формы
Если Док.Товары.Количество() > 0 Тогда
проверяю записан или нет документ - если ФормаДок.Открытьмодально(); то все замечательно
а вот если ФормаДок.Открыть(); то проскакивает.
Каким образом можно реализовать проверку без модальности?
Если Док.Товары.Количество() > 0 Тогда
ФормаДок = Док.ПолучитьФорму("ФормаДокумента");
ФормаДок.Открытьмодально();
// ФормаДок.Открыть();
сообщить("ДОК.Ссылка.Пустая() " + ДОК.Ссылка.Пустая() + док.ЭтоНовый()) ;
Иначе
Предупреждение("Нет позиций для заполнения документа ""Заказ поставщику""");
КонецЕсли;
проверяю записан или нет документ - если ФормаДок.Открытьмодально(); то все замечательно
а вот если ФормаДок.Открыть(); то проскакивает.
Каким образом можно реализовать проверку без модальности?
По теме из базы знаний
Найденные решения
(22)
Перем ФормаДок;
Процедура ОткрытиеФормыДокумента()
ФормаДок = Док.ПолучитьФорму("ФормаДокумента", ЭтаФорма);
ФормаДок.Открыть();
ПодключитьОбработчикОжидания("ПроверитьЗакрытиеФормы", 5);
КонецПроцедуры
Процедура ПроверитьЗакрытиеФормы() Экспорт
Если ФормаДок = Неопределено Тогда
ОтключитьОбработчикОжидания("ПроверитьЗакрытиеФормы");
Возврат;
КонецЕсли;
Если Не ФормаДок.Открыта() Тогда
Сообщить("Форма: "+ФормаДок.Заголовок+" закрыта");
ФормаДок = Неопределено;
ОтключитьОбработчикОжидания("ПроверитьЗакрытиеФормы");
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Правильно, к форме обращаться не зачем.
Достаточно обратиться к объекту
Не совсем понятно откуда Вы запускаете этот код...
Если из обработки создаете и заполняете документ Док то достаточно
проверить Док.ЭтоНовый()=Истина
Если у Док проверить УникальныйИдентификатор
у не записаного объекта он будет равен
Док.Ссылка.УникальныйИдентификатор() = "00000000-0000-0000-0000-000000000000"
Если из модуля объект Док то тогда
Если ЭтотОбъект.ЭтоНовый() = Истина Тогда
Сообщить("Это новый, не записаный документ...");
КонецЕсли;
Достаточно обратиться к объекту
Не совсем понятно откуда Вы запускаете этот код...
Если из обработки создаете и заполняете документ Док то достаточно
проверить Док.ЭтоНовый()=Истина
Если у Док проверить УникальныйИдентификатор
у не записаного объекта он будет равен
Док.Ссылка.УникальныйИдентификатор() = "00000000-0000-0000-0000-000000000000"
Если из модуля объект Док то тогда
Если ЭтотОбъект.ЭтоНовый() = Истина Тогда
Сообщить("Это новый, не записаный документ...");
КонецЕсли;
Выше не верно написал. Не разобрался в вопросе.
Док.Открыть() не ждет реакции пользователя сохранил он документ или закрыл без сохранения.
Док.Открытьмодально() как раз ждет не не продолжает выполнение кода 1С пока пользователь не закроет Док с сохранением или без.
К примеру Вы создаете 10 документов в обработке.
У вас 1С на экране сразу откроет 10 форм новых документов если использовать Док.Открыть()
И обработка закончит выполнение.
Поэтому без Модального режима Вы не унаете о реакции пользователя.
Не зная полного замысла этой обработки тяжело что то посоветовать
Док.Открыть() не ждет реакции пользователя сохранил он документ или закрыл без сохранения.
Док.Открытьмодально() как раз ждет не не продолжает выполнение кода 1С пока пользователь не закроет Док с сохранением или без.
К примеру Вы создаете 10 документов в обработке.
У вас 1С на экране сразу откроет 10 форм новых документов если использовать Док.Открыть()
И обработка закончит выполнение.
Поэтому без Модального режима Вы не унаете о реакции пользователя.
Не зная полного замысла этой обработки тяжело что то посоветовать
объясняю - я пишу в документ инфу, открываю форму чтобы посмотреть все нормально или нет, добить оставшиеся параметры
но могу записать документ а могу не записать
и мне надо этот момент отследить
в модальном варианте все работает
можно ли сделать проверку при ФормаДок.Открыть(); и каким образом?
но могу записать документ а могу не записать
и мне надо этот момент отследить
в модальном варианте все работает
можно ли сделать проверку при ФормаДок.Открыть(); и каким образом?
(13) Когда вызывается ФормаДок.Открыть() то отрабатывается код в ПередОткрытием и в ПриОткрытии в открываемой форме, далее отрабатывается Ваш код, написанный после вызова ФормаДок.Открыть() не дожидаясь каких-либо действий с Вашей стороны с открытой формой. Далее, в открытой форме, пользователь может что-то сделать (записать или не записать) и Вы хотите, чтобы в обработке, открывшей немодально форму произошла проверка? Как вариант, можно повесить обработку ожидания, которая будет проверять наличие открытой формы, а по необнаружению выключит себя и запустит нужную процедурку.
(20) Переменную с формой сделать глобальной для модуля, открытость проверять методом .Открыта()
Форма (Form)
Открыта (IsOpen)
Синтаксис:
Открыта()
Возвращаемое значение:
Тип: Булево.
Истина - открыта; Ложь - не открыта.
Описание:
Определяет, открыта ли данная форма.
Доступность:
Толстый клиент.
Пример:
Если Не Форма.Открыта() Тогда
Форма.Открыть();
КонецЕсли;
--------------------------------------------------------------------------------
Методическая информация
Форма (Form)
Открыта (IsOpen)
Синтаксис:
Открыта()
Возвращаемое значение:
Тип: Булево.
Истина - открыта; Ложь - не открыта.
Описание:
Определяет, открыта ли данная форма.
Доступность:
Толстый клиент.
Пример:
Если Не Форма.Открыта() Тогда
Форма.Открыть();
КонецЕсли;
--------------------------------------------------------------------------------
Методическая информация
(22)
Перем ФормаДок;
Процедура ОткрытиеФормыДокумента()
ФормаДок = Док.ПолучитьФорму("ФормаДокумента", ЭтаФорма);
ФормаДок.Открыть();
ПодключитьОбработчикОжидания("ПроверитьЗакрытиеФормы", 5);
КонецПроцедуры
Процедура ПроверитьЗакрытиеФормы() Экспорт
Если ФормаДок = Неопределено Тогда
ОтключитьОбработчикОжидания("ПроверитьЗакрытиеФормы");
Возврат;
КонецЕсли;
Если Не ФормаДок.Открыта() Тогда
Сообщить("Форма: "+ФормаДок.Заголовок+" закрыта");
ФормаДок = Неопределено;
ОтключитьОбработчикОжидания("ПроверитьЗакрытиеФормы");
КонецЕсли;
КонецПроцедуры
Показать
(28) модифицированность тут мало чем поможет.
Вот так нужно:
Вот так нужно:
Перем ФормаДок, ВерсияДок;
Процедура КоманднаяПанель1Действие1(Кнопка)
ФормаДок = Док.ПолучитьФорму("ФормаДокумента", ЭтаФорма);
ВерсияДок = Док.ВерсияДанных;
ФормаДок.Открыть();
ПодключитьОбработчикОжидания("ПроверитьЗакрытиеФормы", 5);
КонецПроцедуры
Процедура ПроверитьЗакрытиеФормы() Экспорт
Если ФормаДок = Неопределено Тогда
ОтключитьОбработчикОжидания("ПроверитьЗакрытиеФормы");
Возврат;
КонецЕсли;
Если Не ФормаДок.Открыта() Тогда
Сообщить("Форма: "+ФормаДок.Заголовок+" закрыта");
Если Док.ВерсияДанных = ВерсияДок Тогда
Сообщить("Документ не изменялся");
КонецЕсли;
ФормаДок = Неопределено;
ОтключитьОбработчикОжидания("ПроверитьЗакрытиеФормы");
КонецЕсли;
КонецПроцедуры
Показать
по поводу модифицированности:
Для сигнализации пользователю о том, что данные, отображаемые формой, были изменены, у формы существует признак модифицированности. При взведении данного признака в заголовке формы отображается символ *. Данный символ сигнализирует пользователю, что данные были изменены, и их необходимо сохранить.
Признак модификации формы взводится системой в следующих случаях:
Изменение объекта, являющимся значением основного реквизита формы. Это изменение может быть произведено интерактивно с помощью элемента управления связанным с реквизитом объекта или программно.
При изменении данных или отработке события элемента управления, у которого взведен флаг "изменяет данные".
Признак модифицированности формы сбрасывается системой при наступлении одного из следующих событий:
Измененный объект, являющийся значением основного реквизита формы, был успешно записан.
При открытии формы после события ПередОткрытием() формы, но перед событием ПриОткрытии().
Флаг модифицированности сбрасывается после события ПередОткрытием() формы, но перед событием ПриОткрытии(), так как при открытии формы нового объекта или уже записанного пользователь ожидает, что состояние данных не являются измененными. Если для нового объекта нужно дополнительная его инициализация перед редактированием в форме, то ее можно произвести в обработчике события формы ПередОткрытием(). В этом случае признак модифицированности не будет взведен у формы, как того и ожидает пользователь. Если же нужно внести исправления в объект при открытии формы, которые должны отразиться на признаке модифицированности, то это следует произвести в обработчике события формы ПриОткрытии().
Кроме автоматического взведения и сброса флага модифицированности системой, разработчик может управлять признаком модифицированности формы посредством свойства формы Модифицированность. Данная модель, с одной стороны, не требует от разработчика дополнительных усилий для поддержки стандартной функциональности редактирования объекта с помощью формы, с другой стороны, предоставляет полный контроль над признаком модифицированности формы.
Для сигнализации пользователю о том, что данные, отображаемые формой, были изменены, у формы существует признак модифицированности. При взведении данного признака в заголовке формы отображается символ *. Данный символ сигнализирует пользователю, что данные были изменены, и их необходимо сохранить.
Признак модификации формы взводится системой в следующих случаях:
Изменение объекта, являющимся значением основного реквизита формы. Это изменение может быть произведено интерактивно с помощью элемента управления связанным с реквизитом объекта или программно.
При изменении данных или отработке события элемента управления, у которого взведен флаг "изменяет данные".
Признак модифицированности формы сбрасывается системой при наступлении одного из следующих событий:
Измененный объект, являющийся значением основного реквизита формы, был успешно записан.
При открытии формы после события ПередОткрытием() формы, но перед событием ПриОткрытии().
Флаг модифицированности сбрасывается после события ПередОткрытием() формы, но перед событием ПриОткрытии(), так как при открытии формы нового объекта или уже записанного пользователь ожидает, что состояние данных не являются измененными. Если для нового объекта нужно дополнительная его инициализация перед редактированием в форме, то ее можно произвести в обработчике события формы ПередОткрытием(). В этом случае признак модифицированности не будет взведен у формы, как того и ожидает пользователь. Если же нужно внести исправления в объект при открытии формы, которые должны отразиться на признаке модифицированности, то это следует произвести в обработчике события формы ПриОткрытии().
Кроме автоматического взведения и сброса флага модифицированности системой, разработчик может управлять признаком модифицированности формы посредством свойства формы Модифицированность. Данная модель, с одной стороны, не требует от разработчика дополнительных усилий для поддержки стандартной функциональности редактирования объекта с помощью формы, с другой стороны, предоставляет полный контроль над признаком модифицированности формы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот