ТЗ 8.1 УПП

Новая тема
Ребята ,Привет всем!
Подскажите пожалуйста что добивается от меня заказчик не могу врубится вроде все сделал по ТЗ.
Тема такая:
Техническое задание:
Необходимо разработатьприложение (обработку) обеспечивающую в среде конфигурации 1С:УПП 8.0 поиск и перемещение в заранее созданную
"резервную" группу т.н. "свободных" элементов справочников для которых выполняется следующее условие : идентификатор элемента находится
в определенном диапозоне и (на элемент справочника не имеется ссылок( или имеются ссылки из подчиненных справочников или регистров)
или имеется ссылка элемента самого на себя).

  Приложение должно обеспечить :
 1.  Выбор пользовательем типа объекта справочника.Можно ограничится типми Номенклатура и Контрагентами,но приложение должно быть
расчитано на выбор любого типа справочника из определенных в конфигурации.

 2.  Установку пользовательем диапазна идентификаторов в предлах которого дожно производить пойск.

 3.  Установку пользовательем наименвание "резервной" группы (если не обходимо - см.Примечание ).

 4.  Выполнения пойска.

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

 6.  Выполнение функции переноса в "резервную" группу после подтверждения пользователя .


ПРИМЕЧАНИЕ:
 1.  Наименование "резервных" созданных для хранения "свободных"  объектов для различных справочниковмогут
различатся.Возможно решение,включающее изменение структуры справочников(как минимум справочников
Номенклатуры и Контрагенты) с целью идентификации "резервных" групп.

 2.  Перенос в "резервную" группу должен быть с сохранением (и воспроизведением в ней) иерархии размещения переносимого объекта.



Мой вопрос:

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


               Написанную обработку можно скачать и посотреть по этой ссылке: http://files.mail.ru/55AI64

Заказчик:


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

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

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

 У меня не получилось с помощью обработки решить следующую задачу:
 
  - У меня  в базе есть контрагенты для которых созданы договоры и банковские счета  ( подчиненные справочники для контрагентов ),
    но внешних ссылок на эти объекты (на контрагентов) не определено
 
 Мне нужно выделить (найти с помощью обработки) указаные объекты и перенести их в отдельную группу!!!!!
Общий смысл решения такой:
1) Перебираются все объекты метаданных.
2) Проверяются все реквизиты объектов метаданных на содержание типа выбранного справочника.
3) Проверяется условие на подчиненность объекта метаданных выбранному типу справочника (внутренняя ссылочность, в Вашей терминологии).
4) Осуществляется поиск ссылок на элемент справочника среди объектов метаданых по выявленному реквизиту.

ЗЫ Это все нужно для "безболезненного" удаления неиспользуемых элементов справочников?
А зачем пункты 1-3?
Помоему достаточно просто найти ссылки и определиться - ссылка зависит от элемента или нет.
Универсально  наверно сделать можно, но это будет жутко наварочено.
По поводу контрагентов могу предложить делать так (самый простой способ):
1. Берете Контрагенов и элементы справочников, владельцами которых они являются. Получаете массив ссылок из Контрагентов, Договоров, Счетов.
2. Собираете ссылки на эти элементы (НайтиПоСсылкам).
3. В полученную таблицу добавляете колонку Контрагент в которую ставите значение из колонки 0, если там Контрагент или Владельца, если в 0 Договор или Счет.
4. Полученную таблицу группируете по колонке Контрагент и выкидываете оттуда все группировки, в которых в колонке 1 есть ссылка с типом Документ.
5. Оставшихся - те кто вам нужен, при этом вы имеете: в 0 искомую ссылку, в 1  - найденую и в Контрагент искомый вами "свободный". Если придумают условие, что типа не должны исчезать, те у кого стоит какой-нибудь флажок, то достаточно включить это условие в пункт 2.

Еще учтите, что ссылки на Контрагента не только в справочниках Счета и Договора, но и в регистрах попадаются, поскольку контактная информация - в регистрах.
Он мне еще писал что речь идет только об изменении родителя.
А вообще глядели на обработку?
"Уговорили - посмотрел:
1)
ТипСсылкиСтрокой = "Константа." + Имя;
ТипСсылки        = Тип(ТипСсылкиСтрокой);

Типов "Константа...." не существует.
2)
А не пробовали сначала создать массив ссылок, а только потом искать?
Выборка=Справочники[ИмяСправочника].Выбрать(ГруппаДляПоиска);
СписокСсылок=Новый Массив;
Пока Выборка.Следующий() Цикл
ЭлементДляПоиска=Выборка.ПолучитьОбъект().Ссылка;
Если ЭлементДляПоиска.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
КонецЦикла;
НайденныеСсылки1=НайтиПоСсылкам(СписокСсылок);

Один поиск работает быстрее 10.
3)
СтрокаДляУдаления=НайденныеСсылки1.Найти(Справочники[ИмяСправочника],"Ссылка");
Вообще-то Справочники[ИмяСправочника] - это менеджер, а не ссылка.
А еще можно написать так (это вместо цикла Пока):
Фильтр = Новый Структура ("Ссылка", Справочники[ИмяСправочника].ПустаяСсылка());
МасСтр = НайденныеСсылки1.НайтиСтроки (Фильтр);
Для Каждого Стр Из МасСтр Цикл
НайденныеСсылки1.Удалить(СтрокаДляУдаления);
КонецЦикла;
4)
Я выбрал справочник Контрагентов и некоторую группу, ткнул кнопку Найти и ничего не увидел.
А все потому, что есть ссылки в Договорах, Счетах и Регистрах. Отсюда вывод - условие ТЗ
>(на элемент справочника не имеется ссылок( или имеются ссылки из подчиненных справочников или регистров) или имеется ссылка элемента самого на себя).
было проигнорировано.
5)
При этом, например Контрагент может быть "свободен" от ссылок, а его договор - нет. Это вариант вообще
никак не проработан.
6)
Почему считаете, что если ссылки (строки) остались - то он не свободен?
В данном случае это повод чтобы тех, кто на него ссылается тоже двинуть куда-то (договора контрагента).
К тому же, когда ссылка в НЕЗАВИСИМОМ РЕГИСТРЕ, то согласно условию
"Если СтрокаИзВидовКонтроля<>Неопределено Тогда"
эта строка останется.
"
Спасибо! Что то прояснилось.
А что значит условие "идентификатор элемента находится в определённом диапазоне"? Уникальный идентификатор, что ли? Какие же у него диапазоны?
Честно доконца мне его разъяснить не смогли,и я отказался от задания. Спасибо за отзыв.
Читают тему
(гостей: 1)

Быстрый переход