Закрыть окно Ctrl F4 Следующее окно Ctrl Shift F6 Предыдущее окно Ctrl F6 Каскадом Alt О К Закрыть окно сообщений Ctrl Shift z Следующая страница Ctrl Alt F Предыдущая страница Ctrl Alt B Разделить окно Alt О Р.
TurboBL
Понятно, хотелось добиться универсальности и простоты, что и достигнуто.
Но при этом:
Некомпетентность: GetNMethods можно вынести из цикла.
Лень: не зря же FindMethod виртуальная, почему же она
не переопределена ни в одном из наследуемых классов для более
оптимального поиска?
Аналогичная ситуация и с FindProp.
ЦЕЛЬ КОМПОНЕНТЫ
Дабы устранить эту досадную оплошность при поиске методов и свойств,
мною и была создана данная ВК. Суть ее работы в следующем:
оптимизация алгоритма преобразования имен методов/свойств в их номера.
Попутно сделана возможность обращаться к методам и переменным модулей
ГрупповыхКонтекстов.
Вот и все.
Более никаких изменений в существующем коде конфигурации не требуется.
При загрузке компонента берет на себя всю работу по поиску номеров
методов и свойств объектов 1С.
Компонента использует «хитрый» способ загрузки, позволяющий ей загружаться
без регистрации в реестре, те ВСЕГДА и для любого пользователя.
ВЫЗОВ МЕТОДОВ МОДУЛЕЙ ГРУППОВЫХ КОНТЕКСТОВ
Да. Свершилось.
Теперь можно через контекст обратится к методам и переменным модуля контекста.
Например:
//где Печать() — процедура в модуле ФормыСписка справочника.
или например:
// в модуле проведения дока Процедура
ОБЪЕКТ «УскорительГК»
Объект «УскорительГК» был предназначен для возможности обращения
через контекст к методам и переменным ВНЕШНИХ ОТЧЕТОВ.
Теперь это делается автоматически, и его метод «Ускорить» ничего не делает.
Теперь этот объект можно использовать для проверки того, что TurboBL загружена:
Объект «Addin.TurboBL» теперь несуществует, и его создание нельзя использовать
для проверки загруженности компоненты.
СОВМЕСТИМОСТЬ С 1С++
Функционал компоненты включен в состав 1С++, поэтому применять их совместно нет смысла.
БЛАГОДАРНОСТИ
Выражаю глубокую признательность Дмитрию Гусеву aka Deb,
за плодотворное сотрудничество и помощь в тестировании компоненты.
Алексею Федорову aka АЛьФ, за сотрудничество и подсказки по правильной работе таблиц.
PS
Данная разработка не придерживается технологии Внешних Компонент.
«1С-Совместимо» нет и не будет.
Используйте на свой страх и риск.
ИСТОРИЯ ВЕРСИЙ
Версия 1.1.0.1
— Радикально упрощено использование компоненты.
— Добавлена возможность вызова методов модулей через контекст.
— Добавлена проверка установленных компонент при загрузке.
— Исправлены мелкие баги.
Версия 1.1.0.2
— Исправлена ошибка потери возвращаемого значения из функции, вызываемой через Контекст
— Исправлена ошибка, приводящая в определенных ситуациях к вылету 1С
Версия 1.1.0.3
— Изменен способ загрузки ВК, что уменьшило ее размер и позволило ей загружаться всегда.
— Добавлено автоматическое ускорение контекстов внешних отчетов.
— Исправлено обращение к шаблонам таблиц в форме при вызове функций модуля через контекст
— Исправлены мелкие баги.
Промокоды на Займер на скидки
Обзор формул
Tab и Shift Tab — для выбора кнопки следует щелкнуть по ней мышью или сделать ее активной указанными клавишами и нажать клавишу Enter.
Пример переноса кода в общий модуль 1С
Так как для нашей задачи нам хватает вызова с клиента и не нужны данные из базы, ставим только флаг «Клиент». Если вы хотите в дальнейшем использовать этот же модуль для более сложных расчетов, то отметьте в свойствах еще и «Сервер». Подготовительный этап завершен и можем переходить к написанию кода.
Создадим экспортную процедуру в модуле и перенесем туда алгоритм расчета суммы из процедуры в модуле формы. В качестве параметра процедуры на входе будет использоваться строка табличной части. В модуле формы документа меняем вызовы процедуры в том же модуле на вызов процедуры из общего модуля.
При разработке общих модулей следует учитывать общепринятые правила по их созданию:
- Помещать в отдельный общий модуль процедуры и функции, относящиеся к сходному функционалу;
- В наименовании модуля отражать его принадлежность к контексту (Клиент, Сервер) и избегать общих слов (обработчики, процедуры и т.д.);
- Разделять внутреннюю серверную логику приложения и клиентскую для интерфейса;
- Будьте внимательны, создавая глобальный общий модуль. Отсутствие необходимости обращаться к процедуре через имя модуля может привести к путанице, особенно, если систему поддерживает несколько групп разработчиков.
Правильно созданные модули помогут вам намного быстрее ориентироваться в структуре конфигурации и делать доработки. Если вы видите возможность сделать полезную функцию универсальной и вынести ее в общий модуль, то сделайте это. В будущем вы и ваши коллеги будете благодарны за это решение.
Коллекции значений в 1С
Общие модули в 1С 8.3
Справа откроются свойства добавленного общего модуля, и нам предстоит разобраться, что обозначает каждое из них. Они могут быть различной направленности, поэтому, перед тем как настраивать новый объект, желательно определиться, что мы там будем хранить. Если что, в будущем можно будет изменить свойства в соответствии с задачами:
- «Глобальный». Данный флаг ставится, если модуль предназначен для хранения процедур и функций, которые должны вызываться без указания имени модуля. Естественно, они должны быть экспортными, а их имена уникальными в разрезе всего глобального контекста. По использованию они не будут отличаться от стандартных функций платформы;
- «Клиент». Зависит от настроек системы и регламентирует, могут ли процедуры модуля выполняться на стороне клиента;
- «Сервер». Помечаются общие модули, в составе которых планируется помещать алгоритмы для выполнения на сервере;
- «Внешнее соединение». Процедуры модуля с активацией этого свойства смогут выполняться через подключение внешнего источника;
- «Вызов сервера». Отвечает за разрешения процедурам из модуля вызывать сервер, выполняясь на клиенте;
- «Привилегированный». Активация этой настройки позволит при работе кода процедур модуля не проверять права доступа. Вызвать общий модуль с такой настройкой можно только на сервере. Настройки «Клиент» и «Внешнее соединение» будут сброшены;
- «Повторное использование». Может принимать значения: «Не использовать», «На время сеанса», «На время вызова». При многократном вызове одной процедуры система может использовать рассчитанные ранее данные в рамках процедуры (вызов) или жизни всего сеанса (запуска 1С). Стоит быть очень осторожным с этой настройкой, так как из-за неправильного использования таких модулей могут возникать ошибки.
Бывают ситуации, когда требуется создать общий модуль с вызовами процедуры на сервере и клиенте с отличиями в алгоритме. Для разграничения кода используются директивы препроцессора с проверкой. В результате для серверного вызова это будет один код, а для клиентского – другой.
Списки используются для передачи параметров в запрос, в качестве объекта сравнения в СКД и построителе, а также в отборах в интерфейсе.
Ошибка вывода печатной формы
Информация в окне сообщения об ошибке указывает, что в Модуле менеджера документа ПоступлениеТоваровУслуг не определено значение переменной Ответственный . Для исправления ошибки:
- Перейдите в Конфигуратор . В Модуле менеджера документа ПоступлениеТоваровУслуг перейдите на строку 4804.
- Укажите для вывода в печатную форму поля Ответственный — текущего пользователя, используя специальную команду 1С:
- Пользователи.ТекущийПользователь().
- Сохраните изменения и обновите информационную базу.
- Перейдите в пользовательский режим для проверки выполненных изменений.
После исправления программного кода накладная сформируется без ошибки.
Циклы в 1С 8.3 на примерах
Ошибка исполнения кода на Клиенте
Все это привело к тому, что в 1С команды делятся на исполняемые &НаСервере и &НаКлиенте . И при написании программного кода нужно это учитывать, иначе программа не сможет выполнить заданную операцию. При работе с переменными при написании программного кода важно понимать:
Разделение команд в программном коде не зависит от того, используете ли вы файловую или клиент-серверную 1С. Разграничение должно четко исполняться, иначе будут возникать ошибки, одну из которых БухЭксперт8 разберет на примере.
Ошибка связана с тем, что данная операция исполняется только на сервере, т. е. &НаСервере . И несмотря на то, что сама команда исполнения корректна, ошибка будет формироваться до тех пор, пока ее не перенесут в область команд исполнения &НаСервере , например так:
Усложнение языка программирования 1С требует от разработчика более глубокого подхода к вносимым изменениям в программу. Недостаточно просто знать синтаксис команды, важно еще правильно задать область исполнения команды в режиме управляемых форм.
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Карточка публикации
Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Вы можете задать еще вопросов
Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы