Имя: Пароль:
1C
1С v8
Получение данных из хранилища
0 Barry
 
15.03.23
14:41
При получении результата, в колонке Данные запроса мне выдает везде Хранилище. Подскажите пожалуйста, как мне вытянуть данные из хранилища?

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Таможня.Номер КАК Номер,
		|	Таможня.Дата КАК Дата,
		|	Таможня.Склад КАК Склад,
		|	Разрешения.ДанныеЗапроса КАК ДанныеЗапроса
		|ИЗ
		|	РегистрСведений.Разрешения КАК Разрешения
		|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.Таможня КАК Таможня
		|		ПО Разрешения.Документ = Таможня.Ссылка
		|ГДЕ
		|	НАЧАЛОПЕРИОДА(Таможня.Дата, ДЕНЬ) >= &ДатаНачала
		|	И НАЧАЛОПЕРИОДА(Таможня.Дата, ДЕНЬ) <= &ДатаКонца";
	
	Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
	Запрос.УстановитьПараметр("ДатаКонца", ДатаКонца);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		НовСтр = Объект.Инфо.Добавить();	
			ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаДетальныеЗаписи); 
	КонецЦикла;
1 vicof
 
15.03.23
00:27
Может быть уже почитаешь книжки по 1ске?
2 Barry
 
15.03.23
01:21
(1) читал) попробовал функцией сделать так, но ничего не выходит

РезультатЗапроса = Запрос.Выполнить();
    
Если РезультатЗапроса.Пустой() Тогда
        
        Возврат Неопределено;
        
Иначе
        
        ТЗХранилищеПервичныхДанных = РезультатЗапроса.Выгрузить();    
        СтрХранилищеПервичныхДанных = ТЗХранилищеПервичныхДанных[0];
        
        Возврат СтрХранилищеПервичныхДанных.ДанныеЗапроса.Получить();
  
КонецЕсли;
3 Chameleon1980
 
15.03.23
06:00
Методы:
например, получить() бл...
4 Barry
 
15.03.23
07:29
(3) у меня есть метод получить()
5 Мимохожий Однако
 
15.03.23
07:45
Какого типа данные помещал в хранилище? Что ожидаешь получить? Что получаешь сейчас?
6 Мультук
 
15.03.23
07:59
(2)

В 1С есть отладчик
В нем можно написать

СтрХранилищеПервичныхДанных.ДанныеЗапроса.Получить()

Показывать тип "Хранилище" ?
Напишите  

СтрХранилищеПервичныхДанных.ДанныеЗапроса.Получить().Получить()
7 Barry
 
15.03.23
08:38
(5) ХранилищеЗначений тип данных. Хочу вытянуть адрес.
8 Barry
 
15.03.23
22:25
Попробовал вот так сделать, вроде стало вытягивать адрес, но бъет ошибка: "Значение не является значением объектного типа (Адрес)"

РезультатЗапроса = Запрос.Выполнить();
    
Если РезультатЗапроса.Пустой() Тогда
        
     Возврат Неопределено;
        
Иначе
        
     ТЗХранилищеПервичныхДанных = РезультатЗапроса.Выгрузить();    
     СтрХранилищеПервичныхДанных = ТЗХранилищеПервичныхДанных;
    
     Для Каждого Стр Из СтрХранилищеПервичныхДанных Цикл
    Адресатор = Стр.ДанныеЗапроса.Получить().Адрес;
    Строка = Объект.Инфо.Добавить();
    Строка.Номер = Стр.Номер;
    Строка.Дата = Стр.Дата;
    Строка.Склад = Стр.Склад;
    Строка.ДанныеЗапроса = Адресатор;  
     КонецЦикла;
                       
КонецЕсли;
9 Мимохожий Однако
 
15.03.23
23:06
(7) Я задал три вопроса. Ответ совсем про другое
10 Barry
 
15.03.23
23:22
(9) Достаем Строку из ХранилищеЗначений. Ожидаю получить данные строки. Сейчас ошибку получаю: Значение не является значением объектного типа (Адрес)
11 Гипервизор
 
16.03.23
06:32
(10) Сообщите уже какого типа ДанныеЗапроса.Получить().
12 Barry
 
16.03.23
07:10
(11) Данные запроса, это тип ХранилиЗначений, внутри хранилища есть Адрес с типом Строка. Его и нужно получить.
13 Гипервизор
 
16.03.23
07:15
(12) Ну так если у вас в (8) в Стр.ДанныеЗапроса.Получить() уже строка, для чего вы ещё через точку пытаетесь адрес получить?
Адресатор = Стр.ДанныеЗапроса.Получить(); - вот тут уже и есть адрес.
Или у вас в Стр.ДанныеЗапроса.Получить() некая коллекция?
14 Мимохожий Однако
 
16.03.23
09:29
(10) Покажи код. Отладчик что показывает в строке с ошибкой?
15 sandal_r
 
16.03.23
10:09
покажите что в переменной "Адрес"
16 Barry
 
17.03.23
01:32
В общем Данные запроса я в самом запросе выразил как тип значения, теперь из его нужно снова преобразовать в само значение. Вот что видим в отладчике:
https://cloud.mail.ru/public/WfGY/ugeL9neWm
17 vicof
 
17.03.23
01:48
Давай начнем с простого, что в твоем понимании хранилаще значеняи и зачем оно нужно?
18 Гипервизор
 
17.03.23
05:55
(16) В общем что в (13) непонятно? И до того вам уже писали. А вместо ответов по существу какие-то хаотичные манипуляции.
19 Мимохожий Однако
 
17.03.23
06:23
Ответы аналогичны анекдоту о Василии Ивановиче про радиостанцию на бронепоезде
20 Barry
 
17.03.23
08:41
(19) у меня в запросе так сейчас ТИПЗНАЧЕНИЯ(Разрешения.ДанныеЗапроса) КАК ДанныеЗапроса
И теперь нужно как-то вытянуть адрес.
21 Гипервизор
 
17.03.23
08:48
(20) А зачем у вас сейчас в запросе тип? Так интереснее? Из серии:
"Дорогая редакция! Спасибо вам за рецепт. Авокадо мы заменили отварным картофелем, а креветки - поджаренным салом, но в целом ваш рецепт салата из авокадо с креветками нам очень понравился."
22 Barry
 
17.03.23
09:42
(21) потому что в запросе есть дубли, чтобы их убрать использую выборку Без повторяющихся и если просто использовать реквизит , то выдает ошибку: в запросе Различные или Объединить нельзя использовать поля неограниченной длины ДанныеЗапроса.
23 Barry
 
17.03.23
09:44
Выразить не катит тоже
24 Мимохожий Однако
 
17.03.23
09:51
(23) В теме ветке написано "Получение данных из хранилища", а ты дискуссию развёл о типе реквизита.
Покажи какое значение и как помещаешь в хранилище значений. Тогда будет ясно как его получить
25 Barry
 
17.03.23
16:36
Всем спасибо! Сам разобрался. Связь в запросе неправильная была.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший