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


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Кнопка множественного выбора элементов списка

v7: Кнопка множественного  выбора элементов списка
Я
   Arland
 
07.03.18 - 07:38
Добрый день!
7.7 Предприятие ТиС 9.2

Подскажите пож. какую процедуру писать для кнопки, чтобы при подборе номенклатуры можно было выбрать все элементы списка в форме подбора номенклатуры. Чтобы не по одному подбирать, а выбрать все из списка.
 
 
   1Сергей
 
1 - 07.03.18 - 08:03
Посмотреть как в других местах сделано
   2S
 
2 - 07.03.18 - 08:07
ЖКК еще не предлагали?
   Смотрящий
 
3 - 07.03.18 - 08:24
11 лет на форуме...
   Arland
 
4 - 07.03.18 - 08:26
Мля, просто наводку дайте
   Arland
 
5 - 07.03.18 - 08:27
(3) 11 лет не означает,что 11 лет 1с-м занимаюсь
   Смотрящий
 
6 - 07.03.18 - 08:30
Тыкаться во все элементы все равно придётся ктрл+а нет как в снеговике.
Спр.Выбрать() 3 или 4й параметр "ФлагМножественногоВыбора", вроде
   Масянька
 
7 - 07.03.18 - 08:35
(0) Имеется ввиду - выбрать все из папки или что-то другое?
   Arland
 
8 - 07.03.18 - 08:39
(7) В форме подбора номенклатуры просто тупо выбрать всю номенклатуру для документа.
Пример, док. Ввод остатков ТМЦ, чтобы кномкой можно было выбрать весь товар, а не по одному мышкой тыкать
   Масянька
 
9 - 07.03.18 - 08:44
(8) Справ.ВыбратьЭлементы();
Пока Справ.ПолучитьЭлемент() = 1 Цикл
ТЧ.НоваяСтрока(); + автозаполнение.
КонецЦикла;
   Arland
 
10 - 07.03.18 - 08:45
(9) ша попробую
 
 Рекламное место пустует
   vladko
 
11 - 07.03.18 - 08:49
(0) "при подборе номенклатуры можно было выбрать все элементы списка в форме подбора номенклатуры"
Каламбур какой-то, а не вопрос...
   Масянька
 
12 - 07.03.18 - 08:53
(11) Каждый сходит с ума по-своему (С)
   dk
 
13 - 07.03.18 - 09:15
автор ты таки определись - выбрать все элементы в справочнике или выбрать в одном окне несколько элементов?
   Arland
 
14 - 07.03.18 - 09:18
(13) ) выбрать в одном окне несколько элементов
   dk
 
15 - 07.03.18 - 09:20
тогда смотри в сторону ОбработкаПодбора - в любом типовом отчете
   dk
 
16 - 07.03.18 - 09:21
еще если есть пример, но не понимаешь как работает - просто запусти замер производительности в отладчике и посмотри что там происходит
   Масянька
 
17 - 07.03.18 - 09:22
(14) Чего?! А что тогда в (8)?
   Масянька
 
18 - 07.03.18 - 09:22
(13) ИМХО, ТС уже запутался: чего, кому и как надо...
   Arland
 
19 - 07.03.18 - 09:30
(18) (15) Как сюда картинку скинуть?
   Duke1C
 
20 - 07.03.18 - 09:38
(19) Картинку на хостинг - ссыль сюда
   Arland
 
21 - 07.03.18 - 10:13
(15) [URL=http://fastpic.ru/][IMG]http://i103.fastpic.ru/big/2018/0307/40/f34cf280a81d7fc50228dc20bd188540.jpg[/IMG][/URL]
Выбрать всю номенклатуру и добавить в документ
   Arland
 
22 - 07.03.18 - 10:14
   один я дАртаньян
 
23 - 07.03.18 - 10:20
   Arland
 
24 - 07.03.18 - 10:29
(23) Не то
   Arland
 
25 - 07.03.18 - 10:35
   один я дАртаньян
 
26 - 07.03.18 - 11:06
(24) В принципе можно попробовать но заморочено.

1. Добавляем на форму Надпись в закладку дополнительно в функцию: ОчичтитьСписок()
2. В ТЧ добавляем колонку, на закладке дополнительно в функцию добавляем: ЗаполнитьСпНоменклатуры()

В модуль формы добавляем функции
Функция ОчичтитьСписок()
    Сообщить("ххх");
    Возврат "эээ";
КонецФункции
   
Функция ЗаполнитьСпНоменклатуры() 
    Сообщить(""+ ТекущийЭлемент());
Возврат "Хх";
КонецФункции


У меня выводит следующее:
_Помойка (не удалять)
_Разное
Арматура стеклопластиковая
Брус сосновый
Вагонка,панели пластиковые,комплектующие
Вентиляция
ххх
_ЕНВД ДОЛГИ

Причем _ЕНВД ДОЛГИ - первая и активная строчка.

Если листать по одной строке:
ххх
Подвесной потолок
ххх
Плитка керамическая
ххх
Плинтус, порожки, планки для плитки
ххх
Пена монтажная и герметики


Если же прокручивать или увеличить окно, то показывает весь список.


Тут надо придумать  алгоритм, чтобы в ЗаполнитьСпНоменклатуры() - заполнялся некий список
А помто сочетание ОчичтитьСписок() и ЗаполнитьСпНоменклатуры() - неким образом копировало существующий список или добавляло в некий дополнительный список.

А потом уже из этого списка по кнопке копировать все.
   Davalebor
 
27 - 07.03.18 - 11:10
(25) В верхнем списке весь справочник или там элементы с каким-то отбором? Или например пользователь в верхнем списке заходит в какую-то группу и ее содержимое нужно перенести в нижнюю таблицу?
Опиши как в твоем представлении выглядят действия пользователя.
Просто если в документ нужно перенести весь справочник, то эта форма подбора не нужна, а нужно добавить кнопку в форму документа и повесить на нее процедуру из (9).
Если все-таки пользователь должен отобрать элементы по какому-то критерию, например из какой-то конкретной группы перенести или с использованием какого-то отбора, то по другому действовать нужно.
   Arland
 
28 - 07.03.18 - 11:30
(27) В 8-ке есть режим выделения.
Как в 7-ке сделать тоже самое и перенести выделенную номенклатуру в документ?
http://i99.fastpic.ru/big/2018/0307/12/eabddf27c3b3cd7936fb789bc80f0912.jpg
   silent person
 
29 - 07.03.18 - 11:36
(28) в 7.7 нет режима выделения, но есть режим "Множественного выбора". Это когда при выборе одного элемента окно подбора не закрывается а можно сразу ткнуть в следующий.
об этом сказали еще в (6)
   Kigo_Kigo
 
30 - 07.03.18 - 11:40
тогда не форму подбора использовать а Сз с пометкой
   Salimbek
 
31 - 07.03.18 - 11:40
(29) А еще это дело кодом обвязывать нужно. Само по себе включением галочки оно не работает.
   Kigo_Kigo
 
32 - 07.03.18 - 11:51
   Arland
 
33 - 07.03.18 - 11:57
(32) Нет, всеравно тыкать нужно по каждой номенклатуре.
Мне нужно выбрать всю номенклатуру по нажатию одной кнопки.
 
 
   Kigo_Kigo
 
34 - 07.03.18 - 11:59
(33) Всю, или ту что есть на остатках?
В пределах родителя, или тупо всю без групп?
   Davalebor
 
35 - 07.03.18 - 11:59
(33) Сделай кнопку в форме подбора, в ее процедуре перебери весь справочник и помещай в нижнюю таблицу те элементы, которые подходят под используемые критерии отбора в верхнем списке.
   Davalebor
 
36 - 07.03.18 - 12:00
(34) Так не признается он, спрашивали выше )
   Arland
 
37 - 07.03.18 - 12:01
(35) Вот именно с процедурой у меня и проблема))
   silent person
 
38 - 07.03.18 - 12:01
(33) режим выделения в 7.7 включается только с помощью 1CPP.dll
   Arland
 
39 - 07.03.18 - 12:02
(36) Подскажите пож. какую процедуру писать для кнопки, чтобы при подборе номенклатуры можно было выбрать все элементы списка в форме подбора номенклатуры. Чтобы не по одному подбирать, а выбрать все из списка.
   Arland
 
40 - 07.03.18 - 12:03
(34) Тупо все без групп!!!
   silent person
 
41 - 07.03.18 - 12:04
чем (9) не устроило? тупо выбирает все элементы справочника.
не знаешь как группы исключить ?
   Kigo_Kigo
 
42 - 07.03.18 - 12:09
Процедура ВыбратьВсе()
    Спр = СоздатьОбъект("Справочник.Номенклатура");
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Если Спр.ЭтоГруппа() = 1 Тогда 
        Продолжить;
    КонецЕсли;
       ТаблицаПодбора.НоваяСтрока();
       ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент();
       
       ТаблицаПодбора.Единица = Спр.БазоваяЕдиница;
// и так далее       

    КонецЦикла;

КонецПроцедуры
   Kigo_Kigo
 
43 - 07.03.18 - 12:09
В формулу кнопки помести ВыбратьВсе()
   Arland
 
44 - 07.03.18 - 12:20
(42) Огромное Спасибо!!!! Это то что нужно, работает!!!)
   Масянька
 
45 - 07.03.18 - 12:34
(41) Я там понимаю, тем, что код не полный... Но я думала мужчина с 22 см, а оказалось :))))))))))
   один я дАртаньян
 
46 - 07.03.18 - 12:53
(44) Т.е. тебе нужно было тупо все элементы, а не только те, что на экране в данный момент?
   Kigo_Kigo
 
47 - 07.03.18 - 12:57
(46) См (40) :)
   Kigo_Kigo
 
48 - 07.03.18 - 13:02
(46) Ну можно и те что на эране
Процедура ВыбратьВсе()
Если ПустоеЗначение(ТекущийЭлемент().Родитель)  = 0 Тогда
    Спр = СоздатьОбъект("Справочник.Номенклатура");
    Спр.ИспользоватьРодителя(ТекущийЭлемент().Родитель);
    Спр.ВыбратьЭлементы(1);
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Если Спр.ЭтоГруппа() = 1 Тогда 
        Продолжить;
    КонецЕсли;
       ТаблицаПодбора.НоваяСтрока();
       ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент();
       
       ТаблицаПодбора.Единица = Спр.БазоваяЕдиница;
// и так далее       


    КонецЦикла;
КонецЕсли;
КонецПроцедуры

нужно еще проверить, на каком уровне иерархии находится сейчас элемент и так далее, мне лень писать :)
   Arland
 
49 - 07.03.18 - 13:05
(48) А, можно туда все остатки перенести в колонку количество?
 
 Рекламное место пустует
   Davalebor
 
50 - 07.03.18 - 13:06
(48) Теоретически еще всякие отборы могут быть включены, тогда на экране не полный перечень элементов будет.
Но ТС видимо над "тупо все".
   Kigo_Kigo
 
51 - 07.03.18 - 13:15
(49)
ТовОстаток = 0;
ТовОстатокПоФирме = 0;             глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Спр.ТекущийЭлемент, Спр.БазоваяЕдиница, ОстаткиТМЦ, ТовОстаток, ТовОстатокПоФирме, Склад, Резервы, 1);
ТаблицаПодбора.Количество = ТовОстаток;//или ТовОстатокПоФирме
   Масянька
 
52 - 07.03.18 - 13:20
(51) А говорят, что эсники тупые и жадные... :)))))))
   Kigo_Kigo
 
53 - 07.03.18 - 13:28
(52)Ну Ленивый,ну может туповат, да, но не жадный :)))
   Масянька
 
54 - 07.03.18 - 13:29
(53) Согласна :)
Гони шоколадку :))))) (ШУТКА)
   Kigo_Kigo
 
55 - 07.03.18 - 13:30
(54) Главное, чтобы сча за цену с суммой не спросил :)
   Arland
 
56 - 07.03.18 - 13:31
(52) ))
   Arland
 
57 - 07.03.18 - 13:32
(55) Выдает ошибку
глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Спр.ТекущийЭлемент, Спр.БазоваяЕдиница, ОстаткиТМЦ, ТовОстаток, ТовОстатокПоФирме, Склад, Резервы, 1);
{Справочник.Номенклатура.ФормаСписка.ДляПодбора.Модуль(616)}: Поле агрегатного объекта не обнаружено (ТекущийЭлемент)
   Масянька
 
58 - 07.03.18 - 13:32
(55) П-п-п-предупреждать надо :)))))))
   Масянька
 
59 - 07.03.18 - 13:33
(57) Зашибись....
   Kigo_Kigo
 
60 - 07.03.18 - 13:35
(57) Спр.ТекущийЭлемент = Спр.ТекущийЭлемент()
   Kigo_Kigo
 
61 - 07.03.18 - 13:35
(59) Он наверно думает, что я еще и тестирую сижу :)
   Arland
 
62 - 07.03.18 - 13:36
(61) ) не думаю
   Arland
 
63 - 07.03.18 - 13:38
(61) Спасибо огромное за помощь!!!!
   Arland
 
64 - 07.03.18 - 13:39
(55) Не спрошу, а, можно?)))
   Kigo_Kigo
 
65 - 07.03.18 - 13:45
(64) А тут уже от склада зависит(розничный/оптовый) и от типа цены,и заполнены ли они в справочнике :)
   Arland
 
66 - 07.03.18 - 13:48
(65) Цены закупочные, склад оптовый, в справочнике заполнены.
   Kigo_Kigo
 
67 - 07.03.18 - 13:54
Ед = "";
ТовЦена = 0;
ТовВалюта="";
Если ПолучитьЦенуНоменклатуры(Спр.ТекущийЭлемент(), Спр.БазоваяЕдиница, ТовЦена, ТовВалюта) = 1 Тогда
    ТаблицаПодбора.Цена= ТовЦена;
    ТаблицаПодбора.Сумма = ТаблицаПодбора.Цена*ТаблицаПодбора.Количество;
    
КонецЕсли;
   Arland
 
68 - 07.03.18 - 13:58
(67) Рассчетная        = ТипЦены.Рассчитывается;
{Глобальный модуль(1312)}: Значение не представляет агрегатный объект (Рассчитывается)
   Kigo_Kigo
 
69 - 07.03.18 - 14:06
(68) Ну так выбери в документе из которого открываешь подбор - тип цен, он сейчас у тебя пустой
   Arland
 
70 - 07.03.18 - 14:10
(69) Спасибо!!!!
   Arland
 
71 - 07.03.18 - 14:11
(69) А, можно при выборе, выбрать только номенклатуру только с остатками?
   Arland
 
72 - 07.03.18 - 14:11
(69) А, можно при выборе, выбрать номенклатуру только с остатками?
   Kigo_Kigo
 
73 - 07.03.18 - 14:17
(71) Можно
Поместить
Пока спр.ПолучитьЭлемент() =1 Цикл
    Если Спр.ЭтоГруппа() = 1 Тогда 
        Продолжить;
    КонецЕсли;
    
    ТовОстаток = 0;
    ТовОстатокПоФирме = 0;             
    глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Спр.ТекущийЭлемент, Спр.БазоваяЕдиница, ОстаткиТМЦ, ТовОстаток, ТовОстатокПоФирме, Склад, Резервы, 1);
    Если ТовОстаток = 0 Тогда
        Продолжить;
    КонецЕсли;
    ТаблицаПодбора.НоваяСтрока();
    ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент();
    ТаблицаПодбора.Единица = Спр.БазоваяЕдиница;
    Ед = "";
    ТовЦена = 0;
    ТовВалюта="";
    Если ПолучитьЦенуНоменклатуры(Спр.ТекущийЭлемент(), Спр.БазоваяЕдиница, ТовЦена, ТовВалюта) = 1 Тогда
        ТаблицаПодбора.Количество = ТовОстаток;
        ТаблицаПодбора.Цена= ТовЦена;
        ТаблицаПодбора.Сумма = ТаблицаПодбора.Цена*ТаблицаПодбора.Количество;
    КонецЕсли;
КонецЦикла;
   Kigo_Kigo
 
74 - 07.03.18 - 14:21
Давай уж добью 
)))
Если ТипЦен.Выбран() = 0 Тогда 
    Если ВвестиЗначение(ТипЦен,"Выберите тип цен","Справочник.ТипыЦен") = 0 Тогда 
        Сообщить("Нужно выбрать тип цен!");
        СтатусВозврата(0); 
        Возврат;
    КонецЕсли;
КонецЕсли;

Пока спр.ПолучитьЭлемент() =1 Цикл
    Если Спр.ЭтоГруппа() = 1 Тогда 
        Продолжить;
    КонецЕсли;
    
    ТовОстаток = 0;
    ТовОстатокПоФирме = 0;             
    глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Спр.ТекущийЭлемент, Спр.БазоваяЕдиница, ОстаткиТМЦ, ТовОстаток, ТовОстатокПоФирме, Склад, Резервы, 1);
    Если ТовОстаток = 0 Тогда
        Продолжить;
    КонецЕсли;
    ТаблицаПодбора.НоваяСтрока();
    ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент();
    ТаблицаПодбора.Единица = Спр.БазоваяЕдиница;
    Ед = "";
    ТовЦена = 0;
    ТовВалюта="";
    Если ПолучитьЦенуНоменклатуры(Спр.ТекущийЭлемент(), Спр.БазоваяЕдиница, ТовЦена, ТовВалюта) = 1 Тогда
        ТаблицаПодбора.Количество = ТовОстаток;
        ТаблицаПодбора.Цена= ТовЦена;
        ТаблицаПодбора.Сумма = ТаблицаПодбора.Цена*ТаблицаПодбора.Количество;
    КонецЕсли;
КонецЦикла;
   Мандалай
 
75 - 07.03.18 - 14:23
Чеж вы прям по живому?

<Спр.ВыбратьЭлементы(1);>

Дети, учите запросы - это еще Дед мороз говорил!
   Мандалай
 
76 - 07.03.18 - 14:24
77 это конечно не 8-ка, но конструктор там тоже есть.
   Arland
 
77 - 07.03.18 - 14:28
(73) Номенклатуру выбирает правильно с остатками, но количество не переносит в док.
   Arland
 
78 - 07.03.18 - 14:29
(75) Что не так?
   Arland
 
79 - 07.03.18 - 14:30
(74) )))
   Мандалай
 
80 - 07.03.18 - 14:33
Выборка элементов справочника работает на порядок медленнее чем использование запроса, пусть даже типового, а не прямого.
    Спр = СоздатьОбъект("Справочник.Номенклатура");
    Спр.ИспользоватьРодителя(ТекущийЭлемент().Родитель);
    Спр.ВыбратьЭлементы(1);

Вот за такую запись вы бы спеца по 77 не получили.
   Kigo_Kigo
 
81 - 07.03.18 - 14:37
(80) Работает? Не трожь! вы ветку читали? тут лепили из того что было :)
   Arland
 
82 - 07.03.18 - 14:39
(81) Еще как работает!!!!! Все отлично Работает!!!!

Kigo_Kigo тут такую штуку сделал!!!!
   Мандалай
 
83 - 07.03.18 - 14:39
(81) золотое правило программиста, беру свои слова обратно :)
   Arland
 
84 - 07.03.18 - 14:46
(81) (83) А теперь скажу для чего это нужно было))

Есть старая база на 7-ке, вся замусоренная.
Базу очистил, удалив все dbf, оставив только номенклатуру.
Нужно было оприходовать товар. Благодоря  Kigo_Kigo
создал док оприходования остатков ТМЦ в старой и перенес док в чистую базу.
   Arland
 
85 - 07.03.18 - 14:49
(81) Огромное тебе спасибо!!!! С меня причитаеться
   Kigo_Kigo
 
86 - 07.03.18 - 15:11
(84) Вот так мы легко и не принужденно срезали сейчас базу, а ведь мог бы просто спросить, ребят чем базу срезать? и мы бы ему сча обработками как мыло закидали бы, и все адью, ветка на 3-4 ответа, а тут аж на 86 настрочили :)
   Масянька
 
87 - 07.03.18 - 15:14
(84) Инветаризация -> оприходование ТМЦ - все есть в стандарте.
(86) Во-о-о-от... Я всегда прошу (а надо требовать!) описание задачи... А не разводить бодягу на сотку...
   Kigo_Kigo
 
88 - 07.03.18 - 15:17
(87) Сча погодь, там еще с взаиморасчетами вопросики будут наверно :)
   Масянька
 
89 - 07.03.18 - 15:19
(88) Не-на-чи-най....
А партии? А касса? А склады?
"Плюнула на плешь ему и послала к Лешему!" (С)
   Arland
 
90 - 07.03.18 - 15:27
(89) (86) я и сам не думал ее реза все само собой получилось)))
   Arland
 
91 - 07.03.18 - 15:27
(87) Говорю база убитая, там мусору валом
   Arland
 
92 - 07.03.18 - 15:29
(88) не будет, кроме контрагентов и остатков номенклатуры с ценами ничего ненужно. Все отлично работает)
   один я дАртаньян
 
93 - 07.03.18 - 18:41
(48) Когда я говорил все нак экране, я имел ввиду так как рисовал топикстартер http://i103.fastpic.ru/big/2018/0307/40/f34cf280a81d7fc50228dc20bd188540.jpg

Т.е. в правочнике 1000 позиций в данный момент на экране 10 нажал кнопку перенеслись именно эти десят, развернул окно, стали помещаться 50 элементов нажал на кнопк попало 50 элементов.


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