|
v7: Как обращаться к Группам справочника в методе ПринадлежитГруппе()? | ☑ | ||
---|---|---|---|---|
0
MathaiShung
25.02.16
✎
17:14
|
Есть процедура создания Прайс-Листа:
Процедура Сформировать() Тов=СоздатьОбъект("Справочник.Номенклатура"); Тов.ИспользоватьДату(РабочаяДата()); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); Тов.ВыбратьЭлементы(); Пока Тов.ПолучитьЭлемент() >0 Цикл Если Тов.ПринадлежитГруппе("яяя")=0 Тогда Если Тов.ПометкаУдаления()=0 Тогда Если Тов.ЭтоГруппа()=1 Тогда Таб.ВывестиСекцию("Группа") Иначе ПечКод=Тов.Код; ПечТовар=Тов.Наименование; ПечРозн=Формат(Тов.РозничнаяЦена,"Ч9.2, "); Таб.ВывестиСекцию("Строка_1"); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("Прайс-Лист",""); КонецПроцедуры Нужно чтобы в прайс попадали только элементы справочника номенклатуры не входящие в группу яяя. Сейчас, метод Тов.ПринадлежитГруппе("яяя") не определяет никакую группу (если поставить в условии =1, тогда формируется пустой прайс). Может я неправильно ввожу параметр <Группа> ? Или в чём дело? |
|||
1
ДенисЧ
25.02.16
✎
17:15
|
"яяя" это не группа. Это строка
|
|||
2
MathaiShung
25.02.16
✎
17:17
|
А как тогда вызвать группу?
|
|||
3
Злопчинский
25.02.16
✎
18:11
|
(2) тем или иным образом спозиционироваться на нуэном элементе-группе справочника.
Ссылку на этот элемент использовать в данном операторе |
|||
4
MathaiShung
25.02.16
✎
18:17
|
Не подскажете каким, например, способом можно на этом элементе спозиционироваться?
|
|||
5
Злопчинский
25.02.16
✎
18:23
|
Наилучшим способом будет задание предопределенной настройки, например завести константу и в нее выбрать эту "предопределенную" группу.
второй - быдлокодерский вариант - найти данный элемент по наименованию или по коду - см. синтакс-помощник, методы для справочника НайтиПоКоду и НайтиПоНаименованию - следует понимать, если данную группу переименуют в "ююю" или не дай бог другую нужную группу поименуют "яяя" - то случится большая (_о_) |
|||
6
MathaiShung
25.02.16
✎
18:34
|
Спасибо. Наверное сделаю с константой. Пробовал делать НайтиПоНаименованию - выдаёт ошибку "Не выбран элемент"
|
|||
7
palpetrovich
25.02.16
✎
18:37
|
(0) "Есть процедура создания Прайс-Листа" - она где есть? если на какой-то форме, то заведи на ней-же реквизит ВыбГруппа и его и выбирай.
И еще, не надо тебе этого " Если Тов.ПринадлежитГруппе("яяя")=0 Тогда " делай так ... Тов.ИспользоватьРодителя(ВыбГруппа); Тов.ВыбратьЭлементы(); Пока Тов.ПолучитьЭлемент() >0 Цикл ... |
|||
8
palpetrovich
25.02.16
✎
18:41
|
+ (7) хотя, судя по коду в (0), группу "яяя" надо исключить из резултатат ...если в (0) нет ошибки конечно :)
|
|||
9
MathaiShung
25.02.16
✎
20:27
|
Всё правильно, мне как раз надо исключить эту группу - я написал об этом в пояснении под кодом. Поэтому реквизит добавлять нет смысла. А вот почему при использовании НайтиПоНаименованию получается ошибка?
|
|||
10
MishaD
25.02.16
✎
20:35
|
(5) Советник, а ведь придется еще обработку писать, чтобы эту группу в константу запихнуть.
|
|||
11
Это_mike
25.02.16
✎
21:10
|
(10) хорошо, что пока не требуется написать обработку, чтоб написать обработку...
|
|||
12
HawkEye
25.02.16
✎
21:45
|
(10) ну обычно в типовых, обработка для заполнения констант уже есть, надо просто разрешить выбирать там группу...
|
|||
13
MathaiShung
25.02.16
✎
21:46
|
(10)Да, действительно с константой какая-то беда получается - я не знаю как в семёрке добавить в неё группу. Может кто-нибудь всё-таки подскажет как мне решить проблему с исключением данной группы из перебора с помощью метода НайтиПоНаименованию? Сейчас возвращает ошибку (6)
Делаю так: Тов=СоздатьОбъект("Справочник.Номенклатура"); Тов.ВыбратьЭлементы(); ГруппаИскл=Тов.НайтиПоНаименованию("яяя",0,1); Пока Тов.ПолучитьЭлемент() >0 Цикл Если Тов.ПринадлежитГруппе(ГруппаИскл)=0 Тогда Если Тов.ПометкаУдаления()=0 Тогда Если Тов.ЭтоГруппа()=1 Тогда Таб.ВывестиСекцию("Группа") и т.д.... как в (0) Если НайтиПоНаименованию ставлю перед ВыбратьЭлементы - ошибка: "Не выбран элемент", если после - ошибки нет, но и группу из прайса не исключает. |
|||
14
MathaiShung
25.02.16
✎
21:47
|
(13) и элементы это группы тоже не исключаются
|
|||
15
HawkEye
25.02.16
✎
21:48
|
(13) для группы используй другую переменную...
|
|||
16
MishaD
25.02.16
✎
21:49
|
Ты синтакс помошник то посмотри, если мне память не изменяет, то найтиПоНаименованию возвращает 0 или 1. То есть найдена группа, или нет.
|
|||
17
marvak
25.02.16
✎
21:52
|
В (16) правильно написано
Если Тов.НайтиПоНаименованию("яяя",0,0) = 1 Тогда ГруппаИскл = Тов.ТекущийЭлемент(); .... |
|||
18
marvak
25.02.16
✎
21:53
|
(14)
Вы бы поизучали что ли материал для начала, прежде чем код писать. ))) |
|||
19
HawkEye
25.02.16
✎
21:53
|
(13) как-то так:
Тов=СоздатьОбъект("Справочник.Номенклатура"; гр=СоздатьОбъект("Справочник.Номенклатура"); Если гр.НайтиПоНаименованию("яяя",0,1) = 1 Тогда Тов.ВыбратьЭлементы(); Пока Тов.ПолучитьЭлемент() >0 Цикл Если Тов.ПринадлежитГруппе(Гр.ТекущийЭлемент())=0 Тогда Если Тов.ПометкаУдаления()=0 Тогда Если Тов.ЭтоГруппа()=1 Тогда ..... |
|||
20
MathaiShung
25.02.16
✎
21:53
|
(16) Да, я смотрел, но посоветовали же (5). Вот я и думаю как мне с её помощь ссулку на эту группу получить.
|
|||
21
MathaiShung
25.02.16
✎
21:56
|
(18) Если бы в материале было всё понятно я бы сюда наверное не обращался
|
|||
22
HawkEye
25.02.16
✎
21:58
|
(21) ну так-то в СП по русски написано, что возвращает НайтиПоНаименованию... и что надо передать в ПринадлежитГруппе...
|
|||
23
marvak
25.02.16
✎
21:58
|
(21)
Я намекаю на ошибку в ГруппаИскл=Тов.НайтиПоНаименованию("яяя",0,1) |
|||
24
Это_mike
25.02.16
✎
22:00
|
(22) так он учился читать сп для 8. А чтение сп для 7.7 сильно отличается...
|
|||
25
MathaiShung
25.02.16
✎
22:04
|
(22) То что там написано я и сам знаю. Мне непонятно было как с помощью этого ссылку на саму группу получить.
|
|||
26
mishaPH
модератор
25.02.16
✎
22:08
|
(0) принадлежит группе "ЯЯЯ" это не верно. ЯЯЯ у тебя строка а должна быть группа спр. в (19) верно. сначала найди группу, а потом смотри ей принадлежность
а вообще лучше в запросе делать а не перебором справочника. |
|||
27
mishaPH
модератор
25.02.16
✎
22:09
|
(25) твоя ошибка в том, что ты выясняешь принадлежность к группе неверно. Группа должна быть элемент справочника а не тестовая строка
|
|||
28
HawkEye
25.02.16
✎
22:09
|
(25) не может человек, который знает что написано в СП родить код из (13)
|
|||
29
MathaiShung
25.02.16
✎
22:10
|
(24) Ты чё поумничать сюда зашёл что ли?! Если по делу сказать нечего - не засерай тему!
|
|||
30
mishaPH
модератор
25.02.16
✎
22:11
|
Процедура Сформировать()
Тов=СоздатьОбъект("Справочник.Номенклатура"); Тов.НайтиПоНаименованию("яяя",0,1); ГруппаА = Тов.ТекущийЭлемент(); Тов.ИспользоватьДату(РабочаяДата()); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); Тов.ВыбратьЭлементы(); Пока Тов.ПолучитьЭлемент() >0 Цикл Если Тов.ПринадлежитГруппе(ГруппаА )=0 Тогда Если Тов.ПометкаУдаления()=0 Тогда Если Тов.ЭтоГруппа()=1 Тогда Таб.ВывестиСекцию("Группа") Иначе ПечКод=Тов.Код; ПечТовар=Тов.Наименование; ПечРозн=Формат(Тов.РозничнаяЦена,"Ч9.2, "); Таб.ВывестиСекцию("Строка_1"); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("Прайс-Лист",""); КонецПроцедуры |
|||
31
Провинциальный 1сник
25.02.16
✎
22:11
|
(25) См. (17).
В 7.7 метод НайтиПоНаименованию не возвращает ссылку. Он возвращает признак успешности поиска и позиционируется на нужном элементе(группе). Соответственно, надо после успешного поиска получать ТекущийЭлемент() - это и будет ссылка. |
|||
32
HawkEye
25.02.16
✎
22:15
|
(29) тебе по делу все уже сказали, ничего нового, кардинально отличающегося от сказанного не будет....
|
|||
33
MathaiShung
25.02.16
✎
22:44
|
(28) (32) Да я в общем-то и понял уже после (19) в чём была ошибка. Спасибо за разъяснения. А что касается неверного применения вышеуказанного метода - тут путаница произошла из-за того, что в СП написано одно, а на некоторых интернет-ресурсах совершенно другие примеры его применения.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |