0
Answered

Возможность указывать структуру Холдинга

Yurok 8 years ago updated by Отдел внедрений (бизнес-аналитик) 8 years ago 9

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


В поставляемой документации говориться о возможности создания любой конфигурации через Дизайнер интерфейсов + Конфигуратор. Вот только нехватает наглядного примера с четкой последовательностью действий.


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


Или получить четкие разъяснения на моем конкретном примере.

Т.к. на сегодня я смог создать вклдку (холдинги) в окне контрагеты, но не знаю как увязать ее в работе системы.

Здравствуйте!

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

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

Как только будут конкретизированы требования - можно будет разбирать этот наглядный пример.

Хорошо, я с радостью опишу видение этого процесса своими глазами, но я только начал осваивать ваш продукт, поэтому все нюансы исопльзования данной информации предусмотреть срзу не смогу.


Итак:
  • В окне "реестр контрагентов" добавить вкладку "Холдинг" см. скрин

  • Если компания являяется Холдингом или состоит в холдинге, то при переключении на эту вкладку будет отображена древовидная структура ( см. скрин )


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

Что касается вывода информации в отчет, то:
Как минимум нужно иметь возможность увидеть табличную (графическую было бы здорово) форму отчета где отображена информация согласно рисунку выше. с указанием
  • адреса организации,
  • контактных лиц
  • организаций с которыми уже взаимодействуем. 
Если Вы мне поможете создать такое в вашей программе, то по мере работы все необходимые поля и прочие возможности, которые упустил в этом описании, я смогу создать сам.




Ещё раз, здравствуйте!

В древовидной форме на текущий момент представить информацию не получится... :( Точнее в форме привычного раскрываемого дерева. Но можно представить информацию в виде стандартной таблицы-списка, где записи более низкого уровня сдвигать относительного их родительского элемента. Получится нечто вроде вот такого списка:

1. Компания_1
2. Компания_2
   2.1 Компания_3
   2.2 Компания_4
3. Компания_5
   3.1 Компания_6

Как видно иерархия вложенности определяется отступами (пробелами в начале строки) и порядковым номером.

Теперь следующие вопросы: 
 - может ли одна компания в ходить в структуру различных иерархий (холдингов)? 

 - когда в реестре контрагентов выделена Компания_2 (см. мой пример выше), то каким образом для ней должно выглядеть содержание вкладки "Холдинг" ? Только компании 3 и 4 или необходимо для всех участников холдинга отображать полную структуру всего холдинга?

Когда я интересовался вариантами использования информации - речь шла о уже реализованных аналитиках (количественных и суммовых), которые сейчас отталкиваются от каждого отдельного контрагента. В случаях с холдингами, как правило, возникает желание видеть картину как по холдингу в целом, так и по отдельным его участникам. А это накладывает весьма экзотические требования к эргономике интерфейсов и логике аналитик. Если таковых потребностей, то задача сводится к реализации интерфейса справочного представления иерархических взаимосвязей. Это решаемо. :)


Как видно иерархия вложенности определяется отступами (пробелами в начале строки) и порядковым номером.

Отлично! Такой вариант тоже сойдет (более чем) нельзя конечно будет свернуть компании по "уровням вложенности" как это реализовано в древовидном списке. Но это мелочь. - может ли одна компания в ходить в структуру различных иерархий (холдингов)?

- может ли одна компания в ходить в структуру различных иерархий (холдингов)? 

На практике не встреччал подобного. Нет.


 - когда в реестре контрагентов выделена Компания_2 (см. мой пример выше), то каким образом для ней должно выглядеть содержание вкладки "Холдинг" ? Только компании 3 и 4 или необходимо для всех участников холдинга отображать полную структуру всего холдинга?

Нужно видет всю стркутуру. А текущую компанию выделить

1. Компания_1
2. Компания_2
   2.1 Компания_3
   2.2 Компания_4
3. Компания_5
   3.1 Компания_6


В случаях с холдингами, как правило, возникает желание видеть картину как по холдингу в целом, так и по отдельным его участникам. А это накладывает весьма экзотические требования к эргономике интерфейсов и логике аналитик. Если таковых потребностей, то задача сводится к реализации интерфейса справочного представления иерархических взаимосвязей. Это решаемо. :)

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

Правда очень нужна возможность создания табличного отчета по холдингам со списками всех дочерних предприятий. И чтобы все предприятия, которые выгружаю в эксель имели столбец холдинг. Это возможно?!

Ещё раз здравствуйте!

Методологии решения задачи получается несколько:

Вариант первый...

Конфигуратор
1. На карточку контрагента (класс "Контрагенты) добавить атрибут "Входит в холдинг" - ссылка на контрагента

2. Создать новый класс "Структура холдинга" (в нём будем хранить глубину вложенности и структуру отступов с номерами):
  - Холдинг (ссылочный на Контрагенты - самый верхний уровень, куда входит, обязательный)
  - Подразделение (ссылочный на Контрагенты - текущий уровень, куда входит, обязательный, по умолчанию равен верхнему уровню)
  - Контрагент (ссылочный на Контрагенты - кто входит, обязательный)
  - Отображение (строка, где будем вычислять отображаемый в дереве формат)

3. На карточку контрагента (класс "Контрагенты) добавить атрибут "Подразделение холдинга" - ссылка на класс "Структура холдинга".


Дизайнер интерфейсов
1. В реестр контрагентов добавить вкладку "Холдинг"

2. Добавить таблицу с классом контрагенты, где указать зависимость через обратную ссылку на  атрибут Холдинг в основной таблице Контрагентов. Это позволит в отдельной таблице дизайнера интерфейсов видеть верхний уровень всей структуры.

3. На вкладку Холдинг разместить таблицу и в ней отобразить класс "Структура холдинга" с атрибутом "Отображение". Эту таблицу сделать зависимой от таблицы, созданной в п.2 по атрибуту холдинг. Таким образом неважно на какую часть структуры встанет курсор в основной таблице - на вкладке всегда будет отображена вся структура.

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


Вариант второй...

Конфигуратор
1. На карточку контрагента (класс "Контрагенты) добавить атрибут "Входит в холдинг" - ссылка на контрагента.

2. Разработать виртуальный класс, где формировать вывод структуры с рекурсией вложенности  и с зависимостью от каждого участника холдинга. 


Первый вариант требует программирования только триггера, пусть и не самого тривиального, но все равно не так много. При этом архитектура данных получается реальной и с ней можно работать в Дизайнере интерфейсов и использоваться в отчетах. Кроме того, по сравнению со вторым вариантом - метод менее ресурсоемок на этапе формирования интерфейса пользователя, т.к. не требует вычислений. Так же придётся добавить работу с таблицами структуры в процедуры удаление и объединения контрагентов - иначе ошибок поймаем.

Второй вариант требует более сложного программирования - написания функции, которая без добавления дополнительных сущностей в архитектуру БД, будет формировать таблицу требуемого вида. Данный вариант при сложной структуре связей и большом кол-ве вложенностей в холдингах будет требовать больше вычислительных ресурсов сервера при формировании реестра контрагентов и может "подтормаживать" (особенно на SQL Express). Но при этом не придётся дополнительно редактировать процедуры удаления и объединения контрагентов.

Я бы рекомендовал путь с триггером. 
но любой их вариантов потребует от вас знаний Transact-SQL.

Благодарю, Вас, за ответ, но я не обладаю знаниями в Transact-SQL.

Вы можете мне помочь в реализации вашего 1-го варианта?

Именно в той части где требуется написание кода.

Да, конечно же мы можем это сделать...
Оценочная трудоемкость 3 ч/часа (включая внесение изменения в процедуры удаления и объединения контрагентов). Цена одного ч/часа = 1.350 рублей.

Пришлите, пожалуйста Ваши реквизиты для выставления счета на vav@axistem.ru и менеджер согласует с Вами документооборот по задаче и процедуру технического взаимодействия.