Имя: Пароль:
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
После обработки расширение отключу. Что в основной конфе поправить, чтобы по сом ошибка не возникала. Кроме, указания признака "Экспорт" для второй функции, конечно.
Закон Брукера: Даже маленькая практика стоит большой теории.