|
Справочник "Пользователи" | ☑ | ||
---|---|---|---|---|
0
Scorp1985
05.08.13
✎
06:58
|
Здравствуйте все!
Делаю свою конфигурацию, необходимо привязать элементы справочника "Пользователи" к пользователям БД, а также создавать пользователя БД при создании элемента справочника, и наоборот, при входе пользователя БД создавать (если отсутствует) элемент справочника. Что где прописать, чтобы ничего не упустить? |
|||
1
IamAlexy
05.08.13
✎
06:59
|
открыть любую демку платформы и подглядеть
|
|||
2
Scorp1985
05.08.13
✎
07:01
|
(1) Ну там боюсь что-то упустить, поэтому и прошу указать все места, где нужно проработать...
|
|||
3
Галахад
гуру
05.08.13
✎
07:06
|
(2) Это легко. Достаточно потом проверить результат.
Если результата нет, то где-то ошибка. |
|||
4
Scorp1985
05.08.13
✎
07:09
|
(1) (3) буду признателен за конкретные указания что и где прописать, т.к. опыта совсем мало... =)
Справочник пользователи у меня имеет лишь один реквизит: ИдентификаторПользователя, ФИО хранится в Наименовании. |
|||
5
Любопытная
05.08.13
✎
07:25
|
(4) Ну неужели опыта настолько мало, что нельзя демо открыть и посмотреть?
Надо в модуле приложения прописать проверку при запуске системы. Никак они не привязываются на самом деле, тупо по коду находится и все |
|||
6
sonsimo
05.08.13
✎
07:30
|
(5) не всегда. Например, в БСП связь не по коду, а по идентификатору пользователя. Соответственно, такой порядок во всех конфах, построенных на БСП.
Ну а то, что привязка программная - согласен |
|||
7
Scorp1985
05.08.13
✎
07:33
|
(5) (6) смотрю, там наворочено много) И как раз таки по идентификатору привязка идёт.
|
|||
8
Web00001
05.08.13
✎
07:46
|
Добавить БСП в самописную конфигурацию, уже предлагали?
|
|||
9
Любопытная
05.08.13
✎
07:48
|
(6) Я из БСП подсистему пользователей не щупала, она больно громоздкая. Для собственных целей обошлась старыми дедовскими методами из УТ 10.3.
А так-то можно из БСП взять конечно |
|||
10
Scorp1985
05.08.13
✎
08:01
|
Взял из БП КОРП кусок модуля, а именно ПриНачалеРаботыСистемы()
ПользовательОпределен = Ложь; ОписаниеОшибкиОпределенияПользователя = ""; Если Не ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь) Тогда Если УправлениеПользователями.ОпределитьТекущегоПользователя(ОписаниеОшибкиОпределенияПользователя) Тогда ПользовательОпределен = ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь); КонецЕсли; Иначе ПользовательОпределен = Истина; КонецЕсли; Если Не ПользовательОпределен Тогда Если ПустаяСтрока(ОписаниеОшибкиОпределенияПользователя) Тогда ОписаниеОшибкиОпределенияПользователя = "Ошибка идентификации пользователя. Обратитесь к администратору"; КонецЕсли; Предупреждение(ОписаниеОшибкиОпределенияПользователя); ЗавершитьРаботуСистемы(Ложь); Возврат; Иначе Теперь не могу понять, где привязать в документе при создании чтобы подставлялся элемент справочника для текущего пользователя(( |
|||
11
Галахад
гуру
05.08.13
✎
08:03
|
При открытии, если документ новый.
|
|||
12
Cerera
05.08.13
✎
08:04
|
(10)
Если ЭтоНовый() Тогда Пользователь=Справочники.Пользователи.НайтиПоНаименованию(ПараметрыСеанса.ТекущийПользователь); КонецЕсли; |
|||
13
Scorp1985
05.08.13
✎
08:12
|
(12) Спасибо, но ругается((
{Документ.Накладная.Форма.ФормаДокумента.Форма(11,14)}: Переменная не определена (Справочники) Пользователь=<<?>>Справочники.Пользователи.НайтиПоНаименованию(ПараметрыСеанса.ТекущийПользователь); (Проверка: Тонкий клиент) {Документ.Накладная.Форма.ФормаДокумента.Форма(11,59)}: Переменная не определена (ПараметрыСеанса) Пользователь=Справочники.Пользователи.НайтиПоНаименованию(<<?>>ПараметрыСеанса.ТекущийПользователь); (Проверка: Тонкий клиент) {Документ.Накладная.Форма.ФормаДокумента.Форма(10,7)}: Процедура или функция с указанным именем не определена (ЭтоНовый) Если <<?>>ЭтоНовый() Тогда (Проверка: Тонкий клиент) |
|||
14
1Сергей
05.08.13
✎
08:13
|
ПриСозданииНаСервере
|
|||
15
Scorp1985
05.08.13
✎
08:24
|
В общем, вопрос опять с нуля, привязать код из БП Корп нормально не смог, не работает он. Даже новый пользователь в справочнике не создается.
Хотелось бы просто и наглядно сделать, без лишних букв. Запустили программу - проверили пользователя - создали. Добавили пользователя в справочник - проверили - создали в БД. Опыта у меня маловато, чтобы разобраться в сложных процедурах типовых конфиг. |
|||
16
Любопытная
05.08.13
✎
08:27
|
(15)Ну ты ж сам все написал. Теперь напиши это на языке 1С и будет тебе счастье. Ну что ты на опыт-то пеняешь. Думаешь - если за тебя все напишут, у тебя опыта прибавится?
|
|||
17
1Сергей
05.08.13
✎
08:31
|
(15) конкретные вопросы задавай
|
|||
18
George Wheels
05.08.13
✎
08:38
|
(15) БП КОРП наверное обычное приложение (у нас так). А у тебя я так понял УФ.
|
|||
19
Scorp1985
05.08.13
✎
08:41
|
(18) Да, как раз до этого дошёл))
Как в моделе управляемого приложения получить текущего пользователя, пробую пойти за ним на сервер, получаю: &НаСервере Функция ПолучитьТекущегоПользователяСервер() Экспорт НайденноеЗначение = ПараметрыСеанса.ТекущийПользователь; Возврат НайденноеЗначение; КонецФункции // Процедура - обработчик события "При начале работы системы". // Процедура ПриНачалеРаботыСистемы() ТекПользователь = ПолучитьТекущегоПользователяСервер(); {МодульУправляемогоПриложения(11,20)}: Процедура или функция с указанным именем не определена (ПолучитьТекущегоПользователяСервер) ТекПользователь = <<?>>ПолучитьТекущегоПользователяСервер(); (Проверка: Тонкий клиент) |
|||
20
Любопытная
05.08.13
✎
08:45
|
(19) не надо ничего писать в модуле управляемого приложения.
Вот тебе: в модуле сеанса Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь(); Пользователь = Справочники.Пользователи.НайтиПоКоду(ПользовательИБ.Имя); Если Пользователь = Справочники.Пользователи.ПустаяСсылка() Тогда //Создаем нового пользователя в справочнике Пользователь = Справочники.Пользователи.СоздатьЭлемент(); Пользователь.Код = ПользовательИБ.Имя; Пользователь.Наименование = ПользовательИБ.Имя; Пользователь.Записать(); КонецЕсли; //Инициализируем параметр сеанса ПараметрыСеанса.ТекущийПользователь = Пользователь.Ссылка; КонецПроцедуры В модуле документа &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Объект.ОтветственныйЗаСоздание = ПараметрыСеанса.ТекущийПользователь; КонецПроцедуры |
|||
21
Scorp1985
05.08.13
✎
08:58
|
(20) Спасибо, это уже более ли менее понятно))
осталось только решить: ПараметрыСеанса.ТекущийПользователь = Пользователь.Ссылка; {МодульСеанса(15)}: Поле объекта не обнаружено (ТекущийПользователь) ПараметрыСеанса.ТекущийПользователь = Пользователь.Ссылка; |
|||
22
Любопытная
05.08.13
✎
09:16
|
А параметр сеанса вообще есть такой? Или на шару пишем?
|
|||
23
Любопытная
05.08.13
✎
09:19
|
(21) Более-менее понятно... ну обидно даже, честное слово. Это примитивное, оч. прямолинейное решение задачи. Там все ясно как белый день. А если не ясно, значит еще не дорос, значит садись и разбирайся - что неясно, почему неясно и как сделать так, чтобы прояснилось)
|
|||
24
Scorp1985
05.08.13
✎
09:25
|
(23) Ну тупенький я ещё, но я хочу подрасти))) А Вам большое спасибо!
Только вот при создании документа в поле Пользователь - пусто :( |
|||
25
Любопытная
05.08.13
✎
09:30
|
(24) Печалька... Ну включай отладчик и смотри - почему же у тебя в поле Пользователь пусто.
|
|||
26
Любопытная
05.08.13
✎
09:31
|
Может у тебя там типы реквизитов не совпадают, может просто не дописал что-то. Тут уже своими мозгами организуйся
|
|||
27
Scorp1985
05.08.13
✎
09:31
|
(25) У меня почему-то если любому реквизиту значение присваиваю в ПриСозданииНаСервере, при открытии формы всё равно пусто((
|
|||
28
Любопытная
05.08.13
✎
09:39
|
(27) У меня модуль телепатии вчера шашлыками с коньяком отключился, так что с этой проблемой я тебе не помогу))Смею предположить, что что-то с формой ты сделал не так... ну выложи картинку формы из конфигуратора, мож тогда определю.
Но щас у меня модуль жадности включится, ибо кофе кончился и меня жаба задушит)) |
|||
29
Scorp1985
05.08.13
✎
09:42
|
(28) Можно тогда спросить - процедуры ПриСозданииНаСервере() и ПриОткрытии() нужно где-то ещё привязывать в документе, или они по названию сами привязываются?
|
|||
30
Scorp1985
05.08.13
✎
09:44
|
(28) Пытаюсь проверить вот так:
&НаКлиенте Процедура ПриОткрытии(Отказ) Сообщить("Сообщение при открытии"); ПересчитатьСуммуНакладной(); КонецПроцедуры Никакого сообщения при открытии формы не наблюдаю :( |
|||
31
Любопытная
05.08.13
✎
09:44
|
см. свойства формы
|
|||
32
Любопытная
05.08.13
✎
09:45
|
кинь цф ф какую-нить файлопомойку, я посмотрю. Мне работать все равно лень
|
|||
33
Scorp1985
05.08.13
✎
09:49
|
(32) Добрая Вы, люблю я добрых людей)) особенно девушек, прям захотелось лично познакомиться))
сф тут: http://sdrv.ms/13elFUy |
|||
34
Любопытная
05.08.13
✎
09:52
|
(33)Ха-ха
|
|||
35
Serg_1960
05.08.13
✎
09:53
|
ТС, я вот одного не пойму: почему ты тонкого клиента пытаешься всё время сделать толстым?
Впрочем - бог с тобой. Не хочешь работать на сервере - твои и твоих пользователей проблемы. Загоняй на сервере в структуры нужные данные и работай с ними в тонком клиенте :( |
|||
36
Любопытная
05.08.13
✎
09:58
|
Открываешь свойства формы, тащишь ползунок вниз, там внизу есть раздел События. В этом разделе для каждого события формы, которое ты прописал заполняешь процедуру, которая это событие обрабатывает.
В дальнейшем, когда будешь описывать какие-то события в модуле формы делаешь так: открываешь модуль формы, открываешь список процедур модуля формы (по кнопке с лупой и надписью "proc") и два раза щелкаешь на названии того события, которое хочешь прописать. Платформа сама создаст процедуру, впишет ее куда надо, а тебе останется написать ее тело. Учись, студент. И книжки читай :) И не верь добрым девушкам, они обычно такими жабами становятся, что не приведи Господь;) |
|||
37
Aleksey
05.08.13
✎
10:05
|
(20) ну и где тут идентификатор, как некоторые говорили?
|
|||
38
Любопытная
05.08.13
✎
10:07
|
(37) Ну так-то я и говорила, что у меня примитив без всяких там идентификаторов работает))
|
|||
39
Aleksey
05.08.13
✎
10:13
|
(38) пришлось лезть в БП 3.0
ТекущийПользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор); |
|||
40
Любопытная
05.08.13
✎
10:20
|
(39) Это из БСП. Берешь БСП, внедряешь от нее подсистему Пользователи и все ок. ТОлько надо ИТСы почитать, хотя на них тоже не слишком хорошо написано.
|
|||
41
Scorp1985
05.08.13
✎
13:00
|
(36) спасибо за уроки))
(38) а мне сложнее и не надо - зачем?) (34) А можно с Вами познакомиться?)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |