← Назад к вопросам
Учёт ТМЦ с закреплением за сотрудниками
2.0 Middle🔥 61 комментариев
#Конфигурации и типовые
Условие
Создайте систему учёта ТМЦ (товарно-материальных ценностей) с закреплением оргтехники за сотрудниками и помещениями.
Требования:
- Справочники: Номенклатура, Сотрудники, Помещения
- Документы: ВводВЭксплуатацию, Перемещение, Списание
- Регистр сведений "РасположениеТМЦ" (Номенклатура → Сотрудник, Помещение)
- Инвентарные номера для каждой единицы оборудования
- Отчёты: Инвентарная ведомость, ТМЦ по сотрудникам, ТМЦ по помещениям
Дополнительно
При увольнении сотрудника показывать список закреплённого за ним оборудования.
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Система учёта ТМЦ с закреплением за сотрудниками
Архитектура решения
Система строится на регистре сведений для отслеживания текущего размещения каждого предмета и документах для фиксации операций перемещения.
1. Справочники
Номенклатура
// Справочник.Номенклатура
// Реквизиты:
// - Наименование (строка)
// - НоменклатурнаяГруппа (справочник, опционально)
// - ВидАктива (перечисление: Оборудование, Мебель, ОфисноеОборудование)
// - СтоимостьПервоначальная (число)
// - СрокПолезногоИспользования (число, месяцы)
Сотрудники
// Справочник.Сотрудники
// Реквизиты:
// - Наименование
// - Должность (справочник)
// - Подразделение
// - ДатаПриема (дата)
// - ДатаУвольнения (дата, опционально)
// - Активен (булево)
Помещения
// Справочник.Помещения
// Реквизиты:
// - Наименование
// - Этаж (число)
// - Площадь (число)
// - ОтветственныйСотрудник (справочник Сотрудники)
2. Регистр сведений
РасположениеТМЦ
// РегистрСведений.РасположениеТМЦ
// ПЕРИОДИЧЕСКИЙ
// Измерения:
// - НоменклатураЕдиница (справочник Номенклатура)
// - ИнвентарныйНомер (строка) — уникальный код единицы
// Ресурсы:
// - Сотрудник (справочник Сотрудники)
// - Помещение (справочник Помещения)
// - ДатаРазмещения (дата)
// - ТекущееМестоположение (перечисление: У сотрудника, В помещении)
Это позволяет хранить историю размещения и находить текущее состояние на любую дату.
3. Документы
ВводВЭксплуатацию
// Документ.ВводВЭксплуатацию
// Реквизиты:
// - Дата, Номер (стандартные)
// - Номенклатура (справочник)
// - Сотрудник (справочник Сотрудники)
// - Помещение (справочник Помещения)
// - КоличествоЕдиниц (число)
// - ПервоначальнаяСтоимость (число)
// Табличная часть: ЕдиницыОборудования
// - ИнвентарныйНомер (строка, УникальныйКлюч)
&НаСервере
Процедура ПроведениеПроведение(Отказ, Режим)
Попытка
НачатьТранзакцию();
Для Каждого Строка Из ЕдиницыОборудования Цикл
НаборЗаписей = РегистрыСведений.РасположениеТМЦ.СоздатьНаборЗаписей();
НаборЗаписей.Фильтр.НоменклатураЕдиница.Установить(Номенклатура);
НаборЗаписей.Фильтр.ИнвентарныйНомер.Установить(Строка.ИнвентарныйНомер);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.НоменклатураЕдиница = Номенклатура;
НоваяЗапись.ИнвентарныйНомер = Строка.ИнвентарныйНомер;
НоваяЗапись.Сотрудник = Сотрудник;
НоваяЗапись.Помещение = Помещение;
НоваяЗапись.ДатаРазмещения = Дата;
Если ЗначениеЗаполнено(Сотрудник) Тогда
НоваяЗапись.ТекущееМестоположение = Перечисления.МестоположениеТМЦ.УСотрудника;
Иначе
НоваяЗапись.ТекущееМестоположение = Перечисления.МестоположениеТМЦ.ВПомещении;
КонецЕсли;
НаборЗаписей.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Отказ = Истина;
ВызватьИсключение "Ошибка при проведении: " + ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Перемещение
// Документ.ПеремещениеТМЦ
// Реквизиты:
// - ИнвентарныйНомер (строка, УникальныйКлюч)
// - Номенклатура (справочник)
// - СотрудникОтправитель (справочник)
// - СотрудникПолучатель (справочник)
// - ПомещениеОтправитель (справочник)
// - ПомещениеПолучатель (справочник)
&НаСервере
Процедура ПроведениеПроведение(Отказ, Режим)
НачатьТранзакцию();
Попытка
НаборЗаписей = РегистрыСведений.РасположениеТМЦ.СоздатьНаборЗаписей();
НаборЗаписей.Фильтр.НоменклатураЕдиница.Установить(Номенклатура);
НаборЗаписей.Фильтр.ИнвентарныйНомер.Установить(ИнвентарныйНомер);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
ВызватьИсключение "Оборудование с инвентарным номером " + ИнвентарныйНомер + " не найдено";
КонецЕсли;
СтараяЗапись = НаборЗаписей[0];
СтараяЗапись.Сотрудник = СотрудникПолучатель;
СтараяЗапись.Помещение = ПомещениеПолучатель;
СтараяЗапись.ДатаРазмещения = Дата;
НаборЗаписей.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Отказ = Истина;
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Списание
// Документ.СписаниеТМЦ
// Реквизиты:
// - ИнвентарныйНомер (строка)
// - ПричинаСписания (перечисление: Износ, Утрата, Хищение, Дарение)
// - Номенклатура (справочник)
// - КомментарийСписания (строка, мультистрока)
4. Отчёты
Инвентарная ведомость
// Отчёт.ИнвентарнаяВедомость
// Параметры: ДатаСостояния, Подразделение (опционально)
&НаСервере
Процедура ПриКомпоновкеРезультата()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИнвентарныйНомер,
| Номенклатура,
| Сотрудник,
| Помещение,
| ДатаРазмещения
|ИЗ РегистрСведений.РасположениеТМЦ
|ГДЕ ДатаРазмещения <= &ДатаСостояния
|УПОРЯДОЧИТЬ ПО ИнвентарныйНомер";
Запрос.УстановитьПараметр("ДатаСостояния", ДатаСостояния);
КонецПроцедуры
ТМЦ по сотрудникам
// Группировка по Сотруднику → Номенклатура
// Ресурс: количество единиц
При увольнении сотрудника
// Справочник.Сотрудники
&НаСервере
Процедура ПроверитьЗакреплённоеОборудование()
Если ЗначениеЗаполнено(ДатаУвольнения) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИнвентарныйНомер,
| Номенклатура
|ИЗ РегистрСведений.РасположениеТМЦ
|ГДЕ Сотрудник = &Сотрудник";
Запрос.УстановитьПараметр("Сотрудник", Ссылка);
Результат = Запрос.Выполнить();
Если Не Результат.Пусто() Тогда
ВывестиОборудование(Результат.Выгрузить());
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Ключевые особенности
- Периодичность регистра позволяет отслеживать историю движения
- Инвентарные номера обеспечивают уникальную идентификацию каждой единицы
- Отказ на удаление справочников Сотрудник/Помещение, если к ним есть запросы в регистре
- Валидация при перемещении — проверка, что оборудование существует
- Срезы последних для быстрого поиска текущего размещения
Эта архитектура обеспечивает полный учёт движения ТМЦ и гарантирует целостность данных.