Программирование в 1ССуббота, 20.04.2024, 09:08

| RSS
Главная | Каталог статей
Меню сайта

Категории раздела
Обзор платформы [8]
Архитектура 1С Предприятия [4]
Средства разработки [8]
Работа пользователей с 1С Предприятием 8.0 [8]
Установка и настройка [10]
Особенности администрирования Windows XP SP2 [5]
Особенности использования HASP [5]
Особенности настройки SQL Server 2000 [9]
Администрирование [18]

Поиск

Поиск по сайту

Главная » Статьи » 1С v.8.x » Работа пользователей с 1С Предприятием 8.0

Работа с пользователями в 1С 8.2
Введение

В данной статье речь пойдет о том, как синхронизировать пользователей БД со справочником Пользователи. В типовых конфигурациях от фирмы 1С синхронизация этих данных достаточна сложна для понимания людей только что столкнувшихся с программированием на данной платформе. Мы попытались на данном примере упростить эту схему. Что из этого получилось, читайте ниже.

Создание формы списка справочника Пользователи

Для начала создадим новый справочник "Пользователи". Реквизитов никаких добавлять не будем, если кто захочет, потом самостоятельно добавит нужные ему реквизиты. Для отображения списка пользователей, мы создадим ФормуСписка, но на ней никаких реквизитов добавлять не будем. Вместо этого создадим реквизит типа ТаблицаЗначений и добавим в нее колонки, как показано на рисунке:


Теперь разместим на форме Элемент таблица и назовем ее "СписокПользователей" в которую добавим 2 поля - СписокПользователейИмя (Путь к данным - Список.Имя) и СписокПользователейПолноеИмя (Путь к данным - Список.Полное имя). После этого нам нужно заполнить эту таблицу данными. Для этого создадим событие формы ПриСозданииНаСервере и добавим следующий код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ,СтандартнаяОбработка)

ОМПользователи.ОбновитьСписокПользователей(Список);

КонецПроцедуры


Функцию ОбновитьСписокПользователей(Список) мы разместим в общем модуле, а сама она будет выглядеть так:

ПроцедураОбновитьСписокПользователей(СписокПользователей) Экспорт

Перем ПользователиИБ,СпрПользователейДляПоиска, СсылкаНаНайденногоПользователя;

СпрПользователейДляПоиска=Справочники.Пользователи;
ПользователиИБ =ПользователиИнформационнойБазы.ПолучитьПользователей();

Для КаждогоПользовательИБ Из ПользователиИБ Цикл

СсылкаНаНайденногоПользователя =СпрПользователейДляПоиска.НайтиПоНаименованию(ПользовательИБ.Имя);

Если СсылкаНаНайденногоПользователя =СпрПользователейДляПоиска.ПустаяСсылка()Тогда
НоваяСтрока =СписокПользователей.Добавить();
НоваяСтрока.Имя =ПользовательИБ.Имя;
НоваяСтрока.ПолноеИмя =ПользовательИБ.ПолноеИмя;
НоваяСтрока.Ссылка =СсылкаНаНайденногоПользователя;
НоваяСтрока.СуществуетВСправочнике =Ложь;
Иначе
НоваяСтрока =СписокПользователей.Добавить();
НоваяСтрока.Имя =ПользовательИБ.Имя;
НоваяСтрока.ПолноеИмя =ПользовательИБ.ПолноеИмя;
НоваяСтрока.Ссылка =СсылкаНаНайденногоПользователя;
НоваяСтрока.СуществуетВСправочнике =Истина;
КонецЕсли;

КонецЦикла;

КонецПроцедуры

В этой функции мы перебираем пользователей БД, добавляем их в наш СписокПользователей и в зависимости от того, есть ли данный элемент в справочнике Пользователи устанавливаем флаг СуществуетВСправочнике. Для чего же нужен флаг СуществуетВСправочнике? Ответ прост. Этот флаг нам понадобится для условного форматирования в оформлении, т.е. программа будет видеть, что данный пользователь еще не заведен в справочник, и отображать другим цветом. Для этого в свойствах формы определим это самое форматирование:



Теперь создадим новое форматирование, нажав кнопку добавить. Значение в колонке "Оформление" будет выглядеть так:



значение в колонке "Условие":



значение в колонке "Оформляемые поля":



Создание элемента справочника Пользователи

Добавим новую форму в справочник пользователи:

Добавим в форму новое поле и строковой реквизит "ПолноеНаименование":



Теперь вернемся к форме "ФормаСписка" и создадим для списка "СписокПользователей" событие "Выбор", в которое добавим следующий код:

&НаКлиенте
Процедура СписокПользователейВыбор(Элемент,ВыбраннаяСтрока, Поле,СтандартнаяОбработка)

Перем ТекущиеДанные;

ТекущиеДанные =Элементы.СписокПользователей.ТекущиеДанные;

//Если в справочнике Пользователи элемента нет тогда создаем новый
Если ТекущиеДанные.Ссылка.Пустая() Тогда

//В открываемую форму передаем 2 параметра:
//имя пользователя и полное имя пользователя
ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта",
НовыйСтруктура("ИмяПользователя, ПолноеИмяПользователя",
ТекущиеДанные.Имя,ТекущиеДанные.ПолноеИмя));

//Иначе открываем существующий элемент справочника
Иначе
//В открываемую форму передаем 2 параметра:
//ссылка на существующий справочник и полное имя пользователя
ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта",
Новый Структура("Ключ, ПолноеИмяПользователя",
ТекущиеДанные.Ссылка, ТекущиеДанные.ПолноеИмя));
КонецЕсли;

КонецПроцедуры

Параметры в открываемую форму мы отправили, теперь необходимо их принять и обработать. Для этого открываем форму элемента справочника Пользователи и создаем новое событие формы "ПриСозданииНаСервере":

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Попытка
Объект.Наименование =Параметры.ИмяПользователя;
Исключение
КонецПопытки;

Попытка
ПолноеНаименование =Параметры.ПолноеИмяПользователя;
Исключение
КонецПопытки;

КонецПроцедуры

Форма элемента готова. Но при записи элемента справочника форма списка не обновляется. Чтобы обновить форму справочника воспользуемся функцией ОбработкаОповещения. Для этого в форме элемента справочника создадим событие ПослеЗаписи и добавим код:

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("ОбновитьФормуСписка");
КонецПроцедуры


а в форме списка справочника создадим событие ОбработкаОповещения с кодом:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия,Параметр,Источник)

Если ИмяСобытия = "ОбновитьФормуСписка" Тогда
ЭтаФорма.Список.Очистить();
ОбновитьСписокПользователей();
КонецЕсли;
КонецПроцедуры

где функция ОбновитьСписокПользователей() будет выглядеть так:

&НаСервере
Процедура ОбновитьСписокПользователей()
ОМПользователи.ОбновитьСписокПользователей(Список);
КонецПроцедуры


Теперь наша конфигурация готова:

Скачать исходник



Источник: http://alsproject.ru
Категория: Работа пользователей с 1С Предприятием 8.0 | Добавил: waider (11.11.2010) | Автор: Илья
Просмотров: 8548
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Copyright 1C:Programmer © 2024
    Бесплатный конструктор сайтов - uCoz