Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Не могу понять, почему процедура то отрабатывает, то нет

Не могу понять, почему процедура то отрабатывает, то нет
Я
   Dyspho
 
18.10.16 - 07:32
Есть:
Функция ПолучитьЗначениеПраваПользователя(Право, ЗначениеПоУмолчанию) Экспорт
    
    КэшДополнительныхПрав = глЗначениеПеременной("ЗначенияДополнительныхПравПользователя");
    
    МассивЗначенийПрава = КэшДополнительныхПрав[Право];
    
    Если МассивЗначенийПрава = Неопределено Тогда
        МассивЗначенийПрава = Новый Массив;
        
        Если РольДоступна("ПолныеПрава") Тогда
            ЗначениеПрава = ПолучитьЗначениеРазрешенногоПрава(Право);
            МассивЗначенийПрава.Добавить(ЗначениеПрава);
        Иначе
            ОбъектПрав = глЗначениеПеременной("ПрофильПолномочийПользователя");
            Если ЗначениеЗаполнено(ОбъектПрав) Тогда
                Запрос = Новый Запрос;
                
                Запрос.УстановитьПараметр("ОбъектПрав", ОбъектПрав);
                Запрос.УстановитьПараметр("ПравоПользователя",   Право);
                
                Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                |    РегистрЗначениеПрав.Значение КАК Значение
                |ИЗ
                |    РегистрСведений.ЗначенияДополнительныхПравПользователя КАК РегистрЗначениеПрав
                |ГДЕ
                |    РегистрЗначениеПрав.Право = &ПравоПользователя
                |    И РегистрЗначениеПрав.Пользователь = &ОбъектПрав";
                
                Выборка = Запрос.Выполнить().Выбрать();
                
                Если Выборка.Следующий() Тогда
                    ЗначениеПрава = Выборка.Значение;
                Иначе
                    ЗначениеПрава = ЗначениеПоУмолчанию;
                КонецЕсли;
                МассивЗначенийПрава.Добавить(ЗначениеПрава);
            Иначе
                ТекущийПользователь = глЗначениеПеременной("глТекущийПользователь");    
                МассивЗначенийПрава = ПрочитатьЗначениеПраваПользователя(Право, ЗначениеПоУмолчанию, ТекущийПользователь);
            КонецЕсли;
        КонецЕсли; 
        
        КэшДополнительныхПрав[Право] = МассивЗначенийПрава;
        
        #Если Сервер Тогда
            глЗначениеПеременнойУстановить("ЗначенияДополнительныхПравПользователя", КэшДополнительныхПрав, Истина);
        #КонецЕсли
    КонецЕсли;
    
    Возврат МассивЗначенийПрава;
    
КонецФункции
 
 
   Dyspho
 
1 - 18.10.16 - 07:33
Функция ПравоЕстьУПользователя(Право, ЗначениеПоУмолчанию)
    
    МассивЗначенийПрава = ПолучитьЗначениеПраваПользователя(Право, ЗначениеПоУмолчанию);
    
    Возврат МассивЗначенийПрава.Найти(Истина) <> Неопределено;
    
КонецФункции
   Dyspho
 
2 - 18.10.16 - 07:33
Функция РазрешеноПревышениеОбъемаЗаказаПриОтгрузке() Экспорт

    Возврат НЕ ПравоЕстьУПользователя(ПланыВидовХарактеристик.ПраваПользователей.КонтролироватьПревышениеОбъемЗаказаПриОтгрузке, Ложь);

КонецФункции// РазрешеноПревышениеОбъемаЗаказаПриОтгрузке()
   Dyspho
 
3 - 18.10.16 - 07:34
То контролирует превышение объёма, то нет
Не могу понять почему
   _Дайвер_
 
4 - 18.10.16 - 07:49
(3)я в 1с слабоват еще, но возможно стоит очистить значение в начале функции???
//Здесь добавить КэшДополнительныхПрав.Очистить();

 КэшДополнительныхПрав = глЗначениеПеременной("ЗначенияДополнительныхПравПользователя");
    
    МассивЗначенийПрава = КэшДополнительныхПрав[Право];
   _Дайвер_
 
5 - 18.10.16 - 07:51
(0) Либо здесь:
Функция ПравоЕстьУПользователя(Право, ЗначениеПоУмолчанию)
    
//МассивЗначенийПрава.Очистить();

    МассивЗначенийПрава = ПолучитьЗначениеПраваПользователя(Право, ЗначениеПоУмолчанию);
    
    Возврат МассивЗначенийПрава.Найти(Истина) <> Неопределено;
    
КонецФункции
   Dyspho
 
6 - 18.10.16 - 07:52
Ты это просто так сказал или знаешь, что надо ?)
   _Дайвер_
 
7 - 18.10.16 - 07:53
(6) попробуй, возможно при отработке функции значение остается , и при повторном отрабатывании заполняется значение из кеша
   DDwe
 
8 - 18.10.16 - 07:54
(6) Попробовать совсем лень?
   Dyspho
 
9 - 18.10.16 - 07:54
(7) Ну мне нужно ВСЕГДА контроировать превышение
   Dyspho
 
10 - 18.10.16 - 07:54
Если в кеше остаётся значение, то оно и должно оставаться "контролировать"
 
 Рекламное место пустует
   Dyspho
 
11 - 18.10.16 - 07:55
(8) Да нет, не лень, просто возможности проверить нет
   _Дайвер_
 
12 - 18.10.16 - 07:56
(10) У тебя в запросе идет проверка прав пользователя
   _Дайвер_
 
13 - 18.10.16 - 08:00
(12) в (4) не проверяй его, это не правильно, (5) способ проверяй.
   Dyspho
 
14 - 18.10.16 - 08:05
(13) Спасибо, только проблема ещё в "проверяй"
как? он иногда(оч редко) не контролирует
   Dyspho
 
15 - 18.10.16 - 09:00
Ну вот и чо, проверил я, но как убедиться, что оно работает, если и так работало, но не всегда)
   FIXXXL
 
16 - 18.10.16 - 09:07
(15) что значит "не всегда"? у разных пользователей? как у тебя там кто работает? мож в регистр руками лазают?
   Dyspho
 
17 - 18.10.16 - 09:12
(16) Нет, пользователь 1, ТСД пробивает и если больше чем в заказе переносят, то ошибку выдаёт, а вот иногда пропускает
   Dyspho
 
18 - 18.10.16 - 09:30
Ладно
   Torquader
 
19 - 18.10.16 - 12:20
(17) Возможно, что в ТСД две строки - каждая не превышает, а обе вместе - превышают.
Таблицу терминала сворачивал перед загрузкой ?
   Dyspho
 
20 - 18.10.16 - 12:22
(19) Слушай, а возможно   две строки - каждая не превышает, а обе вместе - превышают.
И как это поправить ?)
А про "Таблицу терминала сворачивал перед загрузкой ?" - не совсем понял о чем речь
   Dyspho
 
21 - 18.10.16 - 12:36
а?
   Torquader
 
22 - 18.10.16 - 13:10
(20) Ты из ТСД перегружаешь товары в документ 1С, который потом проводится.
Вот в процессе перегрузки ты получаешь таблицу товаров, в которой товары, их атрибуты (если используются характеристики или серии) и количество.
Так вот, если по Товары и атрибуты свернуть, суммируя количество, то в полученной таблице записи по товарам будут уникальными, то есть не будет встречаться несколько строк с одними и теми же данными товаров.

Стандартная обработка загрузки из ТСД, например, задаёт вопрос "Свернуть или нет", так как некоторым иногда очень нужно, чтобы было две строки с одним товаром.

А самое простое - проверять остатки после проведения документа, и если находится хоть один отрицательный, то запрашивать право "на отрицание" и отменять проведение, если такого права нет.
   Dyspho
 
23 - 18.10.16 - 13:14
(22) Я если честно никогда с ТСД не работал в 1с, со слов я понял, что в ТСД интерфейс 1с, и док там и проводится
   Torquader
 
24 - 19.10.16 - 01:16
(23) Если он подключен через RDP - то да - с терминала работают в 1С, а если там Cleverence или что-то подобное, то работа идёт через "прослойку", которая подключается к 1С в режиме COM-соединения от имени какого-то заданного на этапе настройки пользователя.
   Dyspho
 
25 - 19.10.16 - 05:53
(24) Через РДП наверное, я ещё не видел, но мне сказали "захожу в 1с и ввожу лог пасс"
   Dyspho
 
26 - 19.10.16 - 08:47
т.е. получается галка Контролировать превышение объема заказа при отгрузке не отрабатывает, если позиции 2 и в сумме они превышают заказ?
   Dyspho
 
27 - 19.10.16 - 09:25
Точнее получается так: в Заказе допустим 1200ШТ
И товар проходит больше чем надо в той ситуации, если:
Перемещения по заказу 2 реализации в 1ой реализации 600 во 2ой 640, вроде бы как они обе не превышают заказ, а если вместе, то не 1200, а 1240 из-за этого и контроль превышения объёма походу не отрабатывает
так ?)
   Dyspho
 
28 - 19.10.16 - 09:30
имею ввиду "контроль превышения объёма" отрабатывает не по сумме товара во всех перемещениях, а только по всем документам и если будет 2 документа с одинаковой позицией, то есть возможность превысить объём заказа ?
   FIXXXL
 
29 - 19.10.16 - 09:42
(28) наврядли, по нормальному читаться должен остаток регистра, а не количество документа-основания
   Dyspho
 
30 - 19.10.16 - 09:44
(29) Ну просто я заметил, если в 1 реализации больше чем в заказе - ошибка, если в 2ух реализациях в сумме больше, но по отдельности меньше чем в заказе, то ошибки нет


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует