|
Расширение и связанные документе (не бюст 2020 конечно, но все же) | ☑ | ||
---|---|---|---|---|
0
The_ka6a4ok
22.12.20
✎
22:26
|
добрых дней. никогда не поздно, так сказать. создал расширение конфигурации, добавил документ, настроил ввод на основании, он действительно есть, но вот проблема в том, что при выводе дерева подчиненности, этот документ не отображается,
я знаю, что проблема в критерии отбора "СтруктураПодчиненности", добавить его в расширение и изменить не позволяет сама 1с, есть ли возможность как-то добавить критерий не продавая душу? |
|||
1
Мимохожий Однако
22.12.20
✎
22:34
|
нет
|
|||
2
The_ka6a4ok
22.12.20
✎
22:36
|
(1) критично
|
|||
3
The_ka6a4ok
22.12.20
✎
22:36
|
снимать с замочка, кажется, не вариант, хотя это бы решило все проблемы
|
|||
4
H A D G E H O G s
22.12.20
✎
22:39
|
Нет
|
|||
5
H A D G E H O G s
22.12.20
✎
22:41
|
Более того, даже добавив много кода по дополнению дерева новыми доками и форму подчиненности в расширение ты не выиграешь.
ДокументСсылка не будет содержать доки расширения. Только добавлять копию формы подчиненности в свое расширение. |
|||
6
The_ka6a4ok
22.12.20
✎
22:46
|
блин, обидно
|
|||
7
H A D G E H O G s
22.12.20
✎
22:47
|
Могу кинуть код, но там надо разбираться
|
|||
8
The_ka6a4ok
22.12.20
✎
22:57
|
мне в любом случае придется разбираться: как в твоём коде, либо придумывать что-то другое, что дает возможность как-то связывать документы: типа на одного заказчика может быть множество перевозчиков заранее n-количество
|
|||
9
H A D G E H O G s
22.12.20
✎
23:06
|
https://yadi.sk/d/Av20sTsAtJvPug
Форма Обработки.АСФОбщиеФормыКомандыИМакеты.АСФСвязанныеДокументы В ней, в реквизиты ИсходныйОбъект ОсновнойОбъект ДеревоПодчиненныеОбъекты.Ссылка ДеревоРодительскиеОбъекты.Ссылка ДОБАВИТЬ твои новые доки. Их же добавить в процедуры АСФОбщегоНазначенияПовторноеИспользование.ПолучитьСоставСтруктурыПодчиненности() АСФОбщегоНазначенияПовторноеИспользование.ПолучитьСписокОбрабатываемыхТиповСтруктурыПодчиненности() по аналогии с доком АктПостановкиНаБалансЕГАИС Это просто тупо кусок конфы и сходу не заработает, напилите напильником. |
|||
10
The_ka6a4ok
22.12.20
✎
23:18
|
(9) большое спасибо
|
|||
11
Ненавижу 1С
гуру
23.12.20
✎
07:18
|
Мы добавляем сами метаданные не в расширения, а в саму конфигурацию. В расширении только изменения кода и форм.
Добавили свои доки. Добавили свой критерий. Изменили код вывода дерева в расширении. Там совсем немного. |
|||
12
DJ Anthon
23.12.20
✎
07:19
|
(2) а я добавил
|
|||
13
DJ Anthon
23.12.20
✎
07:20
|
ой, это к (1)
|
|||
14
DJ Anthon
23.12.20
✎
07:22
|
&НаСервере
&ИзменениеИКонтроль("ВывестиРодительскиеОбъекты") Процедура А_ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты) МетаданныеОбъекта = ТекущийОбъект.Метаданные(); СписокРеквизитов = Новый СписокЗначений; Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда #Вставка Выборка = РегистрыСведений.А_СвязанныеРеквизиты.Выбрать(Новый Структура("Реквизит", Реквизит.Имя)); Если НЕ Выборка.Следующий() Тогда Продолжить; КонецЕсли; ИначеЕсли Ложь Тогда #КонецВставки Продолжить; КонецЕсли; Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита = Неопределено Тогда Продолжить; КонецЕсли; Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита) Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита) И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита) И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; ЗначениеРеквизита = ТекущийОбъект[Реквизит.Имя]; Если ЗначениеЗаполнено(ЗначениеРеквизита) И ТипЗнч(ЗначениеРеквизита) = ТекущийТип И ЗначениеРеквизита <> ТекущийОбъект И СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено Тогда ЯвляетсяДокументом = ОбщегоНазначения.ЭтоДокумент(МетаданныеРеквизита); Если ЯвляетсяДокументом Тогда ДатаДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина); СписокРеквизитов.Добавить(ЗначениеРеквизита, Формат(ДатаДокумента, "ДЛФ=DT")); Иначе СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1)); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл ИменаРеквизитов = ""; СодержимоеТЧ = ТекущийОбъект[ТЧ.Имя].Выгрузить(); // ТаблицаЗначений Для Каждого Реквизит Из ТЧ.Реквизиты Цикл Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда #Вставка Выборка = РегистрыСведений.А_СвязанныеРеквизиты.Выбрать(Новый Структура("Реквизит", Реквизит.Имя)); Если НЕ Выборка.Следующий() Тогда Продолжить; КонецЕсли; ИначеЕсли Ложь Тогда #КонецВставки Продолжить; КонецЕсли; Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита = Неопределено Тогда Продолжить; КонецЕсли; Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита) Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита) И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита) И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; ИменаРеквизитов = ИменаРеквизитов + ?(ИменаРеквизитов = "", "", ", ") + Реквизит.Имя; Прервать; КонецЦикла; КонецЦикла; СодержимоеТЧ.Свернуть(ИменаРеквизитов); Для Каждого КолонкаТЧ Из СодержимоеТЧ.Колонки Цикл Для Каждого СтрокаТЧ Из СодержимоеТЧ Цикл ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя]; МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеРеквизита)); Если МетаданныеЗначения = Неопределено Тогда Продолжить; КонецЕсли; Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеЗначения) Или Не ПравоДоступа("Чтение", МетаданныеЗначения) Тогда Продолжить; КонецЕсли; Если ЗначениеРеквизита = ТекущийОбъект Или СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) <> Неопределено Тогда Продолжить; КонецЕсли; ЯвляетсяДокументом = ОбщегоНазначения.ЭтоДокумент(МетаданныеЗначения); Если Не ЯвляетсяДокументом И Не Метаданные.Справочники.Содержит(МетаданныеЗначения) И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеЗначения) Тогда Продолжить; КонецЕсли; Если ЯвляетсяДокументом Тогда ДатаДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина); СписокРеквизитов.Добавить(ЗначениеРеквизита, Формат(ДатаДокумента, "ДЛФ=DT")); Иначе СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1, 1, 1)); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; СписокРеквизитов.СортироватьПоПредставлению(); Для каждого ЭлементСписка Из СписокРеквизитов Цикл Выборка = ПолучитьВыборкуПоРеквизитамОбъекта(ЭлементСписка.Значение); Если Выборка.Следующий() Тогда НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты); Если НоваяСтрока <> Неопределено И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, НоваяСтрока, ВыведенныеОбъекты); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере &Вместо("ОбъектыПоКритериюОтбора") Функция А_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора) // Вставить содержимое метода. Результат = ПродолжитьВызов(ЗначениеКритерияОтбора); Выборка = РегистрыСведений.А_СвязанныеРеквизиты.Выбрать(); Пока Выборка.Следующий() Цикл Реквизит = ?(ПустаяСтрока(Выборка.ТЧ), Метаданные[Выборка.Тип][Выборка.Вид].Реквизиты[Выборка.Реквизит], Метаданные[Выборка.Тип][Выборка.Вид].ТабличныеЧасти[Выборка.ТЧ].Реквизиты[Выборка.Реквизит]); Если Реквизит.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | Объект.Ссылка КАК Ссылка |ИЗ | " + СтрЗаменить(СтрЗаменить(Выборка.Тип, "Документы", "Документ"), "Справочники", "Справочник") + "." + Выборка.Вид + ?(ПустаяСтрока(Выборка.ТЧ), "", "." + Выборка.ТЧ) + " КАК Объект |ГДЕ | Объект." + Выборка.Реквизит + " = &Значение"); Запрос.УстановитьПараметр("Значение", ЗначениеКритерияОтбора); ТЗ = Запрос.Выполнить().Выгрузить(); Для Каждого Строка ИЗ ТЗ Цикл Если Результат = Неопределено Тогда Результат = Новый ТаблицаЗначений; Результат.Колонки.Добавить("Ссылка"); ИначеЕсли Результат.Найти(Строка.Ссылка, "Ссылка") = Неопределено Тогда Результат.Добавить().Ссылка = Строка.Ссылка; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции |
|||
15
DJ Anthon
23.12.20
✎
07:23
|
// б) Регистр сведений А_СвязанныеРеквизиты, измерение Реквизит типа строка(99), реквизиты Тип, Вид, ТЧ типа строка(25)
//Добавлен регистр сведений для обхода ограничения расширения на изменение/добавление критериев отбора. Не знаю, то это или нет, конечно. |
|||
16
lucbak
23.12.20
✎
08:07
|
(0) как вариант вообще отказаться от критериев отбора http://catalog.mista.ru/public/938145/
|
|||
17
DJ Anthon
28.12.20
✎
16:59
|
(16) блин, я опять велик изобретал (
|
|||
18
rozer76
28.12.20
✎
17:24
|
(16) зачет )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |