Имя: Пароль:
1C
1С v8
Дополнительный вызов обработчика ОбработкаЗаполнения
0 tramek
 
13.12.11
10:41
Доброе время суток! Перешол с платформы (8.1.15.14) на (8.2.13.219) "УТ 10.3", отключил режим совместимости, пытаюсь устранить несовместимости платформ руководствуясь статьей http://1c-soft.com.ua/blog/perexod-na-8-2.htm. Проблема с дополнительным вызовом обработчика "ОбработкаЗаполнения" В 1С:Предприятии 8.2 обработчик ОбработкаЗаполнения вызывается при программном вводе нового элемента с помощью вызова методов ПолучитьФормуНовогоДокумента, ПолучитьФормуНовогоЭлемента и аналогичных. В результате чего, дважды вызовется обработчик объекта ОбработкаЗаполнения. Просмотрел во всей конфигурации мотод "ПолучитьФормуНового" - и где используется метод заполнить(), исправил и ни чего не изменилось поставил точку остановы и ни куда не зашол. Где эту ошибку надо исправлять?
1 rrunover
 
13.12.11
10:48
Покажи хотя бы один пример в разрезе как было до замены и как стало после.
2 Ненавижу 1С
 
гуру
13.12.11
10:50
а она на сервере вызывается, если сервер не в режиме отладки, то отладки не будет на сервере
3 tramek
 
13.12.11
10:57
(1) до
ОбъектСчетаФактуры = Документы[ВидСчетаФактуры].ПолучитьФормуНовогоДокумента( , ФормаДокумента, Строка(ДокументОбъект));
ОбъектСчетаФактуры.ДокументыОснования.Очистить();
ОбъектСчетаФактуры.Заполнить(ДокументОбъект);
// Откроем форму для редактирования счета-фактуры
ОбъектСчетаФактуры.Открыть();
  После
//ОбъектСчетаФактуры = Документы[ВидСчетаФактуры].ПолучитьФормуНовогоДокумента( , ФормаДокумента, Строка(ДокументОбъект));
ОбъектСчетаФактуры.ДокументыОснования.Очистить();
ОбъектСчетаФактуры.Заполнить(ДокументОбъект);
// Откроем форму для редактирования счета-фактуры
ОбъектСчетаФактуры = Документы[ВидСчетаФактуры].ПолучитьФорму();
ОбъектСчетаФактуры.Открыть();
4 tramek
 
13.12.11
10:58
(2) отладка происходит на клиенте галочка (Клиент объчное приложение стоит)
5 Defender aka LINN
 
13.12.11
10:59
(3) Создал объект, заполнил, открыл форму другого объекта... Хвастаешься?
6 tramek
 
13.12.11
11:01
(3) во всей конфигурации это единственный участок кода где встречается метод получитьФормуНового и метод заполнить.
7 tramek
 
13.12.11
11:04
(5) суть не в синтаксисе это я так быстро для премера набросал, вопрос не как это еделать а где нужно исправлять
8 rrunover
 
13.12.11
11:08
(7), а ты уверен, что в (3) порядок выполняемых действий именно такой, как рекомендовано?
9 tramek
 
13.12.11
11:13
(8) нет не уверен еще толком не разбирался, не нашол где править комбинация методов встречается только в одном месте конфигурации РаботаСДиалогами.ВвестиСчетФактуру поэтому и спрашиваю где нужно править.
10 rrunover
 
13.12.11
11:18
>> "не нашол где править комбинация методов"
(9) править там, где встречается.

До просветления следовать инструкциям по ссылке в (0):
1) Создать документ.
2) Заполнить созданный документ по основанию.
3) Получить форму документа, с которым работали в 1 и 2.
4) Открыть полученную форму.
11 tramek
 
13.12.11
11:37
(10) чет я не понял как связаны вышеуказанные методы с методом ПолучитьФоруНового и заполнить? в статье четко прописанны предопределенные методы которые некорректно сробатывают в 8.2
12 rrunover
 
13.12.11
11:38
и так же чётко прописано, что нужно сделать, чтобы оно заработало
13 tramek
 
13.12.11
11:41
Для устранения несовместимости необходимо:

выявить все вызовы метода Заполнить(), которые применяются совместно с методами вида ПолучитьФормуНового;

заменить вызов ПолучитьФормуНового на пару вызовов ПолучитьФорму и Открыть. Например:
ОбъектСчетаФактуры = Документы.СчетФактуры.СоздатьДокумент();
ОбъектСчетаФактуры.Заполнить(ДокументОбъект.Ссылка);
ФормаСчетаФактуры = ОбъектСчетаФактуры.ПолучитьФорму();
ФормаСчетаФактуры.Открыть(); - Где это нужно исправлять если в конфе такая комбинация метов встречается только (9)???
14 rrunover
 
13.12.11
11:46
ммм... может быть только в (9) и исправлять?
15 tramek
 
13.12.11
11:47
(14) при отладке не попадает в этот модуль
16 rrunover
 
13.12.11
12:00
(15) хорошо. пусть пока не попадает. Ошибка-то какая-нибудь есть?
17 tramek
 
13.12.11
12:07
При формировании новога документа например тестил на реализации выскавает ошибка

{Документ.РеализацияТоваровУслуг.МодульОбъекта(5424)}: Значение не является значением объектного типа (Метаданные)
Если ОбщегоНазначения.ЕстьРеквизитДокумента("ОтражатьВУправленческомУчете", Основание.Метаданные()) Тогда выскавивает потому что при формировании заходит в ОбработкуЗаполнения -  основание(неопределено) естественно у неопределено нес метода "методанные". Проверять на неопределно при поподании в процедуру обработка заполнения считаю не корректным.
18 rrunover
 
13.12.11
12:22
Понятно.
Пункт 2. "Анализ типа параметра обработчика ОбработкаЗаполнения" в модуле документа "Реализация товаров и услуг" правил? По ссылке в (0) это есть.
19 tramek
 
13.12.11
12:35
(18) ага
20 Jaffar
 
13.12.11
13:43
о, думаю - мне тоже скоро предстоит наступить на эти грабли.
(0) спасибо за ссылочку!
21 rrunover
 
13.12.11
14:11
(19) и если ты сейчас пытаешься просто создать новый документ реализации и выезжает сообщение об ошибке, тогда пожалуйста покажи код, который в модуле документа в процедуре ОбработкаЗаполнения.
22 tramek
 
14.12.11
08:05
(20) не за что сам на мисте откапал..:)
23 tramek
 
14.12.11
08:11
(21) да код в документе исправить нет проблем просто мне не понятно как он попадает в обработку заполнения при формировании нового документа в синкси помошнике 8.2 написано про метод заполнить

ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Заполнить (Fill)
Синтаксис:

Заполнить(<ДанныеЗаполнения>)
Параметры:

<ДанныеЗаполнения> (обязательный)

Тип: Произвольный. Значение, на основании которого выполняется заполнение документа.
Описание:

Заполняет данные документа данными из другого объекта. Инициирует событие ОбработкаЗаполнения и вызов его процедуры-обработчика в модуле документа. В ней может размещаться алгоритм, заполняющий данные документа из переданного значения.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Для заполнения может использоваться значение любого типа.
Пример:

РасходнаяНакладная.Заполнить(ВыбКонтрагент);


См. также:

ДокументОбъект, событие ОбработкаЗаполнения

только вот где он вызывается этот метод, просмотрел все методы заполнить в конфе но не где нет который заполнял бы например реализацию возможно причина не в этом метоже.. пока еще не нарыл.
24 Defender aka LINN
 
14.12.11
08:44
(23) При интерактивном создании объекта вызывается событие заполнения. Это, какбе, одно из значимых отличий 8.2 от 8.1. Ты вообще документацию открывал, не?
25 tramek
 
14.12.11
08:46
(24) а можно поподробнее? и где можно прочитать документацию?
26 tramek
 
14.12.11
08:47
и зачем при интерактивном создании вызвать событие заполнение? в чем логика?
27 Defender aka LINN
 
14.12.11
08:50
(26) Логика в том, чтобы заполнить объект "по умолчанию" - то, чем в 8.0 и в 8.1 страдали в формах документов.
28 tramek
 
14.12.11
09:06
ну епты так это получается нормально, а я тут голову ломаю..:) спс
29 tramek
 
14.12.11
09:07
кинь ссылку на документацию если не трудно
30 tramek
 
14.12.11
09:10
В статье написано про програмный ввод нового документа а не про интерактивный чет сразу не обратил на это внимание и протупил целый день. знание сила а незнание здоровый крепкий сон..:)
31 tramek
 
14.12.11
09:18
Темы закрыта... вывод читайте внимательно монуала.. :) ЕЩЕ РАЗ ВСЕ ОГРОМНОЕ СПАСИБО!!!