Вход | Регистрация


Не могу понять, что не так с "ОписаниеОповещения"

Не могу понять, что не так с "ОписаниеОповещения"
Я
   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
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ОписаниеОповещения'


Что не так делаю?
 
 
   Pro1001C
 
1 - 02.11.18 - 11:52
Причем, в типовой УТ11 есть такой же код, в том же документе "Заказ на перемещение", там он отрабатывает как надо. Не пойму в чем дело
   НоваяВолна
 
2 - 02.11.18 - 12:00
(0) Для начала Конфигурацию озвучь
   azt-yur
 
3 - 02.11.18 - 12:00
Из СП к ОписаниеОповещения:

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

Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).


Сервера нет, поэтому и ошибка.
Наверное все таки в типовом что по другому делается
   ksenod
 
4 - 02.11.18 - 12:08
ут 10.3 (10.3.24.1)
8.3 (8.3.10.2561)
   ksenod
 
5 - 02.11.18 - 12:08
мисклик
   Pro1001C
 
6 - 02.11.18 - 12:10
(2) УТ11.4. Это в новом созданном документе
(3) вот и не могу понять, что не так

Вот код типовой:

&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
    
    Если Модифицированность Или Не Объект.Проведен Тогда
        Ответ = Неопределено;
        ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
            НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"), РежимДиалогаВопрос.ДаНет);
        Возврат;
    КонецЕсли;
    
    ЗакрытьЗаказФрагмент();
    
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
    
    СписокЗаказовКЗакрытию = Новый СписокЗначений;
    СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
    
    СтруктураЗакрытия = Новый Структура;
    СтруктураЗакрытия.Вставить("Заказы",                       СписокЗаказовКЗакрытию);
    СтруктураЗакрытия.Вставить("ДокументИнициатор",            Объект.Ссылка);
    СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
    СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы",              Истина);
    
    СтруктураЗакрытия.Вставить("ТаблицаТоваровРасход",         ПоместитьВоВременноеХранилищеНаСервере("Товары", Новый УникальныйИдентификатор));
    
    ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия",
                 СтруктураЗакрытия, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    
КонецПроцедуры

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


Он отрабатывает как надо. Не понимаю ,что не так
   Галахад
 
7 - 02.11.18 - 12:14
Может это "РаспределитьНаКлиенте" не на клиенте надо делать?
   azt-yur
 
8 - 02.11.18 - 12:15
(6) а у тебя в форме есть процедуры ПослеЗаписи и ПослеЗаписиНаСервере? В типовой они есть, может обязательно должны быть
   Вафель
 
9 - 02.11.18 - 12:18
А зачем ОписаниеОповещения кидать в параметры записи?
   Pro1001C
 
10 - 02.11.18 - 12:24
(7) в ОписаниеОповещения можно только клиентскую процедуру закинуть. На серверную сразу ругнется

(8) попробовал, не помогло
 
 Рекламное место пустует
   Pro1001C
 
11 - 02.11.18 - 12:28
(9) вот прям в тему, спасибо. В моем случаи действительно это не нужно, и так сработает. Можно сказать вопрос решен.

Но все равно не понял, как этот код в типовой работает. Там наверняка где-то перед или после записи что-то происходит с этой процедурой. Но как отработал кусок коды в типовой:

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


я так и не понял
   azt-yur
 
12 - 02.11.18 - 12:29
(10) Режим совместимости твоей и типовой совпадают?
А вообще можно обойтись без этих причудливых конструкций. Что курят разработчики не всегда логично
   Pro1001C
 
13 - 02.11.18 - 12:31
(12) это в одной базе все происходит
   segn
 
14 - 02.11.18 - 12:32
Когда используешь Записать(), отрабатывают как клиентские, так и серверные обработчики события формы, связанные с записью. Все эти обработчики (в т.ч. и серверные) имеют параметр "ПараметрыЗаписи". Поскольку твои параметры содержит оповещение, которое на сервере не существует, и получаешь ошибку.
В типовой, скорее всего, из ПараметровЗаписи удаляется Оповещение до перехода на сервер.
   azt-yur
 
15 - 02.11.18 - 12:34
(14) Я тоже так подумал что удаляется, но по коду пробежался и не заметил ничего похожего, но возможно не заметил, а отладку крутить лень

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует