|
Вызов экспортной функции из общего модуля при внешнем соединении. | ☑ | ||
---|---|---|---|---|
0
Дарья Чекалова
22.05.17
✎
13:13
|
Добрый день, участники форума!
При решении задачи столкнулась с проблемой. Есть у компании своя база "Почтовик". И захотелось начальству оттуда отправлять уведомления сотрудникам о том, что у них до конца года есть неотгулянный отпуск больше 14 дней. Все данные хранятся в ЗУПе. И есть там есть модуль "ОстаткиОтпусков", где есть функция ОстатокОтпускаСпискаСотрудниковНаДату(МассивСотрудников,ДатаОстатков). Она возвращает таблицу со списком сотрудников и их отпусков (сотрудник - ссылка на справочник). Т.к. все ссылки возвращаются COM-объектом, в своем общем модуле я добавила функцию, которая вернет точно такую же таблицу, но сотрудник будет текстовым полем. И вот после всех подготовительных работ, в своем почтовике я создаю COM-соединение с ЗУПом: БазаЗУП = Новый COMОбъект("V83.COMConnector"); Соединение = БазаЗУП.Connect(СтрокаСоединения); Дальше пытаюсь вызвать свою процедуру: Таблица = Соединение.ПолучитьОстатокОтпускаСпискаСотрудниковНаДатуДляПочтовика (). К базе подключается, но при вызове процедуры говорит: "Ошибка инициализации модуля. Переменная режимДиалогаВопрос" не определена. Очень мало работала с COM-соединением, поэтому не могу найти решение. В гугле есть похожая информация, но мне не помогает (например, галочки в свойствах модуля). Заранее спасибо за помощь! |
|||
1
Ц_У
22.05.17
✎
13:16
|
(0) зачем вопрос задавать? режимдиалога для клиентского вызова
|
|||
2
h-sp
22.05.17
✎
13:20
|
(0) вы наверно там вопрос задали. Не надо этого делать.
|
|||
3
Дарья Чекалова
22.05.17
✎
13:20
|
(1) В своей функции я вопросов не задаю, в типовых функциях тоже не нашла. Есть вообще в модулях, но как это может повлиять, не знаю... Да, забыла уточнить. Почтовик на управляемых формах, а ЗУП на обычных.
|
|||
4
Ц_У
22.05.17
✎
13:22
|
(3) не важно на каких формах, во внешнем соединении не может быть вызова процедур с директивой &НаКлиенте т.к. интерфейсная часть отсутствует
|
|||
5
Ц_У
22.05.17
✎
13:24
|
(3) И еще.. ну соединили соединение, а дальше куда оно потопало искать процедуру?
|
|||
6
h-sp
22.05.17
✎
13:24
|
(3) Таблица = Соединение.ПолучитьОстатокОтпускаСпискаСотрудниковНаДатуДляПочтовика (). здесь вы забыли имя общего модуля указать. У вас эта функция ПолучитьОстатокОтпускаСпискаСотрудниковНаДатуДляПочтовика где-то в безвоздушном пространстве нависает?
|
|||
7
Дарья Чекалова
22.05.17
✎
13:26
|
(6) Она в нашем общем модуле. После многих манипуляций, я поставила у него галочку "Глобальный". Насколько я знаю, в этом случае необязательно указывать название модуля
|
|||
8
Lexey_
22.05.17
✎
13:27
|
(7) ну вот в этом модуле и надо искать режимДиалогаВопрос
|
|||
9
Дарья Чекалова
22.05.17
✎
13:27
|
(5) Да, сразу искать процедуру. А в ЗУПе нет директив. Там же все в одну кучу.
|
|||
10
Ц_У
22.05.17
✎
13:28
|
(7) зачем галку?
Соединение.<ИмяМодуля>.ПолучитьОстатокОтпускаСпискаСотрудниковНаДатуДляПочтовика () |
|||
11
Дарья Чекалова
22.05.17
✎
13:28
|
(8) В нем нет этого. В том - то и дело. Этот модуль отдельный, там нет ничего лишнего. Только то, что касается данной задачи.
|
|||
12
Дарья Чекалова
22.05.17
✎
13:29
|
(10) Я экспериментировала. Без галки тоже не работало.
|
|||
13
Ц_У
22.05.17
✎
13:30
|
(11) хватит галок сервер и внешнее соединение
|
|||
14
h-sp
22.05.17
✎
13:32
|
(12) ну вы пройдитесь по впашему общему модулю и выкиньте нахрен все вопросы оттуда. У вас же ошибка как раз: есть переменная режимДиалогаВопрос в вашем общем модуле.
Если знали, что будете этот общий модуль по кому запускать, вот нафига вы туда вопросов насовали? |
|||
15
Дарья Чекалова
22.05.17
✎
13:38
|
Кажется нашла... Обращение было к другому модулю, где есть вопрос... Перенесла эти процедуры сюда же
|
|||
16
AlexYAT
22.05.17
✎
13:38
|
Если модуль Ваш, то проще будет закрыть все диалоговые строки блоками
#Если НаКлиенте Тогда Вопрос("...", РежимДиалогаВопрос....); #КонецЕсли |
|||
17
Дарья Чекалова
22.05.17
✎
13:39
|
А если мне в COM соединении нужно в ЗУПе создать еще одно COM-соединение. Это логически корректно, или не очень?
|
|||
18
h-sp
22.05.17
✎
13:42
|
(17) зачем?
|
|||
19
Ц_У
22.05.17
✎
13:45
|
(17) проще создать два "тут" чем одно "там"
|
|||
20
Дарья Чекалова
22.05.17
✎
13:48
|
(18) Хмм... Есть данные, которых нет в ЗУПе. Они лежат в базе PostgreSQL. И чтобы их получить, прописаны запросы через такое же COM-Соединение (параметры - данные из ЗУПа).
|
|||
21
Дарья Чекалова
22.05.17
✎
13:50
|
(19) Да, скорее всего так и надо делать. Буду пробовать.
|
|||
22
Дарья Чекалова
22.05.17
✎
13:50
|
Отпишусь, как будут результаты. Всем спасибо за мозговой штурм!
|
|||
23
h-sp
22.05.17
✎
13:50
|
(20) должно прокатить, попробуйте.
ну или из зуп взять эти параметры и вызвать постгре отсюда. |
|||
24
Ц_У
22.05.17
✎
13:51
|
(21) или попробовать вызвать готовую процедуру из зупа, которая подключается и вернуть эти данные
|
|||
25
Дарья Чекалова
22.05.17
✎
13:57
|
(24) Сейчас я так и делаю, но так все-таки не прозрачно. Сейчас выскакивает ошибка "Поле объекта не обнаружено "Ссылка". Хотя при работе с этими функциями напрямую в ЗУПе, все корректно.
|
|||
26
Ц_У
22.05.17
✎
13:58
|
(25) возможно ссылка больше не ссылка а комобъект.
|
|||
27
TormozIT
гуру
22.05.17
✎
14:16
|
Проверка компиляции в режиме внешнего соединения должна отобразить все ошибки, которые могут возникнуть при инициализации модуля в режиме внешнего соединения.
|
|||
28
Дарья Чекалова
22.05.17
✎
14:21
|
(26) Прошу прощения, ошибка со ссылкой - плод моей невнимательности (колонка по-другому называется).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |