1С,Создать движение(проводку)документа,Проводка,Проведение документа,Субконто,Установить значение субконто,Определение типа субконто,ВидСубконто,Обработка проведения,Перебор субконто у счета
//Создаем новый документ
ДокОперация = Документы.Операция.СоздатьДокумент();
//Добавляем проводку
НовЗапись = ДокОперация.Движения.Хозрасчетный.Добавить();
НовЗапись.Активность = 1;
НовЗапись.Сумма = Сумма;
НовЗапись.СчетДт = СчетДт; //тип ПланыСчетов "Хозрасчетный"
НовЗапись.СчетКт = СчетКт; //тип ПланыСчетов "Хозрасчетный"
//1-й вариант. Установить значение субконто
НовЗапись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат] = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Текущий ремонт");
//2-й вариант. Установить значение субконто
НовЗапись.СубконтоДт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат, Справочники.СтатьиЗатрат.НайтиПоНаименованию("Текущий ремонт"));
//Записать документ
ДокОперация.Записать();
-----------------------------------------------------------------------------------------------------------
//Установка значения субконто, когда известно его значение, но не известно название и номер соответствующего субконто у счета
//Будем перебирать все субконто у счета и сравнивать их типы значения с типом присваиваемого значения
Проводка = Движения.Хозрасчетный.Добавить();
Проводка.СчетДт = СчетДт;
//1-й вариант. Установить значение субконто по его виду
//Известно значение субконто, но неизвестно его название и номер
Для Каждого ВидСубконто Из Проводка.СчетДт.ВидыСубконто Цикл
Если Строка(ТипЗнч(ЗначениеСубконто)) = Строка(ВидСубконто.ВидСубконто.ТипЗначения) Тогда
Проводка.СубконтоДт[ВидСубконто.ВидСубконто.Ссылка] = ЗначениеСубконто;
КонецЕсли;
КонецЦикла;
Проводка.СчетКт = СчетКт;
//2-й вариант. Установить значение субконто по его виду
//Известно значение субконто, но неизвестно его название и номер
Для Каждого ВидСубконто Из Проводка.СчетКт.ВидыСубконто Цикл
ЗначениеСубконто = Справочники[ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение().Метаданные().Имя].НайтиПоРеквизиту("ПолеПоискаВСправочнике", ЗначениеДляСубконто);
Проводка.СубконтоКт[ВидСубконто.ВидСубконто.Ссылка] = ЗначениеСубконто;
КонецЦикла;
//Заполнить все остальное у проводки
Проводка.Организация = Организация;
Проводка.Период = ЭтотОбъект.Дата;
Проводка.Регистратор = ЭтотОбъект.Ссылка;
Проводка.Сумма = КакаяТоСумма;
//Записать проводку
Движения.Хозрасчетный.Записать();
ДокОперация = Документы.Операция.СоздатьДокумент();
//Добавляем проводку
НовЗапись = ДокОперация.Движения.Хозрасчетный.Добавить();
НовЗапись.Активность = 1;
НовЗапись.Сумма = Сумма;
НовЗапись.СчетДт = СчетДт; //тип ПланыСчетов "Хозрасчетный"
НовЗапись.СчетКт = СчетКт; //тип ПланыСчетов "Хозрасчетный"
//1-й вариант. Установить значение субконто
НовЗапись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат] = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Текущий ремонт");
//2-й вариант. Установить значение субконто
НовЗапись.СубконтоДт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат, Справочники.СтатьиЗатрат.НайтиПоНаименованию("Текущий ремонт"));
//Записать документ
ДокОперация.Записать();
-----------------------------------------------------------------------------------------------------------
//Установка значения субконто, когда известно его значение, но не известно название и номер соответствующего субконто у счета
//Будем перебирать все субконто у счета и сравнивать их типы значения с типом присваиваемого значения
Проводка = Движения.Хозрасчетный.Добавить();
Проводка.СчетДт = СчетДт;
//1-й вариант. Установить значение субконто по его виду
//Известно значение субконто, но неизвестно его название и номер
Для Каждого ВидСубконто Из Проводка.СчетДт.ВидыСубконто Цикл
Если Строка(ТипЗнч(ЗначениеСубконто)) = Строка(ВидСубконто.ВидСубконто.ТипЗначения) Тогда
Проводка.СубконтоДт[ВидСубконто.ВидСубконто.Ссылка] = ЗначениеСубконто;
КонецЕсли;
КонецЦикла;
Проводка.СчетКт = СчетКт;
//2-й вариант. Установить значение субконто по его виду
//Известно значение субконто, но неизвестно его название и номер
Для Каждого ВидСубконто Из Проводка.СчетКт.ВидыСубконто Цикл
ЗначениеСубконто = Справочники[ВидСубконто.ВидСубконто.ТипЗначения.ПривестиЗначение().Метаданные().Имя].НайтиПоРеквизиту("ПолеПоискаВСправочнике", ЗначениеДляСубконто);
Проводка.СубконтоКт[ВидСубконто.ВидСубконто.Ссылка] = ЗначениеСубконто;
КонецЦикла;
//Заполнить все остальное у проводки
Проводка.Организация = Организация;
Проводка.Период = ЭтотОбъект.Дата;
Проводка.Регистратор = ЭтотОбъект.Ссылка;
Проводка.Сумма = КакаяТоСумма;
//Записать проводку
Движения.Хозрасчетный.Записать();