Бухгалтерия государственного учреждения, редакция 1.0 (1.0.62.3)
Добрый день, подскажите пожалуйста, пишу обработку, которая должна создавать документ ОперацияБух (Ручная), данные берутся из excel и полей формы обработки, как программно заполнить субконтоДТ и СубконтоКт

```1c
    Попытка
    ПолучитьНоменклатуру = Справочники.Номенклатура.НайтиПоНаименованию(стр.Номенклатура);
    НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Учреждение = ЭлементыФормы.Учреждение.Значение;
    НовыйДокумент.Баланс = Справочники.Баланс.НайтиПоНаименованию(ЭлементыФормы.ИФО.Значение);
    СтрокаДвижения = НовыйДокумент.Движения.ЕПСБУ;
    НомерСубконто = 0;
    Для каждого Строка из ТаблицаДокумента2 цикл
    Проводка = СтрокаДвижения.Добавить();
    Проводка.Период = ТекущаяДата();

    БухгалтерскийУчет.
    Проводка.СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду(ПолучитьНоменклатуру.СчетУчета);
    Если Проводка.СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("105.36") тогда
    Проводка.СубконтоДт(Проводка.СчетДт.ВидыСубконто.Получить(0), Справочники.КОСГУ.НайтиПоКоду("346"));
    КонецЕсли;
    Проводка.СубконтоДт(Проводка.СчетДт.ВидыСубконто.Получить(1),ПолучитьНоменклатуру);
    Проводка.СубконтоДт(Проводка.СчетДт.ВидыСубконто.Получить(2),ЭлементыФормы.МОЛ.Значение);
    проводка.СчетКт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("109.61");
    проводка.СубконтоКт(Проводка.СчетКт.ВидыСубконто.Получить(0),
    проводка.СубконтоКт(Проводка.СчетКт.ВидыСубконто.Получить(1),
    проводка.СубконтоКт(Проводка.СчетКт.ВидыСубконто.Получить(2), Справочники.ВидыЗатрат.НайтиПоНаименованию("Все затраты");

    Проводка.КоличествоДт = Строка.Количество;

    КонецЦикла;
    НовыйДокумент.Записать();
    Исключение
    Сообщить("НЕ УДАЛОСЬ создать окумент по договору ");

    КонецПопытки;
```
---
Замените Сообщить("НЕ УДАЛОСЬ создать окумент по договору ");
на Сообщить(ОписаниеОшибки());
Так будет видно в чем проблема.
Вообще проводку можно записать и без субконто. Следовательно, проблема скорее всего в другом.
Почему у вас не заполняется счет кредита, но заполняются субконто по нему? Скорее всего проблема именно в том, что не указан СчетКт
---
А в чем конкретно проблема? И да, код у Вас какой-то странный. Как будто не хватает хвостов у некоторых строк.
---
```1c
    Попытка
    ПолучитьНоменклатуру = Справочники.Номенклатура.НайтиПоНаименованию(стр.Номенклатура);
    НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Учреждение = ЭлементыФормы.Учреждение.Значение;
    НовыйДокумент.Баланс = Справочники.Баланс.НайтиПоНаименованию(ЭлементыФормы.ИФО.Значение);
    СтрокаДвижения = НовыйДокумент.Движения.ЕПСБУ;
    НомерСубконто = 0;
    Для каждого Строка из ТаблицаДокумента2 цикл
    Проводка = СтрокаДвижения.Добавить();
    Проводка.Период = ТекущаяДата();
    Проводка.СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду(ПолучитьНоменклатуру.СчетУчета);

    //Если Проводка.СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("105.36") тогда
    // Проводка.СубконтоДт(Проводка.СчетДт.ВидыСубконто.Получить(0), Справочники.КОСГУ.НайтиПоКоду("346"));
    //КонецЕсли;

    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"КЭК",Справочники.КОСГУ.НайтиПоКоду("346"));
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Номенклатура", ПолучитьНоменклатуру);
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Центры материальной ответственности",ЭлементыФормы.МОЛ.Значение);

    //Проводка.СубконтоДт(Проводка.СчетДт.ВидыСубконто.Получить(1),ПолучитьНоменклатуру);
    //Проводка.СубконтоДт(Проводка.СчетДт.ВидыСубконто.Получить(2),ЭлементыФормы.МОЛ.Значение);
    //проводка.СчетКт = ПланыСчетов.ЕПСБУ.НайтиПоКоду("109.61");
    //проводка.СубконтоКт(Проводка.СчетКт.ВидыСубконто.Получить(0),
    //проводка.СубконтоКт(Проводка.СчетКт.ВидыСубконто.Получить(1),
    //проводка.СубконтоКт(Проводка.СчетКт.ВидыСубконто.Получить(2), Справочники.ВидыЗатрат.НайтиПоНаименованию("Все затраты");
    //
    Проводка.КоличествоДт = Строка.Количество;

    КонецЦикла;
    НовыйДокумент.Записать();
    Исключение
    Сообщить("НЕ УДАЛОСЬ создать окумент по договору ");
```

не могу конять как именно субконто заполняется
---
И так не срабатывает? в чем проблема? что за ошибка?
Возможно проблема в третьем параметре. Должно быть ИмяСубконто, а у вас скорее представление (или синоним) указано.
Можно проще: поставить номер.
И в коде не видно записи движений...
---
насколько я помню - документ операция бух создается без строк. Данные хранятся в регистрах и читаются оттуда по регистратору. тоесть необходимо создать документ ОперацияБух, заполнить список необходимых регистров, потом записать документ и заполнять регистры напрямую указывая записанный документ как регистратор.
---
В обычной бухгалтерии есть спец. модуль:
БухгалтерскийУчет.УстановитьСубконто(Счет, Субконто, ИмяСубконто, ЗначениеСубконто);
---
```1c
    Попытка
    ПолучитьНоменклатуру = Справочники.Номенклатура.НайтиПоНаименованию(стр.Номенклатура);
    НовыйДокумент = Документы.ОперацияБух.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Учреждение = ЭлементыФормы.Учреждение.Значение;
    НовыйДокумент.Баланс = Справочники.Баланс.НайтиПоНаименованию(ЭлементыФормы.ИФО.Значение);
    СтрокаДвижения = НовыйДокумент.Движения.ЕПСБУ;
    Для каждого Строка из ТаблицаДокумента2 цикл
    Проводка = СтрокаДвижения.Добавить();
    Проводка.Период = ТекущаяДата();
    Проводка.СчетДт = ПланыСчетов.ЕПСБУ.НайтиПоКоду(ПолучитьНоменклатуру.СчетУчета);

    ///Заполняем СчетДБ
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"КОСГУ",Справочники.КОСГУ.НайтиПоКоду("346"));
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"Номенклатура", ПолучитьНоменклатуру);
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетДт,Проводка.СубконтоДт,"ЦМО",ЭлементыФормы.МОЛ.Значение);
    ///Заполняем СчетКД
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"КОСГУ",Справочники.КОСГУ.НайтиПоКоду("200"));
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"Номенклатура", ПолучитьНоменклатуру);
    НалоговыйУчетСервер.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,"ВидыЗатрат",Справочники.ВидыЗатрат.НайтиПоНаименованию("%Все затраты%"));

    Проводка.КоличествоДт = Строка.Количество;
    Проводка.Сумма = Стр.Себестоимость;

    КонецЦикла;
    НовыйДокумент.Записать();
    Исключение
    Сообщить("НЕ УДАЛОСЬ создать окумент по договору ");
```

вот что в итоге получилось, заполнение субконто проходит но все равно после записи документа, вызывается исключение
---
Замените Сообщить("НЕ УДАЛОСЬ создать окумент по договору ");
на Сообщить(ОписаниеОшибки());
Так будет видно в чем проблема.
Вообще проводку можно записать и без субконто. Следовательно, проблема скорее всего в другом.
Почему у вас не заполняется счет кредита, но заполняются субконто по нему? Скорее всего проблема именно в том, что не указан СчетКт
---
```1c
    Операция (бухгалтерская) 00000035 от 28.05.2020 12:05:16
    Проводка № 1 <>: не заполнен счет кредита.
    Проводка № 2 <>: не заполнен счет кредита.
    {ВнешняяОбработка.ЗагрузкаМедикаментов.Форма.Форма.Форма(117)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Журнал проводок"!
```
---
Ну вот вам и ответ: Не заполнен СчетКт. Вы субконто заполнили, а сам счет не указали.
В исходном коде это было, но вы потом закоментировали и, видимо, удалили.
---
спасибо за подсказку, если не сложно посмотрите еще почему выходит ошибка: {ВнешняяОбработка.ЗагрузкаМедикаментов.Форма.Форма.Форма(117)}: Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля "Учреждение" не может быть пустым! (Регистр бухгалтерии: Журнал проводок; Номер строки: 1)
---
Скорее всего, в регистре бухгалтерии есть поле "Учреждение", которое должно быть обязательно заполнено.
У меня нет такой конфигурации. А в обычной бухгалтерии нет поля "Учреждение". Есть подразделение, но его вроде как тоже можно не указывать.
---
спасибо огромное, первый раз с бухгалтерией занимаюсь, много чего не знаю, все получилось