![]() |
|
Добавить структуру подчиненности документу | ☑ | ||
---|---|---|---|---|
0
bebibo
06.08.21
✎
12:56
|
Добрый день Всем! Подскажите как быть с проблемой - в расширении у документа добавил новый реквизит "Основание". Нужно его указать в критерии отбора СвязанныеДокументы, чтобы потом по нему можно было видеть СтруктураПодчиненности. Всё надо сделать через расширение. Но у меня не получается менять состав помещенного критерия в расширение. Что можно сделать с этим?! БП 3.0, платформа 8.3.18.1363
|
|||
1
mikecool
06.08.21
✎
13:00
|
если не можешь менять существующий, запили новый, замени на него команду структуры
|
|||
2
lucbak
06.08.21
✎
13:03
|
||||
3
bebibo
06.08.21
✎
13:12
|
(2) там только платно скачивать?
|
|||
4
bebibo
06.08.21
✎
13:16
|
(1) так никак в расширении
|
|||
5
Dmitrii
гуру
06.08.21
✎
13:18
|
(0) Не нужно заниматься муйнёй. Подобные вещи надо делать в самой конфе, а не в расширении. Тем более, что такие доработки никак не влияют на обновления.
Расширения не для этого предназначены. Или у вас там замочковый фетиш и панический страх включения возможности изменения в конфигурации? |
|||
6
ДенисЧ
06.08.21
✎
13:19
|
(5) Вообще-то изменение критерия отбора запросто слетит при обновлении, которое его затронет...
|
|||
7
Dmitrii
гуру
06.08.21
✎
13:19
|
Вообще любые изменения данных (новые объекты, реквизиты объектов, измерения и ресурсы регистров и т.п.) надо делать в самой конфе.
|
|||
8
Dmitrii
гуру
06.08.21
✎
13:21
|
(6) >> Вообще-то изменение критерия отбора запросто слетит при обновлении, которое его затронет.
Вообще-то для этого уже довольно давно появилась возможность выбрать в окне сравнения/объединения при обновлении пункт "Объединить" для типов и состава критериев отбора. |
|||
9
ДенисЧ
06.08.21
✎
13:22
|
(8) "может слететь" и "слетит" - как говорили в Одесе - две большие разницы.
|
|||
10
DJ Anthon
06.08.21
✎
13:23
|
(5) а я сделал...
|
|||
11
bebibo
06.08.21
✎
13:23
|
Скажите прямо, как мне решить данную проблему?
|
|||
12
bebibo
06.08.21
✎
13:23
|
(5) Нельзя снимать..
|
|||
13
DJ Anthon
06.08.21
✎
13:25
|
// б) Регистр сведений А_СвязанныеРеквизиты, измерение Реквизит типа строка(99), реквизиты Тип, Вид, ТЧ типа строка(25)
//Добавлен регистр сведений для обхода ограничения расширения на изменение/добавление критериев отбора. &НаСервере &ИзменениеИКонтроль("ВывестиРодительскиеОбъекты") Процедура А_ВывестиРодительскиеОбъекты(ТекущийОбъект, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты = Неопределено) МетаданныеОбъекта = ТекущийОбъект.Метаданные(); СписокРеквизитов = Новый СписокЗначений; Если СлужебныеОбъекты = Неопределено Тогда СлужебныеОбъекты = Новый Соответствие; КонецЕсли; Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда #Вставка Выборка = РегистрыСведений.А_СвязанныеРеквизиты.Выбрать(Новый Структура("Реквизит", Реквизит.Имя)); Если НЕ Выборка.Следующий() Тогда Продолжить; КонецЕсли; ИначеЕсли Ложь Тогда #КонецВставки Продолжить; КонецЕсли; Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита = Неопределено Тогда Продолжить; КонецЕсли; Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита) Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита) И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита) И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; ЗначениеРеквизита = ТекущийОбъект[Реквизит.Имя]; Если ЗначениеЗаполнено(ЗначениеРеквизита) И ТипЗнч(ЗначениеРеквизита) = ТекущийТип И ЗначениеРеквизита <> ТекущийОбъект И СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) = Неопределено Тогда ЯвляетсяДокументом = ОбщегоНазначения.ЭтоДокумент(МетаданныеРеквизита); Если ЯвляетсяДокументом Тогда ДатаДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина); СписокРеквизитов.Добавить(ЗначениеРеквизита, Формат(ДатаДокумента, "ДЛФ=DT")); Иначе СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1,1,1)); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл ИменаРеквизитов = ""; СодержимоеТЧ = ТекущийОбъект[ТЧ.Имя].Выгрузить(); // ТаблицаЗначений Для Каждого Реквизит Из ТЧ.Реквизиты Цикл Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда #Вставка Выборка = РегистрыСведений.А_СвязанныеРеквизиты.Выбрать(Новый Структура("Реквизит", Реквизит.Имя)); Если НЕ Выборка.Следующий() Тогда Продолжить; КонецЕсли; ИначеЕсли Ложь Тогда #КонецВставки Продолжить; КонецЕсли; Для Каждого ТекущийТип Из Реквизит.Тип.Типы() Цикл МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип); Если МетаданныеРеквизита = Неопределено Тогда Продолжить; КонецЕсли; Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеРеквизита) Или Не ПравоДоступа("Чтение", МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; Если Не Метаданные.Документы.Содержит(МетаданныеРеквизита) И Не Метаданные.Справочники.Содержит(МетаданныеРеквизита) И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеРеквизита) Тогда Продолжить; КонецЕсли; ИменаРеквизитов = ИменаРеквизитов + ?(ИменаРеквизитов = "", "", ", ") + Реквизит.Имя; Прервать; КонецЦикла; КонецЦикла; СодержимоеТЧ.Свернуть(ИменаРеквизитов); Для Каждого КолонкаТЧ Из СодержимоеТЧ.Колонки Цикл Для Каждого СтрокаТЧ Из СодержимоеТЧ Цикл ЗначениеРеквизита = СтрокаТЧ[КолонкаТЧ.Имя]; МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(ЗначениеРеквизита)); Если МетаданныеЗначения = Неопределено Тогда Продолжить; КонецЕсли; Если Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(МетаданныеЗначения) Или Не ПравоДоступа("Чтение", МетаданныеЗначения) Тогда Продолжить; КонецЕсли; Если ЗначениеРеквизита = ТекущийОбъект Или СписокРеквизитов.НайтиПоЗначению(ЗначениеРеквизита) <> Неопределено Тогда Продолжить; КонецЕсли; ЯвляетсяДокументом = ОбщегоНазначения.ЭтоДокумент(МетаданныеЗначения); Если Не ЯвляетсяДокументом И Не Метаданные.Справочники.Содержит(МетаданныеЗначения) И Не Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеЗначения) Тогда Продолжить; КонецЕсли; Если ЯвляетсяДокументом Тогда ДатаДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеРеквизита, "Дата", Истина); СписокРеквизитов.Добавить(ЗначениеРеквизита, Формат(ДатаДокумента, "ДЛФ=DT")); Иначе СписокРеквизитов.Добавить(ЗначениеРеквизита, Дата(1, 1, 1)); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; СписокРеквизитов.СортироватьПоПредставлению(); Для каждого ЭлементСписка Из СписокРеквизитов Цикл Выборка = ПолучитьВыборкуПоРеквизитамОбъекта(ЭлементСписка.Значение); Если Выборка.Следующий() Тогда НоваяСтрока = ДобавитьСтрокуВДерево(ДеревоРодитель, Выборка, ВыведенныеОбъекты); Если НоваяСтрока <> Неопределено И Не ДобавляемыйОбъектИмеетсяСредиРодителей(ДеревоРодитель, ЭлементСписка.Значение) Тогда ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, НоваяСтрока, ВыведенныеОбъекты, СлужебныеОбъекты); ИначеЕсли СлужебныеОбъекты[ЭлементСписка.Значение] = Неопределено Тогда СлужебныеОбъекты.Вставить(ЭлементСписка.Значение, Истина); ВывестиРодительскиеОбъекты(ЭлементСписка.Значение, ДеревоРодитель, ВыведенныеОбъекты, СлужебныеОбъекты); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере &Вместо("ОбъектыПоКритериюОтбора") Функция А_ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора) // Вставить содержимое метода. Результат = ПродолжитьВызов(ЗначениеКритерияОтбора); Выборка = РегистрыСведений.А_СвязанныеРеквизиты.Выбрать(); Пока Выборка.Следующий() Цикл Реквизит = ?(ПустаяСтрока(Выборка.ТЧ), Метаданные[Выборка.Тип][Выборка.Вид].Реквизиты[Выборка.Реквизит], Метаданные[Выборка.Тип][Выборка.Вид].ТабличныеЧасти[Выборка.ТЧ].Реквизиты[Выборка.Реквизит]); Если Реквизит.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | Объект.Ссылка КАК Ссылка |ИЗ | " + СтрЗаменить(СтрЗаменить(Выборка.Тип, "Документы", "Документ"), "Справочники", "Справочник") + "." + Выборка.Вид + ?(ПустаяСтрока(Выборка.ТЧ), "", "." + Выборка.ТЧ) + " КАК Объект |ГДЕ | Объект." + Выборка.Реквизит + " = &Значение"); Запрос.УстановитьПараметр("Значение", ЗначениеКритерияОтбора); ТЗ = Запрос.Выполнить().Выгрузить(); Для Каждого Строка ИЗ ТЗ Цикл Если Результат = Неопределено Тогда Результат = Новый ТаблицаЗначений; Результат.Колонки.Добавить("Ссылка"); ИначеЕсли Результат.Найти(Строка.Ссылка, "Ссылка") = Неопределено Тогда Результат.Добавить().Ссылка = Строка.Ссылка; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции |
|||
14
DJ Anthon
06.08.21
✎
13:29
|
Только это в КА, а не в БП, не знаю, подойдет или нет. И это, оно мне не пригодилось ))
|
|||
15
Dmitrii
гуру
06.08.21
✎
13:41
|
(10)(13) Извращенцы.
(12) >> Нельзя снимать. И идиоты. Маразм возведённый в абсолют. Что бы не делать - лишь бы непременно через *опу. PS Извиняюсь за мой французский. Но иногда просто трудно сдержать эмоции. |
|||
16
DJ Anthon
06.08.21
✎
13:42
|
(15) о да, конечно, расширения ведь придумали для извращенцев. че бы в основной конфиге не работать-то, а?
|
|||
17
lucbak
06.08.21
✎
13:57
|
(16) Скорее всего ВПФ - это то чем человек занят 99% своего времени, вряд-ли там требуются расширения (их же ведь еще и изучать надо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |