Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Некорректное заполнение реквизитов при открытии формы документа

Некорректное заполнение реквизитов при открытии формы документа
Я
   ewics
 
16.12.20 - 11:23
Всем доброго дня!
Конфигурация УНФ 1.6.23.96 + исправления версии + расширения. Платформа 8.3.18.1208. Режим работы клиент-сервер, MSSQL.

У одного пользователя форма документа заполняется не так, как у всех.
Форма документа ЗаказПокупателя, реквизит ВидЗаказа. Всего имеется 2 вида: Основной и Прочее. Основной - предопределенный элемент. Прочее - создан пользователем. При создании нового документа (при открытии формы) данный реквизит у всех заполняется значением Основной, а у одного пользователя - Прочее, а нужно, чтобы было, как у всех.

В отладчике ставил точку останова в начале процедуры ПриСозданииНаСервере(). У проблемного пользователя реквизит уже заполнен значением Прочее, а у остальных пользователей - Основной. Откуда берется не пойму. В стеке вызовов показывает, что никаких других процедур\функций не вызывалось перед вызовом ПриСозданииНаСервере().

Чистил кэш локально у пользователя - удалял из списка базу и добавлял заново.
Чистил вручную файлы в профиле пользователя. Чистил кэш сервера здесь C:\Program Files\1cv8\srvinfo\reg_1541\snccntx
Запускал базу с ключом /ClearCache
Очищал ВСЕ настройки пользователя штатной обработкой.
Переносил настройки от других пользователей.
Через самописную обработку удалял настройки пользователя: ХранилищеСистемныхНастроек, ХранилищеНастроекДанныхФорм, ХранилищеОбщихНастроек
Пробовал все то же самое на другом компьютере в копии базы (копия тоже в режиме клиент-сервер).
Делал сброс настроек формы на стандартные Еще - Изменить форму - Еще - Установить стандартные настройки
Давал Полные права проблемной учетке.

Все вышеперечисленное не помогло. У пользователя как устанавливалось значение Прочее, так и продолжает ставиться.

Если создать новую учетную запись путем копирования этой (с правами и настройками), то новая учетная запись работает как положено.

ТиИ еще не пробовал, сейчас попробую.

Подскажите пожалуйста, что еще можно сделать?
   ewics
 
1 - 16.12.20 - 11:24
Забыл добавить:
Расширения\исправления все отключал - результат не дало
   acht
 
2 - 16.12.20 - 11:44
(0) > В стеке вызовов
И не покажется.
Включи замер производительности, открой форму, выключи замер производительности, анализируй.
   Dmitrii
 
3 - 16.12.20 - 11:56
(0) При чем тут ПриСозданииНаСервере?
Объект заполняется в ОбработкаЗаполнения модуля объекта.
Кроме того необходимо проверить не установлено ли у этого реквизита свойство "Заполнять из данных и заполнения". В таком случае, если у пользователя на форме списка установлен отбор ВидЗаказа=Прочее, то при создании нового документа этот реквизит будет заполняться в соответствии с отбором - Прочее.
   ewics
 
4 - 16.12.20 - 15:23
(2) (3) Огромное Вам спасибо за подсказки! После отладки стало известно следующее.

При создании нового заказа 1с делает выборку из всех уже созданных данным пользователем заказов покупателей  (отбор по полю автор), при этом берет 1 заказ с самой поздней датой. И копирует значение реквизита ВидЗаказа из этого заказа в новый.
   Dmitrii
 
5 - 16.12.20 - 15:31
(4) Вот интересно. Это такой типовой алгоритм или чьё-то идиотское поделие?
И кстати говоря, даже если это действительно так, то после первого же документа с ВидЗказа=Основной у этого пользователя все последующие заказы создавались бы с видом "Основной".
   ewics
 
6 - 17.12.20 - 13:55
(5) Это типовой алгоритм.

ОбщийМодуль.ЗаполнениеОбъектовУНФ.ПолучитьВидЗаказНаряда()

Комментарий к функции:
// Возвращает первый подходящий вид заказ-наряда.

// 
// Возвращаемое значение:

//  Справочник.ВидыЗаказНарядов - вид заказ-наряда для заполнения документа.
//


Помимо прочего кода там вот такой запрос присутствует:

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
        |    ЗаказПокупателя.ВидЗаказа КАК ВидЗаказа
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |ГДЕ
        |    ЗаказПокупателя.Автор = &Автор
        |    И ЗаказПокупателя.ВидЗаказа <> ЗНАЧЕНИЕ(Справочник.ВидыЗаказНарядов.ПустаяСсылка)
        |    И ЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд)
        |
        |УПОРЯДОЧИТЬ ПО
        |    ЗаказПокупателя.Дата УБЫВ";
    
    Запрос.УстановитьПараметр("Автор", Пользователи.ТекущийПользователь());
    
    Выборка = Запрос.Выполнить().Выбрать();
   ewics
 
7 - 17.12.20 - 13:59
(5) Прошу прощения, промахнулся функцией, вот эта для заказов покупателей:

// Возвращает первый подходящий вид заказа покупателя.

// 
// Возвращаемое значение:

//  СправочникСсылка.ВидыЗаказовПокупателей - вид заказа для заполнения документа.
//

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.