- Библиотека стандартных подсистем 1С 8.3. Структура подчиненности
- В пользовательском режиме
- В конфигураторе
- Не выводить определенный тип в структуре подчиненности
- Изменить представление документа в структуре подчиненности
- Добавление команды Связанные документы для нового объекта
- Настраиваемая структура подчиненности
Библиотека стандартных подсистем 1С 8.3. Структура подчиненности
Рассмотрена подсистема Структура подчиненности из библиотеки стандартных подсистем (БСП) 3.1.3.
Примеры приведены на конфигурации Управление торговлей 11.4.13.
В пользовательском режиме
С помощью структуры подчиненности можно посмотреть связи документов и справочников между собой. Для этого нужно в форме документа или в форме списка документов выбрать Отчеты -> Связанные документы:
В конфигураторе
Не выводить определенный тип в структуре подчиненности
В общем модуле СтруктураПодчиненностиПереопределяемый в процедуру ПередВыводомСвязанногоОбъекта добавить следующий код:
В результате заказ клиента не будет выводиться в структуре подчиненности, остальные типы будут выводиться.
Изменить представление документа в структуре подчиненности
В общем модуле СтруктураПодчиненностиПереопределяемый в процедуре ПриОпределенииНастроек указать те реквизиты, которые можно будет использовать для формирования представления:
В общем модуле СтруктураПодчиненностиПереопределяемый в процедуре ПриПолученииПредставления сформировать представление вручную:
В результате для счет-фактуры в скобках будет выводиться УИП:
Добавление команды Связанные документы для нового объекта
Например есть документ Документ1, у которого есть реквизит Основание с типом Реализация товаров и услуг.
- Для общей команды СвязанныеДокументы в свойстве Тип параметра команды добавляем новый документ.
- В критерий отбора СвязанныеДокументы на закладке Данные в свойстве Тип добавляем новый документ.
- На закладке Состав устанавливаем флажок возле реквизита Основание:
- У нового документа появится команда для открытия отчета Структура подчиненности:
Источник
Настраиваемая структура подчиненности
Тестировалось на Управление торговлей ред. 10.3 на релизе 10.3.47.3, но будет работать как на более ранних так и более поздних версиях.
Начну с самого начала, чтобы было понятно даже обычным пользователям. Некоторые вещи будут более чем простые, другие, возможно, достаточно сложные.
По ходу своей деятельности, мне приходится не только программировать, но и администрировать большие базы данных с большим и сложным документооборотом Чтобы быстро обрабатывать данные приходиться многие инструменты дорабатывать вплоть до сочетания клавиш, чтобы одно действие можно было за несколько минут проделать сотней-другой объектов, а не писать для этого обработку. И структура подчиненности как раз такой механизм в который я вывел максимум того что надо и сделал его максимум удобным и настраиваемым для пользователей.
Статья предназначена не только для демонстрации изменений типовой конфигурации, но и показывает как можно сильно упростить работу пользователей и администраторов доработав такой универсальный механизм как Структура подчиненности.
Структура подчиненности — механизм который вызывается из всех документов (вызывается по кнопке Перейти — Структура подчиненности) и предназначена для показа подчиненности связанных объектов через ссылки. Например такой:
Структура подчиненности реализована как встроенная общая форма, но по сути является обработкой хотя в справке называется отчетом, но т.к. не имеет табличного документа для вывода результата с возможностью его печати (что на мой взгляд является одним из основных критериев отчета) то далее я буду называть ее обработкой.
Все дальнейшие использование обработки я бы разделил на несколько групп:
1. выполнения в одном окне универсальные действия с документами
2. просмотр реквизитов у связанных документах
3. история хозяйственной деятельности
Теперь рассмотрим их подробнее.
Универсальные действия с документами
В типовой конфигурации нет способа универсально добавить некую функцию во все объекты. Но зато есть универсальные механизмы добавленные везде в которые можно добавить свои универсальные функции — и самый удобный механизм для этого как раз Структура подчиненности!
Как я уже говорил для ускорения всем действиям назначены сочетания горячих клавиш для быстрого выполнения — когда действий много то это очень сильно ускоряет работу — проверено неоднократно. Увидеть сочетание можно наведя мышкой на кнопу.
Типовые действия весьма скудные: проведение и его отмена, пометка и ее снятие.
ВАЖНО! Эти действия реализованы программно, а следовательно даже если у пользователя нет прав интерактивно выполнять данные действия то он сможет их сделать через эту обработку. По сути это такая дырка в безопасности, и если об этом не знать то можно долго гадать как пользователи обходят права.
Поэтому первым делом эту возможность я убрал сделав доступным данные действия только если есть соответствующие интерактивные права.
Дополнительно добавил действия:
Все они выполняются по выделенному объекту (кроме движений документа), и только если в данной ячейки не объект, тогда берется документ из строки.
1AppDataLocalTempmsohtml12clip_image007.gif»/> Свойства
Особенно удобно просматривать структуру подчиненности когда делается внутренняя продажа-покупка в базе у собственной организации — в этом случае важно понимать откуда взялось поступление — кто кому что продал и у кого закупил, без этого очень легко запутаться и даже с отчетами сложно понять порядок выписки документов т.к. каждый отчет показывает лишь одну хозяйственную операцию — движение товаров или денег или долгов. Но полную картину можно увидеть только по структуре подчиненности.
Конечно для полноценной связки всех документов нужно чтобы у них всех был реквизит с ссылкой, чаще всего он есть и называется «Документ основание». Но в некоторых случаях он не вынесен на форму документа (как например в документе Приходный кассовый ордер») или вообще отсутствует. Если есть возможность изменить конфигурацию, то стоит это сделать ,чтобы добиться максимальной гибкости — добавить в нужных документах данный реквизит и включить его в состав критерия отбора «Связанные документы» по которому работает обработка. Ниже описано как это делается.
Также есть такой нюанс как реквизиты с разным именем в разных документах выполняющие по сути одинаковую роль. Например Склад в документе «Реализация» и СкладГруппа в «Заказ покупателя». Я решил это путем вывода аналогов колонок, т.е. если добавляем колонку с реквизитом «Склад» из «Реализации» то автоматом проставляется аналог его для «Заказ покупателя» — в функции ПолучитьРеквизитыАналоги(), наоборот не делал. Если нужно то можно самостоятельно дописать другие аналоги.
Колонку «Валюта» убрал т.к. редко кто работает с несколькими валютами в базе и ее всегда можно добавить самостоятельно.
1AppDataLocalTempmsohtml12clip_image020.jpg»/> Сохранение
Чтобы полноценно воспользоваться задачами придется внести несколько изменений в конфигурацию:
1. В критерии отбора СвязанныеДокументы в задаче ЗадачиПользователя у реквизита»Объект» — установить флажок.
2. в общем модуле «ОбщегоНазначения» в функция РазобратьПутьКОбъектуМетаданных() в конце нужно вставить после Если Структура.ТипОбъекта = «Документ» Тогда и перед Иначе еще одно условие:
ИначеЕсли Структура.ТипОбъекта = «Задача» Тогда
3. также чтобы ставить задачу по любому объекту лучше в реквизите «Объект» в Задаче ЗадачиПользователя поставить тип «ЛюбаяСсылка» тогда не придется выполнять п.4.
4. в общем модуле «ПолныеПрава» в про ПолучитьСписокДокументовПоКритериюОтбора()
перед Запрос.Текст = ТекстЗапроса; прописать
Если Не ЗначениеЗаполнено(ТекстЗапроса) Тогда
Возврат Новый ТаблицаЗначений;
это нужно на случай если задача нигде не будет использована в составе критерия отбора (или в нем не будет реквизита с типом «ЛюбаяСсылка»)
ВАЖНО! После всех этих действий кнопкой «Связанные документы» нельзя будет пользоваться как и формой списка для критерия отбора «Связанные документы» — потому что он не предназначен для работы с задачами (будет вылетать ошибка в процедуре ЗаполнитьТаблицуСвязанныхДокументов() при выполнении запроса). Это конечно можно исправить но т.к. я никогда не пользуюсь данным механизмом то не сделал этого, если кому нужно и не сможет сам — напишите и я распишу как исправить.
Несколько моментов в качестве заключения
Обработку можно использовать также как внешнюю — например для базовой поставки, но без тех возможностей которые дают изменение конфигурации.
Чтобы заменить вызов встроенной формы на эту нужно ее добавить как обработку и в общем модуле РаботаСДиалогами в процедуре ПоказатьСтруктуруПодчиненностиДокумента() написать вместо
Или (кому как удобно) сделать вызов с диска как я — чтобы менять не изменяя конфигуратор храню основные инструменты на диске и вызываю оттуда. На скорость пользователя это не сильно влияет, а вот на скорость изменения — очень упрощает и ускоряет, и меньше надо чистить локальный кэш у пользователей.
Кстати данная замена решает большое неудобство что нельзя открыть больше одной формы структуры подчиненности — чтобы сравнить несколько структур приходиться открывать несколько сеансов с базой.
Также я обычно для удобства вытаскиваю кнопку » Структура подчиненности документа» из меню «Перейти» просто на форму (списка и объекта — конечно только основных) и назначаю ей сочетание клавиш чтобы не искать кнопку, например Ctrl+D — чтобы легко было вызывать. Но можно просто назначить сочетание и не придется тратить время на «мышкование».
Если обработка будет пользоваться спросом то планирую подробнее расписать ее работу, т.к. я не включил туда еще некоторые удобные функции.
Источник