Имя: Пароль:
1C
1С v8
COM-соединение и расширение конфигурации
0 salvator
 
12.10.23
14:47
Доброго дня!
Есть обработка, которая по сом-соединению подключается к базе и формирует документы.
Столкнулся с проблемой, что в процессе создания документов, происходит обращение в общему модулю (галочка "внешнее соединение" установлена), в нем вызывается экспортная функция, которая, в свою очередь, обращается к другой функции того же общего модуля, но НЕэкспортной. Получаю ошибку, что процедура или функция не определена.
Сделал расширение, в котором конструкцией "вместо" переопределил эти функции, добавив признак "экспорт".
Но по сом-соединению все равно к ним обращения не происходит.
В расширении все галочки, кроме "Активно" и "Использовать основные роли" сняты.
В чем может быть проблема?
1 Волшебник
 
12.10.23
14:50
но НЕэкспортной
2 salvator
 
12.10.23
14:52
(1) так я же в расширение добавил эту вторую функцию, которая в основной конфигурации была НЕэкспортой, как экспортную.
Расширение почему-то не отрабатывает при подключении через сом.
3 Галахад
 
12.10.23
15:06
Без картинок не очень понятно.
4 salvator
 
12.10.23
15:12
(3) В общем модуле основной конфигурации две функции:

Функция Первая() Экспорт    
   Возврат Вторая();
КонецФункции

Функция Вторая()
   ...определение результата...
   Возврат Результат;
КонецФункции

В расширении к этому общему модулю пишу даже просто первую функцию с возвратом результата в лоб:

&Вместо("Первая")
Функция Расш_Первая() Экспорт
   Возврат Ложь;    
КонецФункции

При соединении по сом получаю ошибку:
Процедура или функция с указанным именем не определена (Вторая)

хотя ее в расширении даже нет, т.е. сом не видит расширение, отрабатывает по функциям основной конфигурации
5 Галахад
 
12.10.23
15:33
Там случайно нету директив препроцессора?
6 salvator
 
12.10.23
15:48
(5) У "Второй" функции стоит &НаСервере
7 Галахад
 
12.10.23
16:01
Ну, видимо контекст обращения не тот.
8 arsik
 
12.10.23
16:03
(7) Потому что у него &ВнешнееСоединение
9 lodger
 
12.10.23
16:28
(4) дело не в конкретных вызовах которые делает код.
дело в синтаксическом контроле модуля целиком. платформа для ком-ка не может "скомпилить" этот модуль.
10 Галахад
 
12.10.23
16:44
(8) Мне-то зачем это говорить? ))
11 salvator
 
12.10.23
16:55
Добавил в расширение функцию, которая вызывается перед этим общим модулем, прописав директиву #Если НЕ ВнешнееСоединение Тогда.
Этот вариант подходит, так как обработка по большому счету разовая.
12 salvator
 
12.10.23
16:57
После обработки расширение отключу. Что в основной конфе поправить, чтобы по сом ошибка не возникала. Кроме, указания признака "Экспорт" для второй функции, конечно.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан