|
как найти 1-го родителя в справочнике номенклатуры? | ☑ | ||
---|---|---|---|---|
0
ddd2005
10.10.14
✎
21:56
|
как найти 1-го родителя в справочнике номенклатуры?
|
|||
1
Banned
10.10.14
✎
21:59
|
цмклом
|
|||
2
ddd2005
10.10.14
✎
22:08
|
пытаюсь сделать так в УТ 10.3
Функция ДатьРодителя1(Элем) Рез=""; Если ПустаяСтрока(Элем.Родитель)=0 Тогда Рез=ДатьРодителя1(Элем.Родитель); Иначе Если Элем.ЭтоГруппа()=1 Тогда Рез=Элем; Иначе Рез="Нет родителя"; КонецЕсли; КонецЕсли; Возврат Рез; КонецФункции |
|||
3
ddd2005
10.10.14
✎
22:08
|
роцедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
мПоискОбъектовВСпискахДанных.СписокПриВыводеСтрокиСпискаОтбораДанных(Элемент, ОформлениеСтроки, ДанныеСтроки); ОформлениеСтроки.ЦветФона = WebЦвета.Белый; Если НЕ ПустаяСтрока(ДанныеСтроки) Тогда //СостояниеДокумента = ДанныеСтроки.Ссылка.ВозвращениеДокумента; //разукрашиваем в зависимости от состояния Если ДатьРодителя1(ДанныеСтроки.Ссылка) = "TDM" Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Желтый; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
4
ddd2005
10.10.14
✎
22:08
|
ругается
{Справочник.Номенклатура.Форма.ФормаВыбора.Форма(848)}: Метод объекта не обнаружен (ЭтоГруппа) Если Элем.ЭтоГруппа()=1 Тогда |
|||
5
snegovik
10.10.14
✎
22:10
|
(4) Кажись, это семерочный синтаксис...
|
|||
6
ddd2005
10.10.14
✎
22:13
|
(4) да с 7 назеркалил
|
|||
7
hhhh
10.10.14
✎
22:13
|
(4) УТ 10.3 написана на восьмерке
|
|||
8
ОчкарикСлава
10.10.14
✎
22:15
|
Элемент.родитель не катит?
|
|||
9
hhhh
10.10.14
✎
22:19
|
Родитель никогда не будет равен "TDM", потому что "TDM" это же текст, а родитель - это же справочник.
|
|||
10
XLife
10.10.14
✎
22:23
|
Расширение табличного поля списка справочника (Catalog list table box extension)
РодительВерхнегоУровня (TopLevelParent) Использование: Чтение и запись. Описание: Тип: СправочникСсылка. Содержит родителя верхнего уровня. Доступность: Толстый клиент. |
|||
11
ddd2005
10.10.14
✎
22:26
|
пошел таким путем
|
|||
12
ddd2005
10.10.14
✎
22:26
|
Функция ПолучитьРодителя(ЭлементНоменклатура)
ТекущийЭлементНоменклатуры = ЭлементНоменклатура; Запрос = Новый Запрос("ВЫБРАТЬ | Номенклатура.Родитель, | Номенклатура.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | Справочник.Номенклатура КАК Номенклатура | |ГДЕ | Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры"); Пока Истина Цикл Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры", ТекущийЭлементНоменклатуры); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Прервать; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл ТекущийЭлементНоменклатуры = Выборка[НомерКолонки]; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; Иначе Сообщить(ТекущийЭлементНоменклатуры); КонецЕсли; КонецЦикла; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; КонецЕсли; КонецЦикла; КонецФункции //изм___________________ // при выводе строки списка Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) мПоискОбъектовВСпискахДанных.СписокПриВыводеСтрокиСпискаОтбораДанных(Элемент, ОформлениеСтроки, ДанныеСтроки); ОформлениеСтроки.ЦветФона = WebЦвета.Белый; Если НЕ ПустаяСтрока(ДанныеСтроки) Тогда //СостояниеДокумента = ДанныеСтроки.Ссылка.ВозвращениеДокумента; //разукрашиваем в зависимости от состояния Если ПолучитьРодителя(ДанныеСтроки.Ссылка) = "TDM" Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Желтый; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
13
zulu_mix
10.10.14
✎
22:29
|
ну и жесть...
|
|||
14
zulu_mix
10.10.14
✎
22:31
|
если заранее известно количество уровней вложенности то через несколько вт последовательно собирай родителя и детей
|
|||
15
AlexITGround
10.10.14
✎
22:31
|
(0) Чем вариант в 10 не устраивает?
|
|||
16
AlexITGround
10.10.14
✎
22:33
|
Если хочешь достать запросом, то можно воспользоваться конструкцией "Выбор ... когда", сравнивая родителя с пустой ссылкой справочника.
|
|||
17
zulu_mix
10.10.14
✎
22:33
|
(15) может ему в запросе надо?
|
|||
18
ddd2005
10.10.14
✎
22:34
|
(15) торможу как проверить тут родителя
Если ДанныеСтроки.Ссылка.РодительВерхнегоУровня() = "TDM" Тогда |
|||
19
zulu_mix
10.10.14
✎
22:35
|
Если ДанныеСтроки.Ссылка.РодительВерхнегоУровня().Наименование = "TDM"
|
|||
20
ddd2005
10.10.14
✎
22:38
|
{Справочник.Номенклатура.Форма.ФормаВыбора.Форма(892)}: Метод объекта не обнаружен (РодительВерхнегоУровня)
Если ДанныеСтроки.Ссылка.РодительВерхнегоУровня().Наименование = "TDM" Тогда |
|||
21
AlexITGround
10.10.14
✎
22:41
|
(20) Ты пойми, Родитель - это тоже ссылка на этот же справочник, таблицу, он не может быть строкой "".
|
|||
22
zulu_mix
10.10.14
✎
22:41
|
а что в отладчике для ДанныеСтроки.Ссылка
|
|||
23
hhhh
10.10.14
✎
22:42
|
(20) это не то, всё таки запросом делай
|
|||
24
hhhh
10.10.14
✎
22:42
|
(22) по-любому у ссылки нет такого метода.
|
|||
25
ddd2005
10.10.14
✎
22:43
|
(23) как правильно подскажи
|
|||
26
ddd2005
10.10.14
✎
22:46
|
мне нужно разукрасить всю номенклатуру у которой родитель 1 уровня TDM
Если СокрЛП(ДанныеСтроки.Ссылка)= "TDM" Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Желтый; КонецЕсли; так разукрасил только группу TDM |
|||
27
hhhh
10.10.14
✎
22:50
|
ну как в (12) типа
Запрос = Новый Запрос("ВЫБРАТЬ | ВЫБОР КОГДА Номенклатура.Родитель = &ПустаяСсылка ТОГДА Номенклатура.Родитель КОГДА Номенклатура.Родитель.Родитель = &ПустаяСсылка ТОГДА Номенклатура.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель = &ПустаяСсылка ТОГДА Номенклатура.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель = &ПустаяСсылка ТОГДА Номенклатура.Родитель.Родитель.Родитель КОНЕЦ КАК РодительВерхнегоУровня |ИЗ | Справочник.Номенклатура КАК Номенклатура | |ГДЕ | Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры"); |
|||
28
zulu_mix
10.10.14
✎
22:51
|
(27) пипец...
|
|||
29
AlexITGround
10.10.14
✎
22:55
|
ВЫБОР
КОГДА Номенклатура.Родитель <> &ПустаяСсылка И Номенклатура.Родитель.Наименование = "TDM" Тогда Номенклатура.Родитель Когда .... |
|||
30
AlexITGround
10.10.14
✎
22:59
|
Запрос = Новый Запрос(
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &Ссылка |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ"); Запрос.Параметры.Вставить("Ссылка", Ссылка); |
|||
31
AlexITGround
10.10.14
✎
23:00
|
СправочникМенеджер.ВыбратьИерархически(<Родитель>,<Владелец>,<Отбор>,<Порядок>)
|
|||
32
RomanYS
10.10.14
✎
23:00
|
а сегодня пятница была?
|
|||
33
AlexITGround
10.10.14
✎
23:02
|
...
ГДЕ Номенклатура.Родитель В ИЕРАРХИИ(&Родитель) |
|||
34
AlexITGround
10.10.14
✎
23:02
|
(32) Не, сегодня пятницы не было :(
|
|||
35
zulu_mix
10.10.14
✎
23:02
|
выбрать спр.ссылка
поместить первый_уровень из справочник.номенклатура как спр где спр.родитель = значение(справочник.номенклатура.пустаяссылка) ; выбрать уровень1.ссылка, дети.ссылка как дитя из первый_уровень как уровень1 левое соединение справочник.номенклатура как дети по дети.родитель = уровень1.ссылка и в таком же духе для всех известных уровней пока не соберем всех детей на уровне 1 |
|||
36
hhhh
10.10.14
✎
23:04
|
(28) а ваше (19) не пипец?
|
|||
37
zulu_mix
10.10.14
✎
23:05
|
(36) ай, нашел что вспомнить. у меня и одинца дома нет проверить
|
|||
38
AlexITGround
10.10.14
✎
23:08
|
Я думаю, что ошибку все исправят в (30):
"Запрос.Параметры.Вставить("Ссылка", Ссылка);" |
|||
39
hhhh
10.10.14
✎
23:08
|
(33) это тормоз у вас будет, (27) можно сразу для списка номенклатуры сделать. Не забывайте, автору нужно всю таблицу покрасить, а вы тупо для одной номенклатуры сделали.
|
|||
40
zulu_mix
10.10.14
✎
23:13
|
(39) при таком раскладе автору проще сделать наследование цвета от родителя
|
|||
41
ddd2005
10.10.14
✎
23:15
|
(39) (30) да, увы не работает.
мне нужно прокрасить все элементы у которых родитель 1 уровня TDM. в этой группе есть еще подгруппы их тоже закрасить. (40) как подскажи? |
|||
42
hhhh
10.10.14
✎
23:19
|
(40) наверно самое простое во все подгруппы в наименование вставить "ТДМ".
|
|||
43
zulu_mix
10.10.14
✎
23:19
|
сделай у справочника номенклатура реквизит "цвет". заполняй его только у нужных элементов. перед записью элемента "если не элемент.родитель.пустаяссылка() тогда элемент.цвет = элемент.родитель.цвет;"
|
|||
44
ddd2005
10.10.14
✎
23:23
|
ОформлениеСтроки.ЦветФона = WebЦвета.Белый;
Если НЕ ПустаяСтрока(ДанныеСтроки) Тогда Если ДанныеСтроки.Ссылка.НужнаяГруппа= 1 Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Желтый; КонецЕсли; КонецЕсли; сделал так только в подборе это не пашет |
|||
45
ddd2005
10.10.14
✎
23:23
|
Процедура НоменклатураДляПодбораПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеЯчейки = ОформлениеСтроки.Ячейки; ЯчейкаПиктограмма = ОформлениеЯчейки.Пиктограмма; ЯчейкаПиктограмма.ОтображатьКартинку = Истина; Если ДанныеСтроки.ЭтоГруппа Тогда ЯчейкаПиктограмма.ИндексКартинки = 0; // группа Если ДанныеСтроки.ПереходитьВверх Тогда ОформлениеСтроки.ЦветФона = ЦветаСтиля.ЦветФонаФормы; КонецЕсли; Иначе Если ДанныеСтроки.Набор Тогда Если ДанныеСтроки.ПометкаУдаления Тогда ЯчейкаПиктограмма.Картинка = мКартинкаНаборУдален; Иначе ЯчейкаПиктограмма.Картинка = мКартинкаНабор; КонецЕсли; Иначе ЯчейкаПиктограмма.ИндексКартинки = 1; // элемент КонецЕсли; КонецЕсли; // Выделим цветом те цены, которые заданы особыми условиями поставок Если ДанныеСтроки.ФлагУсловийПоставки Тогда ОформлениеЯчейки.Цена.ЦветФона = WebЦвета.Лимонный; КонецЕсли; // Выделим цветом минимальный остаток из свободного остатка и остатка по организации Если ДанныеСтроки.КоличествоСвободныйОстаток < ДанныеСтроки.КоличествоОстатокОрганизации Тогда ОформлениеЯчейки.КоличествоСвободныйОстаток.ЦветТекста = WebЦвета.ТемноСиний; ИначеЕсли ДанныеСтроки.КоличествоСвободныйОстаток > ДанныеСтроки.КоличествоОстатокОрганизации Тогда ОформлениеЯчейки.КоличествоОстатокОрганизации.ЦветТекста = WebЦвета.ТемноСиний; КонецЕсли; // Установка текста ссылочного значения по представлению Если мКолонкаНоменклатура.Видимость Тогда ОформлениеЯчейки.Номенклатура.УстановитьТекст(ДанныеСтроки.ПредставлениеНоменклатура); КонецЕсли; Если мКолонкаХарактеристикаНоменклатуры.Видимость Тогда ОформлениеЯчейки.ХарактеристикаНоменклатуры.УстановитьТекст(ДанныеСтроки.ПредставлениеХарактеристикаНоменклатуры); КонецЕсли; Если мКолонкаСерияНоменклатуры.Видимость Тогда ОформлениеЯчейки.СерияНоменклатуры.УстановитьТекст(ДанныеСтроки.ПредставлениеСерияНоменклатуры); КонецЕсли; Если мКолонкаЕдиницаИзмерения.Видимость Тогда ОформлениеЯчейки.ЕдиницаИзмерения.УстановитьТекст(ДанныеСтроки.ПредставлениеЕдиницаИзмерения); КонецЕсли; Если мКолонкаВалюта.Видимость Тогда ОформлениеЯчейки.Валюта.УстановитьТекст(ДанныеСтроки.ПредставлениеВалюта); КонецЕсли; Если мКолонкаСклад.Видимость Тогда ОформлениеЯчейки.Склад.УстановитьТекст(ДанныеСтроки.ПредставлениеСклад); КонецЕсли; Если мКолонкаКачество.Видимость Тогда ОформлениеЯчейки.Качество.УстановитьТекст(ДанныеСтроки.ПредставлениеКачество); КонецЕсли; //изм____________ ОформлениеСтроки.ЦветФона = WebЦвета.Белый; Если НЕ ПустаяСтрока(ДанныеСтроки) Тогда Если ДанныеСтроки.Ссылка.НужнаяГруппа= 1 Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Желтый; КонецЕсли; КонецЕсли; //изм____________ КонецПроцедуры // НоменклатураДляПодбораПриВыводеСтроки() |
|||
46
zulu_mix
10.10.14
✎
23:24
|
я пожалуй умою отсюда руки
|
|||
47
SeregaMW
10.10.14
✎
23:26
|
(10) Как бы обозвать эту ... уятина вообщем это почти не где не работает, всегда это делалось обратной рекурсией!
|
|||
48
SeregaMW
10.10.14
✎
23:34
|
Спать хочу, работы до х.. коньяк греется так что на
Функция НайтиВерхнегоРодителя(Элем) Если НЕ ЗначениеЗаполнено(Элем.Родитель) Тогда Возврат Элем; Иначе Возврат НайтиВерхнегоРодителя(Элем.Родитель); КонецЕсли; КонецФункции |
|||
49
Smallrat
10.10.14
✎
23:43
|
что-то никто мегакод так и не запостил:
Вычислить("Номенклатура" + СтрЗаменить(Формат(0,"ЧЦ=" + Строка(Номенклатура.Уровень()) + "; ЧН=; ЧВН=; ЧГ="), "0", ".Родитель")) (с) Рупор абсурда |
|||
50
SeregaMW
10.10.14
✎
23:46
|
(49) Месье а Вы сильны в извращениях! )))
|
|||
51
Smallrat
10.10.14
✎
23:55
|
(50) Это не я, я б до такого не додумался. В оригинале он был для 7-ки и еще круче:
ВерхнийРодитель=ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Спр"+СтрЗаменить(Формат("","С"+(Спр.Уровень()-1))," ",".Родитель")+")]")); |
|||
52
К_Дач
10.10.14
✎
23:56
|
(1) рекурсия
(2) пакетный запрос, вот здесь умный дядя реализовал, рекомендую: http://infostart.ru/public/158512/ вот поделка Fragstera http://infostart.ru/public/84547/ |
|||
53
SeregaMW
11.10.14
✎
00:01
|
(52) Как буду на работе обязательно прочитаю и попытаюсь понять!
|
|||
54
AlexITGround
11.10.14
✎
00:05
|
чем не устроил вариант в (29)?
|
|||
55
AlexITGround
11.10.14
✎
00:06
|
(52) "вот поделка Fragstera"
Рассказывается в бесплатном курсе Гилева по СКД. |
|||
56
К_Дач
11.10.14
✎
00:08
|
Для понимания еще неплохо прочитать https://ru.wikipedia.org/wiki/Транзитивное_замыкание
а вариант в (30) хорош только для одного элемента справочника |
|||
57
romix
11.10.14
✎
00:27
|
Для запросов удобнее создавать реквизит...
А заполнять его в модуле объекта при записи. |
|||
58
К_Дач
11.10.14
✎
00:33
|
(57) интересно, и что же тогда хранить в этом реквизите? Родителя верхнего уровня? А если у этого элемента (который у нас родитель верхнего уровня) - если у него у самого появится родитель? Что тогда? Всю цепочку что-ли перезаписывать? Булщит, одним словом
|
|||
59
AlexITGround
11.10.14
✎
00:38
|
(57) "создавать реквизит"
шикарно живете :) |
|||
60
romix
11.10.14
✎
01:22
|
(58) Смену родителя можно выявить перед записью - после чего либо выдавать запрет, либо учинять перезапись всех элементов, где родитель не соответствует.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |