|
Родитель элемента | ☑ | ||
---|---|---|---|---|
0
antihacker
31.03.15
✎
11:31
|
Всем привет ! Помогите доделать код.
СтрокаТабличнойЧастиДоРеал.СчетУчетаБУ=СчетаУчетаНоменклатуры(СтрокаТабЧастиТек.Номенклатура.Родитель.Родитель).СчетБУ; СтрокаТабличнойЧастиДоРеал.СчетУчетаНУ=СчетаУчетаНоменклатуры(СтрокаТабЧастиТек.Номенклатура.Родитель.Родитель).СчетНУ; СтрокаТабличнойЧастиДоРеал.СчетДоходовБУ=СчетаУчетаНоменклатуры(СтрокаТабЧастиТек.Номенклатура.Родитель.Родитель).СчетДоходовОтРеализацииБУ; СтрокаТабличнойЧастиДоРеал.СчетДоходовНУ=СчетаУчетаНоменклатуры(СтрокаТабЧастиТек.Номенклатура.Родитель.Родитель).СчетДоходовОтРеализацииНУ; СтрокаТабличнойЧастиДоРеал.СчетСписанияСебестоимостиБУ=СчетаУчетаНоменклатуры(СтрокаТабЧастиТек.Номенклатура.Родитель.Родитель).СчетСебестоимостиПриРеализацииБУ; СтрокаТабличнойЧастиДоРеал.СчетСписанияСебестоимостиНУ=СчетаУчетаНоменклатуры(СтрокаТабЧастиТек.Номенклатура.Родитель.Родитель).СчетСебестоимостиПриРеализацииНУ; ------------------------------- Функция СчетаУчетаНоменклатуры(Знач вхТовар) //-----Структура для возвращения результата--------- СтруктураРезультата = Новый Структура("СчетБУ","СчетНУ","СчетДоходовОтРеализацииБУ","СчетДоходовОтРеализацииНУ","СчетСебестоимостиПриРеализацииБУ","СчетСебестоимостиПриРеализацииНУ"); //СтруктураРезультата.Вставить("СчетБУ",0); //---Ищем в регистре счета товара--------- Запрос=Новый Запрос; Запрос.УстановитьПараметр("вхТоварКод", вхТовар.Код); Запрос.УстановитьПараметр("вхОрганизация", Справочники.Организации.НайтиПоКоду("000000001")); Запрос.Текст= "ВЫБРАТЬ | СчетаУчетаНоменклатуры.Номенклатура.Код КАК НоменклатураКод, | СчетаУчетаНоменклатуры.Номенклатура КАК Организация, | СчетаУчетаНоменклатуры.СчетУчетаБУ, | СчетаУчетаНоменклатуры.СчетУчетаНУ, | СчетаУчетаНоменклатуры.СчетДоходовОтРеализацииБУ, | СчетаУчетаНоменклатуры.СчетДоходовОтРеализацииНУ, | СчетаУчетаНоменклатуры.СчетСебестоимостиПриРеализацииБУ, | СчетаУчетаНоменклатуры.СчетСебестоимостиПриРеализацииНУ |ИЗ | РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры |ГДЕ | СчетаУчетаНоменклатуры.Номенклатура.Код = &вхТоварКод и СчетаУчетаНоменклатуры.Организация = &вхОрганизация"; ВыборкаСчета = Запрос.Выполнить().Выбрать(); //Результат=Запрос.Выполнить().Выгрузить(); Если Запрос.Выполнить().Выбрать().Количество()>0 Тогда Пока ВыборкаСчета.Следующий() Цикл СтруктураРезультата.Вставить("СчетБУ",ВыборкаСчета.СчетУчетаБУ); СтруктураРезультата.Вставить("СчетНУ",ВыборкаСчета.СчетУчетаНУ); СтруктураРезультата.Вставить("СчетДоходовОтРеализацииБУ",ВыборкаСчета.СчетДоходовОтРеализацииБУ); СтруктураРезультата.Вставить("СчетДоходовОтРеализацииНУ",ВыборкаСчета.СчетДоходовОтРеализацииНУ); СтруктураРезультата.Вставить("СчетСебестоимостиПриРеализацииБУ",ВыборкаСчета.СчетСебестоимостиПриРеализацииБУ); СтруктураРезультата.Вставить("СчетСебестоимостиПриРеализацииНУ",ВыборкаСчета.СчетСебестоимостиПриРеализацииНУ); КонецЦикла; КонецЕсли; Возврат СтруктураРезультата; КонецФункции Как видите из за строки СтрокаТабЧастиТек.Номенклатура.Родитель.Родитель В правочнике номенклатуры надо хранить четко по формату. То есть глубина не должна быть 2 родительских элемента. Можно как то сделать, так что бы плевать было где лежит номенклатура ? |
|||
1
antihacker
31.03.15
✎
11:33
|
Мля. Глубина 2 уровня. Папка в папке элмент.
|
|||
2
butterbean
31.03.15
✎
11:34
|
100500 вызовов СчетаУчетаНоменклатуры() это конечно круто
по сабжу: найти родителя верхнего уровня, рекрсией например, или из полного кода номенклатуры |
|||
3
Креатив
31.03.15
✎
11:35
|
(0)Посмотри как в типовой сделано.
|
|||
4
antihacker
31.03.15
✎
11:35
|
Искал искал запутался
|
|||
5
Spyke
31.03.15
✎
11:36
|
(0) Для поиска всех родителей можно использовать либо рекурсию либо запрос
|ВЫБРАТЬ РАЗЛИЧНЫЕ | | Т1.Ссылка.Родитель КАК Ссылка | |ИЗ | | Справочник.Номенклатура КАК Т1 | |ГДЕ | | Т1.Ссылка В ИЕРАРХИИ(&СсылкаНаЭлемент) | |ИТОГИ ПО | | Ссылка ТОЛЬКО ИЕРАРХИЯ |"; |
|||
6
1Сергей
31.03.15
✎
11:37
|
(0) А почему ты в запрос передаёшь код номенклатуры они ссылку?
|
|||
7
1Сергей
31.03.15
✎
11:37
|
они = а не
|
|||
8
antihacker
31.03.15
✎
12:46
|
А что ? Нельзя передавать код ?
|
|||
9
1Сергей
31.03.15
✎
12:47
|
(8) идеологически неверно
|
|||
10
kosts
31.03.15
✎
12:48
|
Хороший ход, надо себе оставить
|
|||
11
antihacker
31.03.15
✎
12:50
|
А ну ок.
Spyke, твой запрос возвращает самую верхную папку ? |
|||
12
1Сергей
31.03.15
✎
12:53
|
(11)
Функция ПолучитьСамогоСтаршегоМатьЕгоРодителя(ЧегоТо) Если ЧегоТо.Уровень() = 1 Тогда Возврат ЧегоТо; Иначе Возврат ПолучитьСамогоСтаршегоМатьЕгоРодителя(ЧегоТо.Родитель); КонецЕсли; КонецФункции |
|||
13
Spyke
31.03.15
✎
12:57
|
(11) Всю ерархию
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |