Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 327 раз
Рейтинг: 0
Всем привет. Собственно задумался над вопросом как отказаться от ввода на основании в упр. формах, чтобы окно формы не появлялось? В обычных формах было все просто, берем экспортную переменную в виде флага, устанавливаем, проверяем перед открытием и идем в отказ. В управляемых формах такого сделать не получится, стал думать как можно красивее такое замутить, видел публикацию нашего уважаемого админа Vofki, там в обработке заполнения вызывается исключение
ВызватьИсключение("Упс, произошла какая-то неведомая фигня");
Решение интересное, но думал может есть что-то красивее, чем еррор на экране)) Так вот, подумали с коллегой и решили попробовать через структуру "ДополнительныеСвойства", которая есть по умолчанию в объекте. Получилось что-то вроде такого:
ТекущийОбъект = РеквизитФормыВЗначение("Объект"); НеОткрыватьФорму = Ложь; Если ТекущийОбъект.ДополнительныеСвойства.Свойство("НеОткрыватьФорму", НеОткрыватьФорму) Тогда Отказ = НеОткрыватьФорму; КонецЕсли;
КонецПроцедуры
вот думали такой вариант будет красивым, но почему в событии ПриСозданииНаСервере, в нашем объекте, структура ДополнительныеСвойства пустая... Вопрос №1) Почему структура ДополнительныеСвойства пустая в модуле формы? Вопрос №2) Знает ли кто какой-то ещё красивый способ (без добавления реквизита "ДокументОснование" в метаданные) отказаться от ввода на основании?
Дописываю конфигурации на платформе 8.х. - Управление торговым предприятием для Украины - Управление производственным предприятием для Украины - Управление небольшой фирмой для Украины - Бухгалтерия для Украины; - Общепит для Украины - Ресторан (Рарус) - Розница
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 327 раз
Рейтинг: 0
Vofka @ Сегодня, 11:09
, а как? чего-то я туплю... добавил допустим я реквизит на форму, как мне его заполнить из модуля объекта из процедуры "ОбработкаЗаполнения"?
Дописываю конфигурации на платформе 8.х. - Управление торговым предприятием для Украины - Управление производственным предприятием для Украины - Управление небольшой фирмой для Украины - Бухгалтерия для Украины; - Общепит для Украины - Ресторан (Рарус) - Розница
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 327 раз
Рейтинг: 0
Flexy @ Сегодня, 11:27
, дык стандартный механизм ввода на основании же, в одном документе есть стандартное меню "Ввести на основании ..." выбираю нужный мне документ, попадаю в процедуру модуля объекта "ОбработкаЗаполнения" нужного мне документа и там мне надо проверить мой документ основание, если по условию не проходит, то не показывать форму и выдать сообщения что нельзя создать документ.
Кажется вы меня не так поняли, я имел в виду что хочу получить что-то вроде параметра "Отказ" по которому я смогу регулировать открывать форму документа или нет, а не отказаться от каких-то окон вообще и заполнять документ программно.
Дописываю конфигурации на платформе 8.х. - Управление торговым предприятием для Украины - Управление производственным предприятием для Украины - Управление небольшой фирмой для Украины - Бухгалтерия для Украины; - Общепит для Украины - Ресторан (Рарус) - Розница
процедуру модуля объекта "ОбработкаЗаполнения" нужного мне документа и там мне надо проверить мой документ основание, если по условию не проходит, то не показывать форму и выдать сообщения что нельзя создать документ.
Теперь понятно. Имхо это не сильно по методе / концепции УФ. Т.к. в данном случае сам ДокументОбъект и ОбработкаЗаполнения() выполняются на сервере и их контекста на данном этапе "оторван" даже от серверного контекста формы (тяжело, понять, да). Разве, что городить доп параметры и т.д. и потом как-то их передавать в контекст открываемой формы &НаСервере. Но в таком случае возникает ризонный вопрос - "а нахиба?". Имхо это велосипед будет. Если в УФ сделан упор на асинхронность, то стоит все таки перед вызовом "чего либо" 200 раз подумать
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Bernet @ 29.05.17, 10:50)
Почему структура ДополнительныеСвойства пустая в модуле формы?
Потому что она существует только в модуле объекта, РеквизитВЗначение не делает Объект полнофункциональным.
Цитата(Bernet @ 29.05.17, 11:33)
и там мне надо проверить мой документ основание, если по условию не проходит, то не показывать форму и выдать сообщения что нельзя создать документ.
Не понимаю, почему вам не нравится ВызватьИсключение? Во многих типовых конфигурациях на упр.ф. реализовано именно так. Иначе это делается в ПриСозданииНаСервере, там и отказывайтесь от открытия формы. Либо рисуйте отдельную команду которая будет проверять условия до создания объекта.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 327 раз
Рейтинг: 0
logist @ Сегодня, 11:50
, Просто думал может есть ещё способ сделать по аналогии с обычными формами, в итоге вообщем все таки добавил реквизит "ДокументОснование" в свой документ и проверяю его по своим условиям в форме "ПриСозданииНаСервере"... а то с утра мозгую как его лучше было сделать, лучше дальше задачу буду делать, а оптимизация если что наступит со временем =)
Дописываю конфигурации на платформе 8.х. - Управление торговым предприятием для Украины - Управление производственным предприятием для Украины - Управление небольшой фирмой для Украины - Бухгалтерия для Украины; - Общепит для Украины - Ресторан (Рарус) - Розница
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 327 раз
Рейтинг: 0
Petre @ Сегодня, 12:00
, об этом забыл, спасибо
Дописываю конфигурации на платформе 8.х. - Управление торговым предприятием для Украины - Управление производственным предприятием для Украины - Управление небольшой фирмой для Украины - Бухгалтерия для Украины; - Общепит для Украины - Ресторан (Рарус) - Розница
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0
Для управляемых форм можно пойти через одно место))) 1. Добавляем подписку на событие 2. Указываем источник ДокументМенеджер (выбираем наш документ-ы) 3. Указываем событие ОбработкаПолученияФормы 4. Добавляем общую форму "НеОткрыватьФорму" и при открытии указываем Отказ = Истина; 5. Добавляем Параметр сеанса "МойПарметрСеанса". Инициализируем его при старте программы и в обработке заполнения закидываем в него нужные нам параметры 6. В обработчике события ОбработкаПолученияФормы вставляем код который смотрит переданные параметры, а так же данные хранящиеся в нашем параметре Если получили условие при котором не нужно открывать форму, то выполняем код СтандартнаяОбработка = Ложь; ВыбраннаяФорма = "ОбщаяФорма.НеОткрыватьФорму";
т.е. мы переопределили форму на ту которая никогда не откроется З.Ы. Сам не пробовал, чисто теоретически, хотя сомневаюсь что сначала будет вызываться обработка заполнения, нужно пробовать.
Сообщение отредактировал Batchir - 29.05.17, 11:17
Batchir @ Сегодня, 11:06
, "месье знает толк в извращениях..."
P.S. Кстати, по моему оно будет работать только если вызывать "Форма = ПолучитьФорму()"...Форма.Открыть(). С метода "ОткрытьФорму()" - не взлетает, а жаль.
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0
Цитата(Flexy @ 29.05.17, 12:23)
P.S. Кстати, по моему оно будет работать только если вызывать "Форма = ПолучитьФорму()"...Форма.Открыть(). С метода "ОткрытьФорму()" - не взлетает, а жаль.
не, там достаточно указать путь к форме, как написал
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 327 раз
Рейтинг: 0
Batchir @ Сегодня, 12:06
, АДЪ это извините за выражение ))) как у вас так мозги работают, да ещё и в понедельник...млин, пойду напьюсь Но выглядит круто, не спорю
Дописываю конфигурации на платформе 8.х. - Управление торговым предприятием для Украины - Управление производственным предприятием для Украины - Управление небольшой фирмой для Украины - Бухгалтерия для Украины; - Общепит для Украины - Ресторан (Рарус) - Розница
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!