При разработке обработок, обменов или механизмов автоматического ввода документов в конфигурации «1С:Бухгалтерия предприятия 3.0» разработчики нередко сталкиваются с ситуацией: в пользовательском интерфейсе нужный документ отображается как «Оказание производственных услуг», но в дереве метаданных конфигуратора найти объект с таким именем не удается. Выясним причину этой проблемы, разберем способы сопоставления пользовательских названий с именами метаданных и рассмотрим пример правильного программного создания документа.
В платформе 1С:Предприятие каждый объект конфигурации имеет два основных текстовых идентификатора:
В типовой конфигурации «1С:Бухгалтерия предприятия» документу с синонимом «Оказание производственных услуг» соответствует системное имя АктОбОказанииПроизводственныхУслуг.
Рассмотрим несколько надежных способов, которые помогут быстро сопоставить синоним из интерфейса с именем объекта в дереве метаданных:
Оказание производственных услуг. В результатах поиска будет видна строка описания метаданных с указанием реального имени объекта.e1cib/data/Документ.АктОбОказанииПроизводственныхУслуг?ref=..., из которой сразу видно точное имя метаданных.
Для Каждого МД Из Метаданные.Документы Цикл
Если МД.Синоним = "Оказание производственных услуг" Тогда
Сообщить("Имя документа в метаданных: " + МД.Имя);
Прервать;
КонецЕсли;
КонецЦикла;
Посмотрим на пример создания нового документа через встроенный язык. Для корректной инициализации стандартных значений используем метод Заполнить(), после чего внесем обязательные реквизиты шапки и табличной части.
НовыйАкт = Документы.АктОбОказанииПроизводственныхУслуг.СоздатьДокумент();
НовыйАкт.Заполнить(Неопределено);
НовыйАкт.Дата = ТекущаяДата();
НовыйАкт.Организация = ВыбраннаяОрганизация;
НовыйАкт.Контрагент = ВыбранныйКонтрагент;
НовыйАкт.ДоговорКонтрагента = ВыбранныйДоговор;
// Заполнение производственной строки услуг
СтрокаУслуг = НовыйАкт.Услуги.Добавить();
СтрокаУслуг.Номенклатура = ВыбраннаяУслуга;
СтрокаУслуг.Количество = 1;
СтрокаУслуг.Цена = 10000;
СтрокаУслуг.Сумма = 10000;
СтрокаУслуг.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
СтрокаУслуг.СуммаНДС = 2000;
// Обязательные реквизиты производственного учета
СтрокаУслуг.СчетЗатрат = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство; // Счет 20.01
СтрокаУслуг.НоменклатурнаяГруппа = ВыбраннаяНоменклатурнаяГруппа;
СтрокаУслуг.ПодразделениеЗатрат = ВыбранноеПодразделение;
СтрокаУслуг.ПлановаяСтоимость = 8000; // Плановая себестоимость выпуска
// Запись и проведение документа
НовыйАкт.Записать(РежимЗаписиДокумента.Проведение);
Проанализируем нюансы, критически важные для проведения документа и последующего закрытия месяца:
Услуги обязательно заполнение плановой себестоимости (реквизит ПлановаяСтоимость или расчет через плановую цену). Если этот показатель пропущен, а учетная политика организации предполагает учет выпуска по плановым ценам, регламентная процедура закрытия месяца не сможет корректно распределить фактические затраты со счета 20.01.СчетЗатрат, НоменклатурнаяГруппа и ПодразделениеЗатрат строго обязательно. При их отсутствии проведение документа или последующий расчет себестоимости завершатся ошибкой.Материалы создаваемого документа (с указанием счета учета, например, 10.01), не оформляя отдельный документ списания.Разберем две распространенные ошибки при выборе типа документа для программного создания:
ОказаниеУслуг). Этот документ предназначен исключительно для пакетной выписки одинаковых услуг сразу нескольким контрагентам (например, регулярная абонентская плата). Он не формирует движений выпуска по счету 20.01 и не производит калькуляцию затрат.РеализацияТоваровУслуг). Используется для стандартной реализации услуг без привязки к производственному учету, когда нет необходимости вести учет расходов в разрезе номенклатурных групп по плановой стоимости.