В восьмой версии 1С нет штатного способа ограничить пользователя использованием только одного сеанса, это сделано потому что теперь при необходимости система может создавать от имени пользователя дополнительные сеансы в которых выполняются какие-то вспомогательные обработки. Например, когда формируется отчет, обработка данных происходит в фоновом задании, которое видно в списке активных пользователей отдельной строкой. С другой стороны это дает возможность пользователям открывать окно приложения несколько раз, на одном или разных компьютерах. Чтобы бороться с этим нужно применять программные методы.
С помощью функции ПолучитьСоединенияИнформационнойБазы() можно получить массив, который будет содержать информацию о всех подключениях, активных на момент обращения к функции, т.е. каждый элемент массива будет соответствовать одному соединению. Получается, что задача сводится к перебору элементов массива и подсчету количества сеансов открытых текущим пользователем.
Вот пример функции, которая возвращает Истина, если количество сеансов больше одного. Нужно обратить внимание, что подсчитываются только сеансы, у которых имя приложения равно 1CV8 (толстый клиент) или 1CV8C (тонкий клиент). Другие возможные имена приложений: Designer (конфигуратор), BackgroundJob (фоновое задание).
Еще замечание — эта функция должна выполняться на сервере, пользователь, для которого выполняется проверка, от имени которого выполняется функция, должен иметь доступ к просмотру активных соединений.
Бывают ситуации, когда в запросе требуется получить остатки не на фиксированную дату (параметр - один на весь отчет), а на произвольную, (когда дата остатков в каждой строке своя).
Существует несколько способов получить нужные данные.
1.Непосредственно в запросе (через реальную таблицу регистра)
Способ подходит практически для любой ситуации, и поэтому наиболее универсален. Единственный, пожалуй, минус этого способа - если в отчете пользователю не требуется курс, то запрос быдет выбирать избыточные данные.
Вызов СрезПоследних() можно использовать только с передачей в него заранее готового значения даты, на которую требуется получить значения. Поэтому сабж делается через стыковку нескольких запросов - основной, к нему стыкуется запрос по регистру сведений с условием по дате и поиском записи с максимальной датой (периодом).
Для общего развития: Что есть срез последних в платформе?
В зависимости от периодичности регистра (по времени, по позизии регистратора) ВТ разворачивается в следующий запрос:
1. По времени (год, месяц, ... секунда)
2. По позиции регистратора
В данном случае нужно еще раз обернуть выборку
Все это можно увидеть посмотрев технологический журнал с включенным режимом протоколирования запросов
2.Система компоновки данных (передача набора значений одной таблицы в параметр виртуальной таблицы)
Данный способ подходит для отчетов. Из очевидных плюсов - если курс (или другие данные) не нужны для построения отчета, то СКД не будет их получать. Однако быстродействие такого отчета может оказаться и несколько ниже, чем в первом способе.
Для примера сделаем отчет - список заказов покупателей.
Для этого создадим набор данных "Документы" - запрос:
Для того, чтобы потом успешно свзать наборы данных, в запрос необходимо включить поля "Дата" и "ВалютаДокумента". Чтобы они не появлялись в списке доступных полей, если это необходимо, их можно убрать, установив флажки ограничений в таблице "Поля" схемы компоновки. В остальном запрос вряд ли требует комментариев.
Для того, чтобы получить информацию о курсах валют, добавим второй набор данных-запрос, "Курсы валют":
В этом запросе имеются 2 параметра: "Дата" и "Валюта". Эти параметры будут установлены СКД при соединении наборов. Кроме того, параметр "Дата" указан в выбранных полях - это нужно для соединения таблиц.
Для ненужный полей "Дата" и "Валюта" также устанавливаем флажки ограничений, чтобы они не появлялись в доступных полях.
Перейдем к соединению наборов. На странице "Связи наборов данных" добавим 2 связи:
1. Источник связи - набор "Документы", приемник - набор "Курсы валют". Выражение источник - "Дата", выражение приемник - "Дата", Параметр - "Дата"
2. Источник связи - набор "Документы", приемник - набор "Курсы валют". Выражение источник - "ВалютаДокумента", выражение приемник - "Валюта", Параметр - "Валюта"
Главное здесь - параметры связи. При соединении наборов данных, если указан параметр, СКД передает в подчиненный набор (в нашем случае - запрос "Курсы валют") параметры, указанные в соединении. Значениями параметров будут значения соответствующих полей набора-источника.
Перейдем к вычисляемым полям. Добавим вычисляемое поле "СуммаВВалютеУпрУчета". Выражение поля - "СуммаДокумента * Курс / Кратность".
Также укажем поля "СуммаДокумента" и "СуммаВВалютеУпрУчета" как ресурсы
Настроим отчет.
Добавим одну группировку "Детальные записи", в выбранных полях укажем "ЗаказПолкупателя", "Курс" и "Кратность". Добавим ресурсы "СуммаДокумента" и "СуммаВВалютеУпрУчета"
Данный способ подходит для отчетов. Из очевидных плюсов - если курс (или другие данные) не нужны для построения отчета, то СКД не будет их получать. Однако быстродействие такого отчета может оказаться и несколько ниже, чем в первом способе.
Для примера сделаем отчет - список заказов покупателей.
Для этого создадим набор данных "Документы" - запрос:
Для того, чтобы потом успешно свзать наборы данных, в запрос необходимо включить поля "Дата" и "ВалютаДокумента". Чтобы они не появлялись в списке доступных полей, если это необходимо, их можно убрать, установив флажки ограничений в таблице "Поля" схемы компоновки. В остальном запрос вряд ли требует комментариев.
Для того, чтобы получить информацию о курсах валют, добавим второй набор данных-запрос, "Курсы валют":
В этом запросе имеются 2 параметра: "Дата" и "Валюта". Эти параметры будут установлены СКД при соединении наборов. Кроме того, параметр "Дата" указан в выбранных полях - это нужно для соединения таблиц.
Для ненужный полей "Дата" и "Валюта" также устанавливаем флажки ограничений, чтобы они не появлялись в доступных полях.
Перейдем к соединению наборов. На странице "Связи наборов данных" добавим 2 связи:
1. Источник связи - набор "Документы", приемник - набор "Курсы валют". Выражение источник - "Дата", выражение приемник - "Дата", Параметр - "Дата"
2. Источник связи - набор "Документы", приемник - набор "Курсы валют". Выражение источник - "ВалютаДокумента", выражение приемник - "Валюта", Параметр - "Валюта"
Главное здесь - параметры связи. При соединении наборов данных, если указан параметр, СКД передает в подчиненный набор (в нашем случае - запрос "Курсы валют") параметры, указанные в соединении. Значениями параметров будут значения соответствующих полей набора-источника.
Перейдем к вычисляемым полям. Добавим вычисляемое поле "СуммаВВалютеУпрУчета". Выражение поля - "СуммаДокумента * Курс / Кратность".
Также укажем поля "СуммаДокумента" и "СуммаВВалютеУпрУчета" как ресурсы
Настроим отчет.
Добавим одну группировку "Детальные записи", в выбранных полях укажем "ЗаказПолкупателя", "Курс" и "Кратность". Добавим ресурсы "СуммаДокумента" и "СуммаВВалютеУпрУчета"
Задача: Ноутбук с Windows 7 (Домашняя версия) должен работать с офисной ИБ 1С8. В офисе компьютеры объединены в домен, соответственно контроллер домена не пускает «чужой» компьютер к своим ресурсам.
Переустанавливать ОС крайне нежелательно, всевозможные попытки изменения настроек домена результатов не дали. Выход достаточно прост.
Для нормальной работы необходимо:
1. На контроллере домена создать VPN соединение;
2. На ноутбуке настроить подключение к этому VPN соединению;
3. На ноутбуке изменить файл маршрутизации к сетевому ключу 1С8.
После установки платформы 1С, до подключения VPN, при запуске программа выдает сообщение: «Ошибка при выполнении файловой операции …»
После подключения к сети через VPN при стандартном файле netstart.ini выдается сообщение: «Не обнаружен ключ защиты программы»
Для поиска ключа в сети необходимо изменить этот файл (он находится в папке “C:\Prorgam Files\1cv81\bin\conf”). Для его изменения нужно обладать правами администратора на ноутбуке.
Файл nethasp.ini должен содержать строки:
При этом HASP драйвер ноутбука напрямую через порт 475 обращается к компьютеру с установленным ключем. Компьютер с адресом 192.168.0.10 (где находится ключ 1С) должен иметь постоянный (статический) адрес в сети, иначе этот файл придется постоянно редактировать.
Лишние настройки в файле nethasp.ini сбивают нормальную работу программы. Все эти настройки также работают с ОС Vista.
Автор: daulberg