Значение не является значением объектного типа (Closed)

1. OMOIVA 29.01.21 12:32 Сейчас в теме
Доброго дня!

После обновления до 8.3.18.1289 (Обычные формы), перестала работать запись реквизита справочника.
Есть Справочник, CMS1C_Категории, в нём хранится список категорий, которые выгружаются на сайт.
Есть ФормаЭлемента, в которой существует реквизит "Описание". Судя по всему, в коде используется JS, который форматировал текст в пригодный для выгрузки на сайт.

После обновления, при записи, вылетает ошибка {Справочник.CMS1C_Категории.Форма.ФормаЭлемента.Форма(45)}: Значение не является значением объектного типа (Closed).
Т.е. изменения реквизита объекта справочника CMS1C_Категории, не сохраняется.

Участок кода отвечающий за сохранение.

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ЗаписатьИзображения();
    ЗаполнитьТЧКатегорииПоФильтрам();
    ЗаполнитьСтрокуConditions();
    #Если Не ВебКлиент Тогда
        Попытка    
            // Если данные в редакторе "TinyMCE" не изменялись, получить текст мы не можем.
            Если Не Элементы.ОписаниеHTML.Документ.parentWindow.Closed Тогда
                ТекстСообщения = Элементы.ОписаниеHTML.Документ.parentWindow.eval ("tinyMCE.activeEditor.getContent()");            
            КонецЕсли;
        Исключение
            ТекстСообщения = Неопределено;
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        
        Если ТекстСообщения = Неопределено Тогда
            Возврат;
        КонецЕсли;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. na688 29.01.21 13:38 Сейчас в теме +0.82 $m
Попробуйте вместо parentWindow DefaultView
и вместо eval теперь тоже надо по-другому: Элементы.ОписаниеHTML.Document.DefaultView.НазваниеМетодаJS();
т.е. как-то так:

Если Не Элементы.ОписаниеHTML.Документ.DefaultView.Closed Тогда
    ТекстСообщения = Элементы.ОписаниеHTML.Документ.DefaultView.tinyMCE.activeEditor.getContent();
КонецЕсли;

7. na688 29.01.21 21:51 Сейчас в теме
(6) Так не срабатывает?

Body.Документ.DefaultView.CKEDITOR.instances.editor1.setData( '"+html+"', function()
    |{
    |    this.checkDirty();  // true
    |});
8. OMOIVA 01.02.21 09:54 Сейчас в теме
Вот так заработало:
Body.Документ.DefaultView.CKEDITOR.instances.editor1.setData( html , "function()
    |{
    |    this.checkDirty();  // true
    |});");
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. OMOIVA 29.01.21 12:34 Сейчас в теме
Так же, есть внешняя обработка, которая так же работала до обновления.
Обработка предназначена для форматирования описания товара.

Ошибка обработки:

{ВнешняяОбработка.HTMLредактор.МодульОбъекта(148)}: Значение не является значением объектного типа (Eval)
    Body.Документ.parentWindow.Eval("CKEDITOR.instances.editor1.setData( '"+html+"', function()
3. ZergKRSK 130 29.01.21 12:58 Сейчас в теме
По этой причине никогда не бегу ставить суперновую платформу...
4. na688 29.01.21 13:38 Сейчас в теме +0.82 $m
Попробуйте вместо parentWindow DefaultView
и вместо eval теперь тоже надо по-другому: Элементы.ОписаниеHTML.Document.DefaultView.НазваниеМетодаJS();
т.е. как-то так:

Если Не Элементы.ОписаниеHTML.Документ.DefaultView.Closed Тогда
    ТекстСообщения = Элементы.ОписаниеHTML.Документ.DefaultView.tinyMCE.activeEditor.getContent();
КонецЕсли;

5. OMOIVA 29.01.21 13:46 Сейчас в теме
Огромное спасибо, Ваш код работает.
6. OMOIVA 29.01.21 13:50 Сейчас в теме
Микроскопическая просьба, как победить это?

Процедура УстановитьКодHtmlJS(Знач html, мBody) Экспорт 
    
    Body = мBody;
    
    html = СтрЗаменить(html,Символы.ПС," ");        
    
    Body.Документ.parentWindow.Eval("CKEDITOR.instances.editor1.setData( '"+html+"', function()
    |{
    |    this.checkDirty();  // true
    |});");    
    
КонецПроцедуры

Показать


Текст ошибки:
{ВнешняяОбработка.HTMLредактор.МодульОбъекта(148)}: Значение не является значением объектного типа (Eval)
Body.Документ.parentWindow.Eval("CKEDITOR.instances.editor1.setData( '"+html+"', function()
7. na688 29.01.21 21:51 Сейчас в теме
(6) Так не срабатывает?

Body.Документ.DefaultView.CKEDITOR.instances.editor1.setData( '"+html+"', function()
    |{
    |    this.checkDirty();  // true
    |});
8. OMOIVA 01.02.21 09:54 Сейчас в теме
Вот так заработало:
Body.Документ.DefaultView.CKEDITOR.instances.editor1.setData( html , "function()
    |{
    |    this.checkDirty();  // true
    |});");
9. user1973113 30.07.23 12:27 Сейчас в теме
(7)здравствуйте, вот у меня тоже не сохраняются изображения и описание, выгружаю на сайт ничего нет, а как эти коды делать и куда вписывать))))))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот