#0
by LastSoldier
Всем привет! Пытаюсь создать свою первую внешнюю обработку, как сделать отбор для удаления только той номенклатуры на которую не были созданы документы в базе, КРОМЕ "Установки цен номенклатуры"
#1
by busy1
Запросом из регистров по котором документы делают движения. Если движений нет, запрос пустой, тогда номеклатуру удалять.
#3
by ssh2QQ6
> Пытаюсь создать свою первую внешнюю обработку... для удаления Первая обработка и сразу для удаления.
#4
by Cube
СП: Глобальный контекст (Global context) Синтаксис: НайтиПоСсылкам(<СписокСсылок>) Параметры: <СписокСсылок> (обязательный) Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти. Возвращаемое значение: Тип: ТаблицаЗначений. Возвращает ссылки на найденные объекты в виде ТаблицаЗначений. Первая колонка - исходная ссылка. Вторая колонка - ссылка на объект, если найденная ссылка соответствует объектной таблице или значение, олицетворяющее запись необъектной таблицы. Третья колонка - объект метаданных, которому соответствуют данные в которых найдена ссылка. Описание: Осуществляет поиск ссылок на объекты, переданные в параметре <СписокСсылок>.
#7
by Fish
Это нормально. Главное, чтобы вторая не была для восстановления того, что удалила первая.
#8
by LastSoldier
на тестовой проверим ) Мне надо отобрать только тот товар, на который в базе вообще нет никаких документов или есть только установка цен номенклатуры, остальные не трогать
#9
by Rie
Бред. Проверку на удаление надо не в цикле делать, а непосредственно в запросе. Ну и уж если стоит задача проверить движения - то в запросе же и проверить, были ли они.
#11
by Rie
Пройдись по метаданным. Собери те виды документов, которые могут трогать номенклатуру. Впихни в запрос. А что делать с теми, на которые были ссылки в "УстановкаЦенНоменклатуры"? Удалить - и получить битые ссылки в результате? Кроме того, на номенклатуру могут ссылаться и объекты, не делающие движений.
#12
by Rie
Ну так учись... Что тут ещё можно сказать? (Насчёт проверки помеченных на удаление - в _конструкторе запросов_ содержится как бы намёк, как проверить).
#14
by LastSoldier
вот как раз начал учиться ) мне не нужные битые ссылки. Надо чтобы только была поставлена пометка на удаление номенклатуры и все, удалю я ее сам потом
#15
by hhhh
в общем обработок писать не надо. Помечаешь всю номенклатуру для удаления. И запускаешь удаление помеченных объектов. Те, которых нет в документах удалятся, те, которые есть, останутся.
#16
by LastSoldier
я уже пробовал, мне такой вариант не подходит, остается номенклатура которая есть только в документах "установка цен", а мне ее то же надо удалить, так как движения по ней вообще в базе нет
#17
by LastSoldier
так Вы говорите, проще все то что мне надо сделать в "Запросе"? там можно и ставить пометку на удаление?
#18
by Rie
А сами документы установки цен удалять не пробовал? А почему? Если удалишь номенклатуру, которая есть в документах установки цен - висячие ссылки пойдут. А это нехорошо.
#20
by Rie
Ставить - нельзя. А проверить - можно. Насчёт проверки вида документа - см. ССЫЛКА. Но! Придётся в запросе справочник Номенклатура соединить со всеми регистрами, где он встречается. И со всеми документами, где он встречается. И со всеми справочниками, где он встречается. Это можно сделать автоматически - пробежаться по метаданным и сформировать часть текста запроса, отвечающую за соединения. Но - см. . Получишь все ссылки. Потом проверишь.
#21
by Rie
"Наш пламенный привет родным и близким. Или, говоря иными словами, родным и близким - наш пламенный привет". Угадай, как будут выглядеть эти документы (которые удалять нельзя) после удаления номенклатуры. Реши, что с ними делать. А уж потом занимайся удалением.
#22
by LastSoldier
еще раз говорю мне надо сделать только пометку на удаление номенклатуры и все. А для документов "Установка цен", у меня уже есть другая обработка которая проверяет, если номенклатура помечена на удаление, то удалить ее из установки цен и перезаписать документ. все 5 документов установки цен
#23
by LastSoldier
Я несколько раз читал Ваше сообщение, но так ничего и не понял, в теории я примерно представляю свою задачу, а вот на практике пока еще нет
#24
by Cube
На вот, готовый инструмент: Пользоваться, примерно так: Указал тип, объекта, поставил галочку "Комментировать", нажал "Пробный поиск", на все вопросы ответил утвердительно.
#25
by LastSoldier
РезультатЗапроса = Запрос.Выполнить.Выбрать; Подскажите, я не пойму почему по этому запросу он начал с буквы "П", а потом "А"? Или он берет первую созданную номенклатуру?
#26
by Rie
А какая хрен разница, с какой буквы он начал? Если надо сортировать по наименованию - так и скажи в запросе.
#27
by Cube
+ Ах да, писал сам, но давно (еще под 8.1, вроде), так что, что там и как - не помню))) Но код открыт, можешь ознакомиться.
#28
by LastSoldier
Извините что не указал ут 11. Готовый эт конечно хорошо, вот только бы понять как самому делать, а то все время на готовом ну я не знаю как должно быть, вот и спросил
#30
by Cube
Запусти свою УТ11 на обычных формах ключом "/RunModeOrdinaryApplication" и пользуйся на здоровье
#31
by Rie
Возьми НайтиСсылки. Выбери из них все, которые не установка цен (а вернее, ещё и не регистр цен). Можно сначала выгрузить во временную таблицу - а затем по ней запросом пройтись.
#36
by Serg_1960
(офф) Эх... в былые временя тут бы накидали кучу алгоритмов попоиску не используемых позиций номенклатуры и устроили состязания на тему, чей алгоритм самый быстрый...
#37
by LastSoldier
А можно просмотреть список всех ссылок номенклатуры? Элемент.НайтиСсылки; ну так чет не работает, еще не могу понять где их смотреть. Смотрел в РезультатЗапроса.Ссылка, так там нет установки цен
#38
by Rie
У НайтиСсылки - параметры есть. Ну и не поэлементно искать надо, а сразу массив из всех сунуть в качестве параметра. Не РезультатЗапроса.Ссылка, а в запросе (если документы в запросе перебираешь, а не по НайтиСсылка) - Регистратор ССЫЛКА Документ.УстановкаЦенНоменклатуры.
#42
by LastSoldier
Как-то так получилось, только тут поругался "НЕ Номенклатура.ЭтоГруппа" (Но можно было игнорить)
#45
by LastSoldier
Пишет неоднозначное поле "НЕ Номенклатура.ЭтоГруппа", если го удалить, то пишет неоднозначное поле "ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка"
#46
by Rie
Зачем ЛЕВОЕ СОЕДИНЕНИЕ? Замени на ВНУТРЕННЕЕ. И не майся с группой - в регистре их не будет, а если соединение - внутреннее, то и в результат запроса группы не попадут. Ошибка у него в другом - Номенклатура непонятно откуда берётся - но ли это имя таблицы (КАК), то ли имя поля (и из какой таблицы).
#48
by Rie
Всяко неоднозначное. Переименуй таблицу в спрНоменклатура, к примеру. И имена таблиц перед именами полей указывай (через точку).
#49
by LastSoldier
Вот я как раз и не могу понять как получить этот СписокСсылок (не для всех товаров сразу, а для каждого отдельно), для НайтиПоСсылкам(<СписокСсылок>);
#51
by FIXXXL
это лучше под Если ТабСсылок.Количество >0 тогда убрать нифиг базу без толку дергать :)
#52
by LastSoldier
вот, оцените внешнюю обработку и скажите замечания. Она сразу проверяется всю номенклатуру
#54
by LastSoldier
Если (ДРегистры="Установка цен номенклатуры") или (ДРегистры="Группы значений доступа") или (ДРегистры="(не используется) Группы значений доступа") Тогда
#55
by LastSoldier
Подскажите как сделать двойной цикл, мне надо обходить сначала по элементам массива(название номенклатуры), а потом обходить ссылки этой номенклатуры, пробовал так "Для Индекс=МассивСсылок.Найти(Элем) ПО Индекс=Индекс+1 цикл"
#56
by Рэйв
Для Каждого Элемент Из ТвойМассив Цикл КонецЦикла А как ты собираешься внутри одного названия обходить ссылки? Дубли ищешь чтоли?
#57
by LastSoldier
ну я когда по циклу беру первый элемент (название номенклатуры), потом мне надо по другому циклу обходить его ссылки и смотреть, если они подходят под условие ДРегистры=ТабСсылок.Получить(Индекс).Метаданные.Синоним; Если (ДРегистры="Установка цен номенклатуры") или (ДРегистры="Группы значений доступа") или (ДРегистры="(не используется) Группы значений доступа") Тогда и других ссылок на этот элемент нету, то пометить его на удаление, а если есть другие ссылки, то перейти к следующему элементу и тд
#58
by LastSoldier
Если (ДРегистры="Установка цен номенклатуры") или (ДРегистры="Группы значений доступа") или (ДРегистры="(не используется) Группы значений доступа") Тогда Просто если брать так, то эта обработка отрабатывает за двое суток примерно, я так и не дождался, я хочу ускорить ее работу, добавив в массив ссылки не 1 элемента, а сразу 100 элементов
#59
by LastSoldier
скажите, в НайтиПоСсылкам(<СписокСсылок>, <ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>) , работают "ИсключитьОбъекты"? а то как не пишу, выдает ошибку Ошибка {Форма.Форма.Форма}: Ошибка при вызове метода контекста (НайтиПоСсылкам) ТабСсылок = НайтиПоСсылкам(МассивЭлементов,,,МассивИскл); по причине: Несоответствие типов (параметр номер '4')
#61
by LastSoldier
Вот уже готовое решение если кому интересно &НаСервере Если (ДРегистры="Установка цен номенклатуры") или (ДРегистры="Группы значений доступа") или (ДРегистры="(не используется) Группы значений доступа") Тогда
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Отбор "характеристики номенклатуры" по "группе номенклатуры"
- Как программно проверить, есть ли в базе ссылки на элемент номенклатуры?
- Проверка существования процедуры
- Проверка на заполнение полей таблчного поля документа?
- Проверка 2-НДФЛ
- Проверка на дублирующие строки
- как в подборе номенклатуры вывести остатки по сериям номенклатуры
- Как в 1С8 можно расчитать цены номенклатуры контрагента из цен номенклатуры
- как сделат чтоб в печатную форму возле номенклатуры отображался код номенклатуры
- проверка уникальности артикула при создании номенклатуры
- Обработка подбор номенклатуры (поиск по любому слову номенклатуры )
- ЭДО УТ11. Сопоставление номенклатуры и номенклатуры поставщика в разных базах
В этой группе 1С
- ЗуП Оклад по дням: Нет рабочих дней в заданном периоде как лечить?
- СКД условное оформление (Выделение итогов жирным)
- 8.2 - в таблицу значений записать обратившись к колонке не по имени а к индексу
- БП 8.2: нумерация не по порядку
- выбрать всю номенклатуру по складу у которой не остатков
- УТ11 внутреннее потребление товаров - как списать на расходы
- ВыборкаДанных в ПВД Конвертации данных
- Гурам MS SQL Отказоустойчивый кластер AlwaysOn
- Итоги жирным шрифтом через скд
- v7: общая файловая ошибка при доступе к PrnForms
- ТекущаяДатаСеанса() на час больше, чем ТекущаяДата()
- Получить управляемую форму внешней обработки
- УПП 1.3 сохранение данных ТТН.
- Посоветуйте конфигурацию для ведения учета в сети магазинов
- СКД: Как рассчитать вычисляемые поле, независимо от выбранных группировок
- imagemagic. Не удается получить свойства картинки
- УТ 11 создание документа Установка цен номенклатуры
- В СКД при установке в запросе метода дополнения Движения
- Начисления зарплаты по договорам подряда попадают в 4 фсс как суммы не подлежащи
- v7: Ребят подскажите по загрузке из клиент банка в 1 С 7.7