При ведении учета спецодежды и спецоснастки в конфигурациях «1С:Комплексная автоматизация» (ред. 1.1) и «1С:Управление производственным предприятием» (ред. 1.3) бухгалтеры и аудиторы часто требуют видеть остатки материалов в эксплуатации с детализацией по конкретным физическим лицам прямо в оборотно-сальдовой ведомости по счету 10.11. Однако типовой план счетов содержит на этом счете только аналитику по номенклатуре и партиям (или назначениям использования).
Разберем архитектурные особенности подсистемы учета спецодежды, выясним причину возникновения сложностей при добавлении нового субконто и рассмотрим два практических варианта решения поставленной задачи.
Проанализируем типовой механизм работы конфигурации. Если добавить в конфигураторе к счету 10.11 дополнительный вид субконто со справочником ФизическиеЛица или РаботникиОрганизаций, поведение системы будет следующим:
Погашение стоимости (спецодежда, спецоснастка, инвентарь) или Расчет себестоимости выпуска при включенном РАУЗ) проводка по кредиту счета 10.11 сформируется без заполнения сотрудника.Причина такого поведения кроется в алгоритмах общих модулей. Процедуры формирования движений регламентных документов жестко регламентированы: программа транслирует в регистр бухгалтерии Хозрасчетный только предопределенные разрезы аналитики, заложенные разработчиками типовой конфигурации. В результате по дебету счета сотрудник будет заполнен, а по кредиту — останется пустым, что приведет к разрыву сальдо в разрезе добавленного субконто.
Рассмотрим, как изначально спроектирован учет спецодежды в конфигурациях линейки КА 1.1 / УПП 1.3. Параллельно с проводками бухгалтерского учета программа всегда ведет специализированный регистр накопления Материалы в эксплуатации (бухгалтерский учет).
В этом регистре изначально присутствуют все необходимые измерения:
ОрганизацияФизЛицоНоменклатураНазначение использованияДокумент передачиРазберем по шагам, как правильно закрыть требования проверяющих и аудиторов без переписывания типового закрытия месяца:
Ведомость по учету материалов в эксплуатации либо настраиваем Универсальный отчет по регистру накопления Материалы в эксплуатации (бухгалтерский учет).10.11 в оборотно-сальдовой ведомости.Ведомость по учету материалов в эксплуатации. Это полностью снимает претензии проверяющих органов и аудиторов.Если требования регламента компании строго обязывают видеть сотрудника именно в ОСВ по счету 10.11, потребуется внесение изменений в конфигурацию. Чтобы не изменять сложные модули расчета себестоимости и подсистемы РАУЗ, реализуем заполнение субконто через подписку на событие.
Разберем порядок доработки:
Хозрасчетный добавляем к счету 10.11 третье субконто с типом СправочникСсылка.ФизическиеЛица.РегистрБухгалтерииНаборЗаписей.Хозрасчетный с событием ПередЗаписью.10.11 и программно заполняем субконто сотрудника, считывая данные из регистра Материалы в эксплуатации (бухгалтерский учет) или регистра УчетЗатратРегл.Посмотрим на пример реализации логики заполнения в общем модуле:
Процедура ЗаполнитьСотрудникаПриЗаписиПроводок(Источник, Отказ) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Счет10_11 = ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатации;
ВидСубконтоФизЛицо = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ФизЛица;
Для Каждого Проводка Из Источник Цикл
// Проверяем списание со счета 10.11
Если Проводка.СчетКт = Счет10_11 Тогда
// Если субконто уже заполнено, пропускаем
Если ЗначениеЗаполнено(Проводка.СубконтоКт[ВидСубконтоФизЛицо]) Тогда
Продолжить;
КонецЕсли;
Номенклатура = Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура];
// Запрашиваем физлицо из регистра материалов в эксплуатации
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Остатки.ФизЛицо КАК ФизЛицо
|ИЗ
| РегистрНакопления.МатериалыВЭксплуатации.Остатки(
| &Период,
| Организация = &Организация
| И Номенклатура = &Номенклатура) КАК Остатки";
Запрос.УстановитьПараметр("Период", Проводка.Период);
Запрос.УстановитьПараметр("Организация", Проводка.Организация);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
Проводка.СубконтоКт[ВидСубконтоФизЛицо] = Выборка.ФизЛицо;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Такой подход позволяет сохранить работоспособность типового механизма закрытия месяца и обеспечивает корректное заполнение всей цепочки оборотов по сотрудникам на счете 10.11.