1с вывести структуру подчиненности

Библиотека стандартных подсистем 1С 8.3. Структура подчиненности

Рассмотрена подсистема Структура подчиненности из библиотеки стандартных подсистем (БСП) 3.1.3.

Примеры приведены на конфигурации Управление торговлей 11.4.13.

В пользовательском режиме

С помощью структуры подчиненности можно посмотреть связи документов и справочников между собой. Для этого нужно в форме документа или в форме списка документов выбрать Отчеты -> Связанные документы:

В конфигураторе

Не выводить определенный тип в структуре подчиненности

В общем модуле СтруктураПодчиненностиПереопределяемый в процедуру ПередВыводомСвязанногоОбъекта добавить следующий код:

В результате заказ клиента не будет выводиться в структуре подчиненности, остальные типы будут выводиться.

Изменить представление документа в структуре подчиненности

В общем модуле СтруктураПодчиненностиПереопределяемый в процедуре ПриОпределенииНастроек указать те реквизиты, которые можно будет использовать для формирования представления:

В общем модуле СтруктураПодчиненностиПереопределяемый в процедуре ПриПолученииПредставления сформировать представление вручную:

В результате для счет-фактуры в скобках будет выводиться УИП:

Добавление команды Связанные документы для нового объекта

Например есть документ Документ1, у которого есть реквизит Основание с типом Реализация товаров и услуг.

  1. Для общей команды СвязанныеДокументы в свойстве Тип параметра команды добавляем новый документ.
  1. В критерий отбора СвязанныеДокументы на закладке Данные в свойстве Тип добавляем новый документ.
  1. На закладке Состав устанавливаем флажок возле реквизита Основание:

  1. У нового документа появится команда для открытия отчета Структура подчиненности:

Источник

Настраиваемая структура подчиненности

Тестировалось на Управление торговлей ред. 10.3 на релизе 10.3.47.3, но будет работать как на более ранних так и более поздних версиях.

Начну с самого начала, чтобы было понятно даже обычным пользователям. Некоторые вещи будут более чем простые, другие, возможно, достаточно сложные.

По ходу своей деятельности, мне приходится не только программировать, но и администрировать большие базы данных с большим и сложным документооборотом Чтобы быстро обрабатывать данные приходиться многие инструменты дорабатывать вплоть до сочетания клавиш, чтобы одно действие можно было за несколько минут проделать сотней-другой объектов, а не писать для этого обработку. И структура подчиненности как раз такой механизм в который я вывел максимум того что надо и сделал его максимум удобным и настраиваемым для пользователей.

Статья предназначена не только для демонстрации изменений типовой конфигурации, но и показывает как можно сильно упростить работу пользователей и администраторов доработав такой универсальный механизм как Структура подчиненности.

Структура подчиненности — механизм который вызывается из всех документов (вызывается по кнопке Перейти — Структура подчиненности) и предназначена для показа подчиненности связанных объектов через ссылки. Например такой:

Структура подчиненности реализована как встроенная общая форма, но по сути является обработкой хотя в справке называется отчетом, но т.к. не имеет табличного документа для вывода результата с возможностью его печати (что на мой взгляд является одним из основных критериев отчета) то далее я буду называть ее обработкой.

Все дальнейшие использование обработки я бы разделил на несколько групп:

1. выполнения в одном окне универсальные действия с документами

2. просмотр реквизитов у связанных документах

3. история хозяйственной деятельности

Теперь рассмотрим их подробнее.

Универсальные действия с документами

В типовой конфигурации нет способа универсально добавить некую функцию во все объекты. Но зато есть универсальные механизмы добавленные везде в которые можно добавить свои универсальные функции — и самый удобный механизм для этого как раз Структура подчиненности!

Как я уже говорил для ускорения всем действиям назначены сочетания горячих клавиш для быстрого выполнения — когда действий много то это очень сильно ускоряет работу — проверено неоднократно. Увидеть сочетание можно наведя мышкой на кнопу.

Типовые действия весьма скудные: проведение и его отмена, пометка и ее снятие.

ВАЖНО! Эти действия реализованы программно, а следовательно даже если у пользователя нет прав интерактивно выполнять данные действия то он сможет их сделать через эту обработку. По сути это такая дырка в безопасности, и если об этом не знать то можно долго гадать как пользователи обходят права.

Поэтому первым делом эту возможность я убрал сделав доступным данные действия только если есть соответствующие интерактивные права.

Дополнительно добавил действия:

Все они выполняются по выделенному объекту (кроме движений документа), и только если в данной ячейки не объект, тогда берется документ из строки.

1AppDataLocalTempmsohtml12clip_image007.gif»/> Свойства

Особенно удобно просматривать структуру подчиненности когда делается внутренняя продажа-покупка в базе у собственной организации — в этом случае важно понимать откуда взялось поступление — кто кому что продал и у кого закупил, без этого очень легко запутаться и даже с отчетами сложно понять порядок выписки документов т.к. каждый отчет показывает лишь одну хозяйственную операцию — движение товаров или денег или долгов. Но полную картину можно увидеть только по структуре подчиненности.

Конечно для полноценной связки всех документов нужно чтобы у них всех был реквизит с ссылкой, чаще всего он есть и называется «Документ основание». Но в некоторых случаях он не вынесен на форму документа (как например в документе Приходный кассовый ордер») или вообще отсутствует. Если есть возможность изменить конфигурацию, то стоит это сделать ,чтобы добиться максимальной гибкости — добавить в нужных документах данный реквизит и включить его в состав критерия отбора «Связанные документы» по которому работает обработка. Ниже описано как это делается.

Также есть такой нюанс как реквизиты с разным именем в разных документах выполняющие по сути одинаковую роль. Например Склад в документе «Реализация» и СкладГруппа в «Заказ покупателя». Я решил это путем вывода аналогов колонок, т.е. если добавляем колонку с реквизитом «Склад» из «Реализации» то автоматом проставляется аналог его для «Заказ покупателя» — в функции ПолучитьРеквизитыАналоги(), наоборот не делал. Если нужно то можно самостоятельно дописать другие аналоги.

Колонку «Валюта» убрал т.к. редко кто работает с несколькими валютами в базе и ее всегда можно добавить самостоятельно.

1AppDataLocalTempmsohtml12clip_image020.jpg»/> Сохранение

Чтобы полноценно воспользоваться задачами придется внести несколько изменений в конфигурацию:

1. В критерии отбора СвязанныеДокументы в задаче ЗадачиПользователя у реквизита»Объект» — установить флажок.

2. в общем модуле «ОбщегоНазначения» в функция РазобратьПутьКОбъектуМетаданных() в конце нужно вставить после Если Структура.ТипОбъекта = «Документ» Тогда и перед Иначе еще одно условие:

ИначеЕсли Структура.ТипОбъекта = «Задача» Тогда

3. также чтобы ставить задачу по любому объекту лучше в реквизите «Объект» в Задаче ЗадачиПользователя поставить тип «ЛюбаяСсылка» тогда не придется выполнять п.4.

4. в общем модуле «ПолныеПрава» в про ПолучитьСписокДокументовПоКритериюОтбора()

перед Запрос.Текст = ТекстЗапроса; прописать

Если Не ЗначениеЗаполнено(ТекстЗапроса) Тогда

Возврат Новый ТаблицаЗначений;

это нужно на случай если задача нигде не будет использована в составе критерия отбора (или в нем не будет реквизита с типом «ЛюбаяСсылка»)

ВАЖНО! После всех этих действий кнопкой «Связанные документы» нельзя будет пользоваться как и формой списка для критерия отбора «Связанные документы» — потому что он не предназначен для работы с задачами (будет вылетать ошибка в процедуре ЗаполнитьТаблицуСвязанныхДокументов() при выполнении запроса). Это конечно можно исправить но т.к. я никогда не пользуюсь данным механизмом то не сделал этого, если кому нужно и не сможет сам — напишите и я распишу как исправить.

Несколько моментов в качестве заключения

Обработку можно использовать также как внешнюю — например для базовой поставки, но без тех возможностей которые дают изменение конфигурации.

Чтобы заменить вызов встроенной формы на эту нужно ее добавить как обработку и в общем модуле РаботаСДиалогами в процедуре ПоказатьСтруктуруПодчиненностиДокумента() написать вместо

Или (кому как удобно) сделать вызов с диска как я — чтобы менять не изменяя конфигуратор храню основные инструменты на диске и вызываю оттуда. На скорость пользователя это не сильно влияет, а вот на скорость изменения — очень упрощает и ускоряет, и меньше надо чистить локальный кэш у пользователей.

Кстати данная замена решает большое неудобство что нельзя открыть больше одной формы структуры подчиненности — чтобы сравнить несколько структур приходиться открывать несколько сеансов с базой.

Также я обычно для удобства вытаскиваю кнопку » Структура подчиненности документа» из меню «Перейти» просто на форму (списка и объекта — конечно только основных) и назначаю ей сочетание клавиш чтобы не искать кнопку, например Ctrl+D — чтобы легко было вызывать. Но можно просто назначить сочетание и не придется тратить время на «мышкование».

Если обработка будет пользоваться спросом то планирую подробнее расписать ее работу, т.к. я не включил туда еще некоторые удобные функции.

Источник

Читайте также:  Чем отчистить скотч пола
Оцените статью