Запрос всех строк номенклатуры из всех табличных частей всех документов #647660


#0 by fazendoid
Добрый день, есть задача, моск уже не варит. Нужно: 1. Взять все документы (ну это ясно, метаданные конфы). 2. Вытащить их табличные части (тут метаданные доков), 3. в которых есть строки с номенклатурой (Товары, Услуги, Материалы и т.п. — не ясно) 4. Сочленить эту номенклатуру в один список (объединяем). 5 (не обязательный). Пометить номенклатуру, отсутствующую в списке из пункта 4 на удаление. Вот по отдельности всё вроде как ясно, а сочленить в рабочее решение не получается. Никто не сталкивался с таким? Или, может, я вообще велосипед изобретаю?
#1 by ДенисЧ
НайтиПоСсылкам :-)
#2 by lefthander
Может надо пометить не используемую номенклатуру на удаление?
#3 by Нуф-Нуф
получить массив всей номенклатуры, получить на них ссылки, отобрать с ссылками в документах. остальные удалить
#4 by fazendoid
Едрать... Всё, вопрос отпал :) Огромное спасибо, вы предотвратили появление очередного веломобиля))
#5 by vtolga
Только Доолго будет...
#6 by Нуф-Нуф
долго понятие растяжимое и относительное
#7 by vtolga
Модет, вместо документов обороты по каким-нибудь регистрам проанализируешь?
#8 by fazendoid
Да я думаю, что мозголомки с этим не меньше будет
#9 by fazendoid
В общем, такая шняга получилась :) :
#10 by fazendoid
Тьфу, дебажные сообщения забыл удалить :). И у меня такое ощущение, что строк маловато выводит(
#11 by Defender aka LINN
Дебажные сообщения, my ass... Про отладку не слышали, не?
#12 by КуплюКровать
пометь на удаление всю номенклатуру, запусти удаление помеченых, потом сними пометку. Че удалится - то без ссылок было. Одна проблема, нужно сохранить пометки удаления, которые были до проведения этой операции. Но это, думаю догадаешься как
#13 by fazendoid
Да я это пишу и запускаю в микроредакторе в клиентском режиме — так побыстрее и попроще получается. И что-то у меня не получается подцепить отладчик на внешнюю обработку. ЧЯДНТ?
#14 by fazendoid
Только не пойму, почему список не упорядочивается?
#15 by fazendoid
Да это в первую очередь нужно для человека, который шерстит номенклатуру на предмет неиспользуемости — вывести ему отчет, какая нома где используется. А удаление — это уже полезная хфича
#16 by mxs089
|УПОРЯДОЧИТЬ ПО Таблицы.Номенклатура.Наименование
#17 by fazendoid
Спасибо, сам бы не додумался. По ссылкам типа не сортирует?
#18 by Jstunner
сортирует. По индентификатору ссылки
#19 by Reset
Что-то я не понял... Вроде и ответ дали и автор ему обрадовался, а таки прет по старому пути :???:
#20 by fazendoid
Это из любопытства всё Как-то не как надо работает, в конечный список попадают-таки номенклатуры с документами.
#21 by Reset
Из любопытства, хм. Тогда не забудь еще собрать всё из справочников, где номенклатура может в реквизитах быть и в табличных частях, в регистрах сведений (без регистратора особенно). Да и в регистрах накопления технически может быть, даже если в дркументах есть (напр документ КорректировкаЗаписей РегистровНакопрления без табл частей). Регистры бухгалтерии (бух операция может там оставить двежения).
#22 by Reset
читать "даже если в документах нет"
#23 by Reset
Лень анализировать, бросилось в глаза Если Реквизит.Имя = "Номенклатура" Тогда Это неверно, проверять надо не по имени реквизита, а по типу.
#24 by fazendoid
Явно ведь не так, да? Как правильно, не подскажите?
#25 by Reset
ТипНоменклатура=Тип("СправочникСсылка.Номенклатура"); ... Если Реквизит.Тип.СодержитТип(ТипНоменклатура)
#26 by fazendoid
Спасибо :)
#27 by fazendoid
Теперь другой путь: И получаем: У нас ведь таблица создается путем выгрузки результатов запроса, типы должны быть расставлены. Почему так?
#28 by DrShad
какого запроса?
#29 by fazendoid
Запрос0, там же только одна такая конструкция
#30 by Reset
Она не может быть типозована, там разные типы в строках могут быть
#31 by Reset
типизована*
#32 by Reset
Создай свою тз с типизованной колонкой и перекай в нее ссылки.
#33 by Reset
перекачай* что же этакое со мной
#34 by Reset
Следующая ошибка у тебя в строке "ГДЕ НЕ Номенклатура.Ссылка В ВТ"
#35 by Reset
для "в" нужна выборка из ВТ или вместо "в" соединение исполльзовать
#36 by Reset
"ПОМЕСТИТЬ ВТ" совсем лишнее во второй части запроса. Короче все плохо :)
#37 by fazendoid
Почему-то временная таблица у пустая :(
#38 by fazendoid
ТЗ при этом заполнена
#39 by Reset
Как определил что пустая?
#40 by fazendoid
Косвенно
#41 by Reset
Если честно, для одноразовой обработки я вообще с запросом не заморачивался СсылкиНоменклатуры.Индексы.Добавить("Ссылка"); Для каждого СтрНоменклатуры из ВсяНоменклатура цикл
#42 by fazendoid
Я бы, наверное, тоже не заморачивался. Если бы умел это делать :) И если бы это не было частью самообучения. Хм, Временная все-таки заполнена, я перепроверил.
#43 by Reset
Как то странно, если ТЗ не пустая. Или я в упор не вижу какого-то косяка, хз, но на вид выборка в вт нормальная. Можно добавить Выразить, но моему, это не должно влиять. ВЫБРАТЬ Выразить(НоменклатураПоСсылкам.НоменклатураСсылка Как Справочник.Номенклатура) КАК НоменклатураСсылка
#44 by Reset
Ну блин :)
#45 by Maxus43
Проанализировать регистры то не предлагали?
#46 by Reset
Предлагали :)
#47 by Reset
Вообще, если цель удалить все неиспользуемые, можно обойтись без обработок (ну почти) :) 1. Пометить на удаление ВСЕ. 2. С помощью платформенной "удаление помеченных объектов" удалить все что удастся. 3. Снять пометку у ВСЕХ.
#48 by fazendoid
Это-то мне в голову и не пришло :) А есть ли обработка для автоматной замены дублирующихся объектов? Например, у нас из-за переноса из 7.7 предыдущим одмином образовались дублирующиеся ЕдиницыИзмерения (да и не только они). Один элемент пометили на удаление, второй остался. И на него ссылка. В общем, находим элементы с теми же значениями реквизитов, тока помеченные на удаление, и заменяем ссылки на тот объект, который на удаление не помечен. Ну или как-то так. [Ушел писать обработку… :-D]
#49 by Reset
есть обработка ПоискИЗаменаЗначений
#50 by Reset
не очень хорошо, т.к. при установке пометки могут сработать различные события, подписки, которые могут сделать что-то не то
#51 by fazendoid
Она ж вручную по одному заменят, если не ошибаюсь? А у меня их тут много. Сильно много
#52 by fazendoid
Я кажется понял, что не так. НайтиПоСсылкам выводит ведь абсолютно любые ссылки на объект? А номенклатуры, на которую ничего не ссылается просто быть не может - как минимум будет заполнено поле единиц измерения, и в ЕдиницыИзмерения.Владелец — ссылка на наш объект. В итоге получаем две идентичные таблицы Справочник.Номенклатура и ВременнаяТаблица. [Много, много ругательных слов]
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С