Можно ли скрыть помеченные на удаление объекты номенклатуры?

1. RDC 18.06.12 11:05 Сейчас в теме
Здравствуйте!
В номенклатуре, есть много объектов помеченных на удаление.
Можно ли их как то скрыть, что бы они не участвовали в отборе?
Удалить не получается, цепляется за всякие другие документы.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Поручик 4658 18.06.12 11:15 Сейчас в теме
(1) На зачем было помечать, если есть ссылки в других объектах?
4. RDC 18.06.12 11:16 Сейчас в теме
(3) Поручик, они тогда в поиске будут искаться
6. RDC 18.06.12 11:22 Сейчас в теме
(3) Поручик, а какие ещё варианты? Товар не актуален, пометили на удаление, а он не удалился, так и оставили, что бы хоть визуально видно было.
7. Поручик 4658 18.06.12 11:23 Сейчас в теме
(6) Если товар не актуален, можно создать отдельную папку "Неактуальные товары"
8. RDC 18.06.12 11:35 Сейчас в теме
(7) Поручик, ну он же всё равно будет искаться! Или нет?
9. bitnike 73 18.06.12 11:42 Сейчас в теме
(8) RDC,
Пример кода где тебе не нужно чтобы он искался.
Если по списку справочника ищешь, поставь первый символ какойнить в наименовании и не будет искаться при наборе символов.
OksDallas; +1 Ответить
10. RDC 18.06.12 11:46 Сейчас в теме
(9) bitnike, в принципе так и есть. У нас везде стоят буквы я. Но сейчас у нас уже помеченных на удаление "яшек" больше чем актуальных товаров. И это здорово тормозит поиск.
17. Qbik 5 27.09.12 14:11 Сейчас в теме
(10) RDC, Это же помойка, а не справочник номенклатуры, когда помеченных больше обычных элементов. А учет нормально ведется, это вообще нормально? Если период большой в базе уже, может свернуть ее и цепляться при удалении незачто будет.
2. shomo 18.06.12 11:09 Сейчас в теме
Предлагаю самый простой вариант. Создать папку. Назвать ее "Удаленные" и обработкой или ручками перенести туда все помеченные на удаление. Это самый простой способ.
5. RDC 18.06.12 11:20 Сейчас в теме
(2) shomo, они тогда в поиске будут искаться
13. dusha0020 1117 18.06.12 13:52 Сейчас в теме
(2) shomo, Иногда поиск нужно вести по всему справочнику (по коду или наименованию) так как группы не помнишь.
В дополнение к отдельной папке еще добавляю "я_" к коду и/или наименованию спереди. Все падает на дно списка и не мешает нормальному выбору.
Извиняюсь, мой "велосипед" уже был предложен:)
14. shomo 18.06.12 15:54 Сейчас в теме
(13) dusha0020, тогда уже необходимо применять ИспользоватьСписокЭлементовЮ предварительно отобрав нужные элементы справочника( в нашем случае - не помеченные на удаление). И увидим мы только непомеченные, и от бор будет только из непомеченных на удаление.
15. dusha0020 1117 18.06.12 16:18 Сейчас в теме
(14) shomo, Немного геморройно так будет. Само формирование списка будет занимать достаточно много времени, а проблема еще в том что там у них тормозит все. Я бы это делал тогда через СохранитьЗначение() некой переменной, которая бы заполнялась при старте системы 1 раз и обновлялась(перезаписывалась) при удалении/добавлении элементов справочника. Тогда на формирование списка будет потрачено время только один раз и все в дальнейшем будет работать быстро через ВосстановитьЗначение() этого списка и установку его в форме.
Но (11) - это тоже достаточно быстро и не нужно писать процедуры заполнения и обновления списка. Так что пусть уж автор сабжа выбирает или поэксперементирует двумя способами.
11. bitnike 73 18.06.12 11:58 Сейчас в теме
Можно добавить новый реквизит ПомеченНаУдаление и заполнить 1 для тех у кого стоит пометка и 0 у кого не стоит. При открытии списка справочника устанавливать отбор у кого ПомечанНаУдаление = 0
50. slayer-ekb 15 18.10.24 06:53 Сейчас в теме
(16)
(11) Можно же на Пометка удаления так же отбор сделать, нахрена еще один реквизит!?
12. 11k65m 6 18.06.12 12:02 Сейчас в теме
Соглашусь с shomo, создать папку и переместить туда. Смысл поиска без группировки по группам, там весь список вывалится, и помеченные и с я. А остальное все разложить по группам. Можно "Быстрый поиск .." реализовать, на данном сайте вопрос уже решался.
16. sae74 18.06.12 16:43 Сейчас в теме
В справочник добавь новый реквизит "Актуален", в свойствах установи флажок "Отбор по реквизиту"

Приоткрытии() добавь
		УстановитьОтбор("Актуален",Перечисление.ДаНет.Да);
		Сортировка("Наименование",1);  


Потом в помеченных на удаление поставь Перечисление НЕТ, а в не по меченых "ДА"
victor_k; Greek26rusa; +2 Ответить
19. victor_k 95 28.09.12 10:47 Сейчас в теме
(16) sae74, Это лучшее решение проверял....
21. EdwardXot 29.09.12 18:42 Сейчас в теме
(19) victorkim64, полностью согласен. (16) - лучшее, а главное самое быстрое, другие будут гораздо медленнее. Единственный минус - отбором по другому реквизиту не воспользуешься.
23. vcv 89 29.09.12 20:08 Сейчас в теме
(21) Есть еще один минус отбора. При включенном отборе сортировка делается только по наименованию. Не во всех случаях это приемлимо.
18. firuzji 27.09.12 20:57 Сейчас в теме
Проще на самом деле, переместить обработкой в папку, а при поиске пропускать помеченные на удаление.
20. foxey 4 28.09.12 11:43 Сейчас в теме
Как я понимаю, надо чтобы в поиске номенклатуры по подстроке наименования не выбирались элементы, помеченные на удаление? Смотрим обработку, которая занимается поиском. У меня это "Обработка.ВыборИзСправочникаПоПодстроке". Находим там процедурку "ПоискПоПодстроке", исправляем текст запроса таким вот образом:
	ТекстЗапроса ="
	|ТекущийЭлемент = Справочник.*.ТекущийЭлемент;" + 
	РеквизитПоиска + " = Справочник.*." + РеквизитПоиска + ";
	|Группировка ТекущийЭлемент Без Упорядочивания Без Групп;
	|Условие(Найти(ВРег(" + РеквизитПоиска + "),ВРег(ПодСтрокаПоиска))>0); 
	|Условие(ТекущийЭлемент.ПометкаУдаления() = 0);
	|Без итогов;";           

Теперь помеченные на удаление не попадают в список выбора.
По-хорошему, надо бы сделать галочку "Включать помеченные на удаление" на форме поиска и текст запроса несколько подправить:
	ТекстЗапроса ="
	|ТекущийЭлемент = Справочник.*.ТекущийЭлемент;" + 
	РеквизитПоиска + " = Справочник.*." + РеквизитПоиска + ";
	|Группировка ТекущийЭлемент Без Упорядочивания Без Групп;
	|Условие(Найти(ВРег(" + РеквизитПоиска + "),ВРег(ПодСтрокаПоиска))>0); ";
	Если ПустоеЗначение(ВключатьПомеченныеНаУдаление) = 1 Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|Условие(ТекущийЭлемент.ПометкаУдаления() = 0);";
	КонецЕсли;
	ТекстЗапроса = ТекстЗапроса + "
	|Без итогов;";           
Показать
22. KillHunter 8 29.09.12 19:24 Сейчас в теме
можно легко, скрыть, только надо добавить доп. реквизит, по которому будет выполняться отбор, это самый простой вариант!
24. nikk911 03.10.12 14:28 Сейчас в теме
Самый красивый вариант = самый сложный.
Перенести все в новую базу.(Итоги, справочники, ...). Я переносил тмц по которым был оборот последние 6 месяев.
Сразу скажу задача не очень простая, но очень полезная.
Требует адекватного главного бухгалтера и вашего с гл.бухом времени.
25. RDC 03.10.12 14:32 Сейчас в теме
(24) nikk911, а как же остальные документы? Контрагенты? Проекты?
У нас база с 2006 года. Там караул сколько надо переносить.
26. ivsher 03.10.12 15:11 Сейчас в теме
Помоему лучшим решение будет использовать компоненту для множественного отбора. Прехватываете стандартный запрос, и исключаете помеченные на удаление.
27. nikk911 03.10.12 20:04 Сейчас в теме
Есть типовые обработки по загрузке-выгрузке справочников и документов.
После переноса метите на удаление все элементы справочника ТМЦ и вас удалится весь старый товар (по которому нет остатков и кот. не использовался в документах). Какой период документов переносить можете решить только Вы исходя из специфики предприятия (3мес, 6мес, год).
Самое забавное это сальдо. Поэтому его желательно брать на тот период который уже закрыт.
Вам придется потренироваться для начала, а потом потратить выходные на перенос.

Переносить или нет решать Вам. Решающую роль в этом вопросе играет размер базы и скорость ее работы.
При этом я бы воспользовался советом старый товар забрасывать в отдельную папку. (проще смотреть есть ли висяки на складе). Одним словом вариантов было предложено достаточно. Выбор за Вами! ))
28. Roman100 05.10.12 10:36 Сейчас в теме
Переместить в папку "Ненужные"
29. skurser 17.10.13 07:07 Сейчас в теме
Я пользовался этой http://infostart.ru/public/164546/. Как и советовали Выше, создал папку удалённые и этой обработкой перенёс.
30. Gkmy 28 17.10.13 08:13 Сейчас в теме
skurser, спасиб.. очередной радикально так и неразобранный memorys [1] оживил. По теме: ВК предлагать? ;)
31. alexstav 15 22.10.13 11:02 Сейчас в теме
Я делал Обработку при начале работы системы которая устанавливала в помеченной Номенклатуре признак "не включать в прайс". А в справочнике номенкллатура при открытии() устанавливал отбор "не включать в прайс" = 0
32. Гость 08.04.14 16:44
можно в форме выбора/списка (где надо исключить помеченные на удаление) добавить в процедуру ПриОткрытии()
СправочникСписок.Отбор.ПометкаУдаления.Значение = Ложь;
СправочникСписок.Отбор.ПометкаУдаления.Использование = Истина;

ну и на форму вынести в таблицу колону - ПометкаУдаления
33. foxey 4 17.06.14 15:26 Сейчас в теме
(32) Тут как бы обсуждение семерки идет...
34. antares2010 29.12.14 11:13 Сейчас в теме
Вот тут http://kb.mista.ru/article.php?id=43 в конце об этом написано. Но как-то невнятно. Может быть кто напишет развёрнуто?
35. Cooler 22 29.12.14 11:23 Сейчас в теме
(34) Так развернуто прямо в статье, только парой абзацев выше:
Чтобы реализовать этот режим показа товаров в списке, в справочник номенклатуры мы добавим индексируемое поле "Показ", которое говорит системе 1С, показывать ли данный элемент в форме списка, или нет. Чтобы этот режим возымел действие, в форме списка справочника мы используем метод УстановитьОтбор() по реквизиту - и тогда скроются все ненужные пользователю элементы из списка. Пример реализации - см. там же.


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

Надеюсь, теперь понятно? Если нет, то совсем просто: вводим в справочник поле "Показ" и при необходимости устанавливаем по нему отбор. Значением поля управляем в предопределенной процедуре глобального модуля ПриУдаленииЭлемента().

Минусы такого решения очевидны, но не обязательно они будут вам мешать: если нужны другие отборы, то получаем фигвам.
36. antares2010 30.12.14 07:33 Сейчас в теме
Есть ещё вот такой вариант http://infostart.ru/public/146525/ и даже работает, но как-то "криво". Во первых почему то пропала возможность добавлять новые элементы, и поиск при наборе на клавиатуре названия номенклатуры производится не по всему справочнику, и притормаживает.
37. Roman100 15.01.15 11:52 Сейчас в теме
Самый лучший вариант переместить в папку "Скрытые" и при открытии справочника скрывать эту папку программно.
38. antares2010 15.01.15 13:32 Сейчас в теме
Каким образом скрывать папку?
39. vcv 89 15.01.15 15:11 Сейчас в теме
(38) antares2010, Папку (как и удалённые) можно скрыть посредством ИспользоватьСписокЭлементов. Но это довольно тормозной вариант.
40. kudenzov 71 23.01.15 22:09 Сейчас в теме
ToySQL В помощь для SQL базы
Там есть функция ДобавитьЗамену (для замены запросов)

        
...
лФильтр = "ISMARK = 0";
флАктивна = 1;

	z1c = "Sel ect COUNT(*) fr om SC33(NOLOCK) where PARENTID=? and ((ISFOLDER=? and CODE=? and ROW_ID<=?) or (ISFOLDER=? and CODE<?) or (ISFOLDER<?))";
	new = "Select COUNT(*) fr om SC33(NOLOCK) wh ere PARENTID=? and "+лФильтр+" and ((ISFOLDER=? and CODE=? and ROW_ID<=?) or (ISFOLDER=? and CODE<?) or (ISFOLDER<?))";
	Компонента.ДобавитьЗамену(z1c, new, флАктивна);
...
Показать
41. julorl 18 28.01.15 15:04 Сейчас в теме
у нас в базе просто время от времени делается свертка. Выделяется отдельная база по прошлому периоду а в актуальной остаются остатки на начало и справочники - тут уже можно удаление запускать - лишние помеченные уйдут.
и переносить ничего не надо и база меньше и старые данные можно найти (просто в отдельной базе)
42. kiser 28.01.15 16:44 Сейчас в теме
Мы обычно вместо стандартного выбора из справочника используем подбор обработкой. Этот подбор вызывается вместо формы списка/выбора справочника. В обработке просто на форме таблица значений. При открытии ее заполняем как нам угодно и видим только то, что нужно. И никаких танцев с бубном вокруг справочника и ВК.
43. Frogger1971 28.01.15 23:14 Сейчас в теме
(42) kiser, а сколько у вас строк в ТЗ получается? сколько пользователей через RDP работает и какой размер базы?
(1) может вместо того, чтобы "мучать" 1С - придумать стандартизацию самой работы, если у вас ТАКОЕ количество удаленных позиций?
45. kiser 10.03.15 15:17 Сейчас в теме
(43) Frogger1971, баз много, объемы и количество пользователей тоже разное. Размер ТЗ значения не имеет, т.к. она заполняется 1 раз и потом скролится быстро уже заполненная.
Главное чтобы работали именно через RDP.
В любом случае если в подборе, будь то форма списка справочника, или еще что-то нужно видеть остатки то без запросок к бух. итогам и/или регистрам не обойтись. И в этом случае заполнить ТЗ 1 раз при открытии и показать готовую получается более производительно, чем в форме списка справочнника делеть текстовую колонку для остатков с функцией возвращающей этот остаток при любом движении в форме.
Ну и плюс влякие плюшки с любыми отборами и фильтрами при заполнении ТЗ.
44. vcv 89 29.01.15 05:29 Сейчас в теме
Можно не скрывать, а, завести в справочнике реквизит для сортировки. Назвать, например, ЗначениеСортировки. Заполнять его регламентной процедурой ночью, ну и при изменении пометки на удаление. Что бы все помеченные уползли в конец списка.
46. kir-24 13.01.16 15:36 Сейчас в теме
Если кому еще актуально, визуально скрыть элементы справочника помеченные на удаление для обычной формы:
Процедура ПриОткрытии()
ЭтаФорма.ЭлементыФормы.СправочникСписок.НастройкаОтбора.ПометкаУдаления.Доступность = Истина;
ЭтаФорма.Отбор.ПометкаУдаления.Использование = Истина;
КонецПроцедуры
cleaner_it; February; PZh1753; +3 Ответить
47. Chameleon1980 13.01.16 16:55 Сейчас в теме
48. Sanario 27 19.01.16 15:46 Сейчас в теме
(47) Chameleon1980, он привыкший)))
49. deutsch2008 15.09.17 22:28 Сейчас в теме
(46) А как скрыть группу которая помечена на удаление? Что бы она не отображалась в форме списка справочника?
51. slayer-ekb 15 18.10.24 06:56 Сейчас в теме
(49) В условном оформлении: отображение и видимость - условие - Пом.Уд. = Истина, поля - пусто
52. slayer-ekb 15 18.10.24 06:59 Сейчас в теме
Лучше самый простой способ - папка (которую тоже можно скрыть, да хоть тоже пометить на удаление), элементам добавить символ впереди типа: яя_. И все. Нафиг все навороты, обработчики, тем более внешние компоненты - это все лютые просадки по производительности! В форме выбора скрыть папку, как написал в комментарии выше (В условном оформлении: отображение и видимость - условие - Пом.Уд. = Истина, поля - пусто) - и все, и нечего ковыряться в одном месте
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот