Не удается записать субконто в ручную Операцию

1. svetlana2007 16.02.25 16:05 Сейчас в теме
Помогите, пожалуйста. Пишу обработку по переносу проводок из ЗИК (7.7) в бухгалтерию (8). Бухгалтерия для Беларуси Хьюман Систем (не типовая). Не получается занести значения субконто.

Из файла все загружено в ТЗ. Там же в ТЗ в колонках ЗначениеСубконтоДтN (ЗначениеСубконтоКтN) - уже собрала ссылки на нужные мне элементы справочников или перечислений.

Но в проводках субконто остается пустым.

Оговорюсь, что применять //БухгалтерскийУчет.УстановитьСубконто - применять ее нельзя. Ее в конфигурации нет.

Процедура ЗагрузитьПроводки(ТЗ,ДатаОперации,Содержание)

Сообщить("Производится запись операции <"+Содержание+">");
//-----------------------------------------
Организация=Справочники.Организации.НайтиПоНаименованию("Какая-то организация");

ДокОперация = Документы.Операция.СоздатьДокумент();
ДокОперация.Дата = ДатаОперации;
ДокОперация.Номер = "ЗП-"+формат(ДатаОперации,"ДФ=ММ.гг"); //"ДФ=ММ.ГГ"
ДокОперация.Организация =Организация;
ДокОперация.Ответственный = ПользователиИнформационнойБазы.ТекущийПользователь();
ДокОперация.Содержание = Содержание;
ДокОперация.Комментарий = Содержание;
ДокОперация.Движения.Основной.Записывать = Истина;
ДокОперация.Записать(РежимЗаписиДокумента.Запись);

// перебор строк ТЗ. Там уже все нужные значения и ссылки на элементы справочников
// или перечислений - занесены

Для Каждого СтрокаТЗ Из ТЗ Цикл
Проводка = ДокОперация.Движения.Основной.Добавить();
Проводка.Регистратор = ДокОперация.Ссылка;
Проводка.Активность = Истина;
Проводка.Период = ДатаОперации;

Проводка.ОрганизацияДт = Организация;

Дт=ПланыСчетов.Основной.НайтиПоКоду(сокрлп(СтрокаТЗ.Дт));
//сообщить("Дт = "+Дт);
Проводка.СчетДт = Дт;

Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоДТ1) тогда
Проводка.СубконтоДт[0] = СтрокаТЗ.ЗначениеСубконтоДТ1;
конецЕсли;

Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоДТ2) тогда
Проводка.СубконтоДт[1] = СтрокаТЗ.ЗначениеСубконтоДТ2;
конецЕсли;

Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоДТ3) тогда
Проводка.СубконтоДт[2] = СтрокаТЗ.ЗначениеСубконтоДТ3;
конецЕсли;


//------------ теперь кредит
Проводка.ОрганизацияКт = Организация;

Кт=ПланыСчетов.Основной.НайтиПоКоду(сокрлп(СтрокаТЗ.Кт));
Проводка.СчетКт = Кт ;

Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоКТ1) тогда
Проводка.СубконтоКт[0] = СтрокаТЗ.ЗначениеСубконтоКТ1; // СубконтоДт[0] - это массив
//сообщить("СтрокаТЗ.ЗначениеСубконтоКТ1 = "+СтрокаТЗ.ЗначениеСубконтоКТ1);
конецЕсли;

Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоКТ2) тогда
Проводка.СубконтоКт[1] = СтрокаТЗ.ЗначениеСубконтоКТ2;
конецЕсли;

Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоКТ3) тогда
Проводка.СубконтоКт[2] = СтрокаТЗ.ЗначениеСубконтоКТ3;
конецЕсли;

Проводка.Сумма = СтрокаТЗ.Сумма;
Проводка.Содержание = СтрокаТЗ.СодержаниеПроводки;
КонецЦикла;

ДокОперация.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры //ЗагрузитьПроводки
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 16.02.25 17:37 Сейчас в теме
Порядок субконто не очень внятная вещь в БУХ 1с, поэтому лучше как-то так
				Движение.СубконтоДт.Контрагенты = СтрокаКонтрагента.Контрагент;
				Движение.СубконтоДт.Номенклатура = СтрокаТовара.Номенклатура;

ну и типы значений надо проверить, конечно
3. svetlana2007 16.02.25 17:53 Сейчас в теме
(2) я заранее не знаю какие там субконто. по счету. Выгружаю проводки. 2500 записей. Мне как-то нужно универсально к ним обращаться.
4. starjevschik 16.02.25 18:06 Сейчас в теме
(3) тогда надо перебирать субконто счета. По номерам, насколько я понимаю, не будет работать, т.к. нумерация не определена
5. svetlana2007 16.02.25 18:24 Сейчас в теме
(4) к сожалению, как для разработчика, профилирующегося долгое время на 1С 7.7 - ваш ответ мне никак не помог. Можно пример кода?
6. starjevschik 16.02.25 19:12 Сейчас в теме
7. svetlana2007 17.02.25 09:29 Сейчас в теме
(6) Спасибо.
Нашла сама решение вот здесь https://www.vdgb.ru/blog/kak-ustanovit-znachenie-subkonto/. Оставлю ссылку, вдруг кому пригодится.
VyacheslavShilov; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот