Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Вызов экспортной функции

Всем доброго времени суток! Суть проста: есть два документа "План-График" и "Заказ", нужно вызвать экспортную функцию план-графика из модуля заказа. Честно говоря, проблема тривиальна и банальна, но, видимо, что-то идет не так и я уже начинаю терять рассудок......

Код в план-графике:
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
&НаСервере
Функция СформироватьНаСервере() Экспорт
    
    Диаграмма.Очистить();
    Диаграмма.Обновление = Ложь;
    Серия = Диаграмма.УстановитьСерию("Период");
    Серия.Цвет = WebЦвета.Синий;
    Для Каждого СтрокаГрафик из Объект.График Цикл
        Точка = Диаграмма.УстановитьТочку(СтрокаГрафик.НомерСтроки);
        Точка.Расшифровка = СтрокаГрафик.Описание;
        Точка.Текст = СтрокаГрафик.Описание;
        Значение = Диаграмма.ПолучитьЗначение(Точка, Серия);
        Интервал = Значение.Добавить();
        Интервал.Начало = СтрокаГрафик.Дата;
        Интервал.Конец = СтрокаГрафик.ДатаОкончания;
    КонецЦикла;
    
    Диаграмма.Обновление = ИСТИНА;
    
    
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
    
    Картинка = Диаграмма.ПолучитьКартинку(1000, 500, ФорматКартинки.PNG);
    Картинка.Записать(ИмяВременногоФайла);
    
    Возврат ИмяВременногоФайла;
        
КонецФункции
Код в Заказе:
1C
1
2
3
4
5
6
&НаСервере
Функция ПланГрафик()
    Док = Документы.ПланГрафик.НайтиПоРеквизиту("Заказ", Объект.Ссылка).ПолучитьОбъект();
    ВременноеХранилище = Док.СформироватьНаСервере(); 
    Возврат ВременноеХранилище;
КонецФункции
Ошибка:
1C
1
2
{Документ.Заказы.Форма.ФормаДокумента.Форма(256)}: Метод объекта не обнаружен (СформироватьНаСервере)
    ВременноеХранилище = Док.СформироватьНаСервере();
Ответ: GreenkA, В общем, я бросил эту затею(еще до вашего ответа)..... При получении формы выдает ошибку о невозможности произведения интерактивных операций, а в самом модуле объекта диаграмма недоступна.... Теперь я ее просто заново создаю( диаграмма = новый ДиаграммаГанта) и заполняю данными из план-графика по ссылке(в модуле формы заказа).
Вопрос: Вызов экспортной функции из общего модуля при внешнем соединении.

Добрый день, участники форума!
   При решении задачи столкнулась с проблемой. Есть у компании своя база "Почтовик". И захотелось начальству оттуда отправлять уведомления сотрудникам о том, что у них до конца года есть неотгулянный отпуск больше 14 дней.
   Все данные хранятся в ЗУПе. И есть там есть модуль "ОстаткиОтпусков", где есть функция  ОстатокОтпускаСпискаСотрудниковНаДату(МассивСотрудников,ДатаОстатков). Она возвращает таблицу со списком сотрудников и их отпусков (сотрудник - ссылка на справочник). Т.к. все ссылки возвращаются COM-объектом,
в своем общем модуле я добавила функцию, которая вернет точно такую же таблицу, но сотрудник будет текстовым полем.
   И вот после всех подготовительных работ, в своем почтовике я создаю COM-соединение с ЗУПом:
   БазаЗУП = Новый COMОбъект("V83.COMConnector");
   Соединение = БазаЗУП.Connect(СтрокаСоединения);
   Дальше пытаюсь вызвать свою процедуру:
   Таблица = Соединение.ПолучитьОстатокОтпускаСпискаСотрудниковНаДатуДляПочтовика ().
   К базе подключается, но при вызове процедуры говорит: "Ошибка инициализации модуля. Переменная режимДиалогаВопрос" не определена.
   Очень мало работала с COM-соединением, поэтому не могу найти решение. В гугле есть похожая информация, но мне не помогает (например, галочки в свойствах модуля).
   Заранее спасибо за помощь!
Ответ: () Прошу прощения, ошибка со ссылкой - плод моей невнимательности (колонка по-другому называется).
Вопрос: Ошибка "Метод объекта не обнаружен" при вызове экспортной процедуры модуля документа из мо

Из модуля обработки идет вызов экспортной процедуры ЗаполнитьУсловияПродажПоCоглашению() модуля документа АктВыполненыхРабот.
При этом возникает ошибка "Метод объекта не обнаружен". Процедура ЗаполнитьУсловияПродажПоCоглашению() с "волшебным" словом Экспорт в модуле документа АктВыполненыхРабот есть. Оба модуля (модуль обработки и модуль документа) выполняются на сервере. Смотрите вложенные файлы. Тогда почему возникла ошибка? Это я что-то неправильно написал или чего-то не понимаю? Или это ошибка платформы 1С? Какие есть идеи как исправить или обойти?

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

Какие есть идеи как исправить или обойти?
Ответ: Всем спасибо!
Вопрос: Обратиться к функции модуля БЕЗ контекста

Имеется внешняя обработка на управляемых формах

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

Можно ли это сделать?
Если да, то как?
Ответ: >нужно в модуле формы обратится к экспортной функции модуля этой обработки без контекста формы

() контекст формы создается только при вызове внутри форменного вызова, если создается объект обработки то, контекста формы там нет, создаешь экземпляр объекта и дергаешь нужную процедуру
Вопрос: Вызов серверной функции с параметром типа УправляемаяФорма

В новых типовых конфигурациях есть серверный модуль РеализацияТоваровИУслугФормы. В этом модуле - функция:
Функция ОбработкаВыбораПодборВставкаИзБуфера(Форма, ВыбранноеЗначение, ИмяТаблицы) Экспорт
Функция вызывается из модуля формы РТиУ, когда выполнен подбор номенклатуры.
Есть ли какой нибудь способ вызвать эту функцию из своей обработки?
Т.е. имеется обработка, которая аналогично обработке Подбора формирует таблицу значений с номенклатурой и количеством, для списка документов реализации.
Хочется подсунуть эту ТЗ в типовую функцию, чтобы корректно отработали все штатные заполнения - при этом пользователь работает только с обработкой, форма документа не открывается.
Конфигурация на поддержке, типовая.

Задача сводится к следующему - как, имея только ссылку на документ, вызвать функцию общего серверного модуля (без возможности вызова с клиента), и передать этой функции форму этого документа?
Ответ: Что ж, похоже задача решения не имеет в рамках нашей вселенной...

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

Если надо воспользоваться стандартными процедурами и функциями типовых конфигураций - надо готовить структуру и наполнять ее используемыми данными, и потом подсовывать вместо УправляемойФормы. Если, конечно, в этом общем модуле не делается потом так:
Форма.УстановитьФункциональныеОпцииФормы();
Т.е. из модуля формы вызывается функция общего модуля, а из функции общего модуля вызывается процедура модуля формы.
Интересно, как разработчики типовых не путаются во всех этих взаимозависимостях?
Вопрос: Вызов процедуры/функции внешней обработки из формы документа

Добрый день!
Есть внешняя обработка, в нем (в модуле объекта) определена функция (СформироватьДокумент).
Как мне из формы документа вызвать эту функцию (СформироватьДокумент), не открывая форму обработки? Подскажите, пожалуйста.
Ответ: () а все разобрался, спасибо)
Вопрос: Вариант запуска «Вызов серверного метода»

Приветствую.
Возникла проблема при Вызов серверного метода внешней обработки. Нужно к УТ11(типовая) подключить внешнюю обработку, которая должна вызываться кнопкой из док. Реализация и после обработка выполняет свои процедуры. Вн. обработка формы не имеет, все процедуры исполняются внутри модуля. На итс нашел пример но не могу осуществить. Может кто сталкивался, помогите плиз.

То что есть на итс:
Для глобальных отчетов и глобальных обработок реализовать экспортную процедуру ВыполнитьКоманду с параметрами ИдентификаторКоманды и ПараметрыВыполненияКоманды, где ПараметрыВыполненияКоманды – структура со свойством ДополнительнаяОбработкаСсылка (ссылка на элемент справочника ДополнительныеОтчетыИОбработки, который связан с данной дополнительной обработкой):

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
  // Реализация логики команды

  Если ИдентификаторКоманды = ... Тогда
    ...
  ИначеЕсли ...
КонецПроцедуры


Для назначаемых обработок типа «Создание связанных объектов» реализовать экспортную процедуру ВыполнитьКоманду с параметрами ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты и ПараметрыВыполненияКоманды:

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты, ПараметрыВыполненияКоманды) Экспорт
  // Реализация логики команды по созданию связанных объектов

  Если ИдентификаторКоманды = ... Тогда
    ...
  ИначеЕсли ...
КонецПроцедуры
Ответ: смотри выше по документации, про функцию СведенияОВнешнейОбработке
Вопрос: Экспортная процедура в модуле управляемого приложения

В книге написано:
Экспортируемые переменные, процедуры или функции модуля управляемого приложения (у которых в заголовке указано ключевое слово Экспорт)
будут доступны:
■ в неглобальных клиентских общих модулях с установленным свойством Клиент (управляемое приложение);

Как вызвать экспортную процедуру модуля управляемого приложения из Общего модуля?
Ответ: И еще если изменять свойства общего модуля среду выполнения, нужно закрыть и заново открыть общий модуль, чтобы был доступ к экспортным процедурам Модуля управляемого приложения. Без этого синтаксическая ошибка.
Вопрос: Как при открытии формы на нее вывести реквизит объекта?

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

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

//но, на форме реквизит объекта КаталогОбменаИнформацией пустой
КонецПроцедуры
Ответ: разобрался.
В конце модуля обработки вызвал эту процедуру
ЗаполненыВсеКонстанты();

и на форме все реквизиты объекта заполнены
Вопрос: Общие функции на клиенте в обработке

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

Нужно что то на подобии общего модуля с отметкой "клиент" для внешней обработки
Ответ:
Сообщение от duk337
Где тот подъезд, в котором суть? Вопрос об одной процедуре, которая стартует из двух модулей форм? Как не было проблемы, так и не удалось её обозначить. Ещё раз будем пробовать?
а то что во внешних обработках нет места где можно хранить экспортные процедур и функции для клиента это не проблема?
в конфигурации можно свободно создать модуль с пометкой клиент и проблем нет, а вот с внешней обработкой тупик.... вернее не тупик, а бесполезное дублирование идинтичного кода