#0
by TormozIT
Уже не раз при переносе кода из модуля формы в общий модуль забыл убрать директивы компиляции (&НаСервере, &НаКлиенте и т.д.) и они не вызывали ошибки компиляции. Хотя в модулях не форм они лишены смысла и только вносят путаницу. Считаю что их следовало бы запретить использовать в модулях не форм. А как считаете вы и почему?
#2
by vvp91
Справка Конфигуратор Каждая процедура и функция модуля формы, модуля команды и общего модуля управляемого приложения предваряется директивой компиляции, определяющей среду исполнения данной процедуры. Директива предваряется символом "&". Допустимые директивы:
#3
by Fragster
надо вообще выкинуть систему крыжиков, директив компиляции , инструкций препроцессора и сделать нечто более похожее на ООП, дабы исключить сомнительные методы обеспечения безопасности типа "вызовсервера", например
#4
by Fragster
Заодно и "асинхронность" переделать на прозрачную для программиста (чтобы было как раньше), или уже на нормальную модель с сообщениями (в т.ч. клиент-сервер), лямбдами и замыканиями.
#5
by TormozIT
Непонятно как работают эти директивы при компиляции в режиме внешнего соединения и обычного приложения.
#8
by TormozIT
Что понятнее? 1. #Если Сервер Или ВнешнееСоединение Тогда &НаСервере Процедура Моя1 ... &НаСервере 2. #Если Сервер Или ВнешнееСоединение Тогда Процедура Моя1 ... #Конец
#9
by GROOVY
Попробуйте фееричную конструкцию: #Если Клинет Тогда Я долго искал в чем причина... Ошибок нет, но не компилиться кусок общего модуля.
#10
by TormozIT
На эту тему я уже давно требовал сделать выдачу warning или error, но они не сочли это важным.
#14
by Fragster
а там конструктор обработчиков событий нагородил. и рекомендации 1с к оформлению кода.
#16
by Fragster
в том, что не работает как надо, например во внешнем соединении (потому как оно себя ведет как толстый клиент), от этого ловится куча ошибок
#18
by TormozIT
Какие ошибки компиляции будут в следующем общем модуле со всеми включенными режимами компиляции и проверки? Чур не подсматривать в конфигуратор
#25
by Casey1984
ответ не обнаружена 4535 я же написал в Вопрос: "что не понятно в директивах компиляции?"
#26
by TormozIT
Ответ довольно неглубокий. Как минимум выше речь шла про режим компиляции внешнее соединение. Также в постановке вопроса указано, что проверяются все режимы компиляции. А ты написал ответ даже без указания режимов компиляции.
#31
by TormozIT
+ Про внешнее соединение не нашел. Подскажи, из чего ты сделал вывод что &НаСервере есть внешнее соединение.
#32
by TormozIT
Кто проникся темой, может еще почитать что пишут по ней на партнерском форуме В общем то пока там никто не смог обосновать и четко описать использование директив компиляции в общих модулях.
#34
by TormozIT
Внешнее соединение исполняется во внешнем соединении. Не понимаю, как оно может исполняться "на сервере". Можешь еще немного пояснить, а лучше ткнуть в ИТС или процитировать?
#35
by Casey1984
Цитирую твой код: -- &НаКлиенте -- 1. Процедура Моя13 без директивы компиляции будет в контексте сервера. 2. Процедура Моя4535 с директивой &НаКлиенте будет в контексте клиента. Тут становится ясно, что Моя13 не видит Моя4535. Тебя интересует почему именно для сервера и внешнего соединения? Потому-что в этих режимах доступен код в контексте сервера, а в этом контексте у нас ошибка!
#36
by Casey1984
P.S. И это не значит что в тонком клиенте нельзя вызвать серверный код. Просто проверка явно организована без избытка. И для тонкого клиента она ничего не выдаст по причине, что в нем никаких ошибок не возникнет, так как вызова серверной процедуры Моя13 из клиентского кода нет! А нет, то зачем проверять?
#38
by Casey1984
А если у модуля поставить галочку Клиент (управляемое приложение) выдает, ибо можно вызвать извне ;) В общем как-то так ;)
#39
by ЧеловекДуши
Для такого конторки 1С нужно будет напрячься и написать нормальный компилятор, который бы оптимизировал бы код :)
#40
by ЧеловекДуши
Самое веселое, если поставить в модуле галочку Сервер + Клиент (управляемое приложение)... Вот тогда компилятор начинает верещать на ошибки в модуле, если писать процедуры без Директив :)
#43
by TormozIT
Хорошо что тебе она понятна. Но плохо, что понимаешь ты их неправильно. На партнерском форуме с коллегами мы обнаружили ошибку функции "Проверка модуля (CTRL+F7)" 8.3.7.1805 Некорректная проверка директивы компиляции НаСервере в общем модуле во внешнем соединении. 1С 8.3.7.1805, файловый и клиент-серверный варианты Проблема Проверка модуля (CTRL+F7) ошибочно считает метод с директивой компиляции НаСервере доступным в режиме внешнего соединения Воспроизведение Восстановить базу из выгрузки. Открыть в конфигураторе общий модуль ОбщийМодуль1 &НаКлиенте КонецПроцедуры и выполнить проверку модуля (CTRL+F7). При этом будет выдана только ошибка {ОбщийМодуль.ОбщийМодуль1.Модуль(10,3)}: Процедура или функция с указанным именем не определена (МояКлиент) Хотя ожидается еще ошибка {ОбщийМодуль.ОбщийМодуль1.Модуль(11,3)}: Процедура или функция с указанным именем не определена (МояСервер) <<?>>МояСервер; (Проверка: Внешнее соединение)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Конвертация данных 3.0(загрузка алгоритмов)
- Дерево значений как источник данных построителя: построитель не выводит
- Выгрузить ТОРГ-12 для ЭДО
- Макет ценника: максимальное количество по горизонтали/вертикали
- Не срабатывает установка значения параметра по-умолчанию в процедуре
- Интерфейс Такси по умолчанию.
- Выполнить запрос от имени другого юзера или без РЛС
- 1с WSссылка отключить проверку сертификата
- Не стартует ОС с IDE диска.
- Чтение платежек из Word в 1С
- Конфигуратор. Нарушена целостность структуры конфигурации УТ 10.3 8.1.15.14
- ERP 2.1 Отчет переработчика
- v7: 1с 7.7 как вывести на печать несколько сквозных строк?
- БП 3.0 Зарплата (ЗУП 2.5, Зик 7.7)
- Подписка на событие записи набора записей. От чего зависит последовательность?
- Проводки не попадают в ОСВ
- макет внешней печатной формы
- Выемка денежных средств из кассы в УТ 11.1
- Ошибка при подключение к 1с-такском
- Система самообслуживания на 1С. Архитектура системы.