1с83 КА 2.4 Дополнительная проводка к типовому документу
Добрый день!
1С:Комплексная автоматизация 2 (2.4.3.160)
Документ - Передача сырья переработчику.
Необходимо к существующим проводкам добавить дополнительную проводку по забалансу (003.02)
Создал подписку на событие, в добавленном общем модуле написал нужны код, проводка создается и тут же затирается типовой при отражении документа в регламентированном учете.
Подскажите, куда копнуть, чтобы сделать так, чтобы остались и все типовые проводки и добавилась к ним дополнительная?
Заранее всем благодарен.
1С:Комплексная автоматизация 2 (2.4.3.160)
Документ - Передача сырья переработчику.
Необходимо к существующим проводкам добавить дополнительную проводку по забалансу (003.02)
Создал подписку на событие, в добавленном общем модуле написал нужны код, проводка создается и тут же затирается типовой при отражении документа в регламентированном учете.
Подскажите, куда копнуть, чтобы сделать так, чтобы остались и все типовые проводки и добавилась к ним дополнительная?
Заранее всем благодарен.
Найденные решения
Источник - РегистрБухгалтерииНаборЗаписей.Хозрасчетный
Событие - ПередЗаписью
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи
Код обработчика:
Код:
//
событие должно быть ПередЗаписью, так как ПриЗаписи нет смысла потому, что уже набор уже записан в БД
Событие - ПередЗаписью
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи
Код обработчика:
Код:
//
регистр Хозрасчетный
Передача = Источник.Отбор.Регистратор.Значение;
Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда
Если Передача.Давальческое = Истина Тогда
Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
НоваяПроводка = Источник.Добавить();
НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
НоваяПроводка.Период = Передача.Дата;
НоваяПроводка.Организация = Передача.Организация;
НоваяПроводка.ПодразделениеДт = Передача.Подразделение;
НоваяПроводка.Сумма = ТекСтрокаТовары.Сумма;
НоваяПроводка.КоличествоДт = ТекСтрокаТовары.Количество;
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Показатьсобытие должно быть ПередЗаписью, так как ПриЗаписи нет смысла потому, что уже набор уже записан в БД
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Я для КА 1.1 делал подписку при проведении, например:
Процедура ПриПроведенииКомплектацияНоменклатурыОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
Если НЕ Источник.ОтражатьВБухгалтерскомУчете Тогда
возврат;
КонецЕсли;
Движения =Источник.Движения.Хозрасчетный;
Движения.Прочитать();
Проводка = Движения.Добавить();
// здесь заполняем данные проводки
Проводка = Движения.Добавить();
// здесь заполняем данные проводки
Движения.Записать();
КонецПроцедуры
Я для КА 1.1 делал подписку при проведении, например:
Процедура ПриПроведенииКомплектацияНоменклатурыОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
Если НЕ Источник.ОтражатьВБухгалтерскомУчете Тогда
возврат;
КонецЕсли;
Движения =Источник.Движения.Хозрасчетный;
Движения.Прочитать();
Проводка = Движения.Добавить();
// здесь заполняем данные проводки
Проводка = Движения.Добавить();
// здесь заполняем данные проводки
Движения.Записать();
КонецПроцедуры
(2)создал подписку на событие ПриЗаписи
только чет коду ума не дам
Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
// регистр Хозрасчетный
Если ТипЗнч(Источник.Отбор.Регистратор) = Документы.ПередачаСырьяПереработчику Тогда
Если Источник.Давальческое = Истина Тогда
Наборы = Источник.Движения;
Передача = Наборы.Хозрасчетный;
Передача.Записывать = ИСТИНА;
Для Каждого ТекСтрокаТовары Из Источник.Товары Цикл
Движение =Передача.Добавить();
Движение.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
Движение.Период = Источник.Дата;
Движение.Организация = Источник.Организация;
Движение.ПодразделениеДт = Источник.Подразделение;
Движение.Сумма = ТекСтрокаТовары.Сумма;
Движение.КоличествоДт = ТекСтрокаТовары.Количество;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Источник.Контрагент;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показатьтолько чет коду ума не дам
Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
// регистр Хозрасчетный
Передача = Источник.Отбор.Регистратор.Значение;
Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда
Если Передача.Давальческое = Истина Тогда
Наборы = Передача.Движения;
ДвижПередача = Наборы.Хозрасчетный;
ДвижПередача.Записывать = ИСТИНА;
Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
Движение = ДвижПередача.Добавить();
Движение.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
Движение.Период = Передача.Дата;
Движение.Организация = Передача.Организация;
Движение.ПодразделениеДт = Источник.Подразделение;
Движение.Сумма = ТекСтрокаТовары.Сумма;
Движение.КоличествоДт = ТекСтрокаТовары.Количество;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
но получаю ошибку :
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1442)}: Ошибка при вызове метода контекста (Записать)
Возврат Форма.Записать(ПараметрыЗаписи);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(398)}: Ошибка при вызове метода контекста (Записать)
Объект.Движения.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1442)}: Ошибка при вызове метода контекста (Записать)
Возврат Форма.Записать(ПараметрыЗаписи);
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(398)}: Ошибка при вызове метода контекста (Записать)
Объект.Движения.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
Сделал так и все равно мои проводки удаляются и остаются только типовые
Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
// регистр Хозрасчетный
Передача = Источник.Отбор.Регистратор.Значение;
Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда
Если Передача.Давальческое = Истина Тогда
//Наборы = Передача.Движения;
//ДвижПередача = Наборы.Хозрасчетный;
//ДвижПередача.Записывать = ИСТИНА;
Источник.Записывать = ИСТИНА;
Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
//Движение = ДвижПередача.Добавить();
Движение = Источник.Добавить();
Движение.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
Движение.Период = Передача.Дата;
Движение.Организация = Передача.Организация;
Движение.ПодразделениеДт = Передача.Подразделение;
Движение.Сумма = ТекСтрокаТовары.Сумма;
Движение.КоличествоДт = ТекСтрокаТовары.Количество;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
Источник - РегистрБухгалтерииНаборЗаписей.Хозрасчетный
Событие - ПриЗаписи
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи
Код обработчика:
все происходит без ошибок, но моих проводок нет
Событие - ПриЗаписи
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи
Код обработчика:
Процедура ДопПроводкиПоРегиструХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт
// регистр Хозрасчетный
Передача = Источник.Отбор.Регистратор.Значение;
Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда
Если Передача.Давальческое = Истина Тогда
ДокПередача = Передача.ПолучитьОбъект();
НаборПроводок = ДокПередача.Движения.Хозрасчетный;
НаборПроводок.Записывать = ИСТИНА;
Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
НоваяПроводка = Источник.Добавить();
НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
НоваяПроводка.Период = Передача.Дата;
НоваяПроводка.Организация = Передача.Организация;
НоваяПроводка.ПодразделениеДт = Передача.Подразделение;
НоваяПроводка.Сумма = ТекСтрокаТовары.Сумма;
НоваяПроводка.КоличествоДт = ТекСтрокаТовары.Количество;
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
КонецЦикла;
НаборПроводок.Записывать = ИСТИНА;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показатьвсе происходит без ошибок, но моих проводок нет
Источник - РегистрБухгалтерииНаборЗаписей.Хозрасчетный
Событие - ПередЗаписью
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи
Код обработчика:
Код:
//
событие должно быть ПередЗаписью, так как ПриЗаписи нет смысла потому, что уже набор уже записан в БД
Событие - ПередЗаписью
Обработчик - ДобавленныйМодульДляДокументов.ДопПроводкиПоРегиструХозрасчетныйПриЗаписи
Код обработчика:
Код:
//
регистр Хозрасчетный
Передача = Источник.Отбор.Регистратор.Значение;
Если ТипЗнч(Передача) = Тип("ДокументСсылка.ПередачаСырьяПереработчику") Тогда
Если Передача.Давальческое = Истина Тогда
Для Каждого ТекСтрокаТовары Из Передача.Товары Цикл
НоваяПроводка = Источник.Добавить();
НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
НоваяПроводка.Период = Передача.Дата;
НоваяПроводка.Организация = Передача.Организация;
НоваяПроводка.ПодразделениеДт = Передача.Подразделение;
НоваяПроводка.Сумма = ТекСтрокаТовары.Сумма;
НоваяПроводка.КоличествоДт = ТекСтрокаТовары.Количество;
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Передача.Контрагент;
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Показатьсобытие должно быть ПередЗаписью, так как ПриЗаписи нет смысла потому, что уже набор уже записан в БД
И вот продолжаем тему!
День бьюсь, пока безрезультатно.
насколько я понимаю у РБ ПриЗаписи вызывается два раза, вот основной вопрос. как попасть именно во второй вызов и обратиться к НаборуЗаписей?
Теперь необходимо мне удалить типовые проводки по определенному счету. Вот день уже потратил на поиски, где же могу я найти весь набор записей, а не только тот, в который я добавил свои проводки. Мне надо видеть все проводки в одном наборе, чтобы потом из выгрузить в ТЗ, перебрать с условием и обратно вернуть в набор записей. Кстати, как выгрузить в ТЗ из набора понятно, а как обратно в набор загрузить и записать?
То есть получается:
1) найти полный набор записей РБ по данному регистратору,
2) выгрузить наборзаписей РБ в ТЗ
3) перебрать ТЗ, удалить ненужные строки
4) загрузить оставшееся обратно в наборзаписей
кто что подскажет?
День бьюсь, пока безрезультатно.
насколько я понимаю у РБ ПриЗаписи вызывается два раза, вот основной вопрос. как попасть именно во второй вызов и обратиться к НаборуЗаписей?
Теперь необходимо мне удалить типовые проводки по определенному счету. Вот день уже потратил на поиски, где же могу я найти весь набор записей, а не только тот, в который я добавил свои проводки. Мне надо видеть все проводки в одном наборе, чтобы потом из выгрузить в ТЗ, перебрать с условием и обратно вернуть в набор записей. Кстати, как выгрузить в ТЗ из набора понятно, а как обратно в набор загрузить и записать?
То есть получается:
1) найти полный набор записей РБ по данному регистратору,
2) выгрузить наборзаписей РБ в ТЗ
3) перебрать ТЗ, удалить ненужные строки
4) загрузить оставшееся обратно в наборзаписей
кто что подскажет?
ладно, а такой вопрос, есть в документе "передачаСырьяПереработчкиу" в модуле менеджера Функция ТекстОтраженияВРеглУчете()
так вот, а можно ли как-нибудь из модуля менеджера объекта обратиться к реквизиту объекта, посмотреть, если он Истина, тогда не добавлять в массив определенные тексты отражения:
ТекстыОтражения = Новый Массив;
ТекстыОтражения.Добавить(ПередачаКомиссионныхТоваровСписание);
ТекстыОтражения.Добавить(ПередачаТоваров);
ТекстыОтражения.Добавить(ПередачаТоваровСоСкладаПроизводства);
ТекстыОтражения.Добавить(СписаниеМатериаловДавальца);
ТекстыОтражения.Добавить(РасходыНаПроизводствоИзМатериаловДавальца);
ТекстыОтражения.Добавить(СписаниеПродукцииДавальца);
ТекстыОтражения.Добавить(РасходыНаПроизводствоИзПродукцииДавальца);
ТекстыОтражения.Добавить(ЗалоговаяСтоимостьПереданнойТары);
ТекстыОтражения.Добавить(ЗалоговаяСтоимостьПереданнойТарыСкладПроизводства);
ТекстыОтражения.Добавить(ТекстВключениеИсключениеНДСВСтоимость);
так вот, а можно ли как-нибудь из модуля менеджера объекта обратиться к реквизиту объекта, посмотреть, если он Истина, тогда не добавлять в массив определенные тексты отражения:
ТекстыОтражения = Новый Массив;
ТекстыОтражения.Добавить(ПередачаКомиссионныхТоваровСписание);
ТекстыОтражения.Добавить(ПередачаТоваров);
ТекстыОтражения.Добавить(ПередачаТоваровСоСкладаПроизводства);
ТекстыОтражения.Добавить(СписаниеМатериаловДавальца);
ТекстыОтражения.Добавить(РасходыНаПроизводствоИзМатериаловДавальца);
ТекстыОтражения.Добавить(СписаниеПродукцииДавальца);
ТекстыОтражения.Добавить(РасходыНаПроизводствоИзПродукцииДавальца);
ТекстыОтражения.Добавить(ЗалоговаяСтоимостьПереданнойТары);
ТекстыОтражения.Добавить(ЗалоговаяСтоимостьПереданнойТарыСкладПроизводства);
ТекстыОтражения.Добавить(ТекстВключениеИсключениеНДСВСтоимость);
такая ситуация, мне надо было добавить проводки для типового документа. чтобы они были по забалансу, я сделал подписку на событие для РБ ПереЗаписью, все хорошо, проводки добавились
но теперь другая ситуация, как мне у этого документа удалить типовую проводку по определенному счету
проводки формируются при отражении в регламентированном учете
у РБ ПередЗаписью вызывается два раза и формирование проводок происходит как раз во второй раз, я ни как не могу понять и найти. где и как поймать мне это второй раз, где в котором я смогу увидеть весь набор записей РБ
но теперь другая ситуация, как мне у этого документа удалить типовую проводку по определенному счету
проводки формируются при отражении в регламентированном учете
у РБ ПередЗаписью вызывается два раза и формирование проводок происходит как раз во второй раз, я ни как не могу понять и найти. где и как поймать мне это второй раз, где в котором я смогу увидеть весь набор записей РБ
Т.к. важным условием для меня было оставить конфигурацию на поддержке, то через расширение задача решается следующим образом:
В модуле менеджера регистра бухгалтерии Хозрасчетный есть процедура ВыполнитьДопОбработкуПроводок
Добавляем её в расширение &После. Пример кода:
В модуле менеджера регистра бухгалтерии Хозрасчетный есть процедура ВыполнитьДопОбработкуПроводок
Добавляем её в расширение &После. Пример кода:
&После("ВыполнитьДопОбработкуПроводок")
Процедура СЛК_ВыполнитьДопОбработкуПроводок(Проводки)
Регистратор = Проводки.Отбор.Регистратор.Значение;
Если ТипЗнч(Регистратор) = Тип("ДокументСсылка.ПоступлениеБезналичныхДенежныхСредств") Тогда
Если Регистратор.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоступлениеОплатыПоПлатежнойКарте") Тогда
Если Регистратор._СуммаУслуг > 0 Тогда
НоваяПроводка = Проводки.Добавить();
НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
НоваяПроводка.Период = Регистратор.Дата;
НоваяПроводка.Организация = Регистратор.Организация;
НоваяПроводка.ПодразделениеДт = Регистратор.Подразделение;
НоваяПроводка.КоличествоДт = 0;
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы] = ?(Найти(Строка(Регистратор.Подразделение), "ЕНВД") > 0, ПланыВидовХарактеристик.СтатьиРасходов.НайтиПоКоду("КА-000129"), ПланыВидовХарактеристик.СтатьиРасходов.НайтиПоКоду("КА-000008"));
НоваяПроводка.СчетКт = ПланыСчетов.Хозрасчетный.ПродажиПоПлатежнымКартам;
НоваяПроводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Регистратор.Контрагент;
НоваяПроводка.Содержание = "Комиссия по операциям эквайринга";
НоваяПроводка.Сумма = Регистратор._СуммаУслуг;
НоваяПроводка.СуммаНУКт = Регистратор._СуммаУслуг;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот