Меню

Ошибка при вызове конструктора описаниеоповещения не найден экспортируемый метод

Не найден экспортируемый метод: ВыборКодаЗавершение

Я
   TolstiyBeremenniy

14.09.18 — 07:12

У формы записи регистра сведений делаю подбор, у одного поля.

По подобию подбора в типовом документе. Но выходит ошибка

{РегистрСведений.КоэффициентыРасчетаЗемельногоНалога.Форма.ФормаЗаписи.Форма(19)}: Ошибка при вызове конструктора (ОписаниеОповещения)

    ОповещениеОЗакрытии = Новый ОписаниеОповещения(«ВыборКодаЗавершение», ЭтотОбъект.Запись, ДополнительныеПараметры);

по причине:

Не найден экспортируемый метод: ВыборКодаЗавершение

Эта процедура же есть в модуле, почему ругается?

&НаКлиенте

Процедура КодКатегорииЗемельНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ВыборКода(«КодКатегорииЗемель», «КатегорииЗемельныхУчастков»);

КонецПроцедуры

&НаКлиенте

Процедура ВыборКода(ИмяКода, НазваниеМакета)

    СтандартнаяОбработка = Ложь;

    ПараметрыФормы = Новый Структура;

    ПараметрыФормы.Вставить(«ТипОбъекта»,      «РегистрСведений»);

    ПараметрыФормы.Вставить(«НазваниеОбъекта», «РегистрацияЗемельныхУчастков»);

    ПараметрыФормы.Вставить(«НазваниеМакета»,  НазваниеМакета);

    ПараметрыФормы.Вставить(«ТекущийПериод»,   ЭтотОбъект.Запись.Период);

    ПараметрыФормы.Вставить(«ТекущийКод»,      ЭтотОбъект.Запись[ИмяКода]);

    ДополнительныеПараметры = Новый Структура;

    ДополнительныеПараметры.Вставить(«ИмяКода», ИмяКода);

    ОповещениеОЗакрытии = Новый ОписаниеОповещения(«ВыборКодаЗавершение», ЭтотОбъект.Запись, ДополнительныеПараметры);

    ОткрытьФорму(«ОбщаяФорма.ФормаВыбораКода», ПараметрыФормы,,,,,ОповещениеОЗакрытии);

КонецПроцедуры

&НаКлиенте

Процедура ВыборКодаЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт

    ИмяКода      = ДополнительныеПараметры.ИмяКода;

    ВыбранныйКод = РезультатЗакрытия;

    Если ВыбранныйКод <> Неопределено Тогда

        Модифицированность  = Истина;

        ЭтотОбъект.Запись[ИмяКода] = ВыбранныйКод;

    КонецЕсли;

КонецПроцедуры

   TolstiyBeremenniy

1 — 14.09.18 — 07:39

Подскажете по вопросу? Я чего то не вижу или недопонимаю. Процедура есть, а ОписаниеОповещения её не видит?

   Mankubus

2 — 14.09.18 — 07:45

(0) >>ОповещениеОЗакрытии = Новый ОписаниеОповещения(«ВыборКодаЗавершение», ЭтотОбъект.Запись, ДополнительныеПараметры);

Зачем здесь «ЭтотОбъект.Запись»? Напиши ЭтаФорма

   TolstiyBeremenniy

3 — 14.09.18 — 07:51

(2) Этот код я взял с формы одного типового документа.

Тым везде было Объект. В форме регистра сведений на Объект

шла ошибка. Я написал везде ЭтотОбъект. А ЭтотОбъект.Запись,

так как у регистра сведений значения полей тут хранятся.

Пока ещё не запустил этот код.

Сейчас попробую написать ЭтаФорма.

   TolstiyBeremenniy

4 — 14.09.18 — 08:01

Все равно ошибка ((((( Что нужно поправить? Что не так?

{РегистрСведений.КоэффициентыРасчетаЗемельногоНалога.Форма.ФормаЗаписи.Форма(19)}: Ошибка при вызове конструктора (ОписаниеОповещения)

    ОповещениеОЗакрытии = Новый ОписаниеОповещения(«ВыборКодаЗавершение», ЭтаФорма, ДополнительныеПараметры);

по причине:

Не найден экспортируемый метод: ВыборКодаЗавершение

   TolstiyBeremenniy

5 — 14.09.18 — 08:06

Что не так????

&НаКлиенте

Процедура КодКатегорииЗемельНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ВыборКода(«КодКатегорииЗемель», «КатегорииЗемельныхУчастков»);

КонецПроцедуры

&НаКлиенте

Процедура ВыборКода(ИмяКода, НазваниеМакета)

    СтандартнаяОбработка = Ложь;

    ПараметрыФормы = Новый Структура;

    ПараметрыФормы.Вставить(«ТипОбъекта»,      «РегистрСведений»);

    ПараметрыФормы.Вставить(«НазваниеОбъекта», «РегистрацияЗемельныхУчастков»);

    ПараметрыФормы.Вставить(«НазваниеМакета»,  НазваниеМакета);

    ПараметрыФормы.Вставить(«ТекущийПериод»,   ЭтотОбъект.Запись.Период);

    ПараметрыФормы.Вставить(«ТекущийКод»,      ЭтотОбъект.Запись[ИмяКода]);

    ДополнительныеПараметры = Новый Структура;

    ДополнительныеПараметры.Вставить(«ИмяКода», ИмяКода);

    ОповещениеОЗакрытии = Новый ОписаниеОповещения(«ВыборКодаЗавершение», ЭтаФорма, ДополнительныеПараметры);

    ОткрытьФорму(«ОбщаяФорма.ФормаВыбораКода», ПараметрыФормы,,,,,ОповещениеОЗакрытии);

КонецПроцедуры

&НаКлиенте

Процедура ВыборКодаЗавершение(РезультатЗакрытия, ДополнительныеПараметры)

    ИмяКода      = ДополнительныеПараметры.ИмяКода;

    ВыбранныйКод = РезультатЗакрытия;

    Если ВыбранныйКод <> Неопределено Тогда

        Модифицированность  = Истина;

        ЭтотОбъект.Запись[ИмяКода] = ВыбранныйКод;

    КонецЕсли;

КонецПроцедуры

   Остап Сулейманович

6 — 14.09.18 — 08:11

(5) Вот здесь :

Процедура ВыборКодаЗавершение(РезультатЗакрытия, ДополнительныеПараметры)

нет слова Экспорт

   TolstiyBeremenniy

7 — 14.09.18 — 08:23

И так тоже ошибка ((((((

{РегистрСведений.КоэффициентыРасчетаЗемельногоНалога.Форма.ФормаЗаписи.Форма(19)}: Ошибка при вызове конструктора (ОписаниеОповещения)

    ОповещениеОЗакрытии = Новый ОписаниеОповещения(«ВыборКодаЗавершение», ЭтотОбъект, ДополнительныеПараметры);

по причине:

Не найден экспортируемый метод: ВыборКодаЗавершение

(6) Оно было, я его убрал. Убрал так как ошибка шла, не знал что менять. Сейчас верну.

   TolstiyBeremenniy

8 — 14.09.18 — 08:28

(6) Да, спасибо! Если я не ошибаюсь пошло! Забыл я про это слово Экспорт. Но почему первый раз с ним не работало не понятно.

   Пробел

9 — 14.09.18 — 08:33

В первый раз не пошло из-за «ЭтотОбъект.Запись», во второй из-за Экспорта)

Вторым параметром указывается модуль, откуда будет вызвана процедура, а Вы указали какой-то реквизит объекта.

   TolstiyBeremenniy

10 — 14.09.18 — 08:35

(9) Понятно. Спасибо. Методом проб и ошибок делал.

  

TolstiyBeremenniy

11 — 14.09.18 — 14:51

(9) В документе нужно писать Объект

и Экспорт есть

вот я и не пойму

ОписаниеОповещения — объект встроенного языка 1С:Предприятия, указывающий на процедуру, в которой будет продолжено исполнение кода при наступлении определенного события.

Вслед за браузерами, которые отказались от модальности, технологической платформе пришлось перейти на асинхронную работу клиентской части. Необходимо это было для поддержки веб-клиента.

Ведь формы выбора файлов, вопросов, предупреждений, ввода значений, да и зачастую формы, от результата работы в которых зависит дальнейший ход событий, были модальными.

Основным инструментом отказа от модальности стало ОписаниеОповещения.

Содержание

  1. Как работает ОписаниеОповещения
  2. Синтаксис
  3. Вызываемая процедура и её параметры
  4. Выполнение обработки оповещения
  5. Работа на сервере
  6. Возможные ошибки
  7. Не найден экспортируемый метод
  8. Количество параметров 1. Ожидаемое количество – 2
  9. Примеры использования ОписаниеОповещения
  10. Оповещение о закрытии формы
  11. Ввод значений и предупреждения
  12. Проверка существования файла и передача описания оповещения через дополнительные параметры

Как работает ОписаниеОповещения

Для начала разберем как работает платформа с модальными окнами на примере метода Вопрос(). Напишем не хитрый код, в котором пользователю показывается диалог с вопросом и вариантами ответа Да и Нет.

Процедура ВыполнитьКоманду(Команда)
	
    Ответ = Вопрос("Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет);
	
    Если Ответ = КодВозвратаДиалога.Нет Тогда	 
        Возврат;
    КонецЕсли;
	
    // Алгоритм заполнения
	
КонецПроцедуры

В данном случае пользователю будет показан диалог, а работа клиентской части будет полностью приостановлена до момента, пока пользователь не ответит на вопрос.

Диалог с ОписаниеОповещения

Тогда результат поместится в переменную Ответ и только после этого работа клиентской части будет возобновлена для выполнения алгоритма заполнения.

Напишем аналогичный пример, но уже без модального вызова. Будем использовать метод ПоказатьВопрос(), которому передадим ОписаниеОповещения.

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

&НаКлиенте
Процедура ОбработатьОтветПользователя(Ответ, ДополнительныеПараметры) Экспорт 
	
    Если Ответ = КодВозвратаДиалога.Нет Тогда	 
        Возврат;
    КонецЕсли;
	
    // Алгоритм заполнения
	
КонецПроцедуры	

Пользователь не заметит разницы, ведь будет показан точно такой же диалог с вопросом. Но исполнение кода не будет приостановлено, вместо этого будет исполнен дальнейший алгоритм и будет завершена работа текущей процедуры.

После ответа пользователя будет вызвана процедура ОбработатьОтветПользователя(), которую мы указали в конструкторе ОписаниеПоповещения и только тогда будет выполнен алгоритм заполнения.

Описание функционала от разработчиков на ИТС

Синтаксис

Конструктор ОписаниеОповещения имеет 5 необязательных параметров:

Новый ОписаниеОповещения(<ИмяПроцедуры>, <Модуль>, <ДополнительныеПараметры>, <ИмяПроцедурыОбработкиОшибки>, <МодульОбработкиОшибки>)

ИмяПроцедуры — Имя экспортируемой процедуры, которая будет вызвана;

Модуль — Модуль в котором расположена вызываемая процедура. Могут быть указаны Форма, Общий модуль, Команда командного интерфейса;

ДополнительныеПараметры — Произвольное значение, которое будет передано в вызываемую процедуру последним параметром;

ИмяПроцедурыОбработкиОшибки — Имя экспортируемой процедуры, которая будет вызвана в случае ошибки;

МодульОбработкиОшибки — Модуль в котором расположена вызываемая процедура в случае ошибки. Могут быть указаны Форма, Общий модуль, Команда командного интерфейса.

Вызываемая процедура и её параметры

Вызываемая процедура должна быть экспортируемой, и в самом простом случае содержать два параметра Результат и ДополнительныеПараметры.

&НаКлиенте
Процедура ПроцедураОбработкиОповещения(Результат, ДополнительныеПараметры) Экспорт 
	
    Если Результат = Неопределено Тогда 
        Возврат;
    КонецЕсли;
	
    // Код для обработки результата
	
КонецПроцедуры

В зависимости от объекта в котором используется ОписаниеОпопвещения, количество параметров вызываемой процедуры может меняться.

Например вызываемая процедура для обработки оповещения метода глобального контекста НачатьПомещениеФайла() должна иметь 4 параметра.

Для избежания ошибок обращайтесь к Синтаксис-помощнику, там описано количество и порядок необходимых параметров.

Выполнение обработки оповещения

В платформе реализован метод  ВыполнитьОбработкуОповещения(), для возможности непосредственного выполнения обработки оповещения.

Методу в качестве параметра необходимо передать ОписаниеОповещения, которое будет выполнено. Так же можно передать в процедуру обработки произвольный результат вторым необязательным параметром.

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

&НаКлиенте
Процедура ОбработатьОтветПользователя(Ответ, ДополнительныеПараметры) Экспорт 
	
    Если Ответ = КодВозвратаДиалога.Нет Тогда	 
        Возврат;
    КонецЕсли;
	
    // Алгоритм заполнения
	
КонецПроцедуры

Работа на сервере

ОписаниеОповещения не доступно на сервере, но в качестве исполняемой процедуры можно указать серверный метод. В справке нет явного указания о данной возможности, но и противоречий нет.

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

КонецПроцедуры

&НаСервере
Процедура ПослеПодбора(РезультатЗакрытия, ДополнительныеПараметры) Экспорт 
		
    Если Не РезультатЗакрытия = Неопределено Тогда 
	Возврат;
    КонецЕсли;	
	
// Обработка результата выбора
	
КонецПроцедуры

Возможные ошибки

Не найден экспортируемый метод

Если вызываемая процедура не экспортная, то при исполнении будет вызвано исключение. Решается указанием экспортной процедуры.

Не найден экспортируемый метод

Количество параметров 1. Ожидаемое количество – 2

Если вызываемая процедура будет объявлена с одним параметром, то при исполнении будет вызвано исключение. Решается добавлением второго параметра в вызываемую процедуру.

Количество параметров 1. Ожидаемое количество – 2

Примеры использования ОписаниеОповещения

ОписаниеОповещения может использоваться во множестве сценариев, например обработка результата открытия форм, диалог выбора файла, работа с файлами, чтение и запись данных, работа с табличными и текстовыми документами. Разберем некоторые из них.

Оповещение о закрытии формы

Реализуем функционал открытия формы подбора с дальнейшей обработкой результата

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

&НаКлиенте
Процедура ПослеПодбора(РезультатЗакрытия, ДополнительныеПараметры) Экспорт 
	
    Если РезультатЗакрытия = Неопределено Тогда 
	Возврат;
    КонецЕсли;
	
    // Код для обработки результата подбора
	
КонецПроцедуры

Ввод значений и предупреждения

Реализуем функционал ввода числа. После ввода выполним проверку на четность введенного числи, если число не четное выведем предупреждение

&НаКлиенте
Процедура ВвестиЧетноеЧисло(Команда)

    Оповещение	= Новый ОписаниеОповещения("ПослеВводаЧисла", ЭтаФорма);
    Подсказка	= "Введите четное число";
    ПоказатьВводЧисла(Оповещение, , Подсказка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаЧисла(ВведенноеЧисло, ДополнительныеПараметры) Экспорт 

    // Если пользователь откажется от ввода вернется Неопределено	
    Если ВведенноеЧисло = Неопределено Тогда	 
        Возврат;
    КонецЕсли;
	
    ЧислоЧетное = ВведенноеЧисло % 2 = 0;
	
    Если Не ЧислоЧетное Тогда
        // Первый параметр не обязателен. Если не надо обрабатывать
        // завершение предупреждения просто не заполняем 
	ПоказатьПредупреждение( , "Введено не четное число");
    КонецЕсли;	
	
КонецПроцедуры

Проверка существования файла и передача описания оповещения через дополнительные параметры

При работе на стороне клиента, например с оборудованием, логику работы системы можно организовать при помощи оповещений. Можно передавать ОписаниеОповещения в качестве следующего шага, ветвления логики или вызывать одно оповещение из нескольких мест.

Разработаем функционал проверки существования файла. В модуле реализована процедура для централизованной обработки ошибок ОповеститьОбОшибке(), будем передавать ОписаниеОповещения об ошибке через дополнительные параметры.

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

Обработаем результат проверки существования файла. Если файл не существует, выполним обработку оповещения переданного через дополнительные параметры

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

Процедура для централизованной обработки ошибок

&НаКлиенте
Процедура ОповеститьОбОшибке(ТекстОшибки, ДополнительныеПараметры) Экспорт 
	
    // Сообщим об ошибке
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ТекстОшибки;
    Сообщение.Сообщить();

    // Код для дальнейшей обработки ошибки
	
КонецПроцедуры

Ошибка в конфигураторе 1С Конструктор не найден Новый ОписаниеОповещения(«ВыборКонтрагента»); (Проверка: Тонкий клиент)

Описание ошибки:
Конструктор не найден
ОповещениеВыборКонтрагента = Новый <

>ОписаниеОповещения(«ВыборКонтрагента»); (Проверка: Тонкий клиент)
Файловая база. Релиз платформы 1С: Предприятие 8.3.16.1148

Найденные решения:

1C 8 ошибка в конфигураторе Форма.ФормаСписка.Форма(139,37)}: Конструктор не найден Новый ОписаниеОповещения

Кажется, что все сделано верно — конструктор ОписаниеОповещения на клиенте, указано имя экспортной процедуры, выполняемой на клиенте, тут же в модуле. Если верить информации в синтакс-помощнике, то второй и первый параметры конструктора оповещения являются необязательными. Для первого парамера конструктора «необязательность» кажется странной, но для второго параметра вполне нормальной практикой на примере подобных конструкторов в 1С является то, что он «необязательный».

1C 8 описание в синтакс помощнике конструктора ОписаниеОповещения

Но, как выясняется на практике, не такой уж и необязательный второй параметр конструктора «Новый ОписаниеОповещения». Очень даже обязательный. После указания в качестве параметра переменной «ЭтаФорма» конфигуратор не выводит ошибку и код в дальнейшем работает исправно. Еще раз обращу внимание еще на то, что параметр «ИмяПроцедуры» — должно быть указано имя экспортной процедуры, т.е. после имени процедуры в модуле должно быть зарезервированное слово «Экспорт«.

1с 8 конструктор описаниеоповещения ошибка Конструктор не найден

Видео практического примера:

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

21-10-2020

Журавлев А.С.
(Сайт azhur-c.ru)

432286

0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

1

Подключение и открытие внешней обработки

03.12.2022, 14:06. Показов 1059. Ответов 22

Метки нет (Все метки)


Всем привет!

Возникла такая проблема!
Есть ряд обработок и внешних печатных, которые периодически дорабатываются и изменяются (обусловлено спицификой производства). База у нас сетевая и чтобы внести данные в рабочую базу из тестовой, приходится всех выгонять, блокировать и вносить изменения.
Я попытался подгружать обработки через справочник ВнешнихОбработок, добавить в справочник получилось, а вот как вызвать открытие формы этой обработки при нажатии, к примеру, ссылки с рабочего стола — не знаю как!

Нашел код который по идее подгружает с диска Обработку во Хранилище, а затем через Сервер ее запускает, так при нажатии на кнопку выдается ошибка.
Сам код представлен ниже:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// *********** Модули открытия внешних ОБРАБОТОК ***********************
 
// Этап 3. Подключение внешней обработки из временного хранилища
Функция ПодключитьВнешнююОбработкуНаСервере(АдресХранилища)
 
    Возврат ВнешниеОбработки.Подключить(АдресХранилища);
 
КонецФункции
 
Процедура ПоместитьФайлВХранилищеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
 
    // Этап2. Передача адреса временного хранилища на сервер для подключения обработки
    ИмяВнешнейОбработки = ПодключитьВнешнююОбработкуНаСервере(Адрес);
    // Этап 4. Откроем форму подключенной внешней обработки
    ОткрытьФорму("ВнешняяОбработка." + ИмяВнешнейОбработки + ".Форма");
 
КонецПроцедуры
 
Процедура ОбработкиНажатие(Элемент)
    
    ТекССылка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("СклейкаNew");
    
    // Создание описания оповещения. В указанную процедуру будет передано управление 
    // после помещения файла во временное хранилище
    Оповещение = Новый ОписаниеОповещения("ПоместитьФайлВХранилищеЗавершение", ЭтотОбъект);
    
    // Этап 1. Помещение обработки во временное хранилище
    НачатьПомещениеФайла(Оповещение, , "\192.168.1.6eDCGPablicДиз1С обработки1С_АбсолютОбработкиСклейкаNEW.epf", Ложь);
    
    
КонецПроцедуры

А ошибка выглядит так:

1C
1
2
3
4
{Обработка.РабочийСтол.Форма.Форма.Форма(899)}: Ошибка при вызове конструктора (ОписаниеОповещения)
    Оповещение = Новый ОписаниеОповещения("ПоместитьФайлВХранилищеЗавершение", ЭтотОбъект);
по причине:
Не найден экспортируемый метод: ПоместитьФайлВХранилищеЗавершение

Может кто подскажет как решить данную проблему!
А то очень нужно, а я уже больше месяца не могу найти решение!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



364 / 169 / 73

Регистрация: 04.03.2020

Сообщений: 649

03.12.2022, 14:23

2

Укажите процедурам, где &НаСервере, а где &НаКлиенте



0



432286

0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

03.12.2022, 16:06

 [ТС]

3

данный код написан в модуле рабочего стола, а там кажется общие формы
и если я прописываю НаКлиенте и НаСервере, ругается на:

1C
1
2
{Обработка.РабочийСтол.Форма.Форма.Форма(889,24)}: Процедура или функция с указанным именем не определена (ПодключитьВнешнююОбработкуНаСервере)
    ИмяВнешнейОбработки = <<?>>ПодключитьВнешнююОбработкуНаСервере(Адрес);



0



260 / 216 / 94

Регистрация: 07.04.2011

Сообщений: 1,334

04.12.2022, 10:08

4

Посмотрите тут.Возможно решение есть подходящее.Поковыряться надо
Открывается общая форма обработок,а при нажатии открывается конкретная внешняя обработка.



0



1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,076

Записей в блоге: 1

04.12.2022, 11:16

5

внешние обработки встраиваются и доступны через меню дополнительно — доп обработки в том разделе, где укажешь.
зачем вы велосипеды предлагаете?
пишешь 3 функции стандартных . пишешь обработчик. всё. обработка готова к употреблению.



0



432286

0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

05.12.2022, 10:17

 [ТС]

6

Я загрузил ВнешОбр в справочник ВнешнихОбработок, получил данные обработки из Хранилища данных.
Только вот теперь нужно открыть саму форму и передать этой форме параметр ССылкаНаОбъект.
Но вот в этом и загвозка, не получается
Вот код команды:

1C
1
2
3
4
5
6
    ТекССылка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("СклейкаNew");
    Данные = ТекССылка.ХранилищеВнешнейОбработки.Получить();
    ИмяФайла = ПолучитьИмяВременногоФайла("epf");
    Данные.Записать(ИмяФайла);
    Обработка  = ВнешниеОбработки.Создать(ИмяФайла);
    Форма      = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);

Реквизит Обработка перечень реквизитов получает, а вот Форма не открывается.

Может кто подскажет, как это правильно сделать? Очень нужно!



0



1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,076

Записей в блоге: 1

05.12.2022, 12:30

7

а открыть форму с помощью открытьформу не пробовали?



0



0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

05.12.2022, 12:58

 [ТС]

8

Проблема может еще заключаться в том что приложение обычное, а обработки управляемые
Из-за этого может не запускаться обработка?

Добавлено через 17 минут
через ОткрытьФорму, она открывается нормально, мне нужно чтобы она открывалась либо с диска как файл *.epf,
либо из справочника внешних обработок.
Производство большое и работает 24/7 и постоянно выгонять народ из сетевой базы не вариант.
Нужно чтобы изменения внес, в файл сохранил и автоматически подгрузилась обработка с изменениями.



0



1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,076

Записей в блоге: 1

05.12.2022, 13:45

9

Цитата
Сообщение от 432286
Посмотреть сообщение

приложение обычное, а обработки управляемые

так формы должны быть обычные

администрирование — дополнительные отчеты и обработки
добавить из файла
встраиваете и оно работает. не надо никого никуда выгонять.

Миниатюры

Подключение и открытие внешней обработки
 



0



432286

0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

05.12.2022, 13:47

 [ТС]

10

Это какой-то трешь!!!
ПОМОГИТЕ пожалуйста, ничего не получается. Не могу понять!
Вроде обработку из справочника получает. Пробовал и обычную и управляемую форму делать.
Результат не открывает форму обработки

1C
1
2
3
4
5
6
7
8
9
10
11
&НаКлиенте
Процедура ПриОткрытии(Отказ)
 
    ТекССылка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("СклейкаNew");
    Данные = ТекССылка.ХранилищеВнешнейОбработки.Получить();
    ИмяФайла = ПолучитьИмяВременногоФайла("epf");
    Данные.Записать(ИмяФайла);
    Обработка  = ВнешниеОбработки.Создать(ИмяФайла);
    Форма = ВнешниеОбработки.ПолучитьФорму(Обработка,"ПланеркаПечатьОб",,);
 
КонецПроцедуры

Обработка имеет значение — ВнешняяОбработкаОбъект.Склейка
Пишет:

1C
1
2
3
4
5
6
{Обработка.ОткрытьОбработку.Форма.ОткрытьОбработку.Форма(34)}: Ошибка при вызове метода контекста (ПолучитьФорму)
    Форма = ВнешниеОбработки.ПолучитьФорму(Обработка,"ПланеркаПечатьОб",,);  
по причине:
Ошибка подключения внешних метаданных
по причине:
Файл не обнаружен 'ВнешняяОбработкаОбъект.Склейка'. 2(0x00000002): Не удается найти указанный файл.

Пытаюсь загрузить форму с сетевого диска, то же не получается

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаКлиенте
Процедура ПриОткрытии(Отказ)   
    
    //Помещаем обработку во временном хранилище
    АдресХранилища = "";
    Результат = ПоместитьФайл(АдресХранилища, "\192.168.1.6eDCGPablicДиз1С обработки1С_АбсолютОбработкиПланеркаПечатьОб.epf", , Ложь);
    ИмяОбработки = ПодключитьОбработку(АдресХранилища);
    
    //Форма = ВнешниеОбработки.ПолучитьФорму(ИмяОбработки,"ПланеркаПечатьОб",,);
 
    ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");
 
    
    Сообщить("!");
    
КонецПроцедуры

Пишет ошибку:

1C
1
2
3
4
{Обработка.ОткрытьОбработку.Форма.ОткрытьОбработку.Форма(43)}: Ошибка при вызове метода контекста (ОткрытьФорму)
    ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");
по причине:
Получение управляемой формы внешней обработки/отчета для обычного режима работы приложения не поддерживается

Пожалуйста, ПОМОГИТЕ! Уже не знаю как что, но очень нужно добить!
Уже не важно Управляемые или Обычные формы



0



Bit_Man

476 / 390 / 111

Регистрация: 24.04.2012

Сообщений: 1,618

Записей в блоге: 3

05.12.2022, 19:01

11

Лучший ответ Сообщение было отмечено 432286 как решение

Решение

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Ссылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("", Истина);
 
ИмяОбработки = ПолучитьИмяВременногоФайла();
ХранилищеОбработки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ХранилищеОбработки");
ДвоичныеДанные = ХранилищеОбработки.Получить();
ДвоичныеДанные.Записать(ИмяОбработки);
 
Вид = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Вид");
Если Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет
    Или Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
    Менеджер = ВнешниеОтчеты;
Иначе
    Менеджер = ВнешниеОбработки;
КонецЕсли;
 
ВнешняяОбработка = Менеджер.Создать(ИмяОбработки);
ФормаОбработки = ВнешняяОбработка.ПолучитьФорму("Форма");
Если ФормаОбработки <> Неопределено Тогда
    ФормаОбработки.Открыть();
КонецЕсли;

Добавлено через 3 минуты
Это под толстого клиента



1



432286

0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

06.12.2022, 00:56

 [ТС]

12

У меня толстый клиент, но при отладки выдает ошибку

1C
1
2
3
4
5
{ОбщийМодуль.ОбщегоНазначения.Модуль(2597)}: Ошибка при вызове метода контекста (Выполнить)
    Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(3, 2)}: Поле не найдено "ХранилищеОбработки"
<<?>>ХранилищеОбработки КАК ХранилищеОбработки

Добавлено через 21 минуту
В итоге после небольшой реконструкции кода, успех был достигнут.
УФ не открывает, а вот обычные формы идут на ура, Придется переделывать УФ на Обычные (((((

Итоговый код выглядит так:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Ссылка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("ПланеркаПечать", Истина);
 
    ИмяОбработки = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные = Ссылка.ХранилищеВнешнейОбработки.Получить();
    ДвоичныеДанные.Записать(ИмяОбработки);
     
    Вид = Ссылка.ВидОбработки;
    Если Вид = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет
      Тогда
        Менеджер = ВнешниеОтчеты;
    Иначе
        Менеджер = ВнешниеОбработки;
    КонецЕсли;
     
    ВнешняяОбработка = Менеджер.Создать(ИмяОбработки);
    ФормаОбработки = ВнешняяОбработка.ПолучитьФорму("ПланеркаПечать");
    Если ФормаОбработки <> Неопределено Тогда
        ФормаОбработки.Открыть();
    КонецЕсли;

Добавлено через 1 час 56 минут
А можно таким же способом вызвать внешнюю печатную форму, если она так же внесена в справочник ВнешниеОбработки?
Если да, то как это можно осуществить, подскажите пожалуйста!?



0



476 / 390 / 111

Регистрация: 24.04.2012

Сообщений: 1,618

Записей в блоге: 3

06.12.2022, 09:56

13

Цитата
Сообщение от 432286
Посмотреть сообщение

УФ не открывает, а вот обычные формы идут на ура, Придется переделывать УФ на Обычные (((((

Так как у тебя конфа на обычных формах (толстый клиент) при установке флага «Использовать УФ» (точно не помню как называется) в конфигурации можно использовать УФ.
Но это не распространяется на элементы справочника «ДополнительныеОтчетыИОбработки».
Т.е. если у тебя доп. обработка на УФ то она не откроется и будет ошибка —

Цитата
Сообщение от 432286
Посмотреть сообщение

Получение управляемой формы внешней обработки/отчета для обычного режима работы приложения не поддерживается

Попробуй использовать расширение и в него добавлять свои обработки. Может всё норм будет (сам не пробовал, поэтому не знаю).

Цитата
Сообщение от 432286
Посмотреть сообщение

А можно таким же способом вызвать внешнюю печатную форму, если она так же внесена в справочник ВнешниеОбработки?

Общих модулей нет «ДополнительныеОтчетыИОбработки…» ? Там всё написано



0



Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

12.12.2022, 13:01

14

Лучший ответ Сообщение было отмечено 432286 как решение

Решение

Цитата
Сообщение от 432286
Посмотреть сообщение

А можно таким же способом вызвать внешнюю печатную форму, если она так же внесена в справочник ВнешниеОбработки?
Если да, то как это можно осуществить, подскажите пожалуйста!?

вместо формы вызываешь функцию печати

1C
1
2
3
ВнешняяОбработка = Менеджер.Создать(ИмяОбработки);
ВнешняяОбработка.СсылкаНаОбъект = СсылкаНаОбъект;
ВнешняяОбработка.Печать();



1



432286

0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

18.12.2022, 16:59

 [ТС]

15

Всем доброго времени суток!

С внешней обработкой получилось, код написанный ранее работает на ура.
Но появилась вот какая проблема:
У меня на этой обработке есть Табличная Часть, которая заполняется запросом при открытии (всю супер), потом эти данные выводятся на печатную форму. Макет этой формы так же находится в этой обработке.
При запуске обработке и вызове печатной формы система выдает ошибку

1C
1
2
{ВнешняяОбработка.ПланеркаПечать.Форма.ПланеркаПечать.Форма(255)}: Поле объекта не обнаружено (ПланеркаПечать)
    Макет = Обработки.ПланеркаПечать.ПолучитьМакет("Роланд");

Подскажите пожалуйста, как вызвать печатную форму из подключаемой внешней обработке?

P.S. Хотя я догадываюсь как! Сделать эту печатную форму внешней печатной формой и вызывать ее из обработке как внешнюю П.Ф с передачей параметров по принципу кода:

1C
1
2
3
ВнешняяОбработка = Менеджер.Создать(ИмяОбработки);
ВнешняяОбработка.СсылкаНаОбъект = СсылкаНаОбъект;
ВнешняяОбработка.Печать();

Тогда как передать таблицу с данными с формы, через параметр и Структуру?



0



delphi_Int

null

52 / 48 / 11

Регистрация: 06.11.2012

Сообщений: 345

19.12.2022, 14:40

16

Цитата
Сообщение от 432286
Посмотреть сообщение

ВнешняяОбработка.Печать()

когда ты будешь тут (в процедуре Печать()), то это будет МО и там будет доступно

1C
1
ПолучитьМакет("Роланд");

Добавлено через 14 минут

Цитата
Сообщение от 432286
Посмотреть сообщение

Тогда как передать таблицу с данными с формы, через параметр и Структуру?

1C
1
2
3
4
5
6
ВнешняяОбработка = Менеджер.Создать(ИмяОбработки);
ВнешняяОбработка.СсылкаНаОбъект = СсылкаНаОбъект;
Если СтруктураФормы <> Неопределено Тогда
      Обработка.Структура = СтруктураФормы;
КонецЕсли;
ВнешняяОбработка.Печать();

в МО внешней обработке в самом верху

1C
1
Перем Структура Экспорт;

и все будет в ажуре



0



0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

19.12.2022, 15:09

 [ТС]

17

То есть все таки через внешнюю печатную форму и структуру с данным на передачу?

Блин!! Ладно буду пробовать, но боюсь у меня на такое практики маловато будет! ((((



0



null

52 / 48 / 11

Регистрация: 06.11.2012

Сообщений: 345

19.12.2022, 15:35

18

Цитата
Сообщение от 432286
Посмотреть сообщение

То есть все таки через внешнюю печатную форму и структуру с данным на передачу?

не совсем. Через модуль объекта внешней обработки. Туда ты передаешь структуру



0



432286

0 / 0 / 0

Регистрация: 30.09.2013

Сообщений: 112

19.12.2022, 16:35

 [ТС]

19

сделал функцию в МО но теперь модуль формы ее не видит совсем

1C
1
2
3
4
5
6
7
8
9
10
11
12
Функция РоландПечать() Экспорт 
    
        // 
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    
    Макет =  ПолучитьМакет("Роланд");
        .........
    
    Возврат ТабДок;
    
КонецФункции

Процедура вызова функции печать на форме:

1C
1
2
3
4
5
6
Процедура КомПанельПечатьРоланд(Кнопка)
    
    ТабДок = РоландПечать(
    ТабДок.Показать();
    
КонецПроцедуры



0



null

52 / 48 / 11

Регистрация: 06.11.2012

Сообщений: 345

19.12.2022, 16:48

20

А еже ли так…

Миниатюры

Подключение и открытие внешней обработки
 



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

19.12.2022, 16:48

20

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при входе мос ру
  • Ошибка при вызове метода контекста записать каталог не обнаружен