Как изменить проводку в расширении конфигурации при проведении документа

1. djserega 258 06.04.22 13:15 Сейчас в теме
Добрый день
Есть необходимость поменять проводку при проведении документа в расширении конфигурации... Платформа 1С8.3 (8.3.18). Конфигурация БП 3.0
Добавил в расширение:
&После("ОбработкаПроведения")
Процедура Расш_ОбработкаПроведения(Отказ, РежимПроведения)

		ДвиженияХозрасчетный = ЭтотОбъект.Движения.Хозрасчетный;
		ДвиженияХозрасчетный.Записывать = Истина;
		
		Для каждого Движение Из ДвиженияХозрасчетный Цикл
		
			Если Движение.СчетДт.ПринадлежитЭлементу(ПланыСчетов.Хозрасчетный.СебестоимостьПродаж) И Движение.СчетКт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция  Тогда                 
				Движение.СчетДт = ПланыСчетов.Хозрасчетный.НераспределеннаяПрибыльВОбращении;
				Движение.СубконтоДт.Очистить();
				ВидСубконто = Движение.СчетДт.ВидыСубконто.Получить(0).ВидСубконто;
				Движение.СубконтоДт.Вставить(ВидСубконто, СубконтоБлаготворительность); 
				Движение.Сумма = 0;
				Движение.СуммаНУДт = 0;
				Движение.СуммаНУКт = 0;
				Движение.Содержание = "Благотворительность";
			КонецЕсли;
		
		КонецЦикла;
Показать

Так вот, строка "Движение.СубконтоДт.Очистить()" не очищает Субконто, а очищает только значения Субконто и соответственно документ не проводится...
Подскажите, что делаю не так... или может каким другим способом можно поправить проводку?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
16. djserega 258 07.04.22 17:04 Сейчас в теме
Сделал через ТаблицуЗначений... Вроде работает...

&После("ОбработкаПроведения")
Процедура Расш_ОбработкаПроведения(Отказ, РежимПроведения)

        ДвиженияХозрасчетный = ЭтотОбъект.Движения.Хозрасчетный;
        ДвиженияХозрасчетный.Записывать = Истина;
        
	ТЗПроводок = ДвиженияХозрасчетный.Выгрузить();
		
        Для каждого Движение Из ТЗПроводок Цикл
        
            Если Движение.СчетДт.ПринадлежитЭлементу(ПланыСчетов.Хозрасчетный.СебестоимостьПродаж) И Движение.СчетКт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция  Тогда                 
                Движение.СчетДт = ПланыСчетов.Хозрасчетный.НераспределеннаяПрибыльВОбращении;
                ВидСубконто = Движение.СчетДт.ВидыСубконто.Получить(0).ВидСубконто;
		Движение.ВидСубконтоДт1 = ВидСубконто;
		Движение.ВидСубконтоДт2 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка();
		Движение.ВидСубконтоДт3 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка();
                Движение.Сумма = 0;
                Движение.СуммаНУДт = 0;
                Движение.СуммаНУКт = 0;
                Движение.Содержание = "Благотворительность";
            КонецЕсли;
        
        КонецЦикла;

	ДвиженияХозрасчетный.Загрузить(ТЗПроводок);
		
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. triviumfan 93 06.04.22 22:40 Сейчас в теме
(1)
Так вот, строка "Движение.СубконтоДт.Очистить()" не очищает Субконто, а очищает только значения Субконто и соответственно документ не проводится...

Это ведь коллекция значений субконто. Что значит "не очищает субконто"? Ошибка какая?
3. djserega 258 07.04.22 08:59 Сейчас в теме
(2) При очищении коллекции ошибки никакой, при этом очищаются значения субконто, а сами виды субконто не очищаются...
Ошибка потом в конце проведения, что субконто не соответствует данному счету...
4. laperuz 46 07.04.22 09:08 Сейчас в теме
А зачем руками это все делать, если есть БухгалтерскийУчет.УстановитьСубконто()?
5. djserega 258 07.04.22 11:08 Сейчас в теме
(4)
БухгалтерскийУчет.УстановитьСубконто()

А что это меняет... в этой процедуре тоже самое делается: Субконто.Вставить(ВидСубконто, ЗначениеСубконто)
что не очищает от старых субконт и добавляет новое...
6. laperuz 46 07.04.22 11:13 Сейчас в теме
(5)Эмм, я правильно понимаю, что вы хотите на счет, у которого нет субконто, например, Номенклатура, в проводку добавить именно субконто Номенклатура и значение тоже из Номенклатуры? Вообще так не должно работать, список субконто фиксирован и настраивается у счета, не может быть изменен при формировании проводки.
7. djserega 258 07.04.22 11:20 Сейчас в теме
(6) нет. Я хочу заменить Счет дебета с 90.02.1 на 84.03, например
Счет меняется, но субконто от прежнего счета не могу удалить... Получается, что счет 84.03 и к нему два субконтно: НоменклатурныеГруппы и НаправлениеИспользованияПрибыли. А должно быть одно...
8. laperuz 46 07.04.22 11:29 Сейчас в теме
(7)А, понятно.
С партнерского, смотрите на скрине.
Возможно ошибка, возможно задуманное поведение, 1С не ответили.

Попробуйте через ВидыСубконто.Выгрузить()/ВидыСубконто.Загрузить(), может сработает.
Прикрепленные файлы:
10. djserega 258 07.04.22 16:02 Сейчас в теме
(8) Я тоже заметил, что с изменением релиза платформы поведение поменялось...
но как тогда изменить проводку?
13. uk09 07.04.22 16:07 Сейчас в теме
(10)
Вам, релиз платформы не поменять, правильно понимаю ?
14. djserega 258 07.04.22 16:30 Сейчас в теме
(13)Пока не можем... релиз 8.3.18.1208
9. uk09 07.04.22 15:31 Сейчас в теме +1 $m
Добрый день!
Вопрос актуален ? Проверила на платформе 1С:Предприятие 8.3 (8.3.20.1674), всё работает, с небольшим нюансом
11. djserega 258 07.04.22 16:03 Сейчас в теме
12. uk09 07.04.22 16:06 Сейчас в теме
Движение.КоличествоДт = 0;
15. djserega 258 07.04.22 16:37 Сейчас в теме
(12)
Движение.КоличествоДт = 0

Сначала было обрадовался... увидел нужные проводки, но повторное проведение выдало ту же ошибку...
16. djserega 258 07.04.22 17:04 Сейчас в теме
Сделал через ТаблицуЗначений... Вроде работает...

&После("ОбработкаПроведения")
Процедура Расш_ОбработкаПроведения(Отказ, РежимПроведения)

        ДвиженияХозрасчетный = ЭтотОбъект.Движения.Хозрасчетный;
        ДвиженияХозрасчетный.Записывать = Истина;
        
	ТЗПроводок = ДвиженияХозрасчетный.Выгрузить();
		
        Для каждого Движение Из ТЗПроводок Цикл
        
            Если Движение.СчетДт.ПринадлежитЭлементу(ПланыСчетов.Хозрасчетный.СебестоимостьПродаж) И Движение.СчетКт = ПланыСчетов.Хозрасчетный.ГотоваяПродукция  Тогда                 
                Движение.СчетДт = ПланыСчетов.Хозрасчетный.НераспределеннаяПрибыльВОбращении;
                ВидСубконто = Движение.СчетДт.ВидыСубконто.Получить(0).ВидСубконто;
		Движение.ВидСубконтоДт1 = ВидСубконто;
		Движение.ВидСубконтоДт2 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка();
		Движение.ВидСубконтоДт3 = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка();
                Движение.Сумма = 0;
                Движение.СуммаНУДт = 0;
                Движение.СуммаНУКт = 0;
                Движение.Содержание = "Благотворительность";
            КонецЕсли;
        
        КонецЦикла;

	ДвиженияХозрасчетный.Загрузить(ТЗПроводок);
		
Показать
Оставьте свое сообщение

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