Имя: Пароль:
1C
1С v8
Перенос Таблицы Значения с сервера на клиент
0 Albatros37
 
22.05.25
15:58
Всем привет! Проблема такая, я перенес Таблицу Значения с сервера на клиент с помощью Массива структур, но после переноса на клиенте пропал нужный мне метод ВыбратьСтроку, как быть и что делать?)) ПА-МА-ГИ-ТЕ плиз

&НаКлиенте
Процедура СменаСтеллажа(Команда,Структура) Экспорт
    Перем Ст2,Ст1;
    МассивСтрок = ПоместитьТабЗначен(Структура);
    
    
       
   Если МассивСтрок = Неопределено Тогда
        Сообщить("Данные не найдены в хранилище.");
        Возврат;
    КонецЕсли;
    Если МассивСтрок.Количество() > 0 Тогда
      Сообщить(МассивСтрок.Количество());
      Возврат;
   КонецЕсли;

   // Устанавливаем начальную строку (первую доступную)
   НачальнаяСтрока = МассивСтрок.Получить(0); // Это обеспечит нужный тип строки

   // Показываем диалог выбора
   ВыбраннаяСтрока=МассивСтрок.ВыбратьСтроку("Выберите стеллаж", НачальнаяСтрока);

   Если ВыбраннаяСтрока = Неопределено Тогда
      Сообщить("Выбор отменён.");
      Возврат;
   КонецЕсли;      
    Ст1=ВыбраннаяСтрока;      
    Если ВвестиЗначение(Ст2, "Введите новый стеллаж",Новый ОписаниеТипов("СправочникСсылка.Стеллаж")) <> Истина Тогда
        Возврат;
    КонецЕсли;
    Сообщить(Ст2);
    Счетчик = 0;

    Для Каждого ТекСтр из ЭтаФорма.Объект.ТабличнаяЧасть1 Цикл
        Сообщить("Текущий стеллаж: " + ТекСтр.Стеллаж + ", выбранный стеллаж: " + Ст1);
        Если ТекСтр.Стеллаж = Ст1 Тогда
            ТекСтр.Стеллаж = Ст2;
            Счетчик = Счетчик+ 1;
            Сообщить("Кипа №" + ТекСтр.Кипы + ": " + Ст1 + " ->>> " + Ст2);
        КонецЕсли;
    КонецЦикла;

    Сообщить("Перемещено " + Счетчик + " кип");
КонецПроцедуры


&НаСервере
Функция ПоместитьТабЗначен(Структура) Экспорт
    Табл = Новый ТаблицаЗначений;
    Табл.Колонки.Добавить("Стеллаж", Новый ОписаниеТипов("СправочникСсылка.Стеллаж"));
    Табл.Колонки.Добавить("КолКип", Новый ОписаниеТипов("Число"),"Количество Кип", 7);

    Для Каждого ТекСтр из Объект.ТабличнаяЧасть1 Цикл
       НоваяСтрока = Табл.Добавить();
       НоваяСтрока.Стеллаж = ТекСтр.Стеллаж;
       НоваяСтрока.КолКип = 1;
      
    КонецЦикла;

    Табл.Свернуть("Стеллаж", "КолКип");
        МассивДанных = Новый Массив;
    Для Каждого Строка Из Табл Цикл
        СтруктураСтроки = Новый Структура;
        Для Каждого Колонка Из Табл.Колонки Цикл
            СтруктураСтроки.Вставить(Колонка.Имя, Строка[Колонка.Имя]);
        КонецЦикла;
        МассивДанных.Добавить(СтруктураСтроки);
    КонецЦикла;

    Возврат МассивДанных;
        
КонецФункции
1 laeg
 
22.05.25
16:01
самый простой способ - сделать форму с таблицой, заполнять и открывать для выбора
2 Albatros37
 
22.05.25
16:04
(1) Делал так, такая же проблема
3 VladZ
 
22.05.25
16:11
(0) Зачем?
4 butterbean
 
22.05.25
16:19
(2) как может быть такая же проблема? Надо забыть про метод ВыбратьСтроку() при переходе на тонкий клиент и всё
5 Albatros37
 
22.05.25
16:21
(4) И как быть? Нужно что бы пользователь выбирал стеллаж который хочет заменить
6 butterbean
 
22.05.25
16:24
(5) в (1) все написано - делать свою форму с таблицей
7 Fish
 
гуру
22.05.25
16:24
(5) Магию методов тонкого клиента используй.
8 minsk1s
 
22.05.25
16:27
(0) Попробуйте другие методы передачи: https://koder.by/peredacha_tablicy_znachenij_s_servera_na_klient.php
9 Albatros37
 
22.05.25
16:38
Решил передать в список значений
Список = Новый СписокЗначений;
    Для каждого Элемент из МассивСтрок Цикл
        Список.Добавить(Элемент["Стеллаж"], Элемент["Стеллаж"]);
    КонецЦикла;

    // Показываем диалог выбора стеллажа
    ВыбраннаяСтрока = Список.ВыбратьЭлемент("Выберите стеллаж:");
Все получилось
10 Fish
 
гуру
22.05.25
16:44
(9) Лучше использовать ПоказатьВыборЭлемента. Модальность нынче не в тренде.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн