Вход | Регистрация

1С:Предприятие ::

Метки: 

Подбор товаров, мультивыделение на планшете (!)

Я
   triviumfan
 
31.07.18 - 17:35
Доброго дня!

Конфа: торговля 11
Имеются планшеты на ведроиде с ms rdp клиентом. Админы говорят, что через веб-клиент жестокие лаги, вроде как 3Ж не тянет (хз, что там за пропускная способность нужна, но планшеты нужны для менеджеров, работающих "в полях").

А теперь, внимание вопрос (https://cs8.pikabu.ru/post_img/big/2016/09/10/7/1473505439170846857.jpg):
Можно ли на планшете при использовании типовой обработки подбора товаров в документ использовать мультивыделение строк? На ПК я просто Ctrl+A и перетаскиваю все товары из папки/категории/иликакойещётамотбор.
 
  Рекламное место пустует
   Fragster
 
1 - 31.07.18 - 17:42
ну сделай им "залипающую" кнопку на панели инструментов, пока она нажата, при активизации строки добавляет в "выделенныеСтроки".
   Cyberhawk
 
2 - 31.07.18 - 18:11
Веб-клиент платформы 1С не поддерживает Андроид (сенсорное управление).
Но в терминале можно вызвать экранную клавиатуру, и какое-нибудь залипание клавиш в том числе.
Хочешь натива и красивости "из коробки" - мобильный клиент / мобильная платформа в помощь.
   triviumfan
 
3 - 31.07.18 - 18:15
(1) не подскажешь, как это делается в 1с?) 
(2) экранная клавиатура..хм, тоже вариант
   Остап Сулейманович
 
4 - 31.07.18 - 18:22
(0) Ну есть же мобильная платформа. И мобильный клиент. Специально под ведроид в том числе. Нормальное множественное выделение. В ведроидном стиле.
Что за маниакальная тяга работать на планшете через РДП?
   Casey1984
 
5 - 31.07.18 - 22:06
(4) Это называется лень)
   triviumfan
 
6 - 01.08.18 - 09:07
(5) это не лень, ут11 переписанная вдоль и поперёк, чтобы подготовить конфу под мобильную платформу надо собаку съесть.
   triviumfan
 
7 - 01.08.18 - 10:34
а почему не работает это?
    
    Shell= Новый COMОбъект("Wscript.Shell");
    Shell.SendKeys("^+A");
   triviumfan
 
8 - 01.08.18 - 10:50
(7) работает, но через раз, то да, то нет.
ппц, одинэс...
   Fragster
 
9 - 01.08.18 - 11:30
(8) вероятно следует смотреть, где фокус (какое поле ввода активно) при отправке контрол-а. но для выделения всех строк можно воспользоваться манипуляцией с массивом выбранных строк, а не отправкой сочетаний клавиш. Если нужно крутить ДС, а не ТЧ, то может поможет http://catalog.mista.ru/public/559370/
С ТЧ все тривиально.
   triviumfan
 
10 - 01.08.18 - 11:45
(9) фокус верен, даже программно устанавливал текущий элемент - тупит этот wscript из под 1с.

Да, решил я все-таки попробовать использовать расширение таблицы формы для дин. списка.
Пытаюсь в подборе добавить все товары из списка в корзину:
[1С]
&НаКлиенте
Процедура ИТМ_ПеренестиВсеСтроки(Команда)
    
    Если НавигацияПоХарактеристикам Тогда
        ЭлементФормыСпискаСтрокой = ПодборТоваровКлиентСервер.ИмяСпискаХарактеристикПоВариантуПоиска(ЭтаФорма);
    Иначе
        ЭлементФормыСпискаСтрокой = ПодборТоваровКлиентСервер.ИмяСпискаНоменклатурыПоВариантуПоиска(ЭтаФорма);
    КонецЕсли;
    
    ИТМ_ПеренестиВсеСтрокиНаСервере(ЭлементФормыСпискаСтрокой);
    
КонецПроцедуры

&НаСервере
Процедура ИТМ_ПеренестиВсеСтрокиНаСервере(ЭлементФормыСпискаСтрокой)
    
    Схема = Элементы[ЭлементФормыСпискаСтрокой].ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    //Настройки = Элементы[ЭлементФормыСпискаСтрокой].ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    Настройки = Схема.НастройкиПоУмолчанию;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Если ТаблицаРезультат.Количество() < 100 Тогда
        ПеретащитьВКорзинуНаСервере(ТаблицаРезультат);
    Иначе
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Слишком много элементов для разового добавления в корзину!");
    КонецЕсли;
    
КонецПроцедуры
[\1С]
Но прикол в том, что в запросе N полей, а в моей ТЗ, полученной таким образом M полей, а на форме вообще P элементов.
Соответственно типовая процедура добавления ПеретащитьВКорзинуНаСервере() ругается, там даже типа номенклатуры не содержится. Опять я дурак или 1с?:)
 
  Рекламное место пустует
   triviumfan
 
11 - 01.08.18 - 11:46
(10) я пробовал настройки компоновщика получать и из расширения формы, и по умолчанию... все равно результат процессора вывода отличается
   Вафель
 
12 - 01.08.18 - 11:54
выделить все строки можно без всяких скриптов
   triviumfan
 
13 - 01.08.18 - 12:34
(12) небо голубое.
   triviumfan
 
14 - 01.08.18 - 14:01
Так никто не в курсе, почему количество полей дин. списка, расположенного на форме, отличается от ТЗ, полученной на основании схемы и компоновщика настроек из расширения таблицы формы сего списка?
   DrWatson
 
15 - 01.08.18 - 14:18
(14) может они отличаются на те колонки которые не выводятся в форму или на те что сейчас невидимые.
   triviumfan
 
16 - 01.08.18 - 15:47
(15) именно так!
   triviumfan
 
17 - 01.08.18 - 15:49
(16) тип номенклатуры, к примеру, на форму не выведен, но стоит флаг "использовать всегда"
   triviumfan
 
18 - 01.08.18 - 15:50
соответственно при добавлении в корзину текущей строки списка номенклатуры данные строки содержат это поле.
Как мне получить все данные?
   triviumfan
 
19 - 01.08.18 - 18:01
Извиняюсь, ссылка в (9) - там все есть, не дочитал =\
Итого:
[1C]
Схема = Элементы[ЭлементФормыСпискаСтрокой].ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    Настройки = Элементы[ЭлементФормыСпискаСтрокой].ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    
    ВыбранныеПоляКомпоновкиДанных = Настройки.Структура[0].Выбор;
    ВыбранныеПоляКомпоновкиДанных.Элементы.Очистить();
    Для Каждого Элемент Из ВыбранныеПоляКомпоновкиДанных.ДоступныеПоляВыбора.Элементы Цикл
        Если Не Элемент.Папка Тогда КомпоновкаДанныхКлиентСервер.ДобавитьВыбранноеПоле(ВыбранныеПоляКомпоновкиДанных, Элемент.Поле, Элемент.Заголовок); КонецЕсли;
    КонецЦикла;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Если ТаблицаРезультат.Количество() > 100 Тогда
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Слишком много элементов для разового добавления в корзину!");
        Возврат;
    КонецЕсли;
    
    МассивСтрокТовара = Новый Массив;
    Для Каждого ДанныеСтроки Из ТаблицаРезультат Цикл
        
        ПараметрыТовара = ПодборТоваровКлиентСервер.ПараметрыТовара();
        
        ЗаполнитьЗначенияСвойств(ПараметрыТовара, ДанныеСтроки);
        
        Если ДанныеСтроки.ЭтоТовар И Склады.Количество() = 1 И РежимПодбораИспользоватьСкладыВТабличнойЧасти Тогда
            ПараметрыТовара.Склад = Склады.Получить(0).Значение;
        КонецЕсли;
        
        ПараметрыТовара.КоличествоУпаковок = 1;
        
        МассивСтрокТовара.Добавить(ПараметрыТовара);
        
    КонецЦикла;
    
    ПеретащитьВКорзинуНаСервере(МассивСтрокТовара);
[\1C]
   breezee
 
20 - 02.08.18 - 08:59
Можно. Добавьте туда реквизит с типом булево и переностие только те строки, у кого флаг выстален


Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует