Не удается записать субконто в ручную Операцию
Помогите, пожалуйста. Пишу обработку по переносу проводок из ЗИК (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;
конецЕсли;
Проводка.Сумма = СтрокаТЗ.Сумма;
Проводка.Содержание = СтрокаТЗ.СодержаниеПроводки;
КонецЦикла;
ДокОперация.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры //ЗагрузитьПроводки
Из файла все загружено в ТЗ. Там же в ТЗ в колонках ЗначениеСубконтоДтN (ЗначениеСубконтоКтN) - уже собрала ссылки на нужные мне элементы справочников или перечислений.
Но в проводках субконто остается пустым.
Оговорюсь, что применять //БухгалтерскийУчет.УстановитьСубконто - применять ее нельзя. Ее в конфигурации нет.
Процедура ЗагрузитьПроводки(ТЗ,ДатаОперации,Содержание)
Сообщить("Производится запись операции <"+Содержание+">");
//-----------------------------------------
Организация=Справочники.Организации.НайтиПоНаименованию("Какая-то организация");
ДокОперация = Документы.Операция.СоздатьДокумент();
ДокОперация.Дата = ДатаОперации;
ДокОперация.Номер = "ЗП-"+формат(ДатаОперации,"ДФ=ММ.гг"); //"ДФ=ММ.ГГ"
ДокОперация.Организация =Организация;
ДокОперация.Ответственный = ПользователиИнформационнойБазы.ТекущийПользователь();
ДокОперация.Содержание = Содержание;
ДокОперация.Комментарий = Содержание;
ДокОперация.Движения.Основной.Записывать = Истина;
ДокОперация.Записать(РежимЗаписиДокумента.Запись);
// перебор строк ТЗ. Там уже все нужные значения и ссылки на элементы справочников
// или перечислений - занесены
Для Каждого СтрокаТЗ Из ТЗ Цикл
Проводка = ДокОперация.Движения.Основной.Добавить();
Проводка.Регистратор = ДокОперация.Ссылка;
Проводка.Активность = Истина;
Проводка.Период = ДатаОперации;
Проводка.ОрганизацияДт = Организация;
Дт=ПланыСчетов.Основной.НайтиПоКоду(сокрлп(СтрокаТЗ.Дт));
//сообщить("Дт = "+Дт);
Проводка.СчетДт = Дт;
Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоДТ1) тогда
Проводка.СубконтоДт[0] = СтрокаТЗ.ЗначениеСубконтоДТ1;
конецЕсли;
Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоДТ2) тогда
Проводка.СубконтоДт[1] = СтрокаТЗ.ЗначениеСубконтоДТ2;
конецЕсли;
Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоДТ3) тогда
Проводка.СубконтоДт[2] = СтрокаТЗ.ЗначениеСубконтоДТ3;
конецЕсли;
//------------ теперь кредит
Проводка.ОрганизацияКт = Организация;
Кт=ПланыСчетов.Основной.НайтиПоКоду(сокрлп(СтрокаТЗ.Кт));
Проводка.СчетКт = Кт ;
Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоКТ1) тогда
Проводка.СубконтоКт[0] = СтрокаТЗ.ЗначениеСубконтоКТ1; // СубконтоДт[0] - это массив
//сообщить("СтрокаТЗ.ЗначениеСубконтоКТ1 = "+СтрокаТЗ.ЗначениеСубконтоКТ1);
конецЕсли;
Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоКТ2) тогда
Проводка.СубконтоКт[1] = СтрокаТЗ.ЗначениеСубконтоКТ2;
конецЕсли;
Если ЗначениеЗаполнено(СтрокаТЗ.ЗначениеСубконтоКТ3) тогда
Проводка.СубконтоКт[2] = СтрокаТЗ.ЗначениеСубконтоКТ3;
конецЕсли;
Проводка.Сумма = СтрокаТЗ.Сумма;
Проводка.Содержание = СтрокаТЗ.СодержаниеПроводки;
КонецЦикла;
ДокОперация.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры //ЗагрузитьПроводки
По теме из базы знаний
- Принципы внедрения и сопровождения учета на базе 1С
- Универсальный обмен данными UNIDATA 1с77
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- С чего начать внедрение автотестов
- Исправление субконто с типом значения NULL + Лечение "Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server"
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Порядок субконто не очень внятная вещь в БУХ 1с, поэтому лучше как-то так
ну и типы значений надо проверить, конечно
Движение.СубконтоДт.Контрагенты = СтрокаКонтрагента.Контрагент;
Движение.СубконтоДт.Номенклатура = СтрокаТовара.Номенклатура;
ну и типы значений надо проверить, конечно
(6) Спасибо.
Нашла сама решение вот здесьhttps://www.vdgb.ru/blog/kak-ustanovit-znachenie-subkonto/ . Оставлю ссылку, вдруг кому пригодится.
Нашла сама решение вот здесь
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот