1с dynamicwrapperx как раздать права пользователям на регистрацию

Обновлено: 02.08.2024

Вопросы установки и настройки 1C:Предприятия 8.1 в варианте “клиент-сервер”

В большинстве случаев для установки 1C:Предприятия 8.1 в варианте “клиент-сервер” достаточно запуска программы установки 1С:Предприятия 8.1. При этом сервер 1С:Предприятия получает стандартные значения параметров, необходимые для его нормального функционирования.

Рассмотрим установку сервера 1С:Предприятия более детально. В процессе установки сервера 1С:Предприятия 8.1 программа установки 1С:Предприятия 8.1 выполняет следующие действия:

Копирует загрузочные модули сервера 1С:Предприятия в каталог, указанный программе установки 1С:Предприятия в качестве конечной папки.

Если в процессе установки выбрано "Создать пользователя USR1CV81", то создает пользователя USR1CV81. От имени этого пользователя работает сервер 1С:Предприятия 8.1, если он запускается как сервис. Ему доступны только те ресурсы, которые необходимы серверу 1С:Предприятия. Важно, что серверу 1С:Предприятия для работы необходимы два каталога: общий каталог с данными сервера (обычно "C:\Program Files\1cv81\server") и каталог временных файлов (обычно "C:\Documents and Settings\usr1cv81\Local Settings\Temp" или "C:\WINNT\Temp"). Пользователь USR1CV81 получает права на общий каталог с данными сервера. Каталог временных файлов обычно доступен всем пользователям.

Если в процессе установки включено "Установить сервер 1С:Предприятия 8.1 как сервис Windows", то регистрирует в Windows сервис агента сервера 1С:Предприятия и запускает его. При первом запуске создается кластер серверов 1С:Предприятия с настройками по умолчанию. В нем один рабочий сервер и один рабочий процесс. Адрес рабочего сервера совпадает с именем компьютера, на котором выполнена установка.

Пользователь USR1CV81 и его права

Сервер 1С:Предприятия является серверным приложением работа которого не должна зависеть от того, какой пользователь вошел в серверный компьютер в интерактивном режиме, если вообще кто-нибудь вошел. Поэтому при установке сервера 1С:Предприятия желательно создать специального пользователя USR1CV81, наделенного правами, минимально необходимыми для сервера 1С:Предприятия, и не предназначенного для интерактивного входа. Сервер 1С:Предприятия представляется системе Windows пользователем USR1CV81.

Рассмотрим подробнее права, устанавливаемые пользователю USR1CV81. Сервер 1С:Предприятия использует следующие каталоги:

Каталог загрузочных модулей находится в каталоге, заданном программе установки 1С:Предприятия в качестве конечной папки. В нем расположены загрузочные модули сервера 1С:Предприятия. Пользователь USR1CV81 необходимы права на чтение данных и запуск программ из этого каталога и его подкаталогов. Он получает эти права неявно, благодаря включению в группу Users.

Каталог данных сервера обычно имеет имя "C:\Program Files\1cv81\server". Пользователю USR1CV81 необходимы полные права на этот каталог. Программа установки 1С:Предприятия при создании пользователя USR1CV81 наделяет его правами на этот каталог.

Каталог временных файлов обычно имеет имя "C:\Documents and Settings\usr1cv81\Local Settings\Temp" или "C:\WINNT\Temp", которое определяется значением переменной TEMP окружения пользователя или переменной TEMP системного окружения. Посмотреть значение этой переменной можно в диалоге System Properties (Start -> Settings -> Control Panel -> System -> Advanced -> Environment Variables). Программа установки 1С:Предприятия задает пользователю USR1CV81 полные права на этот каталог. Обычно при установки Windows каталог временных файлов доступен всем пользователям посредством включения в его список доступа группы CREATOR OWNER. Однако, это доступ не полный. В частности, всем пользователям не доступна операция поиска файлов в этом каталоге. Установка пользователю USR1CV81 полных прав на каталог временных файлов позволяет серверу 1С:Предприятия выполнять все необходимые ему операции. Посмотреть список доступа можно в диалоге свойств каталога на закладке Security. Наличие группы CREATOR OWNER позволяет обращаться к каталогу любому пользователю, создающему какие-нибудь файлы в этом каталоге или владеющему какими-нибудь файлами в этом каталоге. При этом в списке доступа созданного файла вместо группы CREATOR OWNER будет записан пользователь, создавший файл. Среди пользователей, которым разрешен доступ в этот каталог, должен быть и пользователь USR1CV81, наделенный полными правами на этот каталог.
Важно иметь в виду, что каталог временных файлов определенного пользователя (в том числе и пользователя USR1CV81) определяется комбинацией переменных окружения этого пользователя и системных переменных окружения. Чтобы узнать этот каталог, программа установки 1С:Предприятия запрашивает контекст пользователя USR1CV81. В для этого в Windows 2000 пользователю, от имени которого запускается программа установки 1С:Предприятия, могут потребоваться привилегии: Act as part of the operating system и Bypass traverse checking. Проверить привилегии пользователя можно утилитой Local Sequrity Settings в ветке Local Policies -> User Rights Assignment. В процессе установки нового программного обеспечения программа установки обычно получает эти привилегии автоматически.

Для просмотра списка сервисов Windows и их параметров предназначена утилита Component Services (Start -> Settings -> Control Panel -> Administrative Tools -> Services). Сервер 1С:Предприятия представлен в списке сервисов сервисом "Агент сервера 1С:Предприятия 8.1". Параметры сервиса определяют запуск процесса "Агент сервера 1С:Предприятия" (ragent), пользователя, от имени которого он запускается, а также способ перезапуска в аварийных ситуациях.

В диалоге свойств сервиса "Агент сервера 1С:Предприятия 8.1" на закладке General показана строка запуска процесса ragent, который является Агентом сервера 1С:Предприятия. Обычно эта строка имеет вид:

"C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server"

В ней указано, что:

процессом Агента сервера является загрузочный модуль "C:\Program Files\1cv81\bin\ragent.exe";

процесс ragent запускается как сервис Windows и должен управляться менеджером сервисов (-srvc);

используется как Агент сервера 1С:Предприятия (-agent);

IP-порт агента сервера должен иметь номер 1540 (-port 1540). По этому порту Консоль кластера должна соединяться с центральным сервером для выполнения административных функций;

при запуске процессов кластера на данном сервере им будут динамически назначаться IP-порты из диапазона 1560-1591 (-range 1560:1591).

общие данные кластера будут размещены в каталоге "C:\Program Files\1cv81\server" (-d "C:\Program Files\1cv81\server").

Сервис "Агент сервера 1С:Предприятия 8.1" может быть добавлен или удален не только при установке или удалении 1С:Предприятия программой установки 1С:Предприятия 8.1, но и вручную. Для этого можно исполнить из командной строки утилиту ragent, указав ей соответствующие параметры.

Для создания сервиса нужно указать параметр -instsrvc и параметры: -usr - имя пользователя, от имени которого должен быть запущен сервис, -pwd - пароль этого пользователя. При этом остальные параметры станут параметрами строки запуска Агента сервера 1С:Предприятия как сервиса. Например, для стандартной регистрации сервиса Агента сервера 1С:Предприятия в отладочном режиме набор параметров должен быть таким:

"C:\Program Files\1cv81\bin\ragent.exe" -instsrvc -usr .\USR1CV81 -pwd Password -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server" -debug

Для удаления сервиса нужно указать параметр -rmsrvc. Например:

"C:\Program Files\1cv81\bin\ragent.exe" -rmsrvc

Иногда бывает полено изменить строку запуска Агента сервера или другие параметры сервиса Агента, например, включить режим отладки, или создать несколько сервисов разных версий. Диалог свойств сервиса не позволяет редактировать строку запуска сервисного приложения и некоторые другие параметры, например, идентификатор сервиса. Для редактирования потребуется утилита regedit, предназначенная для просмотра и редактирования системного реестра Windows.

Внимание!
Редактирование системного реестра Windows требует крайней осторожности, поскольку ошибочные изменения в нем могут привести операционную систему в неработоспособное состояние.

Запустите утилиту regedit (откройте Start -> Run и наберите regedit) и выберите ветку:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent

Среди ее параметров есть параметр ImagePath, значением которой является строка запуска Агента сервера 1С:Предприятия. Здесь можно добавить новые параметры строки запуска или поменять значения существующих. Полный список возможных параметров приведен в книге "1С:Предприятие 8.1 Клиент-сервер" документации.

При необходимости регистрации нескольких независимых сервисов Агента сервера 1С:Предприятия нужно указать им разные загрузочные модули, разные порты и разные каталоги данных кластера. Еще требуется зарегистрировать их с разными идентификаторами сервисов. Это можно сделать так:

Создать первый сервис:

"C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server"

Создать второй сервис:

"C:\Program Files\1cv81_10\bin\ragent.exe" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d "C:\Program Files\1cv81_10\server"

Быть может, его идентификатор тоже изменить. Для этого: выбрать ветку
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent
и изменить ее имя, например на:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent Second

Что не может сделать программа установки 1С:Предприятия

Как уже говорилось, программа установки 1С:Предприятия копирует загрузочные модули 1С:Предприятия и выполняет необходимую регистрацию в COM и в менеджере сервисов Windows. Выше приведена информация, необходимая для понимания внутренних механизмов этой регистрации. Если на серверном компьютере установлен не только сервер, но и клиентская часть 1С:Предприятия, то она готова к работе сразу после установки (и подключения ключей защиты).

Чтобы сервер 1С:Предприятия был доступен с других компьютеров в локальной сети, необходимо проверить сетевые настройки на серверном и клиентском компьютере, а также для сети в целом. Для передачи данных между клиентскими приложениями и сервером 1С:Предприятия, а также между процессами кластера серверов используется TCP/IP. От правильности его настройки зависит работа 1С:Предприятия в варианте клиент-сервер.

Процессы кластера серверов 1С:Предприятия соединяются друг с другом по адресам, определенным в качестве значений свойства "Компьютер" диалога свойств рабочих серверов. Для кластера необходимо, чтобы значением свойства "Компьютер" был либо IP-адрес в точечной нотации, либо такой символический адрес, по которому может быть определен IP адрес при помощи функции gethostbyname, определенной в программном интерфейсе протокола TCP. Определение IP-адреса выполняется либо на основании локальной таблицы символических адресов (C:\WINNT\system32\drivers\etc\hosts), либо по таблицам адресов в доступных DNS серверах. Если по символическому адресу рабочего сервера его IP-адрес не определяется или определяется неправильно (например, IP-адрес не совпадает с фактическим IP-адресом данного компьютера), то кластер работать не будет. Важно, чтобы имена компьютеров и их адреса, определенные в Windows на каждом из рабочих серверов кластера, не противоречили их именам в DNS.

На каждом рабочем сервере процессы кластера используют следующие порты: IP порт рабочего сервера (обычно 1540); IP порты из диапазонов IP портов рабочего процесса (обычно 1560-1591). Кроме того, на центральном сервере кластера используется порт кластера (обычно 1541). Если в системе используются сетевые экраны, то передача данных по этим портам должна быть разрешена. Вместо разрешения портов из приведенного списка можно разрешить передачу данных процессам кластера (ragent, rmngr, rphost).

Соединение клиентского приложения 1С:Предприятия с сервером выполняется в 2 этапа. Сначала оно устанавливает соединение с менеджером кластера. При этом используется адрес центрального сервера (символический или числовой) и порт кластера (обычно 1541). Далее клиентское приложение устанавливает соединение с одним из рабочих процессов. В качестве его адреса используется значение свойства "Компьютер" соответствующего рабочего сервера и порт рабочего процесса, который выбирается из диапазона IP портов рабочего сервера. Передача данных на эти порты должна быть разрешена во всех сетевых экранах на маршруте от компьютера клиентского приложения до компьютеров кластера серверов 1С:Предприятия. Определение IP адреса серверных процессов выполняется при помощи функции gethostbyname на компьютере клиента. Важно, чтобы имена центрального и рабочих серверов и их адреса, определенные в Windows на каждом из серверов кластера, не противоречили их именам в DNS, доступном компьютеру клиента.

И последнее. Очевидно, что для успешного доступа к серверу 1С:Предприятия с других компьютеров он должен быть в сети и должны быть выполнены необходимые для этого настройки. Подключение к сети и методика настройки относятся к администрированию сетей на базе Microsoft Windows и описаны в соответствующих инструкциях.

Особенности настройки SQL-сервера

1С:Предприятие в варианте «клиент-сервер» использует для хранения данных SQL-сервер. При этом к SQL-серверу обращается только Сервер 1С:Предприятия. Клиенты 1С:Предприятия непосредственного доступа к SQL-серверу не имеют. Установка и настройка SQL-сервера подробно описана в документации по Microsoft SQL Server. Для успешной работы Сервера 1С:Предприятия с SQL-сервером необходимо обратить особое внимание на следующие настройки.

Необходимые компоненты SQL-сервера. Для доступа к SQL-серверу со стороны Сервера 1С:Предприятия на компьютере Сервера 1С:Предприятия должны быть установлены компоненты Microsoft Data Access 2.6 или более поздний.

Аутентификация пользователя SQL-сервером. Права доступа к базам данных SQL-сервера определяются пользователем, от имени которого происходит обращение к базам данных. С компьютера, на котором установлен SQL-сервер, запустим утилиту SQL Server Enterprise Manager, найдем узел Local (Console Root -> Microsoft SQL Servers -> SQL Server Group -> (Local)) и откроем его свойства. На закладке Sequrity можно видеть, что SQL-сервер поддерживает два способа аутентификации пользователей: SQL Server and Windows и Windows only. Аутентификация Windows позволит Серверу 1С:Предприятия обращаться к SQL-серверу только от имени пользователя USR1CV81, что не позволяет различать права доступа до различных информационных баз, обслуживаемых одним сервером 1С:Предприятия. Рекомендуется выбирать режим SQL Server and Windows. В этом случае обращение к конкретной информационной базе будет выполняться от имени пользователя, который задан в качестве пользователя SQL-сервера при создании данной информационной базы. Важно, что этот пользователь должен иметь не только полные права на базу данных информационной базы, но и права на создание баз данных в SQL-сервере и на чтение таблиц базы данных Master.

Интегрированный набор инструментов разработчика:
- консоль кода
- консоль запросов
- консоль построителя отчетов
- консоль компоновки данных
- консоль заданий
- конструктор запроса
- справочник алгоритмов
- исследователь объектов
- интерфейсная панель
- настройка журнала регистрации
- анализ журнала регистрации
- настройка техножурнала
- анализ техножурнала
- подбор и обработка объектов
- редактор объекта БД
- редактор констант
- редактор параметров сеанса
- редактор изменений по плану обмена
- редактор пользователей
- редактор предопределенных
- редактор хранилищ настроек
- динамический список
- поиск дублей и замена ссылок
- контекстная подсказка
- синтакс-помощник
- поиск битых ссылок
- поиск ссылок на объект
- структура хранения БД
- удаление объектов с контролем ссылок
- и прочее

(2176) Спасибо. Вечером будет выпущена исправленная версия. Начиная с какой-то версии консоль запросов генерит для консоли кода нерабочий код (по кнопке на вкладке "обработка строки результата").

ну и хотелось бы, чтобы параметры, которые заполнены в консоли, также были заполнены в консоли кода (сейчас там комментарии с представлениями)

(2179) Не удалось воспроизвести. Прошу описать порядок воспроизведения. 4.14
(2179) Исправлено
(2181) Реализовано в форме таблицы значений

Прошу заранее прощение, но у меня снова пожелание:

Консоль компоновки данных (ИР): если сформировать отчёт в таблицу значений, то хочется, что бы эту таблицу можно было передать в "Консоль кода (ИР)"
Я скриншот приложил.

Например, эта таблица получается путём соединения данных базы 1С и внешнего источника, поэтому в консоли запросов такое не сделаешь. Но вот обработать всю таблицу программным кодом хочется.

P.S. Передать через выгрузку в файл VT_ конечно я смог. Просто хочется ещё чуточку удобства.

4.15 для расширения добавлена форма "Адаптация расширения" позволяющая подключить/отключить параметризованные команды расширения ко всем типам конфигурации. Запускаю консоль запросов в БП КОРП 3.0.50.11 в режиме обычного приложения. ИР подключены как расширение. После обработки результата запроса начинают сыпаться ошибки:

в большом количестве, при этом видоизменяется форма консоли. Затем эти ошибки повторяются при каждом обновлении формы до перезапуска экземпляра приложения. Если в консоль запросов изначально просто зайти и сразу закрыть, затем открыть снова, то она уже откроется видоизмененной (как после не отработавшего как надо кода), и после этого запрос в ней уже не выполняется/не отображается его результат. Лечится опять же только перезапуском.

В запросе присутствует параметр Организация. Если выбрать его один раз - все ок. Если затем попробовать перевыбрать, возникает ошибка:

(2187) Такие проблемы являются следствием ошибок платформы, которые были исправлены только в 8.3.10.2375. Поэтому эта версия платформы указана в описании как минимальная. (2189) Строго говоря не совсем все, т.к. в такси модально открытые обычные формы из расширения получают увеличенные шрифты. Это уже исправлено в платформе 8.3.11, но пока ее тестовой версии не опубликовано.

ОС: Windows x86 version 6.1 Service Pack 1 (Build 7601)
Платформа: 8.3.6.2530
Конфигурация: Управление торговлей, редакция 10.3 (10.3.30.1)
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
От имени администратора Windows: Нет
Режим совместимости: Версия8_2_16
Инструменты разработчика: Портативные 4.16p

Консоль запросов. Пишу запрос

Ставлю тип результата - таблица. Нажимаю выполнить.
Далее нажимаю "Поместить данные во временную таблицу", задаю имя "ВТ".

Создаю еще один запрос:

Добрый день! Подскажите, использую ADO для подключения к файлу Excel в консоли запросов. Если стоит "*" (выбор всех полей), то запрос отрабатывает и получаю все данные листа, но если пытаюсь выбрать только одно поле (например, _Лист1.[Адрес дома] AS _АдресДома_ ), то появляется ошибка
Ошибка ADO: Произошла исключительная ситуация (Microsoft Access Database Engine): Ошибка синтаксиса в выражении запроса '_Лист1.[Адрес дома]' . Т.е. явно нельзя указать какие поля нужны всегда появляется ошибка. С чем это может быть связано? Заранее спасибо! (2194) Какая выбрана платформа (драйвер,провайдер) на закладке ADO? (2195) Платформы пробовал обе (файл XLS ч/з ACE.OLEDB-12.0 и файл XLS ч/з Jet.OLEDB-4.0). Файл сохранял и в xls и в xlsx.
Ошибка повторяется и там и там.
Еще если "Настройка использования внешней компоненты" стоит "Не использовать", то возникает ошибка "Метод объекта не обнаружен (BOF)", может это как-то связано. Использую "Выгружать RecordSet в таблицу значений". Остальные настройки по умолчанию, выбираю только путь.

(2197) Разобрался. При выполнении запроса происходит ошибка из-за псевдонима таблицы, когда в названии листа книги есть пробел Например лист называется "Первый лист". Если составлять запрос КонструкторомИР и явно выбрать поля, то запрос будет следующим:
SELECT
_ПервыйЛист__Т.[1] AS _1_,
_ПервыйЛист__Т.[2] AS _2_,
_ПервыйЛист__Т.[3] AS _3_
FROM
['Первый лист$'] AS _ПервыйЛист__Т

В сгенерированном тексте таблице дан псевдоним "_ПервыйЛист__Т", ошибка возникает когда первый знак в псевдониме "_".
Т.е. вот так все работает:
SELECT
ПервыйЛист__Т.[1] AS _1_,
ПервыйЛист__Т.[2] AS _2_,
ПервыйЛист__Т.[3] AS _3_
FROM
['Первый лист$'] AS ПервыйЛист__Т

(2198) А ошибку с пробелом в имени колонки удалось решить? (2199) Да я с этим как раз и разобрался), ругалось не на имя колонки с пробелом, а на наличие первого символа "_" в псевдониме таблицы. Разработка прикольная только непонятно зачем это автору. Альтруист что ли? (2202) Слава, самореализация и максимальное облегчение собственного труда.

Есть маленькие ошибки:

ОС: Windows x86 version 6.1 Service Pack 1 (Build 7601)
Платформа: 8.3.8.2167
Конфигурация: Бухгалтерия предприятия, редакция 2.0 (2.0.66.24-uz.8)
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
От имени администратора Windows: Да
Режим совместимости: Версия8_2_16
Инструменты разработчика: Портативные 4.18p

1. Консоль запросов (ИР): в параметрах запроса есть параметр с типом "ТаблицаЗначений". При его редактировании я захотел колонку "НомерСтроки" (добавлял сам, так как она используется в запросе) решил переставить на первое место, но после нажатия на "ОК" и повторного открытия этой таблицы на редактирования - колонка остаётся по прежнему на последнем месте.

2. У нас в справочнике "ДоговорыКонтрагентов" есть ссылка на внешний источник данных "ДоговорИзРеестра"

Скриншот: ВнешнийИсточникВРедактореОбъектовБДОткрываемИзДругого1СЭлеме ­нта.jpg

Открываю ещё одно окно редактора объекта БД (ИР) внешнего источника из редактора объекта БД (ИР) ссылки на договор контрагента. И там:

1) Нет данных
2) Активны кнопки "Пометить на удаление", "Удалить из базы данных" и "Записать все". По настройкам внешнего источника данных он доступен только на чтение
3) Если в этой форме попытаться выбрать другую ссылку этого внешнего источника, то почему-то открывается форма выбора типа.

Скриншоты:
1 и 2: ВнешнийИсточникВРедактореОбъектовБД.jpg
3: ВнешнийИсточникВРедактореОбъектовБДВыборТипаЗачемто.jpg

3. Динамический список (ИР)

Он забывает настройки отображения колонок (точно забывает, когда он открывается в режиме выбора).

Т.е. после настройки отображения колонок, если ещё раз попытаться открыть выбор значения, то кононки отображаются снова "по умолчанию"

(2205) Такой функции не реализовывалось. Пожелание записал.
(2206) Так вроде работает как и обещано в подсказке к кнопке. Так вроде работает как и обещано в подсказке к кнопке.
Я тоже как подумал и поэтому вместо "ошибка" написал "проблема".
Ну раз так и долно работать - то ладно

4. Консоль запросов ИР

Если в нормальный запрос вставить текст запроса из конфигуратора (с символами |), то после нажатия на кнопку "Удалить переносы строк и заменить двойные кавычки обычными", то и обычные двойные кавычки превращаются в одинарные.

у меня не открываются ИР портативные версия 4.19.
Вываливает 1С после вот этой ошибки:
Ошибка инициализации модуля: ВнешняяОбработка.ирПортативный.МодульОбъекта
по причине:
: Ошибка при вызове метода контекста (Создать)

по причине:
Ошибка подключения внешних метаданных
по причине:
server_addr=tcp://Server_1c:1560 descr=10054(0x00002746): Удаленный хост принудительно разорвал существующее подключение. line=1584 file=src\DataExchangeTcpClientImpl.cpp

Версия 1С: 8.3.10.2505.
В другой базе на том же сервере - все ок.
В этой базе до обновления релиза 1С тоже все было ок.

(2210) В платформе 8.3.10.2505 внесли серьезные ошибки при работе с внешними обработками. Рекомендую откатиться на 8.3.10.2466

Прошу прощения, но у меня ещё пожелание:

Тех информация:
ОС: Windows x86 version 6.1 Service Pack 1 (Build 7601)
Платформа: 8.3.8.2167
Конфигурация: Бухгалтерия предприятия, редакция 2.0 (2.0.66.32-uz.3)
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
От имени администратора Windows: Да
Режим совместимости: Версия8_2_16
Инструменты разработчика: Портативные 4.19p

Редактор объекта БД:

Если сделать поиск ссылок на объект на закладке "Ссылки на объект (-)" и там будет, к примеру, регистр сведений, то при двойном клике на этот пункт открывается "Динамический список (ИР)" но без отбора.
Скриншот приложил.

P.S. Ну и мелочь - на этой же закладке после поиска ссылок не обновляется имя закладки. Т.е. как закладка называлась "Ссылки на объект (-)", так и продолжает называться.

(2213) Пожелание непонятно. Ошибка обновления заголовка понятна.

По факту это не пожелание, а ошибка. Вот скриншоты с выделением и комментариями на них:

(2215) Это не ошибка, а задуманное поведение. По двойному щелчку открывается динамический список регистра и текущей строкой устанавливается нужная строка регистра. Какую пользу по-твоему могла бы принести установка отбора, который бы оставил в списке единственную строку? текущей строкой устанавливается нужная строка регистра

У меня это ни когда не срабатывало, поэтому я и предположил, что тут ошибка или это было не реализовано.

P.S. Я даже только что ещё раз специально проверил. не позиционируется.

Простите, что опять. ошибку нашёл:

ОС: Windows x86 version 6.1 Service Pack 1 (Build 7601)
Платформа: 8.3.8.2167
Конфигурация: Бухгалтерия предприятия, редакция 2.0 (2.0.66.24-uz.8)
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
От имени администратора Windows: Да
Режим совместимости: Версия8_2_16
Инструменты разработчика: Портативные 4.20p

Редактор объекта БД (ИР). Работа со внешним источником данных. После поиска на закладке "Ссылки на объект", где нашлась ссылка на эту ссылку в другой таблице внешнего источника данных, то:

1) Нельзя открыть "Ссылающийся объект" по двойному клику мышкой. Возникает ошибка:

2) Нельзя открыть используя кнопку панели "Открыть ссылающийся объект в редакторе объекта БД и найти в нем ссылку". Возникает ошибка:

Приложил ещё два скриншота (для пояснений)

(2220) Такую ошибку мне будет сложно воспроизвести. Поэтому предлагаю тебе самостоятельно ее изучить.

(2223)
Кажется, разобрался.
Почему-то всегда в обработке выбора "ПараметрыЗначениеОбработкаВыбора" поле "Элемент.Значение" всегда строковое и даже после выполнения этого метода оно так и остаётся строковым, хотя "ВыбранноеЗначение" является таблицей значений.

И вот что получается.

Когда мы делаем так:

1) Создаём пустой запрос
2) Переходим в закладку "Параметры" и нажимаем "Добавить". В результате у нас создаётся параметр с именем "_".
3) Тыкаем мышкой в значение и выбираем ему тип "ТаблицаЗначений".
4) В появившемся окне редактора "Таблица значений" просто нажимаем "ОК"
5) Нажимаем мышкой в пустое пространство, что бы отключилось редактирование ячейки "Значение" (исчезла кнопка ". "), где содержится наш параметр с таблицей значения.
6) Кликаем два раза на наш параметр и у нас снова появляется форма редактирования нашей таблицы значения. В ней мы просто нажимаем "ОК".
7) И имеем ошибку - параметр сменил тип с "ТаблицаЗначений" на "Строка".

Работают методы "ПараметрыВыбор", потом "ЯчейкаТабличногоПоляРасширенногоЗначения_ВыборЛкс" (остальные уже не важны). И в результате параметр из-за поведения (наверное платформа виновата) "ПараметрыЗначениеОбработкаВыбора" становится строковым. См. скриншоты.

Эту ошибку можно и обойти. Тогда вместо пункта (6) нужно навести мышку на поле "Значение" и нажать правую клавишу (вызвать контекстное меню) и там выбрать "Изменить". Потом нажать на ". " и делать что нужно в открывшейся форме редактирования таблицы значений. Тогда после закрытия этой формы тип параметра не слетит.

В стэке вызовов перед вызовом "ЯчейкаТабличногоПоляРасширенногоЗначения_ВыборЛкс" вызывается метод "ПолеВводаКолонкиРасширенногоЗначения_НачалоВыбораЛкс" и вот тут есть код, который восстанавливает значение:

Из-за того, что в первом варианте (когда просто два раза кликаешь мышкой) ни где по коду нет восстановления значения в "ТекущиеДанные", то и такое получается.

P.S. Дополнительно: и из-за такого поведения платформы у тебя и в методе "ИнтерактивноЗаписатьВЭлементУправленияЛкс" условие "Результат = ЭлементУправления.Значение = Значение;" всегда выдаёт "Ложь".

(2231)
Зайти на твой сайт я по прежнему могу только не на Firefox как бы я не пытался.
Ладно попробую, но это будет очень для меня не удобно .

ОС: Windows x86 version 6.1 Service Pack 1 (Build 7601)
Платформа: 8.3.10.2375
Конфигурация: 1С:ERP Управление предприятием 2 (2.2.4.19)
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
От имени администратора Windows: Нет
Режим совместимости: Версия8_3_8
Инструменты разработчика: Портативные 4.13.1p

На версии 4.20p поведение аналогично (проверял на другом ПК).

Если убрать код

то далее будет ошибка при выполнении обработчика строки результата

Меняем на такой код

Далее опять ошибка

Аналогичная ошибка при исполнении обработчика результата.

Эта ошибка лечится примерно так (хотя, по хорошему, нужно где-то ранее преобразовывать результат в ТЗ):
(2225) Не совсем понял, какое суммарное исправление было сделано и в каких местах. Попробуй более внятно описать свой опыт в виде Модуль-Метод-Исправление. (2226) Спасибо. Проблема понятна, но в виду сложности ее исправления и низкой важности исправлять ее в ближайших версиях скорее всего не буду.

1С:Предприятие 8.3 (8.3.8.2054)
ИНСТРУМЕНТЫ РАЗРАБОТЧИКА ПОРТАТИВНЫЕ 1С 8.2 V4.21P
На одной базе нормально открылись (платформа 8.3.10.2252), на этой ошибка

: Поле объекта не обнаружено (мПроверкаКомпиляцииОбщихМодулейВыполнялась)
Если мПлатформа.мПроверкаКомпиляцииОбщихМодулейВыполнялась <> Истина Тогда

Открыл новый сеанс - запустилось нормально.

ОС: Windows x86 version 6.2 (Build 9200)
Платформа: 8.2.19.130
Конфигурация: Управление производственным предприятием, редакция 1.3 (1.3.93.1)
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
От имени администратора Windows: Да
Режим совместимости: Версия8_2_13
Инструменты разработчика: Подсистема 4.23

  • функций из библиотек DLL (в частности функций Windows API);
  • вообще любых функций, адрес которых в памяти вам известен;
  • функций, чей машинный код (в виде хекс-строки) у вас имеется.
  • обратный вызов (callback) скриптовой функции из вызванной вами внешней функции;
  • прямой доступ к памяти (чтение и запись числа по адресу);
  • выделение и освобождение памяти;
  • чтение и запись строк в произвольной кодировке;
  • получение указателя на строку, объект, массив, переменную;
  • получение объекта по указателю на него;
  • определение битности (32 или 64) процесса, в котором выполняется скрипт.
  • в Windows 98 не работает;
  • в Windows Vista, 7 и 8 при включенном UAC объект будет недоступен приложениям, запущенным с правами администратора.

Примечание для пользователей 1-й версии. Если в системе уже установлена 1-я версия DWX, 2-я зарегистрируется параллельно с ней. В этом случае она будет доступна в скриптах только по имени DynamicWrapperX.2. Чтобы заменить старую версию новой, нужно сначала разрегистрировать старую. В этом случае новая версия будет доступна также и под общим именем DynamicWrapperX.

Если 2-я версия была установлена параллельно с 1-й, её разрегистрация никак не затронет регистрацию 1-й (и наоборот).


Этот метод регистрирует функцию из DLL в качестве метода объекта. Функция задаётся именем или ординалом. Значение аргументов "i=", "r=" и "f=" см. в примечаниях.

  • Если файл библиотеки имеет расширение dll, его можно не указывать. Если файл не имеет расширения, имя должно быть указано с точкой на конце: "mylib."
  • Для системных DLL путь указывать не нужно. Для сторонних зависит от того, где они находятся.
  • Функции Windows API, принимающие или возвращающие строки, часто имеют два варианта: например, MessageBoxW для строк в Юникоде и MessageBoxA для строк в ANSI-кодировке. Букву "А" на конце можно не добавлять, DWX сделает это сам, если не найдёт функцию MessageBox, но имена юникодных функций должны указываться точно, c "W" на конце.
  • Ординал можно задавать десятичным или шестнадцатеричным числом. Учтите, что ординал функции может быть разным в разных версиях библиотеки и в x86 и x64 вариантах одной и той же версии.
  • Наличие аргументов "i=", "r=" и "f=" зависит от функции. Порядок их произвольный, т.к. они опознаются по префиксам.
  • "i=" задаёт тип каждого из параметров функции (целое число, дробное, строка и т.п.). Может опускаться только, если функция не имеет параметров. Расшифровка буквенных обозначений здесь.
  • "r=" — тип возвращаемого значения. Можно не указывать, если возвращаемое значение не нужно, даже если функция что-то возвращает.
  • "f=" — флаги, влияющие на то, как будет вызываться функция. На данный момент имеет одно возможное значение "t" (соглашение вызова thiscall). Имеет смысл только для 32-битного DWX и только со 2-й версии. 64-битным и 1-й версией игнорируется.


Этот метод регистрирует функцию по её адресу в памяти. Остальные параметры те же, что у метода Register.


Метод принимает в первом аргументе машинный код функции, представленный в виде хекс-строки. Остальные параметры те же, что у метода Register.

  • Под код выделяется память, и он записывается туда уже в бинарном виде. После чего его можно вызывать по присвоенному ему во втором аргументе имени. Возвращаемое значение содержит адрес кода в памяти. Машинный код для 32 и 64 бит различен, отсюда необходимость проверки битности процесса (через проверку битности объекта DWX), чтобы определить, какой код использовать. В качестве возможного применения для такого кода можно привести обработку больших объёмов данных. Машинный код может работать в десятки или даже сотни раз быстрее скриптового.
  • Если вы хотите использовать код по его адресу, без создания метода, можно опустить все аргументы кроме первого. Но имейте в виду, что выделенная под код память всё же связана с объектом и будет освобождена в случае его уничтожения.
  • Хекс-строка может быть сплошной или содержать пробелы, табуляции и переводы строки.
  • Комментарии можно поместить прямо в хекс-строку, обрамив их скобками.
    Code = "4889C8 (mov rax,rcx) 48F7EA (imul rdx) C3 (ret)"



Этот метод нужен для получения указателя на скриптовую функцию, пригодного для передачи какой-либо функции API. Которая потом, используя этот указатель, могла бы данную скриптовую функцию вызывать. Пример такой API-функции — EnumWindows (см. код ниже). Она перебирает существующие окна и хэндл каждого окна передаёт callback-функции в качестве параметра. После этого она ждёт, что вернёт callback-функция. Если 1, то перебор идёт дальше, если 0 — прекращается.

В JScript и VBScript функция является объектом, и ссылка на неё для таких целей не годится. Поэтому ссылка на скриптовую функцию сначала передаётся методу RegisterCallback, а API-функция получает возвращённый им указатель на одну из вспомогательных процедур внутри dynwrapx.dll, вызовы которой будут транслироваться в вызовы скриптовой функции, а возвращаемые значения — в обратном направлении.

В JScript ссылка на функцию — это её имя без скобок, а в VBScript сначала нужно использовать GetRef. Кроме ссылки на функцию задаются также типы её параметров и возвращаемого значения — аналогично методу Register (но используются только маленькие буквы).

Пример на JScript (VBScript см. ниже):

Пример на VBScript:



Параметры в квадратных скобках необязательны, но нельзя опускать такой параметр, если следующий за ним вы указываете.

NumGet( Address [, Offset] [, Type] ) — чтение числа из памяти. Address — базовый адрес. Offset — смещение от него (в байтах), положительное или отрицательное; по умолчанию 0. Type — тип числа: те же буквенные обозначения, что и для метода Register (см. список здесь), но используются только маленькие буквы; по умолчанию — l. Считанное число помещается в возвращаемое методом значение.

NumPut( Var, Address [, Offset] [, Type] ) — запись числа в память. Var — либо литеральное числовое значение, либо переменная, содержащая значение, которое нужно записать. Остальное — как в NumGet. Возвращаемое методом значение содержит адрес сразу за последним записанным байтом.

В обоих методах выше Address может быть как числом, так и строкой, в последнем случае в качестве базового адреса используется указатель на эту строку. Это позволяет использовать строки в качестве буфера для данных, размещать там массивы, структуры и т.п. (о связанном с этим риске см. примечание к методу Space ниже).

StrPtr( Var [, Type/Codepage] ) — возвращает указатель на строку (на оригинал). Var — строковая переменная или константа. Type/Codepage — тип/кодировка. Возможные значения: w (по умолчанию), s, z, либо явное указание кодировки — например, "cp1251". При значениях s, z либо кодировке строка предварительно конвертируется на месте. Поддерживается кодировка "cp1201", т.е. UTF-16 Big Endian.

Если результирующая строка длиннее исходной, она будет обрезана. Поскольку исходная строка в Юникоде, где каждый символ занимает два байта, места должно быть более чем достаточно в большинстве случаев. Возможно, какой-нибудь восточно-азиатский текст может быть длиннее в ANSI-кодировке или в UTF-8, чем он есть в UTF-16, но это только мои догадки.

StrGet( Address [, Type/Codepage] ) — чтение строки с указанного адреса. Возвращает копию строки. Address может быть как указателем в виде числа, так и строковой переменной. Type/Codepage — то же, что у StrPtr. Значения s и z нужны для чтения строки в ANSI— или OEM—кодировке по умолчанию. Строка при чтении конвертируется в Юникод.

StrPut( String, Address [, Type/Codepage] ) — запись строки по указанному адресу. Type/Codepage — то же, что у двух методов выше. Строка при записи конвертируется в заданную кодировку. Возвращается адрес после нулевого терминатора строки. Если Address указан как 0, метод вернёт размер буфера в памяти, необходимый для записи строки в указанной кодировке, включая нулевой терминатор на конце строки.

Space( Count [, Char] ) — создание строки (BSTR) заданной длины. Возвращает строковую переменную. Count — число символов (двухбайтных). Char — символ, которым будет заполнена строка. По умолчанию строка заполняется пробелами — так же, как это делает функция Space в VBScript. Чтобы заполнить строку двоичными нулями, задайте Char как пустую строку ("").

NB: Метод Space был задуман для создания строк, используемых как буферы памяти — для чисел, структур, выходных строк. Но, как выяснилось на практике, такое использование строк в общем случае ненадёжно. Контроль над памятью, выделенной под строку, отдаётся скриптовому движку, и если он в процессе своей работы произведёт с ней какие-то манипуляции, помещённые в неё данные могут быть потеряны или испорчены. Поэтому я рекомендую для выделения памяти под буфер использовать метод MemAlloc (см. ниже).

ObjPtr( Object ) — получение указателя на объект.

ObjGet( ObjPtr ) — получение объекта по указателю на него. Если объект поддерживает интерфейс IDispatch, возвращается переменная типа VT_DISPATCH; если нет — VT_UNKNOWN. Счётчик ссылок объекта увеличивается на 1.

ArrPtr( Array ) — получение указателя на структуру SAFEARRAY массива. Не работает для массивов в JScript, т.к. это объекты.

VarPtr( Variable ) — в языках, где переменные передаются в методы по ссылке, как в VBScript, можно получить указатель на структуру VARIANT переменной.

MemAlloc( Bytes [, ZeroMem] ) — выделение памяти. Если вторым аргументом указать 1, память будет обнулена. Возвращается указатель на выделенную память.

MemFree( MemPtr ) — освобождение ранее выделенной памяти.

Bitness() — определение битности объекта DynamicWrapperX (и, тем самым, битности процесса, его использующего). Возвращает число 32 или 64.

Version( [Field] ) — возвращает указанное поле/поля из полного номера версии DynamicWrapperX. Задайте параметру Field значение согласно приведённой ниже таблице. Если Field опущен, это равносильно 0.

Пример для версии 2.5.7.10.

0 — полная версия как строка: "2.5.7.10"
1 — старший номер версии: 2
2 — младший номер версии: 5
3 — номер сборки: 7
4 — номер ревизии: 10 (0xA)
5 — старший + младший номер версии: 0x20005
6 — номер сборки + ревизии: 0x7000A
7 — полный номер версии: 0x200050007000A

Как вы можете видеть, каждое поле является 16-битным целым и занимает 2 байта.


Типы входных параметров и возвращаемых значений
m — знаковое целое 64 бита — INT64, LONGLONG, .
q — беззнаковое целое 64 бита — UINT64, ULONGLONG, .
l — знаковое целое 32 бита — LONG, INT, LRESULT, BOOL, .
u — беззнаковое целое 32 бита — ULONG, UINT, DWORD, .
h — хэндл, дескриптор — HANDLE, HWND, HMODULE, HINSTANCE, HICON, . — 32 бита (x86) или 64 бита (x64)
p — указатель, для чисел то же, что u (x86) или q (x64), но также можно использовать для передачи объекта (IDispatch *) и строки.
n — знаковое целое 16 бит — SHORT
t — беззнаковое целое 16 бит — USHORT, WORD, WCHAR, OLECHAR, .
c — знаковое целое 8 бит — CHAR
b — беззнаковое целое 8 бит — UCHAR, BYTE, .
f — дробное число одинарной точности (32 бита) — FLOAT
d — дробное число двойной точности (64 бита) — DOUBLE
w — строка в Юникоде — BSTR, LPWSTR, LPOLESTR, OLECHAR *, WCHAR *, .
s — строка в кодировке ANSI/Windows по умолчанию — LPSTR, LPCSTR, CHAR *, .
z — строка в кодировке OEM/DOS по умолчанию — LPSTR, LPCSTR, CHAR *, .
v — указатель на структуру VARIANT

  • Подробнее о строковых типах см. здесь.
  • Кроме хэндлов и указателей, есть и другие типы, меняющие свою битность с битностью процесса. Например, LPARAM, WPARAM, SIZE_T. Для них также лучше использовать тип h или p, чтобы код скрипта корректно работал при его выполнении как 32-, так и 64-битным интерпретатором.
  • Типам m и q (а также h и p в x64) в скриптах соответствовали бы типы VT_I8 и VT_UI8. Движками JScript и VBScript эти типы не поддерживаются, что ограничивает возможности работы с 64-битными целыми. Пока значение возвращаемого функцией числа это позволяет, DWX преобразует его к типам VT_I4 (знаковое целое 32 бита) либо VT_R8 (дробное число двойной точности). Поскольку мантисса VT_R8 имеет только 53 бита, этот тип не может отобразить все числа в диапазоне 64-битного целого. В таком случае возвращается тип VT_I8 или VT_UI8. Всё, что можно с ними сделать в скрипте, — передать как аргумент в какой-то другой метод или вывести значение числа в WScript.Echo либо MsgBox. Никакие расчёты с ними невозможны.
  • Когда большое целое возвращается как VT_R8 и вы хотите посмотреть его значение в диалоговом окне, оно может отображаться неточно из-за ограничения на число знаков после запятой в строковом представлении дробного числа. Поэтому, например, число 9223372036854775808 может отобразиться как 9,22337203685478E+18 вместо 9,223372036854775808E+18. Однако само число в переменной не округляется и остаётся точным.
  • Если значение 64-битного целого не укладывается ни в один из доступных числовых типов, можно указать его в виде строки, десятичной или шестнадцатеричной (с префиксом 0x).

Выходные параметры
M — указатель на число (его адрес в памяти) — LONGLONG *, PLONGLONG и т.п.
Q — то же — ULONGLONG *, PULONGLONG, .
L — то же — LONG *, LPLONG, .
H — то же — HANDLE *, PHANDLE, LPHANDLE, .
U — то же — ULONG *, LPDWORD, .
P — то же
N — то же — SHORT *
T — то же — USHORT *, LPWORD, WCHAR *, OLECHAR *, .
C — то же — CHAR *, .
B — то же — UCHAR *, LPBYTE, .
F — то же — FLOAT *, PFLOAT
D — то же — DOUBLE *, PDOUBLE
W — выходная строка в Юникоде
S — выходная строка в ANSI
Z — выходная строка в OEM

  • Использование выходных типов для чисел имеет смысл для скриптовых движков, которые передают переменные в метод по ссылке, как это делает VBScript. В этом случае DWX может передать функции указатель на значение переменной, которое функция может изменить. В движках, где аргументы передаются по значению, как в JScript, методу передаётся копия числа, поэтому изменить оригинал нет возможности. В этом случае решением будет выделение нужного количества памяти, например, методом MemAlloc, передача функции указателя на эту память (используя тип p) и затем, после вызова функции, считывание помещённого ею туда числа методом NumGet.
  • Некоторые движки копируют строки при передаче их в метод; в этом случае использование выходных типов для строк также теряет смысл. Решение аналогично: выделение памяти, передача указателя на неё типом p и затем считывание оттуда строки методом StrGet.

В JScript и VBScript используются строки типа BSTR. Это строка в Юникоде, т.е. код каждого символа занимает 2 байта. За последним символом расположен ограничитель - 2 нулевых байта. Кроме того, перед первым символом находится 4-байтное число, содержащее длину строки в байтах (без учёта нулевых на конце). Указатель, содержащийся в скриптовых строковых переменных, является адресом первого символа такой строки (т.е. байты, содержащие длину строки, как бы остаются за кадром).

Выходная строка, как и прочие выходные параметры, предназначена для того, чтобы функция API в неё что-нибудь записала, так что её длина должна быть соответствующей.

Использование строк как буферов памяти может работать или нет в зависимости от того, как внутри скриптового движка реализована работа со строками. Предпочтительнее выделять память методом MemAlloc, т.к. она будет под вашим полным контролем.

[/accordion]

Ранее у VBS / JS не было возможностей для вызова API-функций.
Так было до тех пор, пока Юрий Попов не написал замечательную библиотеку DynamicWrapperX.

Библиотеку нужно зарегистрировать :
1) в системе (нужны права администратора)

В этой статье речь пойдет о настройке прав доступа пользователей к объектам системы 1С.

В 1С 8для управления доступа пользователей используется отдельный объект метаданных, который называется Роли.

Далее мы рассмотрим, как использовать и настраивать роли в 1С предприятие 8.3.

Обратите внимание! Эта статья написана в помощь программистам. Настройка прав в пользовательском режиме на примере 1С Бухгалтерия рассмотрена в данной статье.

Роли в метаданных

Ниже мы рассмотрим подробно каждый атрибут метаданных при настройке роли пользователя 1С 8.3.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Общие настройки роли 1С

Если открыть объект метаданных Роль, мы можем увидеть следующую картину:

Настройка ролей

Будем рассматривать только вкладку Права.

Следует обратить внимание на галочки в нижней части:

Настройки прав на всю конфигурацию

Если открыть Роль и кликнуть на корень конфигурации, мы увидим следующие настройки:

Настройка прав на конфигурацию

Подробнее о каждом из прав на всю конфигурацию:

Настройка прав 1С на другие объекты метаданных

Роль менеджера по продажам

Права только для документов:

Только для регистров накопления и бухгалтерии

Только для обработок и отчетов:

Привилегированный режим 1С

Все, что внутри, будет выполняться без проверки прав пользователя.

Доступна ли роль 1С пользователю?

Чтобы узнать, нужно выполнить функцию РольДоступна(), передав туда название роли строкой.
Например:

Нарушение прав доступа

Такую ошибку можно увидеть, если недостаточно прав на чтение/редактирование/удаление данных. Система выдаёт вот такую ошибку:

битая ссылка

Для того чтобы понять, битая ссылка или нет, просто зайдите в базу под пользователем с полными правами.

Для массового поиска таких ошибок подойдет статья как найти битые ссылки в базе 1С.

P.S. Если у Вас все же не получилось разобраться в ролях пользователей, Вы можете заказать услуги 1С программиста.
Видео с примером настройки прав в 1С бухгалтерии 3.0:

Другие статьи по 1С:

    (обновление 1С, резервные копии и т.д); (для пользователей)

Читайте также: