Инвентаризация имущества, находящегося в эксплуатации и учитываемого на забалансовых счетах, — регулярная задача для многих коммерческих и производственных организаций. Наиболее часто проверке подвергаются счета группы МЦ, такие как МЦ.04 («Инвентарь и хозяйственные принадлежности в эксплуатации») и МЦ.02 («Спецодежда в эксплуатации»).
Долгое время в типовой конфигурации «1С:Бухгалтерия предприятия» (БП) не было простого и интуитивного механизма для выполнения этой операции, из-за чего пользователям приходилось скачивать сторонние обработки или разрабатывать собственные расширения. В этой статье мы подробно разберем, как решить эту задачу штатными средствами программы, а также рассмотрим, как программисту написать собственное расширение или обработку заполнения, если базового функционала окажется недостаточно.
Начнем с хорошей новости. Начиная с версии программы 3.0.85, разработчики фирмы «1С» добавили встроенный механизм, позволяющий проводить инвентаризацию ТМЦ за пределами баланса без использования стороннего кода. Давайте разберем этот процесс по шагам.
Основной секрет успешного заполнения кроется в правильной комбинации реквизитов шапки документа инвентаризации. Рассмотрим этот алгоритм подробнее:
Склад в шапке документа абсолютно пустым. Если там будет указан конкретный склад, программа будет искать остатки только на балансовых счетах учета (например, на 10 счете).Ответственное лицо укажите конкретного сотрудника (МОЛ), за которым закреплены забалансовые ценности в эксплуатации.Программа автоматически проанализирует остатки по указанному физическому лицу на забалансовых счетах МЦ.02 и МЦ.04 и заполнит табличную часть документа номенклатурой, количеством и стоимостью.
Важное условие для работы штатного заполнения:
Данные попадут в документ только в том случае, если при передаче материалов сотруднику (например, через документ «Расход материалов») в поле способа использования было выбрано положение «Расход и остатки». Если бухгалтер выбрал вариант «Только расход», программа спишет стоимость и количество в расходы сразу, не сохранив забалансовый след для инвентаризации.
Несмотря на наличие встроенного инструмента, в реальной практике крупного бизнеса часто возникают ситуации, когда штатного механизма недостаточно. Давайте проанализируем ключевые причины, по которым бухгалтеры и консультанты просят программистов написать внешнюю обработку или расширение:
МЦ. Но если вам нужно инвентаризировать арендованные основные средства (счет 001) или товары на ответственном хранении (счет 002), типовой документ не справится с задачей автоматически.М-15 или адаптированную форму ИНВ-3, которая корректно выводит информацию о сотрудниках, принявших инвентарь в эксплуатацию.Если перед вами стоит задача разработать функционал инвентаризации забалансовых счетов с нуля, лучшим архитектурным решением будет создание Расширения конфигурации. Это позволит не снимать конфигурацию с поддержки и элегантно добавить кнопку заполнения прямо в стандартный документ «Инвентаризация товаров».
Рассмотрим пример программного кода, который решает задачу выборки остатков со счета МЦ.04 по выбранному сотруднику и заполнения табличной части документа.
Для реализации логики нам понадобится выполнить запрос к виртуальной таблице остатков регистра бухгалтерии Хозрасчетный.Остатки. Посмотрим на пример такого запроса:
// Функция получает таблицу остатков по забалансовому счету МЦ.04
Функция ПолучитьОстаткиЗабаланса(ОтветственноеЛицо, ПериодГраница) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстатки.КоличествоОстаток КАК Количество,
| ХозрасчетныйОстатки.СуммаОстаток КАК Стоимость
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &СчетМЦ, &ВидыСубконто, ) КАК ХозрасчетныйОстатки
|ГДЕ
| ХозрасчетныйОстатки.Субконто2 = &МОЛ";
// Задаем параметры запроса
Запрос.УстановитьПараметр("Период", ПериодГраница);
Запрос.УстановитьПараметр("СчетМЦ", ПланыСчетов.Хозрасчетный.МЦ04);
// Определяем массив видов субконто для правильной индексации
МассивСубконто = Новый Массив;
МассивСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
МассивСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций);
Запрос.УстановитьПараметр("ВидыСубконто", МассивСубконто);
Запрос.УстановитьПараметр("МОЛ", ОтветственноеЛицо);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Разберем этот код подробнее. Мы обращаемся к регистру бухгалтерии, передавая в параметры виртуальной таблицы границу периода и целевой забалансовый счет (в данном случае ПланыСчетов.Хозрасчетный.МЦ04). В секции ГДЕ мы фильтруем результат по второму субконто — это физическое лицо (работник организации), за которым числится малоценка.
После получения таблицы остатков нам необходимо очистить текущую табличную часть документа и заполнить ее полученными данными. Ниже представлен алгоритм заполнения:
Процедура ЗаполнитьТабличнуюЧастьДокумента(ДокументОбъект) Экспорт
// Проверяем заполнение обязательного реквизита в шапке
Если Не ЗначениеЗаполнено(ДокументОбъект.ОтветственноеЛицо) Тогда
ВызватьИсключение "Для заполнения забаланса необходимо указать Ответственное лицо!";
КонецЕсли;
ПериодГраница = Новый Граница(ДокументОбъект.Дата, ВидГраницы.Включая);
ТаблицаОстатков = ПолучитьОстаткиЗабаланса(ДокументОбъект.ОтветственноеЛицо, ПериодГраница);
ДокументОбъект.Товары.Очистить();
Для Каждого СтрокаОстатка Из ТаблицаОстатков Цикл
НоваяСтрока = ДокументОбъект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаОстатка);
// Устанавливаем учетные показатели
НоваяСтрока.КоличествоУчет = СтрокаОстатка.Количество;
НоваяСтрока.Количество = СтрокаОстатка.Количество;
НоваяСтрока.СуммаУчет = СтрокаОстатка.Стоимость;
// По умолчанию при инвентаризации считаем, что отклонений нет
НоваяСтрока.Цена = ?(СтрокаОстатка.Количество = 0, 0, СтрокаОстатка.Стоимость / СтрокаОстатка.Количество);
КонецЦикла;
КонецПроцедуры
Этот код можно легко внедрить во внешнюю обработку табличных частей (подключаемую через механизм дополнительных отчетов и обработок) или встроить в расширение, переопределив стандартную команду заполнения на форме документа.
Мы выяснили, что проблема отсутствия инвентаризации забалансовых счетов в 1С:Бухгалтерия давно решена разработчиками платформы. Перед тем как приступать к написанию собственного кода или покупке обработок на сторонних ресурсах, убедитесь, что вы попробовали стандартный путь:
Разработка собственного расширения или покупка сторонней обработки на базе БСП (Библиотеки Стандартных Подсистем) оправдана только в тех случаях, когда вашей организации требуется автоматизировать сложный массовый учет, выполнять групповое формирование документов по всем сотрудникам сразу или выводить специфические печатные формы, отличные от типовой ИНВ-3.