1с83 КА 2.4 Дополнительная проводка к типовому документу

1. buketov_av 16.11.18 19:57 Сейчас в теме
Добрый день!
1С:Комплексная автоматизация 2 (2.4.3.160)
Документ - Передача сырья переработчику.
Необходимо к существующим проводкам добавить дополнительную проводку по забалансу (003.02)
Создал подписку на событие, в добавленном общем модуле написал нужны код, проводка создается и тут же затирается типовой при отражении документа в регламентированном учете.
Подскажите, куда копнуть, чтобы сделать так, чтобы остались и все типовые проводки и добавилась к ним дополнительная?
Заранее всем благодарен.
Найденные решения
13. buketov_av 18.11.18 20:33 Сейчас в теме
Источник - РегистрБухгалтерииНаборЗаписей.Хозрасчетный
Событие - ПередЗаписью
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи

Код обработчика:
Код:
//
регистр Хозрасчетный
    Передача = Источник.Отбор.Регистратор.Значение;
    Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда
        Если Передача.Давальческое = Истина Тогда
            Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
                НоваяПроводка = Источник.Добавить();
                НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
                НоваяПроводка.Период = Передача.Дата;
                НоваяПроводка.Организация = Передача.Организация;
                НоваяПроводка.ПодразделениеДт = Передача.Подразделение;
                НоваяПроводка.Сумма = ТекСтрокаТовары.Сумма;
                НоваяПроводка.КоличествоДт = ТекСтрокаТовары.Количество;
                НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
                НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;   
            КонецЦикла;   
        КонецЕсли;
    КонецЕсли;  
Показать


событие должно быть ПередЗаписью, так как ПриЗаписи нет смысла потому, что уже набор уже записан в БД
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. Spirit007 17.11.18 05:16 Сейчас в теме
(1)

Я для КА 1.1 делал подписку при проведении, например:

Процедура ПриПроведенииКомплектацияНоменклатурыОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
Если НЕ Источник.ОтражатьВБухгалтерскомУчете Тогда
возврат;
КонецЕсли;

Движения =Источник.Движения.Хозрасчетный;
Движения.Прочитать();

Проводка = Движения.Добавить();
// здесь заполняем данные проводки

Проводка = Движения.Добавить();
// здесь заполняем данные проводки

Движения.Записать();
КонецПроцедуры
10. buketov_av 17.11.18 11:01 Сейчас в теме
(9)
Источник.ОтражатьВБухгалтерскомУчете

у меня такого нет
2. acanta 16.11.18 20:36 Сейчас в теме
А какое есть событие на отражении в регл.учете?
3. buketov_av 16.11.18 20:45 Сейчас в теме
(2)создал подписку на событие ПриЗаписи

Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
	// регистр Хозрасчетный 
	Если ТипЗнч(Источник.Отбор.Регистратор) = Документы.ПередачаСырьяПереработчику Тогда
		Если Источник.Давальческое = Истина Тогда		
			Наборы = Источник.Движения;
			Передача = Наборы.Хозрасчетный;
			Передача.Записывать = ИСТИНА;		
			Для Каждого ТекСтрокаТовары Из Источник.Товары Цикл
				Движение =Передача.Добавить();
				Движение.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
				Движение.Период = Источник.Дата;
				Движение.Организация = Источник.Организация;
				Движение.ПодразделениеДт = Источник.Подразделение;
				Движение.Сумма = ТекСтрокаТовары.Сумма;
				Движение.КоличествоДт = ТекСтрокаТовары.Количество;
				Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Источник.Контрагент;
				Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
			КонецЦикла;	
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Показать


только чет коду ума не дам
4. acanta 16.11.18 20:58 Сейчас в теме
Отладчиком в замере производительности - что происходит при отражении в регл.учете? Запись чего?
5. buketov_av 16.11.18 21:03 Сейчас в теме
я добавил подписку на событие при записи регистра Хозрасчетный
6. buketov_av 16.11.18 21:40 Сейчас в теме
Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
	// регистр Хозрасчетный 
	Передача = Источник.Отбор.Регистратор.Значение;
	Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда 
		Если Передача.Давальческое = Истина Тогда		
			Наборы = Передача.Движения;
			ДвижПередача = Наборы.Хозрасчетный;
			ДвижПередача.Записывать = ИСТИНА;		
			Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
				Движение = ДвижПередача.Добавить();
				Движение.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
				Движение.Период = Передача.Дата;
				Движение.Организация = Передача.Организация;
				Движение.ПодразделениеДт = Источник.Подразделение;
				Движение.Сумма = ТекСтрокаТовары.Сумма;
				Движение.КоличествоДт = ТекСтрокаТовары.Количество;
				Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
				Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
			КонецЦикла;	
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Показать
7. buketov_av 16.11.18 21:52 Сейчас в теме
но получаю ошибку :

{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1442)}: Ошибка при вызове метода контекста (Записать)
Возврат Форма.Записать(ПараметрыЗаписи);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(398)}: Ошибка при вызове метода контекста (Записать)
Объект.Движения.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
8. buketov_av 16.11.18 22:57 Сейчас в теме
Сделал так и все равно мои проводки удаляются и остаются только типовые

Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
	// регистр Хозрасчетный 
	Передача = Источник.Отбор.Регистратор.Значение;
	Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда 
		Если Передача.Давальческое = Истина Тогда		
			//Наборы = Передача.Движения;
			//ДвижПередача = Наборы.Хозрасчетный;
			//ДвижПередача.Записывать = ИСТИНА;
			Источник.Записывать = ИСТИНА;
			Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
				//Движение = ДвижПередача.Добавить();
				Движение = Источник.Добавить();
				Движение.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
				Движение.Период = Передача.Дата;
				Движение.Организация = Передача.Организация;
				Движение.ПодразделениеДт = Передача.Подразделение;
				Движение.Сумма = ТекСтрокаТовары.Сумма;
				Движение.КоличествоДт = ТекСтрокаТовары.Количество;
				Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
				Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
			КонецЦикла;	
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Показать
11. buketov_av 17.11.18 11:02 Сейчас в теме
Источник.ОтражатьВБухгалтерскомУчете
у меня такого нет
12. buketov_av 18.11.18 13:02 Сейчас в теме
Источник - РегистрБухгалтерииНаборЗаписей.Хозрасчетный
Событие - ПриЗаписи
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи

Код обработчика:
Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
	 // регистр Хозрасчетный 
    Передача = Источник.Отбор.Регистратор.Значение;
    Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда 
	Если Передача.Давальческое = Истина Тогда
		ДокПередача = Передача.ПолучитьОбъект();
		НаборПроводок = ДокПередача.Движения.Хозрасчетный;
		НаборПроводок.Записывать = ИСТИНА;
            Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
			    НоваяПроводка = Источник.Добавить();
                НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
                НоваяПроводка.Период = Передача.Дата;
                НоваяПроводка.Организация = Передача.Организация;
                НоваяПроводка.ПодразделениеДт = Передача.Подразделение;
                НоваяПроводка.Сумма = ТекСтрокаТовары.Сумма;
                НоваяПроводка.КоличествоДт = ТекСтрокаТовары.Количество;
                НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
                НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
			КонецЦикла;
			НаборПроводок.Записывать = ИСТИНА;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
Показать

все происходит без ошибок, но моих проводок нет
13. buketov_av 18.11.18 20:33 Сейчас в теме
Источник - РегистрБухгалтерииНаборЗаписей.Хозрасчетный
Событие - ПередЗаписью
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи

Код обработчика:
Код:
//
регистр Хозрасчетный
    Передача = Источник.Отбор.Регистратор.Значение;
    Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда
        Если Передача.Давальческое = Истина Тогда
            Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
                НоваяПроводка = Источник.Добавить();
                НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
                НоваяПроводка.Период = Передача.Дата;
                НоваяПроводка.Организация = Передача.Организация;
                НоваяПроводка.ПодразделениеДт = Передача.Подразделение;
                НоваяПроводка.Сумма = ТекСтрокаТовары.Сумма;
                НоваяПроводка.КоличествоДт = ТекСтрокаТовары.Количество;
                НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
                НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;   
            КонецЦикла;   
        КонецЕсли;
    КонецЕсли;  
Показать


событие должно быть ПередЗаписью, так как ПриЗаписи нет смысла потому, что уже набор уже записан в БД
14. buketov_av 20.11.18 15:11 Сейчас в теме
И вот продолжаем тему!

День бьюсь, пока безрезультатно.

насколько я понимаю у РБ ПриЗаписи вызывается два раза, вот основной вопрос. как попасть именно во второй вызов и обратиться к НаборуЗаписей?

Теперь необходимо мне удалить типовые проводки по определенному счету. Вот день уже потратил на поиски, где же могу я найти весь набор записей, а не только тот, в который я добавил свои проводки. Мне надо видеть все проводки в одном наборе, чтобы потом из выгрузить в ТЗ, перебрать с условием и обратно вернуть в набор записей. Кстати, как выгрузить в ТЗ из набора понятно, а как обратно в набор загрузить и записать?

То есть получается:
1) найти полный набор записей РБ по данному регистратору,
2) выгрузить наборзаписей РБ в ТЗ
3) перебрать ТЗ, удалить ненужные строки
4) загрузить оставшееся обратно в наборзаписей

кто что подскажет?
15. buketov_av 21.11.18 09:42 Сейчас в теме
ладно, а такой вопрос, есть в документе "передачаСырьяПереработчкиу" в модуле менеджера Функция ТекстОтраженияВРеглУчете()

так вот, а можно ли как-нибудь из модуля менеджера объекта обратиться к реквизиту объекта, посмотреть, если он Истина, тогда не добавлять в массив определенные тексты отражения:

ТекстыОтражения = Новый Массив;
ТекстыОтражения.Добавить(ПередачаКомиссионныхТоваровСписание);
ТекстыОтражения.Добавить(ПередачаТоваров);
ТекстыОтражения.Добавить(ПередачаТоваровСоСкладаПроизводства);
ТекстыОтражения.Добавить(СписаниеМатериаловДавальца);
ТекстыОтражения.Добавить(РасходыНаПроизводствоИзМатериаловДавальца);
ТекстыОтражения.Добавить(СписаниеПродукцииДавальца);
ТекстыОтражения.Добавить(РасходыНаПроизводствоИзПродукцииДавальца);
ТекстыОтражения.Добавить(ЗалоговаяСтоимостьПереданнойТары);
ТекстыОтражения.Добавить(ЗалоговаяСтоимостьПереданнойТарыСкладПроизводства);
ТекстыОтражения.Добавить(ТекстВключениеИсключениеНДСВСтоимость);
16. buketov_av 21.11.18 14:30 Сейчас в теме
такая ситуация, мне надо было добавить проводки для типового документа. чтобы они были по забалансу, я сделал подписку на событие для РБ ПереЗаписью, все хорошо, проводки добавились
но теперь другая ситуация, как мне у этого документа удалить типовую проводку по определенному счету

проводки формируются при отражении в регламентированном учете
у РБ ПередЗаписью вызывается два раза и формирование проводок происходит как раз во второй раз, я ни как не могу понять и найти. где и как поймать мне это второй раз, где в котором я смогу увидеть весь набор записей РБ
17. buketov_av 21.11.18 21:02 Сейчас в теме
эх... Люди Добрые, скажите как убрать из движений типового документа типовые проводки по 10 счету
18. buketov_av 22.11.18 07:27 Сейчас в теме
19. buy_sale 220 21.05.19 13:26 Сейчас в теме
20. insurgut 207 26.03.20 14:42 Сейчас в теме
Т.к. важным условием для меня было оставить конфигурацию на поддержке, то через расширение задача решается следующим образом:

В модуле менеджера регистра бухгалтерии Хозрасчетный есть процедура ВыполнитьДопОбработкуПроводок

Добавляем её в расширение &После. Пример кода:

&После("ВыполнитьДопОбработкуПроводок")
Процедура СЛК_ВыполнитьДопОбработкуПроводок(Проводки)
	
	Регистратор = Проводки.Отбор.Регистратор.Значение;
	Если ТипЗнч(Регистратор) = Тип("ДокументСсылка.ПоступлениеБезналичныхДенежныхСредств") Тогда
		Если Регистратор.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоступлениеОплатыПоПлатежнойКарте") Тогда
			Если Регистратор._СуммаУслуг > 0 Тогда
				НоваяПроводка = Проводки.Добавить();
                НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
                НоваяПроводка.Период = Регистратор.Дата;
                НоваяПроводка.Организация = Регистратор.Организация;
                НоваяПроводка.ПодразделениеДт = Регистратор.Подразделение;
                
                НоваяПроводка.КоличествоДт = 0;
                НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы] = ?(Найти(Строка(Регистратор.Подразделение), "ЕНВД") > 0, ПланыВидовХарактеристик.СтатьиРасходов.НайтиПоКоду("КА-000129"), ПланыВидовХарактеристик.СтатьиРасходов.НайтиПоКоду("КА-000008"));
				НоваяПроводка.СчетКт = ПланыСчетов.Хозрасчетный.ПродажиПоПлатежнымКартам;
				НоваяПроводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Регистратор.Контрагент;
				НоваяПроводка.Содержание = "Комиссия по операциям эквайринга";
				
				НоваяПроводка.Сумма = Регистратор._СуммаУслуг;
				НоваяПроводка.СуммаНУКт = Регистратор._СуммаУслуг;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры
Показать
Antoska; rolin555; al_zzz; +3 Ответить
Оставьте свое сообщение

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