Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 23:40

Конвертация в строку.

Автор |R|U|D|E|N, 24 мая 2011, 13:27

0 Пользователей и 1 гость просматривают эту тему.

|R|U|D|E|N

Доброго времени суток.
У меня есть функция отлично работающая в теле которой выполняется запрос к БД и возврощается структура элементов.

Функция ПолучитьСтатусЗаказа(Номер)


Запрос = Новый Запрос;
    Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|СтатусыЗаказов.Период КАК Дата,
|СтатусыЗаказов.Регистратор КАК Документ,
|СтатусыЗаказов.Оборудование,
|СтатусыЗаказов.SN,
|СтатусыЗаказов.Статус,
|СтатусыЗаказов.НомерЗаказа,
|СтатусыЗаказов.Контрагент,
|СтатусыЗаказов.Информация,
|ОписаниеСтатусовСрезПоследних.ОписаниеСтатуса
|ИЗ
|РегистрСведений.СтатусыЗаказов КАК СтатусыЗаказов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОписаниеСтатусов.СрезПоследних КАК ОписаниеСтатусовСрезПоследних
| ПО СтатусыЗаказов.Статус = ОписаниеСтатусовСрезПоследних.Статус
|ГДЕ
|СтатусыЗаказов.НомерЗаказа = &НомерЗаказа";


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

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    СписокПараметров = Новый Структура;
   
СписокПараметров.Вставить("Период");
СписокПараметров.Вставить("НомерЗаказа");
СписокПараметров.Вставить("Документ");
СписокПараметров.Вставить("Оборудование");
        СписокПараметров.Вставить("SN");

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       
СписокПараметров.Период = ВыборкаДетальныеЗаписи.Период;
СписокПараметров.НомерЗаказа = ВыборкаДетальныеЗаписи.НомерЗаказа;
СписокПараметров.Документ = ВыборкаДетальныеЗаписи.Документ;
СписокПараметров.Оборудование = ВыборкаДетальныеЗаписи.Оборудование;
        СписокПараметров.SN = ВыборкаДетальныеЗаписи.SN;

КонецЕсли;



    Возврат СписокПараметров;


КонецФункции



Как мне сделать, чтобы Возврат был не в виде структуры а в виде строки!? тойсть преобразовать структуру в строку, вставив между элементами например"#" и вернуть как строку такого вида на пример:
21.02.2010#Мат.Плата - Intel#SN456FG456...и т.д

Очень нужна ваша помощь! Любые варианты и предложения!

С Уважением Алуксандр.

has

Так чтоли?

......................
СписокПараметров = Новый Структура;
СписокПараметров.Вставить("Представление");
Разделитель = "#";
Если ВыборкаДетальныеЗаписи.Следующий() Тогда       
СписокПараметров.Представление = Строка(ВыборкаДетальныеЗаписи.Период) + Разделитель + СокрЛП(Строка(ВыборкаДетальныеЗаписи.НомерЗаказа)) + Разделитель + Строка(ВыборкаДетальныеЗаписи.Документ) + Разделитель + Строка(ВыборкаДетальныеЗаписи.Оборудование);
КонецЕсли;
.........................

Шурыгин Иван Сергеевич

Цитата: has от 24 мая 2011, 13:34
Так чтоли?

......................
СписокПараметров = Новый Структура;
СписокПараметров.Вставить("Представление");
Разделитель = "#";
Если ВыборкаДетальныеЗаписи.Следующий() Тогда       
СписокПараметров.Представление = Строка(ВыборкаДетальныеЗаписи.Период) + Разделитель + СокрЛП(Строка(ВыборкаДетальныеЗаписи.НомерЗаказа)) + Разделитель + Строка(ВыборкаДетальныеЗаписи.Документ) + Разделитель + Строка(ВыборкаДетальныеЗаписи.Оборудование);
КонецЕсли;
.........................



слишком громоздко. и не удобно в плане количества реквизитов. лучше перебор


......................
СписокПараметров = Новый Структура;
СписокПараметров.Вставить("Представление");
Разделитель = "#";
Для Каждого КлючЗначение Из Структура Цикл       
СписокПараметров.Представление = КлючЗначение.Значение + Разделитель;
КонецЦикла;
//уберем последний разделитель
СписокПараметров.Представление = Лев(СписокПараметров.Представление,СтрДлина(СписокПараметров.Представление) - 1);
.........................



===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

|R|U|D|E|N

Мужчины, Вы лучшие! как в прочем и этот форум! Спасибо вам.

Мне всего лишь нужна была вот эта функция "Строка()" все остальное уже понятно)) не мог не где найти к сожалению..

Ну теперь все работает как задуменно! Еще раз спасибо.

Klyacksa

Шурыгин Иван Сергеевич, в Вашем варианте вернется только последний параметр, да и по-моему, автор просил строку, а не структуру с одним элементом...

Разделитель = "#";
СтрокаВозврата="";
Для Каждого КлючЗначение Из СписокПараметров Цикл        
    СтрокаВозврата = СтрокаВозврата + Строка(КлючЗначение.Значение) + Разделитель;
КонецЦикла;
//уберем последний разделитель
СтрокаВозврата = Лев(СтрокаВозврата,СтрДлина(СтрокаВозврата) - 1);
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

has

Цитироватьда и по-моему, автор просил строку, а не структуру с одним элементом...
о, точно. Ну принцип все равно понятен думаю.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск