![]() |
![]() |
![]() |
|
Как получить список ссылок на родительские документы | ☑ | ||
---|---|---|---|---|
0
Блондинистая Ромашка
17.05.11
✎
13:09
|
мне в итоге нужно что-то вроде структуры подчиненности.
есть ссылка на текущий документ. так можно достать подчиненные ТаблицаПодчиненных = ПолныеПрава.ПолучитьСписокДокументовПоКритериюОтбора("СвязанныеДокументы", ДокументСсылка); а как с родительскими? |
|||
1
u2006
17.05.11
✎
13:26
|
Реквизит ДокументОснование имеется?
|
|||
2
Блондинистая Ромашка
17.05.11
✎
13:27
|
(1) нет.
УТ 10.3 В доке РеализацияТоваровУслуг нет такого реквизита |
|||
3
aleks-id
17.05.11
✎
13:28
|
фота где???
|
|||
4
FIXXXL
17.05.11
✎
13:28
|
(2) куда дела?
|
|||
5
Jstunner
17.05.11
✎
13:29
|
(2) в УТ есть типовая структура подчиненности
|
|||
6
u2006
17.05.11
✎
13:29
|
(2) странно, ну может просто Основание
|
|||
7
Ненавижу 1С
гуру
17.05.11
✎
13:30
|
(2) есть другие, но можно критерий отбора, например, юзать
и посмотри общую форму ФормаСтруктурыПодчиненности |
|||
8
FIXXXL
17.05.11
✎
13:33
|
(6) Сделка это называется в УТ10
|
|||
9
Reset
17.05.11
✎
13:39
|
(0) Перебрать все реквизиты и табличные части документа с данными - ссылками на документы. Заполненные значения будут значениями родителей.
Если это конкретный документ, то просто посмотреть названия реквизитов в конфигураторе. |
|||
10
Блондинистая Ромашка
17.05.11
✎
13:47
|
видимо я здесь одна такая дура...
(9) я не знаю как это сделать |
|||
11
hhhh
17.05.11
✎
13:49
|
(10) ну из типовой скопипасть. Ведь там в структуре подчиненности вытаскиваются родительские документы. Зачем ты велосипед начинаешь изобретать?
|
|||
12
Блондинистая Ромашка
17.05.11
✎
13:53
|
(11)
МетаданныеДокумента = ДокументСсылка.Метаданные(); СписокРеквизитов = Новый СписокЗначений; Для Каждого Реквизит ИЗ МетаданныеДокумента.Реквизиты Цикл ТипыРеквизита = Реквизит.Тип.Типы(); Для Каждого ТекущийТип ИЗ ТипыРеквизита Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) И ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда Попытка ЗначениеРеквизита = ДокументСсылка[Реквизит.Имя]; Исключение Прервать; КонецПопытки; ЕСли ЗначениеРеквизита<>Неопределено И НЕ ЗначениеРеквизита.Пустая() И ТипЗнч(ЗначениеРеквизита) = ТекущийТип И мУжеВСписке[ЗначениеРеквизита] = Неопределено И СписокРеквизитов.НайтиПоЗначению(ДокументСсылка[Реквизит.Имя]) = Неопределено Тогда Попытка СписокРеквизитов.Добавить(ЗначениеРеквизита,Формат(ЗначениеРеквизита.Дата,"ДФ=yyyyMMddЧЧММсс")); Исключение ОтладкаТекстОшибки = ОписаниеОшибки(); КонецПопытки; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого ТЧ Из МетаданныеДокумента.ТабличныеЧасти Цикл СтрРеквизитов = ""; Попытка СодержимоеТЧ = ДокументСсылка[ТЧ.Имя].Выгрузить(); Исключение Прервать; КонецПопытки; Для Каждого Реквизит ИЗ ТЧ.Реквизиты Цикл ТипыРеквизита = Реквизит.Тип.Типы(); Для Каждого ТекущийТип ИЗ ТипыРеквизита Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) И ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда СтрРеквизитов = СтрРеквизитов + ?(СтрРеквизитов = "", "", ", ") + Реквизит.Имя; Прервать; КонецЕсли; КонецЦикла; КонецЦикла; СодержимоеТЧ.Свернуть(СтрРеквизитов); Для Каждого КолонкаТЧ ИЗ СодержимоеТЧ.Колонки Цикл Для Каждого СтрокаТЧ ИЗ СодержимоеТЧ Цикл Попытка ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя]; Исключение Продолжить; КонецПопытки; МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеРеквизита)); Если МетаданныеЗначения = Неопределено Тогда // базовый тип Продолжить; КонецЕсли; ЕСли ЗначениеРеквизита<>Неопределено И НЕ ЗначениеРеквизита.Пустая() И Метаданные.Документы.Содержит(МетаданныеЗначения) И мУжеВСписке[ЗначениеРеквизита] = Неопределено Тогда Если СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено Тогда Попытка СписокРеквизитов.Добавить(ЗначениеРеквизита,Формат(ЗначениеРеквизита.Дата,"ДФ=yyyyMMddЧЧММсс")); Исключение ОтладкаТекстОшибки = ОписаниеОшибки(); КонецПопытки; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; СписокРеквизитов.СортироватьПоПредставлению(); мУжеВСписке.Вставить(ДокументСсылка, Истина); //Если СписокРеквизитов.Количество() = 1 Тогда // ВывестиРодительскиеДокументы(СписокРеквизитов[0].Значение); //ИначеЕсли СписокРеквизитов.Количество() > 1 Тогда // ВывестиБезРодителей(СписокРеквизитов); //КонецЕсли; //СтрокаДерева = мДерево.Строки.Добавить(); Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка, Проведен, ПометкаУдаления, #Сумма, #Валюта, Представление, """ + МетаданныеДокумента.Имя + """ КАК Метаданные | ИЗ Документ."+МетаданныеДокумента.Имя + " ГДЕ Ссылка = &Ссылка"); Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Если МетаданныеДокумента.Реквизиты.Найти("СуммаДокумента") <> Неопределено Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "#Сумма", "СуммаДокумента КАК СуммаДокумента"); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст, "#Сумма", "NULL КАК СуммаДокумента"); КонецЕсли; Если МетаданныеДокумента.Реквизиты.Найти("ВалютаДокумента") <> Неопределено Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "#Валюта", "ВалютаДокумента КАК ВалютаДокумента"); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст, "#Валюта", "NULL КАК ВалютаДокумента"); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); ЕСли Выборка.Следующий() Тогда Сообщить(Выборка.Ссылка); Сообщить("******************************************"); //СтрокаДерева.Ссылка= Выборка.Ссылка; //СтрокаДерева.Проведен = Выборка.Проведен; //СтрокаДерева.ПометкаУдаления = Выборка.ПометкаУдаления; //СтрокаДерева.ДокументПредставление = Выборка.Представление; //СтрокаДерева.СуммаДокумента = Выборка.СуммаДокумента; //СтрокаДерева.ВалютаДокумента = Выборка.ВалютаДокумента; //СтрокаДерева.ВидДокумента = Выборка.Метаданные; Иначе Сообщить(Выборка.Ссылка); Сообщить("******************************************"); //СтрокаДерева.Ссылка= ДокументСсылка; //СтрокаДерева.ДокументПредставление = Строка(ДокументСсылка); //СтрокаДерева.СуммаДокумента = ДокументСсылка.СуммаДокумента; КонецЕсли; //мДерево = СтрокаДерева; скопипастила. выводит только текущий док, но не родителей. |
|||
13
FIXXXL
17.05.11
✎
13:55
|
(11) разве родительские вытаскиваются? вроде бы только подчиненные?
(12)там еще посмотри Связанные документы, это ближе |
|||
14
FIXXXL
17.05.11
✎
13:57
|
(11) хотя нет, и родительские тянет
но там связка непростая, к реализации могут оплаты приязаться, которые в авансах... надо ли это в (0)? |
|||
15
Блондинистая Ромашка
17.05.11
✎
14:09
|
(14) надо.
|
|||
16
Reset
17.05.11
✎
15:02
|
// В Ссылка - ссылка на текущий документ
ТаблицаРодителей=Новый ТаблицаЗначений; ТаблицаРодителей.Колонки.Добавить("Родитель"); Объект=Ссылка.ПолучитьОбъект(); Для каждого Реквизит из Ссылка.Метаданные().Реквизиты цикл МетаданныеРеквизита=Метаданные.НайтиПоТипу(ТипЗнч(Объект[Реквизит.Имя])); Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) тогда Если ЗначениеЗаполнено(Объект[Реквизит.Имя]) тогда ТаблицаРодителей.Добавить().Родитель=Объект[Реквизит.Имя]; КонецЕсли; КонецЕсли; КонецЦикла; Для каждого ТабличнаяЧасть из Ссылка.Метаданные().ТабличныеЧасти цикл Для каждого Строка из Объект[ТабличнаяЧасть.Имя] цикл Для каждого Реквизит из ТабличнаяЧасть.Реквизиты цикл МетаданныеРеквизита=Метаданные.НайтиПоТипу(ТипЗнч(Строка[Реквизит.Имя])); Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) тогда Если ЗначениеЗаполнено(Строка[Реквизит.Имя]) тогда ТаблицаРодителей.Добавить().Родитель=Строка[Реквизит.Имя]; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; ТаблицаРодителей.Свернуть("Родитель"); // |
|||
17
Reset
17.05.11
✎
15:04
|
(16) к (10) и (9)
Это если рассматривать термин "родительский документ" так же, как его рассматривает "СтруктураПодчиненности". |
|||
18
Блондинистая Ромашка
17.05.11
✎
15:15
|
ГОСПОДИ! Спасибо, что есть такие люди как Reset!!!!!!
(17) Спасибо!!! Огромное!!! //а то у меня уже истерика началась... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |