Версия для печати темы (https://pro1c.org.ua/index.php?s=fe31b2b03281626aa4338d879249c5bf&showtopic=45104)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Получить строка регистра сведений

Автор: Gigi 05.04.18, 14:35

Всем привет..
Пожалуйста .. никто не подскажет как получить строку регистра сведений целиком.
Ну на пример на подобие команды запроса в справочнике или документе

Пока Выгрузка.Следующий() Цикл
ВыгрузкаЭлемент=Выгрузка.Ссылка;
//или
ВыгрузкаЭлемент=Выгрузка.Ссылка.ПолучитьОбъект();
//И уже после можно нужные реквизиты запеременить
Сообщить(ВыгрузкаЭлемент[ИмяРеквизита]);
КонецЦикла;

Как сделать таким же макаром только в регистре сведений?
Просто код если не трудно.... Без расспросов пожалуйста.
Буду признателен!

Автор: Petre 05.04.18, 14:46

Gigi @ Today, 14:35 * ,
Точно так же.

Автор: Gigi 05.04.18, 15:14

Petre @ Сегодня, 15:46 * ,
Нет так же не получилось ... я уже пробовал ..
На фрагмент:

СтрокаРегистраСвед = Выгрузка.Ссылка.ПолучитьОбъект();

Система вот как материться:
Цитата
{ОбщийМодуль.FxSub_РегистрСведений.Модуль(121)}: Поле объекта не обнаружено (Ссылка)
СтрокаРегистраСвед = Выгрузка.Ссылка.ПолучитьОбъект();

И понятное дело почему... ведь на рег сведений нет ссылки. Как на справочник или док.
Поэтому не знаю как решить вопрос.
Нужно просто в цикле выгрузки получить строку рега сведений целиком.
Вот что нужно..
Буду очень благодарен!


Gigi @ Сегодня, 15:53 * ,
просто рою .. шастаю по страницам нигде нет инфы блин...
И поэтому опять вынужден методом тыка.
Получить значение ресурса(ресурсов) по указанным измерением не проблема.
А собрать строки регистра по запросу это что проблема?
Нужно просто получить строку целиком. Больше ничего от системы не надо .

Автор: logist 05.04.18, 15:45

Цитата(Gigi @ 05.04.18, 16:14) *
И понятное дело почему... ведь на рег сведений нет ссылки. Как на справочник или док.

Тут вы сами ответили на свой вопрос.

Цитата(Gigi @ 05.04.18, 16:14) *
просто рою .. шастаю по страницам нигде нет инфы блин...

Тут так же всё понятно - вы не можете даже поисковику объяснить что хотите...

Цитата(Gigi @ 05.04.18, 16:14) *
А собрать строки регистра по запросу это что проблема?

Не проблема. Для этого существуют запросы

Автор: Gigi 05.04.18, 16:06

logist @ Сегодня, 16:45 * ,

Цитата(logist @ 05.04.18, 16:45) *
Не проблема. Для этого существуют запросы

Ну ладно существуют ... понятно
Так как получить СТОКУ РЕГИСТРА?
Разве не понятно что нужно?
ПРОСТО СТРОКА ЦЕЛИКОМ.
Таким же макаром как при выгрузке на пример элементов справочника
ВыгрузкаСтрока=Выгрузка.Ссылка.ПолучитьОбъект();

Легко и просто.
Поэтому можно говорить что "не проблема" ... но говорить одно.
Если не проблема то покажите какая это не проблема сточкой кода.
И судя по тому сколько строк кода будет для этого написано судя по этому и буду судить какая не проблема.
Количество строк посчитаю даже.. smile.gifsmile.gif
Так что ПОКАЖИТЕ smile.gifsmile.gif



Gigi @ Сегодня, 16:58 * ,
А в остальном ну просто опять топчусь на одном месте.. опять целый день ушел в пустую...ушел на то что бы как получить эту злосчастную строку.
По регу сведений куда не плюй опять натыкаешься на "Менеджер" ..."НаборЗаписи" и прочее ... гууу ... нужна строка целиком.
ВОТ ВСЕ ЧТО НУЖНО и ничего больше.
Разве это не понятный вопрос. Четкий и конкретный!

Автор: Petre 05.04.18, 16:07

Gigi @ Today, 15:58 * ,

Ссылка.ПолучитьОбъект();

Так вы получите объект, но никак не "просто строку целиком".

Автор: Bernet 05.04.18, 16:09

Используйте либо МенеджерЗаписи (одна запись) либо НаборЗаписей (коллекция) регистра сведений.

        НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Валюта.Установить(Справочники.Валюты.НайтиПоКоду("980")); // грн
    НаборЗаписей.Прочитать();

Для менеджера по аналогии: выставляете отборы, методом "Прочитать" получаете запись или коллекцию и делаете с ней что хотите

Автор: Gigi 05.04.18, 16:10

Petre @ Сегодня, 17:07 * ,
Ну ладно... Тогда получить строку рега сведений целиком невозможно?

Автор: Petre 05.04.18, 16:12

Gigi @ Today, 16:10 * ,
Я не понимаю, что такое "получить строку справочника / документа / рега". А в остальном я уже сказал: чтение полей запроса не отличается от таблицы запроса.

Автор: cos12 05.04.18, 16:32

Цитата(Gigi @ 05.04.18, 17:10) *
Тогда получить строку рега сведений целиком невозможно?

конкатенацию некто не отменял, хотите строку, получите запись по столбцам и запишите в одну строку.

Автор: Gigi 05.04.18, 16:43

Petre @ Сегодня, 17:12 * ,
Гуууу ... только что понял.
Просто ссылку нужно было убрать и все дела. Так как рег сведений не имеет ее.
А строку целиком не реально. Нужно через НаборЗаписи и прочее
Ладно все это можно было сделать по проще.. и знаю что опять скажут, что это коряво и прочее .. но главное работает.
Код

Функция РегистрСведений_ЗапросРесурсовСтруктура(РегистрСведенийИмя,СтруктураИзмеренияЗначенияДляВыгрузки,РесурсСтруктураРесурсы)Экспорт
СтруктураРесурсовВыгрузки=Новый Структура();    
РесурсСтруктураРесурсы_Тип=FxSubСерв_Тип.ТипЗнач(РесурсСтруктураРесурсы,"Структура");
КоличествоИзмеренийВыгрузки=СтруктураИзмеренияЗначенияДляВыгрузки.Количество();
Если КоличествоИзмеренийВыгрузки=0 Тогда Возврат СтруктураРесурсовВыгрузки КонецЕсли;
//======================================================    
Выгрузка=РегистрыСведений[РегистрСведенийИмя].Выбрать();
//******************************************************
КоличествоЗначенийИстина=0;
Пока Выгрузка.Следующий() Цикл
КоличествоСовпаденийПоЛинии=0;
Для каждого Элемент из СтруктураИзмеренияЗначенияДляВыгрузки Цикл
ИзмерениеСоответствия=Элемент.Ключ;
ЗначениеСоответствия=Элемент.Значение;
выгрИзмерениеЗначение=Выгрузка[ИзмерениеСоответствия];
        Если ЗначениеСоответствия=выгрИзмерениеЗначение Тогда
        КоличествоСовпаденийПоЛинии = КоличествоСовпаденийПоЛинии+1;
        КонецЕсли;
КонецЦикла;
//------------------------------------------------------    
Если КоличествоИзмеренийВыгрузки<>0 и КоличествоИзмеренийВыгрузки=КоличествоСовпаденийПоЛинии Тогда
//******************************************************
КоличествоЗначенийИстина=КоличествоЗначенийИстина+1;
Ключь_НомерСовпадения="Ссылка_"+Строка(Формат(КоличествоЗначенийИстина,"ЧГ=00"));
//------------------------------------------------------
Если РесурсСтруктураРесурсы_Тип=Ложь Тогда    
    СтруктураРесурсовВыгрузки.Вставить(Ключь_НомерСовпадения, Выгрузка[РесурсСтруктураРесурсы]);
Иначе
    СтруктураЗначениеРесурсов=Новый Структура;
    Для Каждого ЭлементРесурс Из РесурсСтруктураРесурсы Цикл
    РесурсИмя=ЭлементРесурс.Ключ;
    //Сообщить(ЭлементРесурс.Значение);
    РесурсЗначение=Выгрузка[РесурсИмя];
    СтруктураЗначениеРесурсов.Вставить(РесурсИмя,РесурсЗначение);
    КонецЦикла;
    СтруктураРесурсовВыгрузки.Вставить(Ключь_НомерСовпадения, СтруктураЗначениеРесурсов);
КонецЕсли;
//******************************************************
КонецЕсли;
//******************************************************
КонецЦикла;
//======================================================
Возврат СтруктураРесурсовВыгрузки
КонецФункции

Ерунда не ерунда не знаю .... За то знаю то что это и было нужно. Просто список ресурсов по запросу. Это удобно если нужно для группировки разных ссылок.
В таком случае значения ресурса это ссылка на документ. И просто когда документов слишком много и нужно долго ждать пока выгружаются.
А если какие то группы ссылок записать в рег сведений то выгрузить их будет быстрее. Просто для группировки разных категорий документов в зависимости от определенных опций
Вот и все что было нужно.
Ладно спасибо всем:

Автор: andr_andrey 06.04.18, 9:24

Цитата(Gigi @ 05.04.18, 17:43) *
А строку целиком не реально. Нужно через НаборЗаписи и прочее
Ладно все это можно было сделать по проще.. и знаю что опять скажут, что это коряво и прочее .. но главное работает.

Тяжело понять (прочитать) принципы платформы? Все регистры - наборы, их читают запросами, запросы возвращают не строку, а наборы записей, которых может быть больше одной в общем случае.
Затесалось сомнение, что вы http://pro1c.org.ua/redirect.php?https://www.youtube.com/watch?v=fhWhb88GsL4, которому по воле случая пришлось открыть ненавистную 1С smile.gif

Автор: logist 06.04.18, 11:59

По-моему пришла пора размещать темы автора в разделе Юмор smile.gif

Автор: cos12 06.04.18, 12:56

12201689.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua