Имя: Пароль:
1C
1С v8
Функция при записи
, ,
0 Yrii-ay
 
28.11.16
14:57
При отмене проведения любого документа проверять, если документ содержит реквизит ответственный и текущий пользователь отличается от пользователя, выбранного в качестве ответственного тогда система не должна позволять отменить проведение документа. А если реквизит не заполнен тогда заполнить, его текущим пользователем. Не могу написать
1 Yrii-ay
 
28.11.16
14:58
Функция ПроверитьОтветственногоПередЗаписьюДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    Если НЕ Источник.Ссылка.Метаданные().Реквизиты.Найти("Ответственный")= Неопределено   Тогда
        Источник.Ответственный= " Вы не ответственный " ;
2 Yrii-ay
 
28.11.16
14:59
А если реквизит не заполнен тогда заполнить, его текущим пользователем. Не могу написать
Если НЕ Источник.Ссылка.Метаданные().Реквизиты.Найти("Ответственный")= Неопределено  Тогда
        Источник.Ответственный= " "  + ПараметрыСеанса.ТекущийПользователь;
    КонецЕсли;
     КонецЕсли;
3 DrShad
 
28.11.16
15:00
Вы не ответственный
4 DrShad
 
28.11.16
15:01
Источник.Ответственный= ПараметрыСеанса.ТекущийПользователь;
5 DrShad
 
28.11.16
15:01
не надо преобразовывать в строку
6 Dmitrii
 
гуру
28.11.16
15:07
(0) Постановка дурацкая.
Рано или поздно (скорее рано) возникнет ситуация, когда один пользователь должен провести документ(ы) другого пользователя.
Типичные примеры:
- групповое проведение
- восстановление последовательностей
- уволился или перешел на другое место один пользователь, а не его место пришел другой (если пользователи - это люди, а не должности).
7 Yrii-ay
 
28.11.16
15:10
То есть если реквезит не заполнен заполнить его текущим пользователем я написал , а вот для проверки пользователя не могу
8 Dmitrii
 
гуру
28.11.16
15:11
Что-то типа этого:

Если НЕ Источник.Ссылка.Метаданные().Реквизиты.Найти("Ответственный") = Неопределено Тогда
   Если НЕ ЗначениеЗаполнено(Источник.Ответственный) Тогда
     Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь;
   ИначеЕсли Источник.Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда
     Отказ = Истина;
     Сообщить("А-та-та! Не ты ответственный за документ!");
   КонецЕсли;
КонецЕсли;
9 Yrii-ay
 
28.11.16
15:14
(8) Спасибо!Работает ваш код!
10 DrShad
 
28.11.16
15:17
вот и помогай после этого людям
11 Yrii-ay
 
28.11.16
15:25
(10) А что не так то?
12 Yrii-ay
 
28.11.16
15:27
Всем спасибо!
13 Timon1405
 
28.11.16
15:49
так и представляю себе эти документы, заведенные пользователями, которых потом уволили. этакое кладбище неизменяемых документов, мертвые с косами стоят
14 newbling
 
28.11.16
16:32
(13) можно же запилить систему разрешений, не просто смотреть по тек пользователю, а завести РС, в котором вести что-кому-когда и за кого можно проводить.