|
Дополнительный вызов обработчика ОбработкаЗаполнения | ☑ | ||
---|---|---|---|---|
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
|
Темы закрыта... вывод читайте внимательно монуала.. :) ЕЩЕ РАЗ ВСЕ ОГРОМНОЕ СПАСИБО!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |