|
Не могу понять, что не так с "ОписаниеОповещения" | ☑ | ||
---|---|---|---|---|
0
Pro1001C
02.11.18
✎
11:42
|
В УФ есть такой код:
&НаКлиенте Процедура Распределить(Команда) Если Модифицированность Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда Ответ = Неопределено; ПоказатьВопрос(Новый ОписаниеОповещения("РаспределитьЗавершение", ЭтотОбъект), НСтр("ru = 'Необходимо записать документ для выполнения операции. Записать документ?'"), РежимДиалогаВопрос.ДаНет); Возврат; КонецЕсли; РаспределитьНаКлиенте(); КонецПроцедуры &НаКлиенте Процедура РаспределитьЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт Ответ = РезультатВопроса; ОписаниеОповещения = Новый ОписаниеОповещения("РаспределитьНаКлиенте", ЭтотОбъект); ПараметрыЗаписи = Новый Структура; ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения); ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; ИначеЕсли Не Записать(ПараметрыЗаписи) Тогда Возврат; КонецЕсли; РаспределитьНаКлиенте(); КонецПроцедуры &НаКлиенте Процедура РаспределитьНаКлиенте(Результат = Неопределено,ДополнительныеПараметры = Неопределено) Экспорт РаспределитьНаСервере(); КонецПроцедуры &НаСервере Процедура РаспределитьНаСервере() КонецПроцедуры В новом документе жмем кнопку, если док не записан или модифицирован, то записывать сперва. Вроде все просто. Но 1с ругается Ошибка при вызове метода контекста (Записать) ИначеЕсли Не Записать(ПараметрыЗаписи) Тогда по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'Value': форма: Элемент имя: {http://v8.1c.ru/8.1/data/core}Value по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ОписаниеОповещения' Что не так делаю? |
|||
1
Pro1001C
02.11.18
✎
11:52
|
Причем, в типовой УТ11 есть такой же код, в том же документе "Заказ на перемещение", там он отрабатывает как надо. Не пойму в чем дело
|
|||
2
НоваяВолна
02.11.18
✎
12:00
|
(0) Для начала Конфигурацию озвучь
|
|||
3
azt-yur
02.11.18
✎
12:00
|
Из СП к ОписаниеОповещения:
Доступность: Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент). Сервера нет, поэтому и ошибка. Наверное все таки в типовом что по другому делается |
|||
4
ksenod
02.11.18
✎
12:08
|
ут 10.3 (10.3.24.1)
8.3 (8.3.10.2561) |
|||
5
ksenod
02.11.18
✎
12:08
|
мисклик
|
|||
6
Pro1001C
02.11.18
✎
12:10
|
(2) УТ11.4. Это в новом созданном документе
(3) вот и не могу понять, что не так Вот код типовой: &НаКлиенте Процедура ЗакрытьЗаказ(Команда) Если Модифицированность Или Не Объект.Проведен Тогда Ответ = Неопределено; ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект), НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"), РежимДиалогаВопрос.ДаНет); Возврат; КонецЕсли; ЗакрытьЗаказФрагмент(); КонецПроцедуры &НаКлиенте Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт СписокЗаказовКЗакрытию = Новый СписокЗначений; СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка); СтруктураЗакрытия = Новый Структура; СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию); СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка); СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина); СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина); СтруктураЗакрытия.Вставить("ТаблицаТоваровРасход", ПоместитьВоВременноеХранилищеНаСервере("Товары", Новый УникальныйИдентификатор)); ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт Ответ = РезультатВопроса; ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтотОбъект); ПараметрыЗаписи = Новый Структура; ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения); ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; ИначеЕсли Не Записать(ПараметрыЗаписи) Тогда Возврат; КонецЕсли; ЗакрытьЗаказФрагмент(); КонецПроцедуры Он отрабатывает как надо. Не понимаю ,что не так |
|||
7
Галахад
гуру
02.11.18
✎
12:14
|
Может это "РаспределитьНаКлиенте" не на клиенте надо делать?
|
|||
8
azt-yur
02.11.18
✎
12:15
|
(6) а у тебя в форме есть процедуры ПослеЗаписи и ПослеЗаписиНаСервере? В типовой они есть, может обязательно должны быть
|
|||
9
Вафель
02.11.18
✎
12:18
|
А зачем ОписаниеОповещения кидать в параметры записи?
|
|||
10
Pro1001C
02.11.18
✎
12:24
|
(7) в ОписаниеОповещения можно только клиентскую процедуру закинуть. На серверную сразу ругнется
(8) попробовал, не помогло |
|||
11
Pro1001C
02.11.18
✎
12:28
|
(9) вот прям в тему, спасибо. В моем случаи действительно это не нужно, и так сработает. Можно сказать вопрос решен.
Но все равно не понял, как этот код в типовой работает. Там наверняка где-то перед или после записи что-то происходит с этой процедурой. Но как отработал кусок коды в типовой: ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтотОбъект); ПараметрыЗаписи = Новый Структура; ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения); ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; ИначеЕсли Не Записать(ПараметрыЗаписи) Тогда Возврат; КонецЕсли; я так и не понял |
|||
12
azt-yur
02.11.18
✎
12:29
|
(10) Режим совместимости твоей и типовой совпадают?
А вообще можно обойтись без этих причудливых конструкций. Что курят разработчики не всегда логично |
|||
13
Pro1001C
02.11.18
✎
12:31
|
(12) это в одной базе все происходит
|
|||
14
segn
02.11.18
✎
12:32
|
Когда используешь Записать(), отрабатывают как клиентские, так и серверные обработчики события формы, связанные с записью. Все эти обработчики (в т.ч. и серверные) имеют параметр "ПараметрыЗаписи". Поскольку твои параметры содержит оповещение, которое на сервере не существует, и получаешь ошибку.
В типовой, скорее всего, из ПараметровЗаписи удаляется Оповещение до перехода на сервер. |
|||
15
azt-yur
02.11.18
✎
12:34
|
(14) Я тоже так подумал что удаляется, но по коду пробежался и не заметил ничего похожего, но возможно не заметил, а отладку крутить лень
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |