Не могу понять как в цикле добалять проводки к документу ОперацияБух в БП 3.0. Ведь табличной части в нем нет. Делаю так: создаю пустой документ, записываю. Потом в цикле пытаюсь добавить к нему проводки, вызывая процедуру
в результате получаю только одну последнюю проводку и всё.
Что я делаю не так?
ЗЫ. На определение счета и субконт внимания не обращайте - там всё так.
&НаСервере
Процедура СоздатьПроводкуБух(Струк)
ДокСсылка = Документы.ОперацияБух.НайтиПоНомеру(Струк.НомерДока, Струк.ДатаДока);
Если НЕ ДокСсылка.Пустая() Тогда
Док = ДокСсылка.ПолучитьОбъект();
Проводка = Док.Движения.Хозрасчетный.Добавить();
Проводка.Активность = Истина;
Проводка.Сумма = Струк.Сумма;
Проводка.Регистратор = Док.Ссылка;
Проводка.Организация = Док.Организация;
Проводка.Период = Струк.ДатаДока;
Проводка.Содержание = Струк.Содержание;
Проводка.СчетДт = ОпределитьСчет(Струк.СчетДт);
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(0).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,0,Струк.СубконтоДт));
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(1).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,1,Струк.СубконтоДт));
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(2).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,2,Струк.СубконтоДт));
Проводка.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Струк.ПодразделениеДт);
Проводка.СчетКт = ОпределитьСчет(Струк.СчетКт);
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(0).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,0,Струк.СубконтоКт));
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(1).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,1,Струк.СубконтоКт));
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(2).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,2,Струк.СубконтоКт));
Проводка.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Струк.ПодразделениеКт);
Док.Движения.Хозрасчетный.Записать();
Док.Записать(РежимЗаписиДокумента.Запись);
Иначе
Сообщить("Не найден документ "+Струк.НомерДока+" от "+Струк.ДатаДока, СтатусСообщения.Важное);
КонецЕсли;
КонецПроцедуры
Показатьв результате получаю только одну последнюю проводку и всё.
Что я делаю не так?
ЗЫ. На определение счета и субконт внимания не обращайте - там всё так.
По теме из базы знаний
- Загрузка из Excel книги покупок и книги продаж в 1С:Бухгалтерия 3.0, 1С:Бухгалтерия 2.0 для последующего формирования декларации НДС
- Загрузка транзакций из Fidelio в Бухгалтерию 3.0 (управляемое приложение)
- Ручные операции, некорректно отображающиеся в ОСВ. БП 3.0
- Учет по складам при создании новой базы Бухгалтерия 3.0. Перенос остатков с пустого склада
- Правила обмена БП 3.0 -> БП 3.0 для переноса остатков ОС и НМА
Найденные решения
вопрос снят
решил вот таким кодом
решил вот таким кодом
&НаСервере
Процедура СоздатьПроводкуБух(Струк)
Док = Документы.ОперацияБух.НайтиПоНомеру(Струк.НомерДока, Струк.ДатаДока);
Если НЕ Док.Пустая() Тогда
Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Док.Ссылка);
Набор.Прочитать();
Проводка = Набор.Добавить();
Проводка.Активность = Истина;
Проводка.Сумма = Струк.Сумма;
Проводка.Организация = Струк.Организация;
Проводка.Период = Струк.ДатаДока;
Проводка.Содержание = Струк.Содержание;
Проводка.СчетДт = ОпределитьСчет(Струк.СчетДт);
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(0).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,0,Струк.СубконтоДт));
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(1).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,1,Струк.СубконтоДт));
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(2).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,2,Струк.СубконтоДт));
Проводка.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Струк.ПодразделениеДт);
Проводка.СчетКт = ОпределитьСчет(Струк.СчетКт);
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(0).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,0,Струк.СубконтоКт));
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(1).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,1,Струк.СубконтоКт));
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(2).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,2,Струк.СубконтоКт));
Проводка.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Струк.ПодразделениеКт);
Набор.Записать(Истина);
Иначе
Сообщить("Не найден документ "+Струк.НомерДока+" от "+Струк.ДатаДока, СтатусСообщения.Важное);
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1. зачем вы ищите документ? У вас есть ссылка на него после записи.
2. Необходимо в цикле выполнять весь код, начинающийся на "Проводка".
3. Док.Движения.Хозрасчетный.Записать() необходимо вынести за переделы цикла из п.2
4. Повторно записывать сам документ после записи проводок нет необходимости.
1. зачем вы ищите документ? У вас есть ссылка на него после записи.
2. Необходимо в цикле выполнять весь код, начинающийся на "Проводка".
3. Док.Движения.Хозрасчетный.Записать() необходимо вынести за переделы цикла из п.2
4. Повторно записывать сам документ после записи проводок нет необходимости.
Как пример, абсолютно точно работающие обработки и тестировались на последних версиях БУХ 3.0...
Прикрепленные файлы:
ЗакрытиеСчета 1602.epf
ЗаполнениеОперацииБух.epf
Еще примеры, но уже не совсем бесплатные (за $m):
https://infostart.ru/public/994326/
https://infostart.ru/public/630456/
Бесплатно - обсуждения:
https://forum.infostart.ru/forum9/topic116963/
https://forum.infostart.ru/forum9/topic193075/
И так далее...
Бесплатно - обсуждения:
И так далее...
вопрос снят
решил вот таким кодом
решил вот таким кодом
&НаСервере
Процедура СоздатьПроводкуБух(Струк)
Док = Документы.ОперацияБух.НайтиПоНомеру(Струк.НомерДока, Струк.ДатаДока);
Если НЕ Док.Пустая() Тогда
Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Док.Ссылка);
Набор.Прочитать();
Проводка = Набор.Добавить();
Проводка.Активность = Истина;
Проводка.Сумма = Струк.Сумма;
Проводка.Организация = Струк.Организация;
Проводка.Период = Струк.ДатаДока;
Проводка.Содержание = Струк.Содержание;
Проводка.СчетДт = ОпределитьСчет(Струк.СчетДт);
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(0).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,0,Струк.СубконтоДт));
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(1).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,1,Струк.СубконтоДт));
Проводка.СубконтоДт.Вставить(Проводка.СчетДт.ВидыСубконто.Получить(2).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетДт,2,Струк.СубконтоДт));
Проводка.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Струк.ПодразделениеДт);
Проводка.СчетКт = ОпределитьСчет(Струк.СчетКт);
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(0).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,0,Струк.СубконтоКт));
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(1).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,1,Струк.СубконтоКт));
Проводка.СубконтоКт.Вставить(Проводка.СчетКт.ВидыСубконто.Получить(2).ВидСубконто, ЗаполнитьСубконто(Струк,Проводка.СчетКт,2,Струк.СубконтоКт));
Проводка.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Струк.ПодразделениеКт);
Набор.Записать(Истина);
Иначе
Сообщить("Не найден документ "+Струк.НомерДока+" от "+Струк.ДатаДока, СтатусСообщения.Важное);
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот