Архив элементов в 1С

11.08.25

Задачи пользователя - Подбор и обработка объектов

В архив помещаются неактуальные элементы справочников. Тем самым появляется возможность выводить в справочнике для просмотра и выбора только актуальные в данный момент данные. Работает для всех справочников.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Архив элементов в 1С
.cfe 57,21Kb
9 3 400 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Скрытие элементов работает автоматически для всех форм справочников и планов видов характеристик.

Примечание: Для форм, где есть вызов в ПриСозданииНаСервере() функционала подключаемых команд (в последних продуктах 1С практически везде подключаемые команды вызываются в формах, в часто используемых точно: Договоры, Номенклатура, Склады, Контрагенты, Банковские счета, Подразделения и т.д.).

 

Рис.1 Кнопка [Показать элементы находящиеся в архиве] в формах списка и выбора 

 

Рис.2 Включение/Отключение секции с информацией об архивации (меню формы - Ещё - Изменить форму - группы "Данные в архиве")

 

Рис.3 Кнопка [Помещение элемента в архив] в формах элементов

 

Возможности расширения

  • Поместить элемент в архив - открыть его форму и в командной панели нажать кнопку [Помещение элемента в архив], картинка изменится с  на 
  • Возвратить элемент из архива - открыть его форму и в командной панели нажать кнопку [Помещение элемента в архив], картинка изменится с  на 
  • Показать все элементы в списке - в форме списка в командной панели нажать кнопку [Показать элементы находящиеся в архиве], картинка изменится с  на 
  • Скрыть архивные элементы в списке - в форме списка в командной панели нажать кнопку [Показать элементы находящиеся в архиве], картинка изменится с  на  

Права доступа

Возможность помещать/возвращать элементы из архива имеют пользователи с ролями: Полные права или Добавление изменение данных в архиве (Расширение: Данные в архиве).

Остальным пользователям должна быть назначена роль Чтение данных в архиве (Расширение: Данные в архиве).

Работоспособность расширения

Создавалось и тестировалось решение на платформе 1С:Предприятие 8.3.21.1607

Режим совместимости расширения от версии платформы 8.3.14 и выше.

Работа проверялась в программах:

  • 1С:ERP Управление предприятием 2 (2.5.6.290) 
  • 1С:Управление торговлей, редакция 11 (11.4.12.109)
  • 1С:Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.17.171) 
  • 1С:Управление холдингом, редакция 3.2 (3.2.2.5)
  • 1С:Бухгалтерия предприятия, редакция 3.0 (3.0.116.27) 
  • 1С: Розница, редакция 2.3.13.30

- будет работать и на других продуктах 1С построенных на основе библиотеки стандартных подсистем. Во всех клиентах: тонкий, толстый, веб.

Работает и для форм, где список не на базе произвольного запроса, подменяя на произвольный запрос

 

Состав расширения

4 общих модуля, 4 картинки, 1 регистр сведений

 

Примечание

В версии платформы 8.3.22 есть возможность связи по УникальномуИдентификатору(...). Я такой код вставил, но он отключен, т.к. сам работаю на 8.3.21. Связь у меня по коду и наименованию (не супер решение, жду нормальную 8.3.22, чтобы по УИ связать)

Запрет выбора и ввода по строке, помещенных в архив элементов на примере справочника номенклатура

 
 Пример

 


&Вместо("ОбработкаПолученияДанныхВыбора")
Процедура дава_ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	дава_НоменклатураОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка);
	
	ПродолжитьВызов(ДанныеВыбора, Параметры, СтандартнаяОбработка);      
	
КонецПроцедуры

Процедура дава_НоменклатураОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	// Получим структуру возможных полей отбора справочника номенклатуры
	СтруктураРеквизитов = ЗначениеНастроекПовтИсп.РеквизитыСправочника("Номенклатура");
	
	Запрос        = Новый Запрос;
	СтрокаПоиска  = Параметры.СтрокаПоиска;
	УсловиеОтбора = "ИСТИНА";
	
	Для Каждого КлючИЗначениеОтбора Из Параметры.Отбор Цикл
		Если СтруктураРеквизитов.Свойство(КлючИЗначениеОтбора.Ключ) Тогда
			УсловиеОтбора = УсловиеОтбора + "
				|	И СпрНоменклатура." + КлючИЗначениеОтбора.Ключ + " В (&" + КлючИЗначениеОтбора.Ключ + ")";
			Запрос.УстановитьПараметр(КлючИЗначениеОтбора.Ключ,КлючИЗначениеОтбора.Значение);
		КонецЕсли;
	КонецЦикла;
	
	Если НЕ Параметры.Отбор.Свойство("ЭтоГруппа") И Параметры.Свойство("ВыборГруппИЭлементов") Тогда
		Если Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда
			УсловиеОтбора = УсловиеОтбора + "
				|	И СпрНоменклатура.ЭтоГруппа";
		ИначеЕсли Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы Тогда
			УсловиеОтбора = УсловиеОтбора + "
				|	И НЕ СпрНоменклатура.ЭтоГруппа";
		КонецЕсли;
	КонецЕсли;
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	СпрНоменклатура.Ссылка,
	|	СпрНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
	|	СпрНоменклатура.Наименование КАК ПредставлениеСовпадения,
	|	0 КАК Порядок,
	|	СпрНоменклатура.Код КАК ПредставлениеНоменклатуры,
	|	СпрНоменклатура.ЭтоГруппа
	|ПОМЕСТИТЬ НоменклатураПоиск
	|ИЗ
	|	Справочник.Номенклатура КАК СпрНоменклатура
	|ГДЕ
	|	СпрНоменклатура.Наименование ПОДОБНО &СтрокаПоиска
	|	И &УсловиеОтбора
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	СпрНоменклатура.Ссылка,
	|	СпрНоменклатура.ПометкаУдаления,
	|	СпрНоменклатура.Код,
	|	1,
	|	СпрНоменклатура.Наименование,
	|	NULL
	|ИЗ
	|	Справочник.Номенклатура КАК СпрНоменклатура
	|ГДЕ
	|	СпрНоменклатура.Код ПОДОБНО &СтрокаПоиска
	|	И &УсловиеОтбора
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	СпрНоменклатура.Ссылка,
	|	СпрНоменклатура.ПометкаУдаления,
	|	СпрНоменклатура.Артикул,
	|	2,
	|	СпрНоменклатура.Наименование,
	|	NULL
	|ИЗ
	|	Справочник.Номенклатура КАК СпрНоменклатура
	|ГДЕ
	|	СпрНоменклатура.Артикул ПОДОБНО &СтрокаПоиска
	|	И &УсловиеОтбора
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	НоменклатураПоиск.Ссылка,
	|	МИНИМУМ(НоменклатураПоиск.Порядок) КАК Порядок
	|ПОМЕСТИТЬ НоменклатураПоПорядку
	|ИЗ
	|	НоменклатураПоиск КАК НоменклатураПоиск
	|
	|СГРУППИРОВАТЬ ПО
	|	НоменклатураПоиск.Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 50
	|	НоменклатураПоиск.ПометкаУдаления КАК ПометкаУдаления,
	|	НоменклатураПоиск.Ссылка КАК Ссылка,  
	|	НоменклатураПоиск.Порядок КАК Порядок,
	|	НоменклатураПоиск.ПредставлениеСовпадения КАК ПредставлениеСовпадения,
	|	НоменклатураПоиск.ПредставлениеНоменклатуры КАК ПредставлениеНоменклатуры
	|ИЗ
	|	НоменклатураПоПорядку КАК НоменклатураПоПорядку
	|		ЛЕВОЕ СОЕДИНЕНИЕ НоменклатураПоиск КАК НоменклатураПоиск
	|		ПО НоменклатураПоПорядку.Ссылка = НоменклатураПоиск.Ссылка
	|			И НоменклатураПоПорядку.Порядок = НоменклатураПоиск.Порядок
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.дава_АрхивированныеДанные КАК дава_АрхивированныеДанные
	|		ПО УникальныйИдентификатор(НоменклатураПоПорядку.Ссылка) = дава_АрхивированныеДанные.УИОбъекта
	|   
	|   ГДЕ ЕстьNULL(дава_АрхивированныеДанные.Помещен, Ложь) = ЛОЖЬ  
	|   
	|УПОРЯДОЧИТЬ ПО
	|	Порядок,
	|	ПредставлениеСовпадения,
	|	ПредставлениеНоменклатуры";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеОтбора" ,УсловиеОтбора);
	
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("СтрокаПоиска", СтрокаПоиска + "%");
	
	ДанныеВыбора = Новый СписокЗначений;

	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		ТекстЗначения = СокрП(Выборка.ПредставлениеСовпадения) + " (" + Выборка.ПредставлениеНоменклатуры + ")";
		ДанныеВыбора.Добавить(Выборка.Ссылка, ТекстЗначения);
		
	КонецЦикла; 	
	
КонецПроцедуры

 

 

 
 Подключение расширения к 1С