Имя: Пароль:
1C
 
Какая процедура срабатывает при вводе на основании?
0 nlira
 
30.06.11
10:57
Мне нужно: если документ1 - основание удовлетворяет какому то условию,тогда не создавать документ2 на основании документа1.
Сделала в модуле документа2 в процедуре: ОбработкаЗаполнения(Основание)
ничего не делать,вывод предупреждения. Предупреждение выводит,но документ пустой создается автоматом и открывается. Где предотвратить это создавание и открывание пустого документа?
1 lxs
 
30.06.11
10:59
ПередОткрытием(Отказ)
2 Лефмихалыч
 
30.06.11
11:03
// в модуле документа
Процедура ОбработкаЗаполнения(Основание)
 
  Если <Условие, при котором не надо создавать документ> Тогда
     ДополнительныеСвойства.Вставить("ОбработкаЗаполненияОтказ", Истина);
     ДополнительныеСвойства.Вставить("ОбработкаЗаполненияОписаниеОшибки", "Обкакалось <Условие, при котором не надо создавать документ>");
     Возврат;
КонецПроцедуры


//в модуле формы
Процедура ПередОткрытием(Отказ)
  Если ДополнительсныеСвойства.Свойство("ОбработкаЗаполненияОтказ", Отказ) и Отказ Тогда
     ОписаниеОшибки = "";
     ДополнительсныеСвойства.Свойство("ОбработкаЗаполненияОписаниеОшибки", ОписаниеОшибки);
     Предупреждение(ОписаниеОшибки, 15, "Обкакался ввод на основании");
     Возврат;
3 lxs
 
30.06.11
11:04
(2) Какие некультурные комменты...
4 nlira
 
30.06.11
11:04
спасибо!!!
5 Лефмихалыч
 
30.06.11
11:04
кстати, вот это:

     ДополнительсныеСвойства.Свойство("ОбработкаЗаполненияОписаниеОшибки", ОписаниеОшибки);
     Предупреждение(ОписаниеОшибки, 15, "Обкакался ввод на основании");

легко можно заменить на

     Предупреждение(ДополнительныеСвойства.ОбработкаЗаполненияОписаниеОшибки, 15, "Обкакался ввод на основании");
6 nlira
 
30.06.11
11:04
Мне все равно,кулюторно,не кулюторно,скорее бы сделать. Спасибо!!!
7 Лефмихалыч
 
30.06.11
11:05
ДокументОбъект.<Имя документа>.ДополнительныеСвойства (DocumentObject.<Имя документа>.AdditionalProperties)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ДополнительныеСвойства (AdditionalProperties)
Использование:
Только чтение.
Описание:
Тип: Структура. Может использоваться в тех случаях, когда необходимо хранить некоторые значения, связанные с объектом, на время выполнения некоторых операций, без изменения объекта. Например, при обработке событий в подписке на события.
XML-сериализация.
8 Ненавижу 1С
 
гуру
30.06.11
11:05
(0)Предупреждение в обработке заполнения это зло
9 nlira
 
30.06.11
11:06
да? тогда не буду(8).
А в(8) только недоумевала что это,как будто мысли читает уже выдал
10 nlira
 
30.06.11
11:06
в (7) то етсь
11 Лефмихалыч
 
30.06.11
11:07
(8) я еще встречал конфу, в которой сабж достигался при помощи
ВызватьИсключение "Обработка успешно завершена".
12 nlira
 
30.06.11
11:11
перед открытием ставлю на ЭтоНовый? потому что создается то новыйдок
13 nlira
 
30.06.11
11:33
все равно открыывает!!!
14 Лефмихалыч
 
30.06.11
11:34
(12) не надо
(13) неправильно делаешь
15 73
 
30.06.11
11:38
(13) Процедура ПередОткрытием событию формы назначена?
16 nlira
 
30.06.11
11:40
Да вот так сделала.
Если  ТипЗнч(ПараметрОснование) = Тип("ДокументСсылка.ЗаказПокупателя") и не (НачалоДня(ПараметрОснование.Дата) = НачалоДня(ТекущаяДата()+24*60*60) или НачалоДня(ПараметрОснование.Дата)=НачалоДня(ТекущаяДата())) Тогда
                 //ДополнительныеСвойства.Вставить("ОбработкаЗаполненияОтказ", ложь);
                 //ДополнительныеСвойства.Вставить("ОбработкаЗаполненияОписаниеОшибки", "Реализация товаров не может быть сформирована, дата заказа больше текущей + 1 день");
                Предупреждение("Реализация товаров не может быть сформирована, дата заказа больше текущей + 1 день");
                 Отказ =  Истина;
                 Возврат;
             КонецЕсли;

Но (5) красиво,так сейчас постараюсь
17 nlira
 
30.06.11
11:44
при создании документа Реализация на основании документа заказ покупателя сначала какая процедура срабатывает?
ОбработкаЗаполнения(Основание) в реализации или при отрытии?
Просто что хочу сказать запрет сделать сделала,а если в программе бедолага прокручивает сначала обработку заполнения а потом на фиг скидывает все?
18 nlira
 
30.06.11
11:48
как я и думала сначала заполняет потом открывает. То есть в заполнении тоже надо ставить условие и выкидывать
19 73
 
30.06.11
12:03
(18) Это ещё в (2) было...
20 nlira
 
30.06.11
12:15
и еще вопрос поставить надо на удаление документов тоже условие. Я это ставлю в событии СписокПередУдалением? Правильно так будет? Мне код не нужен,только цепь мыслей правильная.
21 Лефмихалыч
 
30.06.11
12:17
я ж рабочий код дал, надо было только скопипастить без ошибок...
22 nlira
 
30.06.11
12:21
даже не заходит перед удалением в событие,когда пытаюсь удалить
23 73
 
30.06.11
12:23
(22) Мож ты не удаляешь, а пометку удаления ставишь?
24 nlira
 
30.06.11
12:24
да пометку
25 73
 
30.06.11
12:25
(24) Это разные действия. И события разные...
26 nlira
 
30.06.11
12:27
я поняла заходит. Все. Только теперь как мне узнать в списке какая дата выбранного док на удаление?
27 nlira
 
30.06.11
12:27
Поле объекта не обнаружено (Дата)
   Если  не (Элемент.текущаяСтрока.Дата = НачалоДня(ТекущаяДата()+24*60*60) или НачалоДня(Элемент.Дата)=НачалоДня(ТекущаяДата())) Тогда
28 vmv
 
30.06.11
12:30
(26) подписка на событие ПередЗаписью(), ПриЗаписи()
в дополнительныесвойства пишешь идентификатор списка, формы или просто "Рюшечка1".

Пометка или удаление - это модификация объекта и эти обработчики срабатвают. Подписчики не завсимы от форм, но можно передать в них идентификаторы для кейс-условий вариантов поведения

Все отстльные варинаты от лукавого
29 nlira
 
30.06.11
12:33
ок!!! (28)
30 73
 
30.06.11
12:34
(28) Для 1го дока можно в модуле объекта прописать.
В ПередЗаписью определить пометку/снятие можно без ДопСвойств...
31 nlira
 
30.06.11
12:38
Созадала подписку на собитя ПередПометкойНаУдаление.
А события нет ПередУстановкойПометкиУдаления чтобы выбрать,есть из удаления только событие ПередУдалением. Если событие перед удалением поставлю отработает?
32 nlira
 
30.06.11
12:40
а (28) пишет события надо перед записью и при записи. Мне же надо перед пометкой удаления и перед удалением.
33 nlira
 
30.06.11
12:40
попробую как (28)
34 vmv
 
30.06.11
12:45
просто нужно четко понять, что "пометка" - это модификация, а "удаление" - это стирание записи из базы данных.

обработчики модфикации ПередЗаписью() ПриЗаписи(), обработчики удаления ПриУдалении().

Более того, в теле обработчика ПередЗаписью можно прописать дополнительноесвойство объекта, которое можно анализировать, когда запись(модификация) уже произошла, т.е. в ПриЗаписи().

Но и там и там можно блокировать завершение транзакций по каким-то своим соображениям.
35 73
 
30.06.11
12:46
(32) просила цепь мыслей :
В ПередЗаписью объекта(или подписке) значение ПометкиУдаления объекта отличается от значения ПометкиУдаления хранящегося в базе. Это можно проверить:
Если ПометкаУдаления <> Ссылка.ПометкаУдаления Тогда//операции с ПУ
Если ПометкаУдаления Тогда //установка
Иначе //снятие
КонецЕсли;
КонецЕсли;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн