Имя: Пароль:
1C
 
Получить данные из регистра сведений
0 volkus
 
02.02.26
17:10
Привет всем. У меня очень странная история. Есть регистр сведений не периодический независимый. Измерение СправочникСсылка.КассыККМ, ресурс Лицензия(строка). Для получения данных из реестра использую следующий код:
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РХ_РегистрЛицензии.Касса КАК Касса,
        |    РХ_РегистрЛицензии.Лицензия КАК Лицензия
        |ИЗ
        |    РегистрСведений.РХ_РегистрЛицензии КАК РХ_РегистрЛицензии
        |ГДЕ
        |    РХ_РегистрЛицензии.Касса = &Касса";
    
    Запрос.УстановитьПараметр("Касса", Касса);
    
    Результат = Запрос.Выполнить();
    
    ТабЗн = Результат.Выгрузить();
    
    Если ТабЗн.Количество() > 0
        И ТабЗн[0].Лицензия <> Неопределено
        И ТабЗн[0].Лицензия <> ""
    Тогда Возврат ТабЗн[0].Лицензия
    Иначе Возврат Неопределено;
    КонецЕсли;

При запуске запроса в консоли запросов данные получаю. При просмотре реестра в форме списка - данные есть. Но при этом данный код возвращает только Неопределено. Может кто подскажет, что я не так делают. Заранее всем спасибо)
1 Lama12
 
02.02.26
17:17
Чем докажешь что это ты делаешь?
Вот например строка ТабЗн = Результат.Выгрузить() - зачем?
2 Ёпрст
 
гуру
02.02.26
17:27
(0)

 Запрос.УстановитьПараметр("Касса", Касса);
 Выборка = Запрос.Выполнить().Выбрать();
 Если Выборка.Следующий() Тогда
     Возврат Выборка.Лицензия;
 КонецЕсли;
 Возврат Неопределено; 
3 Ёпрст
 
гуру
02.02.26
17:28
а вот это, ТабЗн[0].Лицензия <> "" воткнуть в условие запроса.
4 volkus
 
02.02.26
17:37
(1) Для того чтобы получить данные в виде таблицы значений)) Я что то не так делаю? Я просто недавно совсем в прогаммировании на 1С, поэтому не сказать что сильно разбираюсь.
5 volkus
 
02.02.26
17:37
(3) Понял, сейчас попробую)
6 volkus
 
02.02.26
17:43
(3) Не получилось(( Он мне при отладке в окне Локальные переменные когда разворачиваешь переменную Выборка в Касса и в Лицензия пишет значение = Ошибка чтения значения(
7 Мультук
 
гуру
02.02.26
18:14
(6)

Показывай свой новый код.
8 volkus
 
02.02.26
18:16
Так, у меня проблема с параметром. У Кассы в Реестре и у Кассы в Параметре запроса разные версии данных. Поэтому я так понимаю и не работает. Как это дело победить, подскажите, если не трудно
9 Мультук
 
гуру
02.02.26
18:21
(8)

Если поставить вот здесь точку останова

>>Запрос.УстановитьПараметр("Касса", Касса);

А в табло поместить

ТипЗнч(Касса)

То какой же тип значения у "Касса" ?
10 volkus
 
02.02.26
18:28
(9) Типы значений одинаковые. Единственная разница - версия данных.
11 volkus
 
02.02.26
18:28
Или это не может быть причиной?
12 Волшебник
 
02.02.26
18:31
(11) Может не может, а может может
13 volkus
 
02.02.26
18:53
Блин, треш какой то. Я уже в целях дебага так сделал

Лиц = Неопределено;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РХ_РегистрЛицензии.Касса КАК Касса,
        |    РХ_РегистрЛицензии.Лицензия КАК Лицензия
        |ИЗ
        |    РегистрСведений.РХ_РегистрЛицензии КАК РХ_РегистрЛицензии
        |";
        
    Запрос.УстановитьПараметр("Касса", Касса);
    
    Результат = Запрос.Выполнить();
    
    ТабЗн = Результат.Выгрузить();  
    
    Для Каждого Стр Из ТабЗн Цикл  
        Если Стр.Касса = Касса Тогда
            Лиц = Стр.Лицензия;
            Прервать;  
        КонецЕсли;
    КонецЦикла;
    
    Возврат Лиц;

Но почему то моя касса не эквивалентна кассе в таблице(. Хотя и тип значения единый, и наименование. Все началось после того как я удалил все данные из реестра и внес их заново. И все сломалось(
14 AAA
 
02.02.26
19:21
Почти уверен, что в консоли и в конфигурации используются разные параметры. И запрос сделайте нормальный, чтобы потом никакие Если не писать.
Запросов проще Вашего уже не бывает, поэтому я думаю не совсем этично здесь спрашивать. Надо садиться и разбираться
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший