Имя: Пароль:
1C
1С v8
v8.2 УдалитьОбработчик
,
0 Dmitrith
 
20.09.11
15:04
Народ помогите вкурить:
Требуется из обработки записать элемент справочника,но при этом чтобы ПриЗаписи() данного элемента не обработалось. Насколько я понимаю это можно сделать через УдалитьОбработчик, по документации ничего не понял.
У меня сейчас так:

Если Не СтандартнаяЗапись Тогда
  УдалитьОбработчик НайденныйЭлемент.ПриЗаписи, ПриЗаписи; // тут что???
КонецЕсли;
НайденныйЭлемент.Записать();
1 GenV
 
20.09.11
15:06
(0) Обычно в обработчиках есть проверка на ОбменДанными.Загрузка. Тогда можно через неё обойти.
2 Dmitrith
 
20.09.11
15:07
Знаю. Это справочник НоменклатурныеГруппы в УПП. Нет там ОбменДанными ((
3 Жан Пердежон
 
20.09.11
15:07
НайденныйЭлемент.Загрузка = Истина;
не катит?
4 Dmitrith
 
20.09.11
15:08
(3) Нет.
5 Жан Пердежон
 
20.09.11
15:11
(3) *.ОбменДанными
(2) есть
6 Жан Пердежон
 
20.09.11
15:13
телепатирую дальше:
у тебя в (0) НайденныйЭлемент - ссылка, а должен быть объект
7 Dmitrith
 
20.09.11
15:20
(5) Для того чтобы
ОбменДанными.Загрузка = Истина;
работал в самом обработчике должно быть условия необработки этих исключений. Так например написано в справочнике ДоговорыКонтрагентов:

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

В справочнике же НоменклатурныеГруппы в обработчике ПриЗаписи(0 Таких условий нет. Там тупо стоит проверка на заполненность поля, которая и выдает ошибку в любом случае
8 Dmitrith
 
20.09.11
15:22
(6) Код процедуры уже отлажен и другие справочники пишет нормально (это универсальная процедура загрузки справочников при обмене). Затык именно на данном справочнике.
9 Жан Пердежон
 
20.09.11
15:24
(8) ну так допили ПриЗаписи(), тем более, что в типовой (1.3.9.1) ПриЗаписи() - для НГ вообще не определен, зато

Процедура ПередЗаписью(Отказ)

   Если НЕ ОбменДанными.Загрузка
      И НЕ ЭтоГруппа
      И НЕ ЗначениеЗаполнено(БазоваяЕдиницаИзмерения) Тогда
       #Если Клиент Тогда
       РаботаСДиалогами.СообщитьПользователюНезаполненРеквизит(Ссылка, "базовая единица");
       #КонецЕсли
       Отказ = Истина;
   КонецЕсли;

КонецПроцедуры // ПередЗаписью()
10 Dmitrith
 
20.09.11
15:25
(9) я понимаю что можно допилить элементарно, но задача стоит максимально не трогать типовую конфигурацию. Поэтому и пытаюсь сделать через УдалитьОбработчик
11 Dmitrith
 
20.09.11
15:27
(9) и в 1.3.16 ПриЗаписи() уже присутствует
12 Жан Пердежон
 
20.09.11
16:07
(11) открыл специально 1.3.16.1 - нету,
тем более, что уже проверять заполнение реквизитов в обработчиках записи - моветон
13 Dmitrith
 
20.09.11
16:09
(12) Ну как нету а это что? http://clip2net.com/s/1bCCb
14 Жан Пердежон
 
20.09.11
16:20
(13) а ничего, что это форма элемента?
2 + 2 = 3.9999999999999999999999999999999...