|
v7: Кнопка множественного выбора элементов списка | ☑ | ||
---|---|---|---|---|
0
Arland
07.03.18
✎
07:38
|
Добрый день!
1с 7.7 Предприятие ТиС 9.2 Подскажите пож. какую процедуру писать для кнопки, чтобы при подборе номенклатуры можно было выбрать все элементы списка в форме подбора номенклатуры. Чтобы не по одному подбирать, а выбрать все из списка. |
|||
1
1Сергей
07.03.18
✎
08:03
|
Посмотреть как в других местах сделано
|
|||
2
2S
07.03.18
✎
08:07
|
ЖКК еще не предлагали?
|
|||
3
Смотрящий
07.03.18
✎
08:24
|
11 лет на форуме...
|
|||
4
Arland
07.03.18
✎
08:26
|
Мля, просто наводку дайте
|
|||
5
Arland
07.03.18
✎
08:27
|
(3) 11 лет не означает,что 11 лет 1с-м занимаюсь
|
|||
6
Смотрящий
07.03.18
✎
08:30
|
Тыкаться во все элементы все равно придётся ктрл+а нет как в снеговике.
Спр.Выбрать() 3 или 4й параметр "ФлагМножественногоВыбора", вроде |
|||
7
Масянька
07.03.18
✎
08:35
|
(0) Имеется ввиду - выбрать все из папки или что-то другое?
|
|||
8
Arland
07.03.18
✎
08:39
|
(7) В форме подбора номенклатуры просто тупо выбрать всю номенклатуру для документа.
Пример, док. Ввод остатков ТМЦ, чтобы кномкой можно было выбрать весь товар, а не по одному мышкой тыкать |
|||
9
Масянька
07.03.18
✎
08:44
|
(8) Справ.ВыбратьЭлементы();
Пока Справ.ПолучитьЭлемент() = 1 Цикл ТЧ.НоваяСтрока(); + автозаполнение. КонецЦикла; |
|||
10
Arland
07.03.18
✎
08:45
|
(9) ша попробую
|
|||
11
vladko
07.03.18
✎
08:49
|
(0) "при подборе номенклатуры можно было выбрать все элементы списка в форме подбора номенклатуры"
Каламбур какой-то, а не вопрос... |
|||
12
Масянька
07.03.18
✎
08:53
|
(11) Каждый сходит с ума по-своему (С)
|
|||
13
dk
07.03.18
✎
09:15
|
автор ты таки определись - выбрать все элементы в справочнике или выбрать в одном окне несколько элементов?
|
|||
14
Arland
07.03.18
✎
09:18
|
(13) ) выбрать в одном окне несколько элементов
|
|||
15
dk
07.03.18
✎
09:20
|
тогда смотри в сторону ОбработкаПодбора - в любом типовом отчете
|
|||
16
dk
07.03.18
✎
09:21
|
еще если есть пример, но не понимаешь как работает - просто запусти замер производительности в отладчике и посмотри что там происходит
|
|||
17
Масянька
07.03.18
✎
09:22
|
(14) Чего?! А что тогда в (8)?
|
|||
18
Масянька
07.03.18
✎
09:22
|
(13) ИМХО, ТС уже запутался: чего, кому и как надо...
|
|||
19
Arland
07.03.18
✎
09:30
|
(18) (15) Как сюда картинку скинуть?
|
|||
20
Duke1C
07.03.18
✎
09:38
|
(19) Картинку на хостинг - ссыль сюда
|
|||
21
Arland
07.03.18
✎
10:13
|
(15) [URL=http://fastpic.ru/][IMG]http://i103.fastpic.ru/big/2018/0307/40/f34cf280a81d7fc50228dc20bd188540.jpg[/IMG][/URL]
Выбрать всю номенклатуру и добавить в документ |
|||
22
Arland
07.03.18
✎
10:14
|
||||
23
один я дАртаньян
07.03.18
✎
10:20
|
||||
24
Arland
07.03.18
✎
10:29
|
(23) Не то
|
|||
25
Arland
07.03.18
✎
10:35
|
||||
26
один я дАртаньян
07.03.18
✎
11:06
|
(24) В принципе можно попробовать но заморочено.
1. Добавляем на форму Надпись в закладку дополнительно в функцию: ОчичтитьСписок() 2. В ТЧ добавляем колонку, на закладке дополнительно в функцию добавляем: ЗаполнитьСпНоменклатуры() В модуль формы добавляем функции Функция ОчичтитьСписок() Сообщить("ххх"); Возврат "эээ"; КонецФункции Функция ЗаполнитьСпНоменклатуры() Сообщить(""+ ТекущийЭлемент()); Возврат "Хх"; КонецФункции У меня выводит следующее: _Помойка (не удалять) _Разное Арматура стеклопластиковая Брус сосновый Вагонка,панели пластиковые,комплектующие Вентиляция ххх _ЕНВД ДОЛГИ Причем _ЕНВД ДОЛГИ - первая и активная строчка. Если листать по одной строке: ххх Подвесной потолок ххх Плитка керамическая ххх Плинтус, порожки, планки для плитки ххх Пена монтажная и герметики Если же прокручивать или увеличить окно, то показывает весь список. Тут надо придумать алгоритм, чтобы в ЗаполнитьСпНоменклатуры() - заполнялся некий список А помто сочетание ОчичтитьСписок() и ЗаполнитьСпНоменклатуры() - неким образом копировало существующий список или добавляло в некий дополнительный список. А потом уже из этого списка по кнопке копировать все. |
|||
27
Davalebor
07.03.18
✎
11:10
|
(25) В верхнем списке весь справочник или там элементы с каким-то отбором? Или например пользователь в верхнем списке заходит в какую-то группу и ее содержимое нужно перенести в нижнюю таблицу?
Опиши как в твоем представлении выглядят действия пользователя. Просто если в документ нужно перенести весь справочник, то эта форма подбора не нужна, а нужно добавить кнопку в форму документа и повесить на нее процедуру из (9). Если все-таки пользователь должен отобрать элементы по какому-то критерию, например из какой-то конкретной группы перенести или с использованием какого-то отбора, то по другому действовать нужно. |
|||
28
Arland
07.03.18
✎
11:30
|
(27) В 8-ке есть режим выделения.
Как в 7-ке сделать тоже самое и перенести выделенную номенклатуру в документ? http://i99.fastpic.ru/big/2018/0307/12/eabddf27c3b3cd7936fb789bc80f0912.jpg |
|||
29
silent person
07.03.18
✎
11:36
|
(28) в 7.7 нет режима выделения, но есть режим "Множественного выбора". Это когда при выборе одного элемента окно подбора не закрывается а можно сразу ткнуть в следующий.
об этом сказали еще в (6) |
|||
30
Kigo_Kigo
07.03.18
✎
11:40
|
тогда не форму подбора использовать а Сз с пометкой
|
|||
31
Salimbek
07.03.18
✎
11:40
|
(29) А еще это дело кодом обвязывать нужно. Само по себе включением галочки оно не работает.
|
|||
32
Kigo_Kigo
07.03.18
✎
11:51
|
так пойдет?
https://yadi.sk/i/AamyFMiM3T748n |
|||
33
Arland
07.03.18
✎
11:57
|
(32) Нет, всеравно тыкать нужно по каждой номенклатуре.
Мне нужно выбрать всю номенклатуру по нажатию одной кнопки. |
|||
34
Kigo_Kigo
07.03.18
✎
11:59
|
(33) Всю, или ту что есть на остатках?
В пределах родителя, или тупо всю без групп? |
|||
35
Davalebor
07.03.18
✎
11:59
|
(33) Сделай кнопку в форме подбора, в ее процедуре перебери весь справочник и помещай в нижнюю таблицу те элементы, которые подходят под используемые критерии отбора в верхнем списке.
|
|||
36
Davalebor
07.03.18
✎
12:00
|
(34) Так не признается он, спрашивали выше )
|
|||
37
Arland
07.03.18
✎
12:01
|
(35) Вот именно с процедурой у меня и проблема))
|
|||
38
silent person
07.03.18
✎
12:01
|
(33) режим выделения в 7.7 включается только с помощью 1CPP.dll
|
|||
39
Arland
07.03.18
✎
12:02
|
(36) Подскажите пож. какую процедуру писать для кнопки, чтобы при подборе номенклатуры можно было выбрать все элементы списка в форме подбора номенклатуры. Чтобы не по одному подбирать, а выбрать все из списка.
|
|||
40
Arland
07.03.18
✎
12:03
|
(34) Тупо все без групп!!!
|
|||
41
silent person
07.03.18
✎
12:04
|
чем (9) не устроило? тупо выбирает все элементы справочника.
не знаешь как группы исключить ? |
|||
42
Kigo_Kigo
07.03.18
✎
12:09
|
Процедура ВыбратьВсе()
Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; ТаблицаПодбора.НоваяСтрока(); ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент(); ТаблицаПодбора.Единица = Спр.БазоваяЕдиница; // и так далее КонецЦикла; КонецПроцедуры |
|||
43
Kigo_Kigo
07.03.18
✎
12:09
|
В формулу кнопки помести ВыбратьВсе()
|
|||
44
Arland
07.03.18
✎
12:20
|
(42) Огромное Спасибо!!!! Это то что нужно, работает!!!)
|
|||
45
Масянька
07.03.18
✎
12:34
|
(41) Я там понимаю, тем, что код не полный... Но я думала мужчина с 22 см, а оказалось :))))))))))
|
|||
46
один я дАртаньян
07.03.18
✎
12:53
|
(44) Т.е. тебе нужно было тупо все элементы, а не только те, что на экране в данный момент?
|
|||
47
Kigo_Kigo
07.03.18
✎
12:57
|
(46) См (40) :)
|
|||
48
Kigo_Kigo
07.03.18
✎
13:02
|
(46) Ну можно и те что на эране
Процедура ВыбратьВсе() Если ПустоеЗначение(ТекущийЭлемент().Родитель) = 0 Тогда Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.ИспользоватьРодителя(ТекущийЭлемент().Родитель); Спр.ВыбратьЭлементы(1); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; ТаблицаПодбора.НоваяСтрока(); ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент(); ТаблицаПодбора.Единица = Спр.БазоваяЕдиница; // и так далее КонецЦикла; КонецЕсли; КонецПроцедуры нужно еще проверить, на каком уровне иерархии находится сейчас элемент и так далее, мне лень писать :) |
|||
49
Arland
07.03.18
✎
13:05
|
(48) А, можно туда все остатки перенести в колонку количество?
|
|||
50
Davalebor
07.03.18
✎
13:06
|
(48) Теоретически еще всякие отборы могут быть включены, тогда на экране не полный перечень элементов будет.
Но ТС видимо над "тупо все". |
|||
51
Kigo_Kigo
07.03.18
✎
13:15
|
(49)
ТовОстаток = 0; ТовОстатокПоФирме = 0; глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Спр.ТекущийЭлемент, Спр.БазоваяЕдиница, ОстаткиТМЦ, ТовОстаток, ТовОстатокПоФирме, Склад, Резервы, 1); ТаблицаПодбора.Количество = ТовОстаток; //или ТовОстатокПоФирме |
|||
52
Масянька
07.03.18
✎
13:20
|
(51) А говорят, что эсники тупые и жадные... :)))))))
|
|||
53
Kigo_Kigo
07.03.18
✎
13:28
|
(52)Ну Ленивый,ну может туповат, да, но не жадный :)))
|
|||
54
Масянька
07.03.18
✎
13:29
|
(53) Согласна :)
Гони шоколадку :))))) (ШУТКА) |
|||
55
Kigo_Kigo
07.03.18
✎
13:30
|
(54) Главное, чтобы сча за цену с суммой не спросил :)
|
|||
56
Arland
07.03.18
✎
13:31
|
(52) ))
|
|||
57
Arland
07.03.18
✎
13:32
|
(55) Выдает ошибку
глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Спр.ТекущийЭлемент, Спр.БазоваяЕдиница, ОстаткиТМЦ, ТовОстаток, ТовОстатокПоФирме, Склад, Резервы, 1); {Справочник.Номенклатура.ФормаСписка.ДляПодбора.Модуль(616)}: Поле агрегатного объекта не обнаружено (ТекущийЭлемент) |
|||
58
Масянька
07.03.18
✎
13:32
|
(55) П-п-п-предупреждать надо :)))))))
|
|||
59
Масянька
07.03.18
✎
13:33
|
(57) Зашибись....
|
|||
60
Kigo_Kigo
07.03.18
✎
13:35
|
(57) Спр.ТекущийЭлемент = Спр.ТекущийЭлемент()
|
|||
61
Kigo_Kigo
07.03.18
✎
13:35
|
(59) Он наверно думает, что я еще и тестирую сижу :)
|
|||
62
Arland
07.03.18
✎
13:36
|
(61) ) не думаю
|
|||
63
Arland
07.03.18
✎
13:38
|
(61) Спасибо огромное за помощь!!!!
|
|||
64
Arland
07.03.18
✎
13:39
|
(55) Не спрошу, а, можно?)))
|
|||
65
Kigo_Kigo
07.03.18
✎
13:45
|
(64) А тут уже от склада зависит(розничный/оптовый) и от типа цены,и заполнены ли они в справочнике :)
|
|||
66
Arland
07.03.18
✎
13:48
|
(65) Цены закупочные, склад оптовый, в справочнике заполнены.
|
|||
67
Kigo_Kigo
07.03.18
✎
13:54
|
Ед = "";
ТовЦена = 0; ТовВалюта=""; Если ПолучитьЦенуНоменклатуры(Спр.ТекущийЭлемент(), Спр.БазоваяЕдиница, ТовЦена, ТовВалюта) = 1 Тогда ТаблицаПодбора.Цена= ТовЦена; ТаблицаПодбора.Сумма = ТаблицаПодбора.Цена*ТаблицаПодбора.Количество; КонецЕсли; |
|||
68
Arland
07.03.18
✎
13:58
|
(67) Рассчетная = ТипЦены.Рассчитывается;
{Глобальный модуль(1312)}: Значение не представляет агрегатный объект (Рассчитывается) |
|||
69
Kigo_Kigo
07.03.18
✎
14:06
|
(68) Ну так выбери в документе из которого открываешь подбор - тип цен, он сейчас у тебя пустой
|
|||
70
Arland
07.03.18
✎
14:10
|
(69) Спасибо!!!!
|
|||
71
Arland
07.03.18
✎
14:11
|
(69) А, можно при выборе, выбрать только номенклатуру только с остатками?
|
|||
72
Arland
07.03.18
✎
14:11
|
(69) А, можно при выборе, выбрать номенклатуру только с остатками?
|
|||
73
Kigo_Kigo
07.03.18
✎
14:17
|
(71) Можно
Поместить Пока спр.ПолучитьЭлемент() =1 Цикл Если Спр.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; ТовОстаток = 0; ТовОстатокПоФирме = 0; глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Спр.ТекущийЭлемент, Спр.БазоваяЕдиница, ОстаткиТМЦ, ТовОстаток, ТовОстатокПоФирме, Склад, Резервы, 1); Если ТовОстаток = 0 Тогда Продолжить; КонецЕсли; ТаблицаПодбора.НоваяСтрока(); ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент(); ТаблицаПодбора.Единица = Спр.БазоваяЕдиница; Ед = ""; ТовЦена = 0; ТовВалюта=""; Если ПолучитьЦенуНоменклатуры(Спр.ТекущийЭлемент(), Спр.БазоваяЕдиница, ТовЦена, ТовВалюта) = 1 Тогда ТаблицаПодбора.Количество = ТовОстаток; ТаблицаПодбора.Цена= ТовЦена; ТаблицаПодбора.Сумма = ТаблицаПодбора.Цена*ТаблицаПодбора.Количество; КонецЕсли; КонецЦикла; |
|||
74
Kigo_Kigo
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-ка, но конструктор там тоже есть.
|
|||
77
Arland
07.03.18
✎
14:28
|
(73) Номенклатуру выбирает правильно с остатками, но количество не переносит в док.
|
|||
78
Arland
07.03.18
✎
14:29
|
(75) Что не так?
|
|||
79
Arland
07.03.18
✎
14:30
|
(74) )))
|
|||
80
Мандалай
07.03.18
✎
14:33
|
Выборка элементов справочника работает на порядок медленнее чем использование запроса, пусть даже типового, а не прямого.
Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.ИспользоватьРодителя(ТекущийЭлемент().Родитель); Спр.ВыбратьЭлементы(1); Вот за такую запись вы бы спеца по 77 не получили. |
|||
81
Kigo_Kigo
07.03.18
✎
14:37
|
(80) Работает? Не трожь! вы ветку читали? тут лепили из того что было :)
|
|||
82
Arland
07.03.18
✎
14:39
|
(81) Еще как работает!!!!! Все отлично Работает!!!!
Kigo_Kigo тут такую штуку сделал!!!! |
|||
83
Мандалай
07.03.18
✎
14:39
|
(81) золотое правило программиста, беру свои слова обратно :)
|
|||
84
Arland
07.03.18
✎
14:46
|
(81) (83) А теперь скажу для чего это нужно было))
Есть старая база на 7-ке, вся замусоренная. Базу очистил, удалив все dbf, оставив только номенклатуру. Нужно было оприходовать товар. Благодоря Kigo_Kigo создал док оприходования остатков ТМЦ в старой и перенес док в чистую базу. |
|||
85
Arland
07.03.18
✎
14:49
|
(81) Огромное тебе спасибо!!!! С меня причитаеться
|
|||
86
Kigo_Kigo
07.03.18
✎
15:11
|
(84) Вот так мы легко и не принужденно срезали сейчас базу, а ведь мог бы просто спросить, ребят чем базу срезать? и мы бы ему сча обработками как мыло закидали бы, и все адью, ветка на 3-4 ответа, а тут аж на 86 настрочили :)
|
|||
87
Масянька
07.03.18
✎
15:14
|
(84) Инветаризация -> оприходование ТМЦ - все есть в стандарте.
(86) Во-о-о-от... Я всегда прошу (а надо требовать!) описание задачи... А не разводить бодягу на сотку... |
|||
88
Kigo_Kigo
07.03.18
✎
15:17
|
(87) Сча погодь, там еще с взаиморасчетами вопросики будут наверно :)
|
|||
89
Масянька
07.03.18
✎
15:19
|
(88) Не-на-чи-най....
А партии? А касса? А склады? "Плюнула на плешь ему и послала к Лешему!" (С) |
|||
90
Arland
07.03.18
✎
15:27
|
(89) (86) я и сам не думал ее реза все само собой получилось)))
|
|||
91
Arland
07.03.18
✎
15:27
|
(87) Говорю база убитая, там мусору валом
|
|||
92
Arland
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 элементов. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |