Имя: Пароль:
1C
1С v8
Расширения. Аннотация &Вместо.
0 kachesov
 
03.10.16
21:23
1С:Предприятие 8.3 (8.3.9.1818)
Управление торговлей, редакция 11.2 (11.2.3.189)

Создал расширение. Добавил в него общий модуль "ПодключаемоеОборудованиеOfflineВызовСервера".

Добавил код для перехвата функции "ПриЗагрузкеОтчетаОРозничныхПродажах (Устройство, МассивДанных)":

&Вместо("ПриЗагрузкеОтчетаОРозничныхПродажах")
Функция Расширение1_ПриЗагрузкеОтчетаОРозничныхПродажах(Устройство, МассивДанных, СуммаД) Экспорт
...
КонецФункции

В результате получаю ошибку:

{Расширение1 ОбщийМодуль.ПодключаемоеОборудованиеOfflineВызовСервера.Модуль(1,9)}: Ожидается определение процедуры/функции
&Вместо <<?>>("ПриЗагрузкеОтчетаОРозничныхПродажах") (Проверка: Сервер)

Подскажите, в чем может быть проблема?
P.S.: Совместимость отключена.
1 vde69
 
03.10.16
21:25
&Вместо
Функция ПриЗагрузкеОтчетаОРозничныхПродажах(Устройство, МассивДанных, СуммаД) Экспорт
...
КонецФункции
2 kachesov
 
05.10.16
12:31
(1) Так оно просто игнорируется.

Заявлен же формат:

&Вместо("Функция")
Функция Расш1_Функция(параметры)
...
КонецФункции
3 Fragster
 
гуру
05.10.16
12:33
учитывая Расширения. Режим совместимости. - вероятно режим совместимости расширения < чем 8.3.9
4 kachesov
 
05.10.16
12:38
(3) Да, стоит 8.3.6 как и у конфигурации.
Если менять на "Не использовать", получаю ошибку:

"РАНЖирение: Режим совместимости расширения конфигурации больше режима совместимости основной конфигурации"
5 Fragster
 
гуру
05.10.16
12:39
(4) и рыбку съесть и на лошадке покататься не получится
6 kachesov
 
05.10.16
12:41
(5) Т.е. для использования аннотации &Вместо необходимо менять режим конфигурации и расширения на "Не использовать"?
7 Fragster
 
гуру
05.10.16
12:43
и иметь платформу 8.3.9
8 Fragster
 
гуру
05.10.16
12:44
вообще режим совместимости 8.3.9, только он в этой платформе отображается как "не использовать". в 8.3.10 будет выглядеть как 8.3.9
9 Feunoir
 
05.10.16
12:44
(4) У тебя должно стоять совместимость "Не использовать" в трёх местах. В самой конфигурации, в расширении и в заимствованном свойстве расширения.
10 kachesov
 
05.10.16
12:51
(7) Это само собой)
(9) Всё взлетело! Огромное спасибо!

Один побочный эффект: при закрытии программы вылетает окно ошибки "Серверные вызовы при завершении работы запрещены"
11 kachesov
 
05.10.16
20:36
(9) Подскажите пожалуйста, возможно ли аннотацией &Возврат изменить колличество передаваемых переменных?

Я пишу для замены функции ПриЗагрузкеОтчетаОРозничныхПродажах(Устройство, МассивДанных):

&Вместо("ПриЗагрузкеОтчетаОРозничныхПродажах")
Функция РАНЖ_ПриЗагрузкеОтчетаОРозничныхПродажах(Устройство, МассивДанных, СуммаД) Экспорт

И получаю ошибку:
Слишком много фактических параметров
ОтчетОРозничныхПродажах = ПодключаемоеОборудованиеOfflineВызовСервера.ПриЗагрузкеОтчетаОРозничныхПродажах(

Или есть ли возможность как-то ещё передать переменную в функцию?
12 Feunoir
 
05.10.16
20:40
(11) Если я правильно понял вопрос, то нет. Количество параметров в замещаемой и замещающей функции должно быть одинаковое.
13 kachesov
 
05.10.16
20:42
(12) А передать его иначе незьзя?
Нет ли возможности куда-то записывать переменную в одной функции и вытаскивать её оттуда из другой?
14 kachesov
 
05.10.16
20:47
(12) Можно конечно записывать её в файл, но это какая-то дикость..
15 oleg_km
 
05.10.16
20:50
(13) Один из параметров превратить в структуру. Собственно это и способствовало созданию ООП, когда разрабочики поняли что они гоняют из процедуры в процедуру структуры.
16 kachesov
 
05.10.16
21:09
(15) Отлично! Это работает. Спасибо!
17 Torquader
 
05.10.16
21:33
(15) Вообще-то, так появился "контекст исполнения".
18 oleg_km
 
05.10.16
23:18
(17) Тебе виднее. Я из "фундаментальных" вещей читал только Страуструпа, он примерно так объяснял один из мотивов, побудившие создать классы.