Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Функция ВосстановитьЗначение          
Vofka Подменю пользователя
сообщение 30.04.10, 7:54
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Привет!

Есть в коде строчка
Значение = ВосстановитьЗначение(сКлюч);


Откуда конкретно восстанавливается это значение?
Т.е. в моей ситуации таким образом определяется тип цен для клиента. Но возникла проблема, что такой тип цен для него никогда не устанавливался и то что оно тянет - не правильно

Zaval Подменю пользователя
сообщение 30.04.10, 9:31
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Ищи в том же модуле строчки СохранитьЗначение(...,...)
Обычно при закрытии формы сохраняются значения, прописанные в этих строчках, набор этих значений подвязывается к текущему юзеру и доступен только ему.
Походу, в прошлый раз работая с этой формой(объектом), месье слегка накосячить изволилиsmile.gif))

Vofka Подменю пользователя
сообщение 30.04.10, 11:43
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Zaval, дело в том, что эта функция вызывается из глобальной процедуры глВосстановитьЗначение.
Обращение к ф-ции происходит так:
глВосстановитьЗначение(, "ОсновнаяКатегорияЦен");


Искал по всей конфе строки
1. глСохранитьЗначение(, "ОсновнаяКатегорияЦен");
2. СохранитьЗначение(, "ОсновнаяКатегорияЦен");
3. ОсновнаяКатегорияЦен

Так вот находится только 3 строка, причем нигде нету, чтобы она сохранялась. Практически везде она глВосстановитьЗначение. Но есть другое:


Что скажите?

Zaval Подменю пользователя
сообщение 30.04.10, 14:01
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Спешите вы, сударь...
Вот код той функции. Открой в отладчике и поставь останов в строках с моими комментами.

Функция глВосстановитьЗначение(Конт="", сИдентификатор="", ЗначПоУмолчанию=0) Экспорт
Перем сГруппа, Фирма, ДатаЗнач;                

    // для совместимости с "Торговля+Склад"
    Если сИдентификатор = "ОсновнаяФирма" Тогда
        сИдентификатор = "БазФирма";
    КонецЕсли;    

    Если ТипЗначенияСтр(Конт) = "ГрупповойКонтекст" Тогда
        сГруппа = Конт.Вид();
        Попытка
            // Конт - документ
            Фирма = Конт.Фирма;
            ДатаЗнач = Конт.ДатаДок;
        Исключение
            // Конт - справочник
            Фирма = 0;
            ДатаЗнач = РабочаяДата();
        КонецПопытки;
    ИначеЕсли ТипЗначенияСтр(Конт) = "Справочник" Тогда
        // элемент справочника Фирмы
        сГруппа = Конт.Вид();
        Фирма = Конт;
        ДатаЗнач = РабочаяДата();
    Иначе
        // строка или что-то другое, преобразуем все к строке
        сГруппа = СокрЛП(Строка(Конт));
        Фирма = 0;
        ДатаЗнач = РабочаяДата();
    КонецЕсли;
    // Попытаемся взять значение из справочника Фирмы, если в справочнике есть
    // такой реквизит. Если этот реквизит не пустой, его значение будет использовано
    // при глОбщиеУстановки=1
    ЗначениеИзФирмы = ПолучитьПустоеЗначение();
    Если ПустоеЗначение(Фирма) = 0 Тогда
        // из реквизита объекта (справочника)
        Попытка
            // прочитаем реквизит
            Реквизит = Метаданные.Справочник("Фирмы").Реквизит(сИдентификатор);
            Если Реквизит.Выбран() = 1 Тогда
                // есть такой реквизит...
                Если Реквизит.Периодический = 1 Тогда
                    //... периодический
                    ЗначениеИзФирмы = Фирма.ПолучитьАтрибут(сИдентификатор).Получить(ДатаЗнач);
                Иначе
                    //... обычный
                    ЗначениеИзФирмы = Фирма.ПолучитьАтрибут(сИдентификатор);
                КонецЕсли;
            КонецЕсли;
        Исключение
        КонецПопытки;
    КонецЕсли;
    // сразу попытаемся восстановить значение по ключу
    сКлюч = ?(ПустаяСтрока(сГруппа) = 0, сГруппа+"_", "")+СокрЛП(сИдентификатор);  
    Значение = ВосстановитьЗначение(сКлюч);    // Zaval: Если в правой части будет тип цен, то надо искать "СохранитьЗначение([сКлюч],"
    Если (глОбщиеУстановки = 2) и (ТипЗначенияСтр(Значение) <> "") Тогда
        // оставляем то, что уже получили
    ИначеЕсли ПустоеЗначение(ЗначениеИзФирмы) = 0 Тогда
        // из реквизита объекта (справочника)
        Значение = ЗначениеИзФирмы;
    ИначеЕсли Метаданные.Константа(сИдентификатор).Выбран() = 1 Тогда         // Zaval: выполнится это - будет возвращена Константа
        // берем из константы...
        Если Метаданные.Константа(сИдентификатор).Периодический = 1 Тогда
            // ...периодической
            Значение = Константа.ПолучитьАтрибут(сИдентификатор).Получить(ДатаЗнач);
        Иначе
            // ...обычной
            Значение = Константа.ПолучитьАтрибут(сИдентификатор);
        КонецЕсли;
    КонецЕсли;
    // если все-таки ничего не получили, то используем значение по умолчанию
    Если ПустоеЗначение(Значение) = 1 Тогда
        Значение = ЗначПоУмолчанию;
    КонецЕсли;
    Возврат Значение;
КонецФункции //глВосстановитьЗначение


[сКлюч] - имеется ввиду значение этой переменной при возврате глючного типа цен. Удачи!

Спасибо сказали: Vofka,

Vofka Подменю пользователя
сообщение 30.04.10, 14:13
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Спасибо, буду разбираться

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 0:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!