Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отказ при вводе на основании (упр формы)          
Bernet Подменю пользователя
сообщение 29.05.17, 9:50
Сообщение #1

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Всем привет.
Собственно задумался над вопросом как отказаться от ввода на основании в упр. формах, чтобы окно формы не появлялось?
В обычных формах было все просто, берем экспортную переменную в виде флага, устанавливаем, проверяем перед открытием и идем в отказ.
В управляемых формах такого сделать не получится, стал думать как можно красивее такое замутить, видел публикацию нашего уважаемого админа Vofki, там в обработке заполнения вызывается исключение
ВызватьИсключение("Упс, произошла какая-то неведомая фигня");
Решение интересное, но думал может есть что-то красивее, чем еррор на экране))
Так вот, подумали с коллегой и решили попробовать через структуру "ДополнительныеСвойства", которая есть по умолчанию в объекте. Получилось что-то вроде такого:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    
    // наше условие, при котором документ не должен заполняться и
        ДополнительныеСвойства.Вставить("НеОткрыватьФорму", Истина);
    
КонецПроцедуры

и далее в форме:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ТекущийОбъект = РеквизитФормыВЗначение("Объект");
    НеОткрыватьФорму = Ложь;
    Если ТекущийОбъект.ДополнительныеСвойства.Свойство("НеОткрыватьФорму", НеОткрыватьФорму) Тогда
        Отказ = НеОткрыватьФорму;
    КонецЕсли;
        
КонецПроцедуры

вот думали такой вариант будет красивым, но почему в событии ПриСозданииНаСервере, в нашем объекте, структура ДополнительныеСвойства пустая...
Вопрос №1) Почему структура ДополнительныеСвойства пустая в модуле формы?
Вопрос №2) Знает ли кто какой-то ещё красивый способ (без добавления реквизита "ДокументОснование" в метаданные) отказаться от ввода на основании?


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Vofka Подменю пользователя
сообщение 29.05.17, 10:09
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(Bernet @ 29.05.17, 10:50) *
В обычных формах было все просто, берем экспортную переменную в виде флага, устанавливаем, проверяем перед открытием и идем в отказ.

В управляемой можно то же самое сделать, не? Добавьте новый реквизит на форму и в ПриСозданииНаСервере проверяйте.

Bernet Подменю пользователя
сообщение 29.05.17, 10:18
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Vofka @ Сегодня, 11:09 * ,
а как? чего-то я туплю... добавил допустим я реквизит на форму, как мне его заполнить из модуля объекта из процедуры "ОбработкаЗаполнения"?


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Flexy Подменю пользователя
сообщение 29.05.17, 10:27
Сообщение #4

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(Bernet @ 29.05.17, 9:50) *
Собственно задумался над вопросом как отказаться от ввода на основании в упр. формах, чтобы окно формы не появлялось?

Зачем так сложно? crazy.gif
Если УсловиеИстина Тогда
ВводДокументаНаОсновании();
КонецЕсли;

Bernet Подменю пользователя
сообщение 29.05.17, 10:33
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Flexy @ Сегодня, 11:27 * ,
дык стандартный механизм ввода на основании же, в одном документе есть стандартное меню "Ввести на основании ..." выбираю нужный мне документ, попадаю в процедуру модуля объекта "ОбработкаЗаполнения" нужного мне документа и там мне надо проверить мой документ основание, если по условию не проходит, то не показывать форму и выдать сообщения что нельзя создать документ.

Кажется вы меня не так поняли, я имел в виду что хочу получить что-то вроде параметра "Отказ" по которому я смогу регулировать открывать форму документа или нет, а не отказаться от каких-то окон вообще и заполнять документ программно.


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Flexy Подменю пользователя
сообщение 29.05.17, 10:45
Сообщение #6

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(Bernet @ 29.05.17, 10:33) *
процедуру модуля объекта "ОбработкаЗаполнения" нужного мне документа и там мне надо проверить мой документ основание, если по условию не проходит, то не показывать форму и выдать сообщения что нельзя создать документ.

Теперь понятно.
Имхо это не сильно по методе / концепции УФ. Т.к. в данном случае сам ДокументОбъект и ОбработкаЗаполнения() выполняются на сервере и их контекста на данном этапе "оторван" даже от серверного контекста формы (тяжело, понять, да). Разве, что городить доп параметры и т.д. и потом как-то их передавать в контекст открываемой формы &НаСервере. Но в таком случае возникает ризонный вопрос - "а нахиба?". Имхо это велосипед будет. Если в УФ сделан упор на асинхронность, то стоит все таки перед вызовом "чего либо" 200 раз подумать smile.gif

Сообщение отредактировал Flexy - 29.05.17, 10:46

logist Подменю пользователя
сообщение 29.05.17, 10:50
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Bernet @ 29.05.17, 10:50) *
Почему структура ДополнительныеСвойства пустая в модуле формы?

Потому что она существует только в модуле объекта, РеквизитВЗначение не делает Объект полнофункциональным.

Цитата(Bernet @ 29.05.17, 11:33) *
и там мне надо проверить мой документ основание, если по условию не проходит, то не показывать форму и выдать сообщения что нельзя создать документ.

Не понимаю, почему вам не нравится ВызватьИсключение? Во многих типовых конфигурациях на упр.ф. реализовано именно так.
Иначе это делается в ПриСозданииНаСервере, там и отказывайтесь от открытия формы. Либо рисуйте отдельную команду которая будет проверять условия до создания объекта.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Bernet Подменю пользователя
сообщение 29.05.17, 10:56
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

logist @ Сегодня, 11:50 * ,
Просто думал может есть ещё способ сделать по аналогии с обычными формами, в итоге вообщем все таки добавил реквизит "ДокументОснование" в свой документ и проверяю его по своим условиям в форме "ПриСозданииНаСервере"... а то с утра мозгую как его лучше было сделать, лучше дальше задачу буду делать, а оптимизация если что наступит со временем =)


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Petre Подменю пользователя
сообщение 29.05.17, 11:00
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Bernet @ Сегодня, 11:56 * ,
Если условие размещаете в "ПриСозданииНаСервере", то не надо добавлять реквизит, т. к. уже есть "Параметры.Основание".


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: Bernet,

Bernet Подменю пользователя
сообщение 29.05.17, 11:00
Сообщение #10

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Petre @ Сегодня, 12:00 * ,
об этом забыл, спасибо wink.gif


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Batchir Подменю пользователя
сообщение 29.05.17, 11:06
Сообщение #11

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Для управляемых форм можно пойти через одно место))) 32541510.gif
1. Добавляем подписку на событие
2. Указываем источник ДокументМенеджер (выбираем наш документ-ы)
3. Указываем событие ОбработкаПолученияФормы
4. Добавляем общую форму "НеОткрыватьФорму" и при открытии указываем Отказ = Истина;
5. Добавляем Параметр сеанса "МойПарметрСеанса". Инициализируем его при старте программы и в обработке заполнения закидываем в него нужные нам параметры
6. В обработчике события ОбработкаПолученияФормы вставляем код который смотрит переданные параметры, а так же данные хранящиеся в нашем параметре
Если получили условие при котором не нужно открывать форму, то выполняем код
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ОбщаяФорма.НеОткрыватьФорму";

32542460.gif
т.е. мы переопределили форму на ту которая никогда не откроется crazy.gif
З.Ы. Сам не пробовал, чисто теоретически, хотя сомневаюсь что сначала будет вызываться обработка заполнения, нужно пробовать.

Сообщение отредактировал Batchir - 29.05.17, 11:17

Flexy Подменю пользователя
сообщение 29.05.17, 11:23
Сообщение #12

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Batchir @ Сегодня, 11:06 * ,
"месье знает толк в извращениях..." 32541510.gif

P.S. Кстати, по моему оно будет работать только если вызывать "Форма = ПолучитьФорму()"...Форма.Открыть(). С метода "ОткрытьФорму()" - не взлетает, а жаль.

Batchir Подменю пользователя
сообщение 29.05.17, 11:35
Сообщение #13

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Цитата(Flexy @ 29.05.17, 12:23) *
P.S. Кстати, по моему оно будет работать только если вызывать "Форма = ПолучитьФорму()"...Форма.Открыть(). С метода "ОткрытьФорму()" - не взлетает, а жаль.

не, там достаточно указать путь к форме, как написал
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ОбщаяФорма.НеОткрыватьФорму";

я такое делал когда мне нужно было переопределить типовую форму, но не хотел лезть в типовой код вообще))

Bernet Подменю пользователя
сообщение 29.05.17, 11:39
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Batchir @ Сегодня, 12:06 * ,
АДЪ 47046430.gif
это извините за выражение icon_2707.gif ))) как у вас так мозги работают, да ещё и в понедельник...млин, пойду напьюсь icon_alc7.gif
Но выглядит круто, не спорю 44000000.gif


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Vofka Подменю пользователя
сообщение 29.05.17, 12:13
Сообщение #15

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(Bernet @ 29.05.17, 11:18) *
а как? чего-то я туплю... добавил допустим я реквизит на форму, как мне его заполнить из модуля объекта из процедуры "ОбработкаЗаполнения"?

Никак. Это я перепутал.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 18:41
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!