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

Итак в 1С есть справочники. Например, справочник товаров (номенклатуры). Там мы укажем список товаров, которыми торгует наша организация.

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

Товары бывают разные. Например, продукты и химия. Что делать, если руководитель попросит сделать отчет – сколько денег мы заработали на продуктах, а сколько на химии?

Легко! – ответим мы. Нужно добавить справочник Видов товаров, а в справочнике Номенклатура добавить такой реквизит. Теперь когда мы вводим новый товар – нужно будет выбрать вид товара.

Однако девочки не рады такому нововведению – ведь теперь нужно им заполнять целое дополнительное поле, а у них и так много работы и они ничего не успевают. Да и вообще! – говорят они – у нас 900 наименований продуктов, и только 50 наименований химии! Даже дураку ясно, что нужно по умолчанию ставить вид товара продукты.

Отлично! – отметим мы. И… что делать?

Константы 1С

Для редактирования констант открывается форма констант по умолчанию. Каждое поле на такой форме – это одна константа.

Добавить форму констант можно двумя способами:

  • Нажать правой кнопкой на ветку Константы 1С и выбрать пункт меню Создать форму констант
  • Добавить форму в ветку Общие/Общие формы и в мастере выбрать тип формы – Форма констант.

Посмотреть (и выбрать) форму констант можно следующим образом:

  • Войти в свойства конфигурации (правой кнопкой мыши на верхней корневой ветке конфигурации, которую программисты обычно называют «Голова») и использовать свойство Основная форма констант.

Форма констант отличается тем, что основной реквизит формы имеет тип «КонстантыНабор». Это позволяет записывать константы 1С не поштучно, а сразу набором.

Кстати, реквизит формы становится «основным», если в свойствах формы он указан в свойстве Данные.

В программе на языке 1С к любой константе можно обратиться легко и просто:

Знч = Константы.НужнаяКонстанта.Получить(); //считываем
Константы.НужнаяКонстанта.Установить(Знч); //записываем

Параметры сеанса 1С

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

При создании нового товара программа на языке 1С в ПриОткрытииФормы() будет устанавливать значение поля Вид товара в тот, который назначен в константе. Вуаля!

Теперь программа работает, но мы на этом не остановимся! Еще бы – мы же крутые программисты, мы хотим, чтобы программа не просто работала, но и работала быстро!

Где хранятся константы 1С? В базе данных, в специальной таблице. Каждый раз, когда оператор создает новый товар, будет ломиться на сервер и считывать значение константы 1С. А что если операторов 200 человек? Оптимально ли это?

Что же тогда делать?

И тут мы вспоминаем про параметры сеанса 1С. Это значения наподобии констант, которые заполняются в момент старта 1С в режиме Предприятие и доступны сразу на клиенте. Иначе говоря – это некий кеш на стороне клиента.

Кроме того, если в константе список мы можем хранить только в хранилище значений, то в параметр сеанса 1С мы ее уже можем распаковать, правда она будет не динамической – с типом ФиксированныйМассив.

Параметры сеанса 1С это тоже , в окне конфигурации находится в ветке Общие/Параметры сеанса 1С.

Мало добавить параметр сеанса 1С, потому что если он не заполнен, то программа покажет ошибку.

Заполнение (установка) параметров сеанса 1С должна производиться при старте 1С в режиме Предприятие. Нажмите правой кнопкой на верхнюю ветку конфигурации (программисты называют ее «Голова») и выберите пункт меню Открыть модуль сеанса.

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

ПараметрыСеанса.НужныйПараметр = Знч; //запись, один раз в самом начале
Знч = ПараметрыСеанса.НужныйПараметр; //чтение, строго после записи.

1. Постановка задачи

В этой статье рассмотрим процесс написания простейшей внешней обработки заполнения табличной части в 1С 8 для конфигураций, использующих обычное приложение. Для примера возьмем такую задачу: “В конфигурации 1С:Бухгалтерия 2.0 создать внешнюю обработку заполнения табличной части Товары документа , данные для заполнения взять из табличной части Товары документа Поступление товаров и услуг ”. Таким образом нам необходимо заполнить товары реализации на основании товаров поступления, такая задача довольно часто встречается в реальной практике программиста 1С.

2. Создание внешней обработки

Зайдем в 1С 8 в режиме Конфигуратор . При помощи меню Файл -> Новый или пиктограммы Новый документ создадим новую внешнюю обработку .

В поле Имя укажем: “ПростейшееЗаполнениеТабличнойЧасти” и сохраним внешнюю обработку на жесткий диск используя меню Файл -> Сохранить или пиктограмму Сохранить или сочетание клавиш Ctrl + S .

Выделив ветку Реквизиты в дереве метаданных обработки и нажав кнопку Добавить (кнопка с зеленым плюсом) создадим новый реквизит внешней обработки — ДокументПоступления , выберем для него тип ДокументСсылка.ПоступлениеТоваровУслуг , этот реквизит нужен нам для выбора документа Поступление товаров и услуг , на основании которого будет заполняться реализация.

Для выбора документа поступления нам понадобится отдельная форма. Выделив ветку Формы и используя ту же кнопку — Добавить создадим форму внешней обработки. Откроется окно конструктора формы, на первой странице конструктора никаких изменений делать не нужно, поэтому просто нажмем кнопку Далее .

На второй странице конструктора нам необходимо выбрать реквизит ДокументПоступления (для того что бы он появился на создаваемой форме) и нажать кнопку Готово .

После этого откроется созданная форма, нам необходимо что бы на ней пользователь выбирал документ поступления, и закрывал ее. Поэтому при нажатии кнопки Выполнить форма должна просто закрываться. Для того что бы реализовать это, выделим кнопку Выполнить , кликнем по ней правой кнопкой мыши и выберем пункт Свойства . В свойствах кнопки, в строке Действие выберем действие — Закрыть . На этом работа с формой завершена, закроем ее.

3. Программирование

Приступим к программированию обработки заполнения табличной части. Перейдем в Модуль объекта внешней обработки(на нижней панели обработки кнопка Действия -> Открыть модуль объекта ).

В нем нам необходимо создать экспортную процедуру Инициализировать .

Процедура Инициализировать Экспорт КонецПроцедуры

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

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

ТабличнаяЧасть = Объект[ИмяТабличнойЧасти];

При выполнении процедуры в параметре Объект будет содержаться объект документа, который мы заполняем, а в параметре ИмяТабличнойЧасти строка с именем табличной части, которую мы заполняем. Таким образом эта строчка кода получает табличную часть заполняемого документа по ее имени.

Нам необходимо что бы пользователь выбрал документ Поступление товаров и услуг , поэтому напишем код открытия формы выбора документа. Для начала получим эту форму в переменную, используя метод внешней обработки ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>) . Нам достаточно заполнить только первый параметр этого метода, передав туда строку с именем нашей формы.

ФормаВыбораПоступления = ПолучитьФорму("Форма" );

Теперь откроем полученную форму, используя модальное открытие(пока форма открыта все остальные окна 1С недоступны), потому что при таком способе открытия дальнейший наш код в процедуре Инициализировать выполняться не будет, пока пользователь не закроет форму.

ФормаВыбораПоступления.ОткрытьМодально();

После того, как пользователь закроет форму нам необходимо проверить, заполнен ли реквизит ДокументПоступления (на случай если документ поступления не был выбран). Если после проверки ДокументПоступления окажется пустым, то дальнейшее выполнение обработки не имеет смысла, и его следует прервать.

Если НЕ ЗначениеЗаполнено(ДокументПоступления) Тогда Сообщить (); Возврат ; КонецЕсли ;

Для проверки заполненности реквизита здесь используется функция глобального контекста ЗначениеЗаполнено(<Значение>) , она проверяет отличатся ли значение переданное в параметре от значения по умолчанию того же типа. Процедура Сообщить выводит указанный текст в окно сообщений 1С 8. Ключевое слово Возврат прерывает выполнение процедуры.

Приступим к написанию запроса, который будет выбирать данные табличной части Товары документа Поступление товаров и услуг . Создадим новый запрос:

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("ДокументПоступления" ,ДокументПоступления);

Напишем текст запроса, будем делать это при помощи Конструктора запроса . Писать текст запроса вручную не рекомендуется, это не эффективно и отнимает кучу времени. Для начала напишем строку:

Запрос.Текст = "" ;

Поставим курсор между символами кавычек, нажмем правую кнопку мыши и выберем пунк Конструктор запроса… . После этого появится предложение создать новый запрос, нажмем кнопку “ОК”. Откроется окно конструктора, в левой его части расположены все доступные таблицы базы данных, нам необходим документ ПоступлениеТоваровУслуг . Найдем его и раскроем при помощи символа “+”, выберем табличную часть Товары и перетащим ее во вторую часть экрана конструктора, которая называется Таблицы (Также переместить нужную таблицу можно при помощи кнопки “>”).

Теперь раскроем по “+” выбранную нами таблицу(ПоступлениеТоваровУслугТовары ) и перетащим необходимые для нашего заполнения табчасти поля в третью часть экрана конструктора, которая так и называется — Поля . Все доступные поля выбирать не будем, ограничимся таким набором: Номенклатура, Количество, Цена, Сумма, СтавкаНДС, СуммаНДС .

Так как нам нужны данные только одного документа поступления(который мы выбрали перед началом заполнения), то в на закладке “Условия” наложим условие на ссылку документа при помощи переданного нами параметра.

Создание текста запроса в конструкторе на этом завершено, нажмем кнопку “ОК”. В итоге у нас получился следующий текст запроса:

Запрос.Текст = "ВЫБРАТЬ |ИЗ |ГДЕ ;

Созданный запрос осталось только выполнить и выгрузить в переменную:

Результат = Запрос.Выполнить().Выгрузить();

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

ТабличнаяЧасть.Очистить();

При помощи цикла Для каждого обойдем таблицу значений с результатами запроса.

Для Каждого ЭлементРезультата из Результат Цикл КонецЦикла ;

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

НоваяСтрокаТЧ = ТабличнаяЧасть.Добавить();

Заполним созданную строку таб. части данными из строки результата запроса используя процедуру Глобального контекста ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>) .

ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ,ЭлементРезультата);

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

процедурой ЗаполнитьСчетаУчетаВСтрокеТабЧасти из модуля объекта документа Реализация товаров и услуг . Вызовем ее при помощи параметра Объект (следует заметить,

что мы можем вызывать только экспортные процедуры из модуля объекта документа).

Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НоваяСтрокаТЧ, ИмяТабличнойЧасти, Истина);

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

Процедура Инициализировать(Объект, ИмяТабличнойЧасти = Неопределено, ТабличноеПолеОбъекта = Неопределено) Экспорт ТабличнаяЧасть = Объект[ИмяТабличнойЧасти]; ФормаВыбораПоступления = ПолучитьФорму("Форма" ); ФормаВыбораПоступления.ОткрытьМодально(); Если НЕ ЗначениеЗаполнено(ДокументПоступления) Тогда Сообщить ("Не выбран документ поступления" ); Возврат ; КонецЕсли ; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДокументПоступления" ,ДокументПоступления); Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Количество, | ПоступлениеТоваровУслугТовары.СтавкаНДС, | ПоступлениеТоваровУслугТовары.Сумма, | ПоступлениеТоваровУслугТовары.СуммаНДС, | ПоступлениеТоваровУслугТовары.Цена |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &ДокументПоступления" ; Результат = Запрос.Выполнить().Выгрузить(); ТабличнаяЧасть.Очистить(); Для Каждого ЭлементРезультата из Результат Цикл НоваяСтрокаТЧ = ТабличнаяЧасть.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ,ЭлементРезультата); Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НоваяСтрокаТЧ, ИмяТабличнойЧасти, Истина); КонецЦикла ; КонецПроцедуры

В следующей части стать будет рассказано, как отладить обработку заполнения табличной части и как подключить ее к документу.

4. Отладка

Довольно часто требуется отлаживать код, который вы пишите. Для того что бы отладить обработку заполнения табличной части в 1С 8 создадим у нее реквизит СсылкаНаОбъект типа ДокументСсылка.РеализацияТоваровУслуг

Он нужен нам для того что бы при отладке выбрать документ реализации, который мы будем заполнять. Далее необходимо создать форму для отладки и разместить там созданный реквизит СсылкаНаОбъект , процесс создания формы отладки не отличается от создания формы выбора документа поступления, поэтому детально останавливаться на нем не будем.

После того как форма будет создана, перейдем в ее модуль. Там найдем автоматически созданную процедуру КнопкаВыполнитьНажатие . Эта процедура отрабатывает при нажатии кнопки Выполнить . Вызовем из нее процедуру Инициализировать , которая находится в модуле обработки, в параметры передадим объект документа Реализация товаров и услуг (который мы получим из реквизита СсылкаНаОбъект ) и строку с названием заполняемой табличной части(в нашем случае Товары ).

Процедура КнопкаВыполнитьНажатие(Кнопка) Инициализировать(СсылкаНаОбъект.ПолучитьОбъект(), "Товары" ); КонецПроцедуры

Теперь необходимо сделать созданную форму основной формой обработки. Для этого выберем ее в поле “Форма обработки”.

Теперь вы можете ставить точку останова в нужном месте процедуры Инициализировать или процедуры КнопкаВыполнитьНажатие формы отладки, и запускать обработку заполнения табличной части в режиме отладки 1С:Предприятия .

5. Подключение к документу

После того как обработка заполнения написана и отлажена следует подключить ее к документу из которого она будет выполняться. Для этого зайдем в 1С 8 в режиме Предприятие , перейдем в меню Сервис -> Дополнительные отчеты и обработки -> Дополнительные внешние обработки табличных частей и добавим новый элемент справочника. При помощи кнопки Заменить файл внешней обработки добавим файл созданной нами обработки заполнения табличной части.

Заполним принадлежность обработки, для этого воспользовавшись кнопкой Подбор выберем документ Реализация товаров и услуг

И укажем, что заполнение предназначено для табличной части Товары .

Нажимаем кнопку ОК и на этом все, обработка заполнения будет доступна в меню Заполнить табличной части Товары документа Реализация товаров и услуг . Скачать обработку использованную для этого примера вы можете по .

Краткая справка по использованию OLE в 1С-Предприятии.

Для запуска системы 1С-Предприятия в качестве OLE Automation сервера из внешнего приложения выполняется следующая последовательность действий:

  1. Создается объект с OLE идентификатором (регистр символов непринципиален):
  • V1CEnterprise.Application - версия независимый ключ;
  • V77.Application - версия зависимый ключ;
  • V77S.Application - версия зависимый ключ, SQL версия;
  • V77L.Application - версия зависимый ключ, локальная версия;
  • V77M.Application - версия зависимый ключ, сетевая версия.
  • Выполняется инициализация системы 1С-Предприятие методом Initialize().
  • Вызываются атрибуты и методы системы 1С-Предприятия как OLE Automation сервера.
  • 1С-Предприятие в качестве OLE Automation сервера имеет 4 метода:

    • Initialize() - выполнить инициализацию системы 1С-Предприятие.
    • CreateObject() - Создает объект агрегатного типа данных 1С-Предприятия и возвращает ссылку на него.
    • EvalExpr() - Вычислить выражение системы 1С-Предприятие.
    • ExecuteBatch() - Выполнить последовательность операторов системы 1С-Предприятие.

    Методы:

    1. Initialize() - открыть базу.

    Синтаксис метода такой:

    Initialize(<Имя объекта>.RMTrade, <Командная строка>, <Пустая строка>)

    <Имя объекта>.RMTrade - имя переменной и ключевое слово RMTrade.
    <Командная строка> - командная строка, в которой можно прописать путь к базе, имф пользователя и пароль.
    <Пустая строка>) - либо пустая строка, либо "NO_SPLASH_SHOW" - чтобы не показывать заставку при загрузке.

    Для того, чтобы открыть базу через OLE - необходимо создать объект с идентификатором OLE, выполнить инициализацию базы и проверить успешность выполнения инициализации. В своем примере я не указываю никаких дополнительных параметров, поэтому открывается квадратное окошко выбора базы, предлагается выбрать пользователя и ввести пароль.

    ДругаяБаза=СоздатьОбъект("V77.Application"); Открыта=ДругаяБаза.Initialize(ДругаяБаза.RMTrade,); Если Открыта=0 Тогда // True=-1, False=0. Для всех OLE команд. Сообщить("База не была открыта."); Возврат; КонецЕсли;

    2. CreateObject() - создать объект агрегатного типа.

    Этот метод создает объект агрегатного типа данных системы 1С-Предприятия и возвращает ссылку на него.

    Синтаксис метода такой:

    CreateObject(<ИмяАгрегатногоТипа>)

    <ИмяАгрегатногоТипа> - строковое выражение, значение которого содержит имя агрегатного типа данных, заданного в конфигураторе. Например: "Справочник.Номенклатура", "Документ.ПриходнаяНакладная".

    3. EvalExpr() - вычислить выражение.

    Синтаксис метода такой:

    EvalExpr(<СтрокаВыражения>)

    <СтрокаВыражения> - строковое выражение, записанное на встроенном языке 1С-Предприятия.

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

    4. ExecuteBatch() - выполнить последовательность операторов.

    Синтаксис метода такой:

    ExecuteBatch(<СтрокаОператоров>)

    <СтрокаОператоров> - строковое выражение, текст программы на встроенном языке 1С-предприятия.

    Возвращает значение логического типа: TRUE, если последовательность операторов выполнена успешно, FALSE, если нет. В OLE Automation TRUE и FALSE имеют соответственно значения -1 (минус единица) и 0.

    Пример: создание документа в другой базе, открытой через OLE.

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

    ДругаяБаза=СоздатьОбъект("v77.application"); Открыта=ДругаяБаза.Initialize(ДругаяБаза.RMTrade,); Если Открыта=0 Тогда Сообщить("База не была открыта."); Возврат; КонецЕсли; дДок=ДругаяБаза.CreateObject("Документ.ПриходнаяНакладная"); дТовар=ДругаяБаза.CreateObject("Справочник.Номенклатура"); дДок.Новый(); дДок.ДатаДок=ВыбДокумент.ДатаДок; дДок.Фирма=ДругаяБаза.evalexpr("Константа.ОсновнаяФирма"); дДок.Склад=ДругаяБаза.evalexpr("Константа.ОсновнойСклад"); дДок.КатегорияЦен=ДругаяБаза.evalexpr("Константа.ПриходнаяКатегорияЦен"); дДок.ВариантРасчетаНалогов=ДругаяБаза.evalexpr("Константа.ОсновнойВариантРасчетаНалогов"); дДок.Валюта=ДругаяБаза.evalexpr("Константа.БазоваяВалюта");//рубли дДок.Дата_курса=дДок.ДатаДок; дДок.ТипУчета=1; дДок.Автор=ДругаяБаза.evalexpr("глПользователь"); дДок.ПризнакНакладной=ДругаяБаза.evalexpr("Перечисление.ПризнПрихНакл.Закупка"); дДок.Курс=1;//рубли дДок.Комментарий=ВыбДОкумент.Комментарий; ВыбДОкумент.ВыбратьСтроки(); Пока ВыбДокумент.ПолучитьСтроку()=1 Цикл дДок.НоваяСтрока(); ТовКод=СокрЛП(ВыбДОкумент.Товар.Код); Если дТовар.НайтиПоКоду(ТовКод)=0 Тогда Сообщить("Не найден товар с кодом "+ТовКод); Возврат; КонецЕсли; дТовар.ИспользоватьДату(дДок.ДатаДок); дДок.Товар=дТовар.ТекущийЭлемент(); дДок.Количество=ВыбДокумент.Количество; дДок.Единица=дТовар.ЕдиницаПоУмолчанию; дДок.Цена=ВыбДОкумент.Цена; дДок.Коэффициент=1; дДок.Всего=ВыбДОкумент.Сумма; дДок.Сумма=ВыбДОкумент.Сумма-ВыбДокумент.НП; дДок.СтавкаНДС=дТовар.СтавкаНДС; дДок.НДС=ВыбДокумент.НДС; дДок.СтавкаНП=дТовар.СтавкаНП; дДок.СуммаНП=ВыбДокумент.НП; КонецЦикла; дДок.УстановитьНовыйНомер(ДругаяБаза.evalexpr("Константа.ПрефиксНомеровДокументовУпрУчета")); Сообщить(""+дДок.НомерДок); дДок.Записать();

    Этот пример на 100% рабочий. Используется у меня для выгрузки документов из одной конфигурации в другую.

    Сравнение в базе OLE. Константы, перечисления, элементы справочников.

    Для сравнения значений агрегатных типов данных в базе, открытой через Оле, использовать стандартный алгоритм с использование знаков равно и неравно (=,<>) не получается. Выход простой. Необходимо перейти от сравнения агрегатных типов данных к простым типам данных - дата, строка и число.

    Отсюда вывод: мы сравниваем не сами элементы, а их уникальные атрибуты. Например, для элементов справочника - это код (если он есть), либо наименование. Для перечисления используется метод Идентификатор(). Вот два примера:

    //Сравнение реквизита номенклатуры с Константой БазоваяВалюта Если дТовар.ВалютаУчета.Код<>Другая.Константа.БазоваяВалюта.Код Тогда дТовар.ВалютаУчета=Другая.Константа.БазоваяВалюта; КонецЕсли; //Сравнение реквизита номенклатуры с перечислением Если дТовар.ТипТовара.Идентификатор()<>Другая.Перечисление.ТипыТоваров.Штучный.Идентификатор() Тогда дТовар.ТипТовара=Другая.Перечисление.ТипыТоваров.Штучный; КонецЕсли;

    Параметры сеансы 1С 8.3 — переменная, в которой хранится значение нужного параметра на время сеанса пользователя. По сути, это некая глобальная переменная, привязанная к сеансу текущего пользователя.

    Использование параметров сеанса в 1С

    Параметры сеанса задаются только программно, универсального интерфейса для установки параметров сеанса в системе нет. Обычно они задаются при старте системы, в «Модуле сеанса». Если параметр не определен, во время обращения к нему будет вызвана ошибка.

    Пример установки параметра сеанса 1С

    Рассмотрим типичный пример использования параметров сеанса — установку текущего пользователя. Пример я возьму из подготовки к .

    В древе метаданных создадим новый параметр сеанса — ТекущийПользователь, назначим ему тип — СправочникСсылка.ФизическиеЛица:

    Получите 267 видеоуроков по 1С бесплатно:

    В модуле сеанса создадим процедуру, в которой будет определяться текущий параметр сеанса:

    Код процедуры:

    Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) //ищем физ. лицо по имени пользователя ТекПользователь = Справочники. ФизическиеЛица. НайтиПоНаименованию(ИмяПользователя() ) ; //если не нашли - создадим нового Если ТекПользователь. Пустая() Тогда НовПользователь = Справочники. ФизическиеЛица. СоздатьЭлемент() ; НовПользователь. Наименование = ИмяПользователя() ; НовПользователь. Записать() ; ТекПользователь = НовПользователь. Ссылка; КонецЕсли ; //присваиваем параметру сеанса ТекущийПользователь ссылку на справочник физ.лиц ПараметрыСеанса. ТекущийПользователь = ТекПользователь; КонецПроцедуры