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

Функция передает только одно значение

Автор denis-moscow1987, 24 июн 2014, 21:06

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

denis-moscow1987

&НаКлиенте
Процедура ЗагрузкаВыгрузкаАдресНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ММаршрут= новый СписокЗначений();
ММаршрут.Добавить(Адрес());
         ММаршрут.ОтметитьЭлементы("");
      СписокСтрока = "";
Для каждого стр из ММаршрут цикл
   Если Стр.Пометка=Истина Тогда
      СписокСтрока = СписокСтрока + Стр.Значение + ", ";
   КонецЕсли;
КонецЦикла;
СписокСтрока = Лев(СписокСтрока, СтрДлина(СписокСтрока)-2);
Элементы.ЗагрузкаВыгрузка.ТекущиеДанные.Адрес=СписокСтрока;



КонецПроцедуры
&НаСервере
Функция   Адрес()

   
   Запрос = новый запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   КонтактнаяИнформация.Представление как Представление
                  |ИЗ
                  |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация";

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

   Пока рез.Следующий() цикл
      Авто=стр.Представление;
   Возврат Авто;   
   КонецЦикла;   

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

В РС 4 Значения, а передается только 1, подскажите в чем проблема?
Спасибо.

GRADUS


Пока рез.Следующий() цикл
    Авто=стр.Представление;
    Возврат Авто;   
КонецЦикла;
 

Вот в этом

Snaky

Цитата: denis-moscow1987 от 24 июн 2014, 21:06
&НаКлиенте
Процедура ЗагрузкаВыгрузкаАдресНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ММаршрут= новый СписокЗначений();
ММаршрут.Добавить(Адрес());
         ММаршрут.ОтметитьЭлементы("");
      СписокСтрока = "";
Для каждого стр из ММаршрут цикл
   Если Стр.Пометка=Истина Тогда
      СписокСтрока = СписокСтрока + Стр.Значение + ", ";
   КонецЕсли;
КонецЦикла;
СписокСтрока = Лев(СписокСтрока, СтрДлина(СписокСтрока)-2);
Элементы.ЗагрузкаВыгрузка.ТекущиеДанные.Адрес=СписокСтрока;



КонецПроцедуры
&НаСервере
Функция   Адрес()

   
   Запрос = новый запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   КонтактнаяИнформация.Представление как Представление
                  |ИЗ
                  |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация";

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

   Пока рез.Следующий() цикл
      Авто=стр.Представление;
   Возврат Авто;   
   КонецЦикла;   

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

В РС 4 Значения, а передается только 1, подскажите в чем проблема?
Спасибо.
Функция не может возвращать несколько значений, загоните Ваши результаты в массив и верните его.

cska-fanat-kz

Цитата: denis-moscow1987 от 24 июн 2014, 21:06В РС 4 Значения, а передается только 1, подскажите в чем проблема?
Спасибо.

Как Вы себе в принципе представляете "цикличное возвращение функцией нескольких значений"???
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

denis-moscow1987

Цитата: Snaky от 25 июн 2014, 07:05
Цитата: denis-moscow1987 от 24 июн 2014, 21:06
&НаКлиенте
Процедура ЗагрузкаВыгрузкаАдресНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ММаршрут= новый СписокЗначений();
ММаршрут.Добавить(Адрес());
         ММаршрут.ОтметитьЭлементы("");
      СписокСтрока = "";
Для каждого стр из ММаршрут цикл
   Если Стр.Пометка=Истина Тогда
      СписокСтрока = СписокСтрока + Стр.Значение + ", ";
   КонецЕсли;
КонецЦикла;
СписокСтрока = Лев(СписокСтрока, СтрДлина(СписокСтрока)-2);
Элементы.ЗагрузкаВыгрузка.ТекущиеДанные.Адрес=СписокСтрока;

КонецПроцедуры
&НаСервере
Функция   Адрес()

   
   Запрос = новый запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   КонтактнаяИнформация.Представление как Представление
                  |ИЗ
                  |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация";

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

   Пока рез.Следующий() цикл
      Авто=стр.Представление;
   Возврат Авто;   
   КонецЦикла;   

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

В РС 4 Значения, а передается только 1, подскажите в чем проблема?
Спасибо.
Функция не может возвращать несколько значений, загоните Ваши результаты в массив и верните его.



Запрос = новый запрос;
Запрос.Текст = "ВЫБРАТЬ
               | КонтактнаяИнформация.Представление как Представление
       
               |ИЗ
               | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация";


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


Пока рез.Следующий() цикл
Массив=Новый Массив;

Авто=Рез.Представление;
Массив.Добавить(Авто);

КонецЦикла;

Возврат Массив;


СтандартнаяОбработка=Ложь;
ММаршрут= новый СписокЗначений();
ММаршрут.Добавить(Адрес());
         ММаршрут.ОтметитьЭлементы("");
      СписокСтрока = "";
Для каждого стр из ММаршрут цикл
   Если Стр.Пометка=Истина Тогда
      СписокСтрока = СписокСтрока + Стр.Значение + ", ";
   КонецЕсли;
КонецЦикла;
СписокСтрока = Лев(СписокСтрока, СтрДлина(СписокСтрока)-2);
Элементы.ЗагрузкаВыгрузка.ТекущиеДанные.Адрес=СписокСтрока;


Возвращает пустой массив.
Уточните в чем проблема, что не так?

cska-fanat-kz

Пока рез.Следующий() цикл
      Массив=Новый Массив;

      Авто=Рез.Представление;
      Массив.Добавить(Авто);   
   
КонецЦикла;


а должно быть...

Массив=Новый Массив;
Пока рез.Следующий() цикл
     
      Авто=Рез.Представление;
      Массив.Добавить(Авто);   
   
КонецЦикла;


должен быть не пустой а с последним значением из запроса...

а это

СтандартнаяОбработка=Ложь;
ММаршрут= новый СписокЗначений();
ММаршрут.Добавить(Адрес());
         ММаршрут.ОтметитьЭлементы("");
      СписокСтрока = "";
Для каждого стр из ММаршрут цикл
   Если Стр.Пометка=Истина Тогда
      СписокСтрока = СписокСтрока + Стр.Значение + ", ";
   КонецЕсли;
КонецЦикла;
СписокСтрока = Лев(СписокСтрока, СтрДлина(СписокСтрока)-2);
Элементы.ЗагрузкаВыгрузка.ТекущиеДанные.Адрес=СписокСтрока;


к чему?
в любом случае после "Возврат Массив;" ничего из этого не выполнится НИ КОГ ДА...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

denis-moscow1987

Цитата: cska-fanat-kz от 25 июн 2014, 10:34
Пока рез.Следующий() цикл
      Массив=Новый Массив;

      Авто=Рез.Представление;
      Массив.Добавить(Авто);   
   
КонецЦикла;


а должно быть...

Массив=Новый Массив;
Пока рез.Следующий() цикл
     
      Авто=Рез.Представление;
      Массив.Добавить(Авто);   
   
КонецЦикла;


должен быть не пустой а с последним значением из запроса...

а это

СтандартнаяОбработка=Ложь;
ММаршрут= новый СписокЗначений();
ММаршрут.Добавить(Адрес());
         ММаршрут.ОтметитьЭлементы("");
      СписокСтрока = "";
Для каждого стр из ММаршрут цикл
   Если Стр.Пометка=Истина Тогда
      СписокСтрока = СписокСтрока + Стр.Значение + ", ";
   КонецЕсли;
КонецЦикла;
СписокСтрока = Лев(СписокСтрока, СтрДлина(СписокСтрока)-2);
Элементы.ЗагрузкаВыгрузка.ТекущиеДанные.Адрес=СписокСтрока;


к чему?
в любом случае после "Возврат Массив;" ничего из этого не выполнится НИ КОГ ДА...

Массив=Новый Массив;
Пока рез.Следующий() цикл
     
      Авто=Рез.Представление;
      Массив.Добавить(Авто);   
   
КонецЦикла;

Так а как мне передать на форму список значений помещенных в массив?

cska-fanat-kz

точно не помню...

СписокЗнач = Новый СписокЗначений;
СписокЗнач.Загрузить(Массив);
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

мне просто лень докапываться, в чем именно задача состоит.....
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

denis-moscow1987


Теги:

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

Рейтинг@Mail.ru

Поиск