Имя: Пароль:
1C
1С v8
Как проверить объект на модифицированность(), при вводе на основании?
0 SherifSP
 
08.05.13
11:03
Как проверить объект на модифицированность(), при вводе на основании?
1 cw014
 
08.05.13
11:03
Зачем?
2 cw014
 
08.05.13
11:03
Нет, не так...
Да...
3 SherifSP
 
08.05.13
11:05
(1) Пользователь изменил реквизит на форме и при вводе на основании, в документ основание подтягивается старый реквизит, нужно отловить модифицированность и дать пользователю сообщение, чтобы записал документ
4 cw014
 
08.05.13
11:06
При открытии формы создавай ключ уникальности у нее. При вводе на основании ищи форму с этим ключом. Если форма найдена, она открыта и модифицированна - тогда швах
5 SherifSP
 
08.05.13
11:10
(4) Вот что то нашел ДанныеЗаполнения.ПолучитьФорму().ЭтотОбъект.Модифицированность() )))
6 SherifSP
 
08.05.13
11:11
+(5) Ток не понятно что такое ДанныеЗаполнения
7 cw014
 
08.05.13
11:12
ДанныеЗаполнения - произвольный объект, который может быть "Неопределено", "Структура", "Объект" ну или любой другой параметр
8 cw014
 
08.05.13
11:13
(5) Кстати, если док не сохранен, в ДанныеЗаполнения объект до изменения
9 SherifSP
 
08.05.13
11:15
(8) А если так Основание.ПолучитьФорму().ЭтотОбъект.Модифицированность() ?
10 cw014
 
08.05.13
11:17
(9) Если юзверь открыл форму но еще не записал ее - в базе данных старые данные. Поэтому получая ссылку или объект этого добра - ты получаешь данные, а форма создается с новым ключем уникальности.
11 SherifSP
 
08.05.13
11:26
Как можно прервать процедуру ввода на основании? Возврат; не предлагать)
12 Ненавижу 1С
 
гуру
08.05.13
11:28
(11) в модуле формы перед открытием
13 SherifSP
 
08.05.13
11:30
(12) Нужно в процедуре ОбработкаЗаполнения()
14 ssh2012
 
08.05.13
11:31
(13) ВызватьИсключение("еба!")
15 cw014
 
08.05.13
11:32
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ОбработкаЗаполнения (Filling)
Синтаксис:

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

<ДанныеЗаполнения>

Тип: Произвольный.
Значение, которое используется как основание для заполнения.
Если обработчик вызван при выполнении метода Заполнить, параметр равен параметру "Данные заполнения" метода Заполнить.
При обработке заполнения во время ввода на основании параметр имеет значение основания.
При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено. Если параметр "Стандартная обработка" по окончании работы обработчика равен Истина (установлен по умолчанию), система автоматически произведет заполнение одноименными элементами структуры.
<СтандартнаяОбработка>

Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет. Отказ от стандартной обработки не отменяет действие.
Значение по умолчанию: Истина
Описание:

Возникает при вводе документа на основании, а также при выполнении метода Заполнить, при вводе на основании, а также при интерактивном вводе нового. В процедуре-обработчике этого события должен быть описан сам алгоритм заполнения реквизитов документа на основании переданного значения.
Примечание:

При копировании (как интерактивном, так и средствами встроенного языка), данный обработчик не вызывается.
См. также:

ДокументОбъект, метод Заполнить
16 SherifSP
 
08.05.13
11:33
(15) Не знаю как в 8.2, у меня 8.1 и там нет в параметре СтандартнаяОбработка
17 cw014
 
08.05.13
11:36
(16) тогда только (4)
18 mxs089
 
08.05.13
11:37
фейспалм,
19 cw014
 
08.05.13
11:38
(18) ООПшник? )))
20 SherifSP
 
08.05.13
11:38
(17) Есть стандартная функция не помню какая, которая прерывает процедуру с сообщением
21 cw014
 
08.05.13
11:40
(20) ВызватьИсключение???
22 mxs089
 
08.05.13
11:40
отказ = истина
23 mxs089
 
08.05.13
11:41
при записи, организовать подпиской
24 cw014
 
08.05.13
11:41
(22) В обработке заполнения нету Отказ. Есть СтандартнаяОбработка, но она только в 8.2
25 ssh2012
 
08.05.13
11:41
(20) см (14)
26 SherifSP
 
08.05.13
11:42
(21) Да)
27 Aprobator
 
08.05.13
11:45
(11) Честно говоря, непонятно чем Возврат плох.
Лови как вариант в ОбработкаЗаполнения.

...
Если УсловиеСоблюдается Тогда
// тут действия по заполнению
КонецЕсли;
...
28 cw014
 
08.05.13
11:45
(27) Ничем, только он не отменит выполненные действия и откроет наполовину заполненную форму
29 mxs089
 
08.05.13
11:51
передоткрытием
отказ = документоснование.получитьформу().модифицированность()
30 Aprobator
 
08.05.13
11:54
(28) вопрос был как прервать. Про все отменить - речи не было.
31 SherifSP
 
08.05.13
11:56
(27) В данной ситуации плох, потому что форма после обработки заполнения открывается пустая
32 SherifSP
 
08.05.13
11:56
+(31) А нужно не дать дойти до открытия формы
33 SherifSP
 
08.05.13
11:58
(29) Как вариант, но процедура ввода на основании все равно будит задействована, а это не есть хорошо для производительности
34 mxs089
 
08.05.13
12:00
(33)
обработказаполнения(){
если документоснование.получитьформу().модифицированность() тогда
возврат;
конецесли;
}
35 Aprobator
 
08.05.13
12:01
(32) в модуле объекта экспортную переменную для контрольки. В модуле формы ПриОткрытии Отказ = ПеремннаяКонтролька <> Неопределено И ПеременнаКонтролька.
36 SherifSP
 
08.05.13
12:01
(34) Тогда обработка заполнения не пройдет, но форма все равно откроется
37 mxs089
 
08.05.13
12:02
(35) опередил)
38 mxs089
 
08.05.13
12:02
(36) в комплексе
39 Aprobator
 
08.05.13
12:07
(37) да такая фигня уже на кончике пальцев. У меня даже мозг для такой ерунды не включается )
40 SherifSP
 
08.05.13
12:11
Сделаю по другому, у объекта есть дополнительные свойства в виде структуры, буду в них записывать данные и проверять если в структуре есть эти данные, тогда отказ = истина;
41 Aprobator
 
08.05.13
12:15
(40) если речь о 8.2, то там было такое. Тут просто в соседней ветке речь про 8.1. потому переключиться не успел )
42 SherifSP
 
08.05.13
12:19
(41) У 8.1 тоже есть такое)
43 Aprobator
 
08.05.13
12:23
(42) не помню уже - с 8.1 года 3 уже не общался.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс