ВЕБ-клиент,Ошибка при вызове метода контекста (КаталогВременныхФайловАсинх)
КА, именно веб-клиент.В документе создал кнопку, при нажатии должен выводиться вордовский документ. В тонком клиенте все работает отлично, но нужно кроме, тонкого клиента, чтобы работало и в вебе. Расширение для работы с файлами для веб-клиента взял из СП, но при нажатии кнопки выскакивает данная ошибка:
Ошибка при вызове метода контекста (КаталогВременныхФайловАсинх)
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(50)}: Обещание = КаталогВременныхФайловАсинх();
по причине:
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(50)}: Расширение для работы с файлами не подключено.
Обещание = КаталогВременныхФайловАсинх();
Также даже без нажатия кнопки в самом документе периодически вылетает данная ошибка:
{CommonModule.эсРаботаСоСтрокамиКлиентСервер.Module(5243,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON)
<<?>>ЗаписатьJSON(ЗаписьJSON, Значение);
Ниже Сам код:
Ошибка при вызове метода контекста (КаталогВременныхФайловАсинх)
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(50)}: Обещание = КаталогВременныхФайловАсинх();
по причине:
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(50)}: Расширение для работы с файлами не подключено.
Обещание = КаталогВременныхФайловАсинх();
Также даже без нажатия кнопки в самом документе периодически вылетает данная ошибка:
{CommonModule.эсРаботаСоСтрокамиКлиентСервер.Module(5243,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON)
<<?>>ЗаписатьJSON(ЗаписьJSON, Значение);
Ниже Сам код:
&НаКлиенте
Асинх Процедура Расш1_СправкаСотрудникуПосле(Команда)
#Если Вебклиент Тогда
Подключить(Истина);
#КонецЕсли
Адрес = ПолучитьСтруктуруДанных();
Обещание = КаталогВременныхФайловАсинх();
ИмяФайла = Ждать Обещание;
Если ИмяФайла = Неопределено Тогда
Возврат;
КонецЕсли;
ДД = ПолучитьИзВременногоХранилища(Адрес);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораФайла",ЭтотОбъект);
ДД.НачатьЗапись(ОписаниеОповещения, ИмяФайла);
ЗапуститьПриложение(ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайла(ДополнительныеПараметры)Экспорт
Если ДополнительныеПараметры = Неопределено Тогда
Сообщить("Что-то другое в доп параметры");
КонецЕсли;
КонецПроцедуры // ПослеВыбораФайла()
&НаСервере
Функция ПолучитьСтруктуруДанных() Экспорт
Макет = Документы.эсЗаданиеСотруднику.ПолучитьМакет("Расш1_МакетДДБезТабл");
Возврат ПоместитьВоВременноеХранилище(Макет);
КонецФункции
&НаКлиенте
Процедура Подключить(УстановитьЕслиНеПодключено) Экспорт
НачатьПодключениеРасширенияРаботыСФайлами(
Новый ОписаниеОповещения(
"ПослеПодключения",
ЭтотОбъект,
УстановитьЕслиНеПодключено));
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключения(Подключено, УстановитьЕслиНеПодключено) Экспорт
Если Подключено Тогда
// Расширение работы с файлами подключено
ИначеЕсли УстановитьЕслиНеПодключено Тогда
НачатьУстановкуРасширенияРаботыСФайлами(
Новый ОписаниеОповещения(
"Подключить",
ЭтотОбъект,
Ложь));
Иначе
// Не удалось установить или подключить
// расширение работы с файлами
КонецЕсли;
КонецПроцедуры
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) НачатьПодключениеРасширенияРаботыСФайлами и НачатьУстановкуРасширенияРаботыСФайлами асинхронные методы. Они не останавливают выполнение кода в методе Расш1_СправкаСотрудникуПосле. Соответственно могут выполняться после вызова КаталогВременныхФайловАсинх. Но так как ошибка уже вызвана, то и они не факт, что отрабатывают даже.
(9) да. вот сюда:
Но я бы сделал отдельную процедуру, куда вынес бы код после Подключить и вызывал бы его из выше указанного места.
И можно убрать проверку
#Если Вебклиент Тогда
Для тонкого клиента подключение нормально отработает. Ничего не подключит и вернет Истину, что подключено.
Если Подключено Тогда
// Расширение работы с файлами подключено
Но я бы сделал отдельную процедуру, куда вынес бы код после Подключить и вызывал бы его из выше указанного места.
И можно убрать проверку
#Если Вебклиент Тогда
Для тонкого клиента подключение нормально отработает. Ничего не подключит и вернет Истину, что подключено.
(4)Переписал код. По ходу Вы правы, потому что при первом нажатии кнопки выдает ошибку, что не установлено расширение работы с файлами, при втором нажатии вылетает ошибка как на скрине
&НаКлиенте
Процедура НачатьПодключениеРасширенияРаботыСФайламиЗавершение(Подключено, ДополнительныеПараметры) Экспорт
Если Не Подключено Тогда
Оповещение = Новый ОписаниеОповещения("НачатьУстановкуРасширенияРаботыСФайламиЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстСообщения = НСтр("ru='Для продолжении работы необходимо установить расширение для веб-клиента ""1С:Предприятие"". Установить?'");
ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет);
Иначе
ВыполнитьОбработкуОповещения(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьУстановкуРасширенияРаботыСФайламиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
НачатьУстановкуРасширенияРаботыСФайлами(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Асинх Процедура Расш1_СправкаСотрудникуПосле(Команда)
Оповещение = Новый ОписаниеОповещения("НачатьПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
Адрес = ПолучитьСтруктуруДанных();
//ИмяФайла = КаталогВременныхФайлов()+"Инструкция по нарядам2.docx";
//Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект);
Обещание = КаталогВременныхФайловАсинх();
ИмяФайла = Ждать Обещание;
Если ИмяФайла = Неопределено Тогда
Возврат;
КонецЕсли;
ДД = ПолучитьИзВременногоХранилища(Адрес);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораФайла",ЭтотОбъект);
ДД.НачатьЗапись(ОписаниеОповещения, ИмяФайла);
//ЗапуститьПриложение(ИмяФайла);
НачатьЗапускПриложения(Новый ОписаниеОповещения("НажатиеЗавершение",ЭтотОбъект),ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура НажатиеЗавершение(КодВозврата, ДополнительныеПараметры) Экспорт
КонецПроцедуры // НажатиеЗавершение()
&НаКлиенте
Процедура ПослеВыбораФайла(ДополнительныеПараметры)Экспорт
Если ДополнительныеПараметры = Неопределено Тогда
Сообщить("Что-то другое в дооп параметры");
КонецЕсли;
КонецПроцедуры // ПослеВыбораФайла()
&НаСервере
Функция ПолучитьСтруктуруДанных() Экспорт
Макет = Документы.эсЗаданиеСотруднику.ПолучитьМакет("Расш1_МакетДДБезТабл");
Возврат ПоместитьВоВременноеХранилище(Макет);
КонецФункции
&НаКлиенте
Процедура НачатьПодключениеРасширенияРаботыСФайламиЗавершение(Подключено, ДополнительныеПараметры) Экспорт
Если Не Подключено Тогда
Оповещение = Новый ОписаниеОповещения("НачатьУстановкуРасширенияРаботыСФайламиЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстСообщения = НСтр("ru='Для продолжении работы необходимо установить расширение для веб-клиента ""1С:Предприятие"". Установить?'");
ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет);
Иначе
ВыполнитьОбработкуОповещения(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьУстановкуРасширенияРаботыСФайламиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
НачатьУстановкуРасширенияРаботыСФайлами(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Асинх Процедура Расш1_СправкаСотрудникуПосле(Команда)
Оповещение = Новый ОписаниеОповещения("НачатьПодключениеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
Адрес = ПолучитьСтруктуруДанных();
//ИмяФайла = КаталогВременныхФайлов()+"Инструкция по нарядам2.docx";
//Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект);
Обещание = КаталогВременныхФайловАсинх();
ИмяФайла = Ждать Обещание;
Если ИмяФайла = Неопределено Тогда
Возврат;
КонецЕсли;
ДД = ПолучитьИзВременногоХранилища(Адрес);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораФайла",ЭтотОбъект);
ДД.НачатьЗапись(ОписаниеОповещения, ИмяФайла);
//ЗапуститьПриложение(ИмяФайла);
НачатьЗапускПриложения(Новый ОписаниеОповещения("НажатиеЗавершение",ЭтотОбъект),ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура НажатиеЗавершение(КодВозврата, ДополнительныеПараметры) Экспорт
КонецПроцедуры // НажатиеЗавершение()
&НаКлиенте
Процедура ПослеВыбораФайла(ДополнительныеПараметры)Экспорт
Если ДополнительныеПараметры = Неопределено Тогда
Сообщить("Что-то другое в дооп параметры");
КонецЕсли;
КонецПроцедуры // ПослеВыбораФайла()
&НаСервере
Функция ПолучитьСтруктуруДанных() Экспорт
Макет = Документы.эсЗаданиеСотруднику.ПолучитьМакет("Расш1_МакетДДБезТабл");
Возврат ПоместитьВоВременноеХранилище(Макет);
КонецФункции
Прикрепленные файлы:
(10) Скажите пожалуйста, чтобы получить именно имя файла в каталоге, тогда нужно сделать так, правильно?
Обещание = КаталогВременныхФайловАсинх()+"Инструкция по нарядам2.docx";
ИмяФайла = Ждать Обещание;
(8) И тогда по идее код ниже уже будет правильным
ДД.НачатьЗапись(ОписаниеОповещения, ИмяФайла);
Обещание = КаталогВременныхФайловАсинх()+"Инструкция по нарядам2.docx";
ИмяФайла = Ждать Обещание;
(8) И тогда по идее код ниже уже будет правильным
ДД.НачатьЗапись(ОписаниеОповещения, ИмяФайла);
(12) Да, на основании ее и сделал, но теперь уже новая ошибка). Благодарю Вас за терпение со мной и помощь)
Преобразование значения к типу Число не может быть выполнено
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(52)}: Обещание = КаталогВременныхФайловАсинх()+"Инструкция по нарядам2.docx";
(12)
Преобразование значения к типу Число не может быть выполнено
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(52)}: Обещание = КаталогВременныхФайловАсинх()+"Инструкция по нарядам2.docx";
(12)
(14) Я совсем тупица( От души благодарю Вас!!! Спасибо Вам за отзывчивость и терпение! Буду разбираться с этим теперь - Только Вы не подсказывайте, если за сегодня не разберусь, тогда если Вы не против, попрошу помощи!)Еще раз благодарю! Также даже без нажатия кнопки в самом документе периодически вылетает данная ошибка:
{CommonModule.эсРаботаСоСтрокамиКлиентСервер.Module(5243,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON)
<<?>>ЗаписатьJSON(ЗаписьJSON, Значение);
(14)
{CommonModule.эсРаботаСоСтрокамиКлиентСервер.Module(5243,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON)
<<?>>ЗаписатьJSON(ЗаписьJSON, Значение);
(14)
(14) НЕ знаю, может, чтобы Вас не беспокоить создать новую тему или это будет лишнее увеличение тем на форуме, не хочется его захламлять. Промониторил все на форумах и в гугле, что могло быть связано с этой ошибкой - При Открытии документа, именно в Веб-клиенте, без нажатия каких-либо кнопок, периодически вылетает данная ошибка:
{CommonModule.эсРаботаСоСтрокамиКлиентСервер.Module(5243,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON)
<<?>>ЗаписатьJSON(ЗаписьJSON, Значение);
Находил, что какие-то процедуры могут не работать на веб-клиенте и из-за этого может ругаться, каких-то ограничений в самой процедуре не нашел по поводу Веб-клиента, попытался делать ограничения типа если #Вебклиент Тогда #КонецЕсли не помогло. Самое важное, что в тонком клиенте нет ошибок, ничего не появляется, а именно в вебе появляется данная ошибка. Пытался еще добавлять процедуру, но тоже не помогло. ниже текущий код. Помогите пожалуйста, в чем может быть проблема, в каком направлении еще рыть?
{CommonModule.эсРаботаСоСтрокамиКлиентСервер.Module(5243,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON)
<<?>>ЗаписатьJSON(ЗаписьJSON, Значение);
Находил, что какие-то процедуры могут не работать на веб-клиенте и из-за этого может ругаться, каких-то ограничений в самой процедуре не нашел по поводу Веб-клиента, попытался делать ограничения типа если #Вебклиент Тогда #КонецЕсли не помогло. Самое важное, что в тонком клиенте нет ошибок, ничего не появляется, а именно в вебе появляется данная ошибка. Пытался еще добавлять процедуру, но тоже не помогло. ниже текущий код. Помогите пожалуйста, в чем может быть проблема, в каком направлении еще рыть?
&НаКлиенте
Процедура Подключить(УстановитьЕслиНеПодключено) Экспорт
НачатьПодключениеРасширенияРаботыСФайлами(
Новый ОписаниеОповещения(
"ПослеПодключения",
ЭтотОбъект,
УстановитьЕслиНеПодключено));
КонецПроцедуры
&НаКлиенте
Асинх Процедура ПослеПодключения(Подключено, УстановитьЕслиНеПодключено) Экспорт
Если Подключено Тогда
Адрес = ПолучитьСтруктуруДанных(); // Расширение работы с файлами подключено
Обещание = КаталогВременныхФайловАсинх();
ИмяКаталога = Ждать Обещание;
ИмяФайла = ИмяКаталога + "Инструкция по нарядам2.docx";
Если ИмяФайла = Неопределено Тогда
Возврат;
КонецЕсли;
ДД = ПолучитьИзВременногоХранилища(Адрес);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораФайла",ЭтотОбъект);
ДД.НачатьЗапись(ОписаниеОповещения, ИмяФайла);
НачатьЗапускПриложения(Новый ОписаниеОповещения("НажатиеЗавершение",ЭтотОбъект),ИмяФайла);
ИначеЕсли УстановитьЕслиНеПодключено Тогда
НачатьУстановкуРасширенияРаботыСФайлами(
Новый ОписаниеОповещения(
"Подключить",
ЭтотОбъект,
Ложь));
Иначе
// Не удалось установить или подключить
// расширение работы с файлами
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НажатиеЗавершение(КодВозврата, ДополнительныеПараметры) Экспорт
КонецПроцедуры // НажатиеЗавершение()
&НаКлиенте
Процедура Расш1_СправкаСотрудникуПосле(Команда)
Подключить(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайла(ДополнительныеПараметры)Экспорт
КонецПроцедуры // ПослеВыбораФайла()
//эсРаботаСоСтрокамиКлиентСервер
&НаСервере
Функция ПолучитьСтруктуруДанных() Экспорт
Макет = Документы.эсЗаданиеСотруднику.ПолучитьМакет("Расш1_МакетДДБезТабл");
Возврат ПоместитьВоВременноеХранилище(Макет);
КонецФункции
&НаКлиенте
Функция СериализоватьВJSON(СериализуемыйОбъект)
#Если ВебКлиент Тогда
СтрокаJSON = СериализоватьВJSONНаСервере(СериализуемыйОбъект);
#Иначе
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
НастройкиСериализации = Новый НастройкиСериализацииJSON();
НастройкиСериализации.СериализовыватьМассивыКакОбъекты = Ложь;
ЗаписатьJSON(ЗаписьJSON, СериализуемыйОбъект, НастройкиСериализации, "ПреобразованиеВJSON", ЭтотОбъект);
СтрокаJSON = ЗаписьJSON.Закрыть();
#КонецЕсли
Возврат СтрокаJSON;
КонецФункции
&НаСервере
Функция СериализоватьВJSONНаСервере(СериализуемыйОбъект)
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
НастройкиСериализации = Новый НастройкиСериализацииJSON();
НастройкиСериализации.СериализовыватьМассивыКакОбъекты = Ложь;
ЗаписатьJSON(ЗаписьJSON, СериализуемыйОбъект);
ЗаписатьJSON(ЗаписьJSON, СериализуемыйОбъект, НастройкиСериализации, "ПреобразованиеВJSON", ЭтотОбъект);
//
// ЭтотОбъект недоступнен в безконтекстном вызове, поэтому нужно либо поместтить эту функцию в общий модуль,
// либо изменить директиву компиляции в &НаСервере
СтрокаJSON = ЗаписьJSON.Закрыть();
Возврат СтрокаJSON;
КонецФункции
Показать
(16)
Ошибка не связана с приведенным кодом. Где-то еще вызывается метод из общего модуля с клиента, в котором и происходит ошибка.
CommonModule это ОбщийМодуль
эсРаботаСоСтрокамиКлиентСервер это имя общего модуля
Module(5243,2) это 5243 строка в тексте модуля и 2 символ в этой строке.
Смотрите что за метод там и кто его вызывает. Можно установить остановка по ошибке в отладчике и по стеку вызовов посмотреть, кто вызвал этот метод.
{CommonModule.эсРаботаСоСтрокамиКлиентСервер.Module(5243,2)}: Процедура или функция с указанным именем не определена (ЗаписатьJSON)
>ЗаписатьJSON(ЗаписьJSON, Значение);
>ЗаписатьJSON(ЗаписьJSON, Значение);
Ошибка не связана с приведенным кодом. Где-то еще вызывается метод из общего модуля с клиента, в котором и происходит ошибка.
CommonModule это ОбщийМодуль
эсРаботаСоСтрокамиКлиентСервер это имя общего модуля
Module(5243,2) это 5243 строка в тексте модуля и 2 символ в этой строке.
Смотрите что за метод там и кто его вызывает. Можно установить остановка по ошибке в отладчике и по стеку вызовов посмотреть, кто вызвал этот метод.
(17) Понял, благодарю Вас!) Буду разбираться! Если не затруднит, не могли бы посмотреть, еще одну тему - Обработка - Значение поля "Склад" не может быть пустым! Часть уже получилось решить, но хотел бы уточнить там по последнему вопросу и как это можно было бы решить, не с помощью метода ОбработатьСтрокуТЧ, а с помощью ОбработатьТЧ?Если я Вас уже достал, Вы скажите пожалуйста, чтобы я Вас не беспокоил больше, ведь Вы уже и так сильно мне помогли много раз!
(17)
(17)
У процедуры ЗаписатьJSON(ЗаписьJSON, Значение) смотрите ограничение на выполнение.
Скорей всего есть ограничение на выполнение в Веб клиенте.
По Расширение для работы с файлами не подключено, смотрите разрешено ли расширение в браузере.
Скорей всего есть ограничение на выполнение в Веб клиенте.
По Расширение для работы с файлами не подключено, смотрите разрешено ли расширение в браузере.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот