Имя: Пароль:
1C
 
Ввод на основании
0 lamme
 
08.11.19
11:11
1С уф. один док вводиться на основании другого.
те штатно .. через ОбработкаЗаполнения в документе - который создается.

Ситуация
- заказ клиента - реализация.
Как можно запретить создавать вторую реализацию по заказу.
(т.е. выдавать окно = типа - реализация уже создана и пустую реализацию даже не открывать .)
Штатно - что-то типа - Отказ=истина - нет ничего ?
а то придется же ... какую то переменную заполнять в ОбработкаЗаполнения и в присозданиинасервере - отрабатывать эту переменную
1 hhhh
 
08.11.19
11:13
(0) ВызватьИсключение
2 Ненавижу 1С
 
гуру
08.11.19
11:16
(0) Придется конечно
3 lamme
 
08.11.19
11:20
(1)
а как  ... не уловил )

ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

...
Если ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
ЕстьРанееСозданныеРеализации = НайтиРеал(ТипДанныхЗаполнения)
Если ЕстьРанееСозданныеРеализации тогда
иначе
ЗаполнитьДокументНаОснованииЗаказПокупателя(ДанныеЗаполнения);
конецесли;

конеесли;
4 Mankubus
 
08.11.19
11:22
(3) ВызватьИсключение (Raise)
Синтаксис:
ВызватьИсключение <Выражение>

Описание:
При использовании данной формы оператора вызывается новое исключение. Результат вычисления выражения преобразуется к строке и данная строка используется в качестве описания исключения.
5 lamme
 
08.11.19
11:28
(4)
я читать СП умею.
как применить - не понимаю.
6 ДенисЧ
 
08.11.19
11:32
(5) Проверить наличие уже введённого на основании документа. Если есть - вызывать исключение.
7 hhhh
 
08.11.19
11:34
(5) ну там где хотел написать Отказ = Истина, пишешь

ВызватьИсключение("Хрен вам, а не ввод на основании!!");
8 lamme
 
08.11.19
11:38
пока делаю так .. может быть тупо
Если не ЕстьРанееСозданныеРеализации тогда
            ЗаполнитьДокументНаОснованииЗаказПокупателя(ДанныеЗаполнения);
        иначе
            Попытка
                ввв=ввв/0;
            исключение
                ВызватьИсключение "Уже есть созданная реализация";
            конецпопытки;    
        конецесли;
9 lamme
 
08.11.19
11:39
работает ... )))
форма сообщения - как форма ошибки - но эффект нужный
10 ДенисЧ
 
08.11.19
11:41
(8) Расстрелять. Зачем на ноль делить, если можно сразу исключение звать?
11 lamme
 
08.11.19
11:42
(10)
как оно там вызовется ?
12 Ёпрст
 
08.11.19
11:44
(11) п...ц

ВызватьИсключение
13 Ёпрст
 
08.11.19
11:44
и попытку выкини из кода
14 hhhh
 
08.11.19
11:45
(11) так пробуй

Если не ЕстьРанееСозданныеРеализации тогда
            ЗаполнитьДокументНаОснованииЗаказПокупателя(ДанныеЗаполнения);
        иначе
            ВызватьИсключение "Уже есть созданная реализация";
        конецесли;
15 Ёпрст
 
08.11.19
11:45
Хотя, ВызватьИсключение - тот еще г..о код.
Проще уж завести переменную и потом в ПриОткрытии возврат и ПоказатьЗначение(переменная), в переменную пихать ссылку на документ-основание
16 lamme
 
08.11.19
11:46
если честно - то для меня это открытие
что ВызватьИсключение можно просто так = без попытка/исключение использовать
17 lamme
 
08.11.19
11:47
ну да .. работает

Если не ЕстьРанееСозданныеРеализации тогда
            ЗаполнитьДокументНаОснованииЗаказПокупателя(ДанныеЗаполнения);
        иначе
            ВызватьИсключение "Уже есть созданная реализация";
        конецесли;
18 lamme
 
08.11.19
11:48
спасибо
г*но код работает

правильнее - было бы через переменную.
и в присозданиинасервере() отрабатывать эту переменную ..
19 Кодер
 
08.11.19
11:52
Многие конфы считают остаток от неотгруженного по счёту, может и эта так делает? Тогда в случае неполной отгрузки ты не заблокируешь продажу, но продашь остаток заказанного клиентом.

Отчёт есть в форме заказа?

И в любом случае - лучше выдать модальное предупреждение пользователю, чем мешать продажам.
20 lamme
 
08.11.19
11:59
(19)
это проговарилось пользователю.
пяткой били в грудь и говорили - что такого быть не может. реализация создается после 100% оплаты. поэтому - сделано так.
и модальные окна на уф .. это печаль , однако