Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
09 окт 2024, 04:35

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

Автор buketov.av, 16 ноя 2018, 11:19

0 Пользователей и 1 гость просматривают эту тему.

buketov.av

Добрый день!
1С:Комплексная автоматизация 2 (2.4.3.160)
Документ - Передача сырья переработчику.
Необходимо к существующим проводкам добавить дополнительную проводку по забалансу (003.02)
Создал подписку на событие, в добавленном общем модуле написал нужны код, проводка создается и тут же затирается типовой при отражении документа в регламентированном учете.
Подскажите, куда копнуть, чтобы сделать так, чтобы остались и все типовые проводки и добавилась к ним дополнительная?
Заранее всем благодарен.

oleg-x

Как вариант, сделать через расширение, там можно указать, когда будет выполнятся код. До или после выполнение процедуры.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

buketov.av

Цитата: oleg-x от 16 ноя 2018, 11:47
Как вариант, сделать через расширение, там можно указать, когда будет выполнятся код. До или после выполнение процедуры.
к сожалению, не силен в расширениях

oleg-x

Цитата: buketov.av от 16 ноя 2018, 11:48
Цитата: oleg-x от 16 ноя 2018, 11:47
Как вариант, сделать через расширение, там можно указать, когда будет выполнятся код. До или после выполнение процедуры.
к сожалению, не силен в расширениях
Там ничего сложного, по сути то же самое. Только почитать предпроцессы, что бы выполнялось в нужный момент.
1) Добавляете расширение с нужным типом.
2) Выделяете нужный объект в конфигурации, нажимаете правой кнопкой мыши и выбираете добавить в расширение.
3) Пишите свою процедуру проведения с предпроцессом после выполнения основной, так же как если бы делали это в конфигурации, а не расширении.
Прочитайте одну статью про расширения, что бы разобраться в нюансах создания самого расширения и думаю у Вас не возникнет сложностей.
Добавлено: 16 ноя 2018, 12:02


Ну или сделайте не через подписку, а в конце проведения добавте свою процедуру проведения, которую можно описать уже в общем модуле, если используется в нескольких документах.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

buketov.av

спасибо, буду пробовать
Добавлено: 16 ноя 2018, 12:30


не понимаю расширение и что в нем писать и как...

oleg-x

Добавляем документ в расширение, открываем модуль объекта из расширения. Добавляем стандартную процедуру проведения и выбираем "после". Пишем свою процедуру проведения.
&После("ОбработкаПроведения")
Процедура Расш1_ОбработкаПроведения(Отказ, РежимПроведения)
//Пишем свою процедуру проведения, так же как если бы писали просто в модуле документа
КонецПроцедуры
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

buketov.av

Так?

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

Добавлено: 16 ноя 2018, 13:01


видимо не так, получил ошибку - Документ.ПередачаСырьяПереработчику.Реквизит.ОрганизацияРасш: Использование метаданных, влияющих на структуры данных, в расширении недопустимо

Добавлено: 16 ноя 2018, 13:10



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


но все равно проводки удаляются после отражения в регламентированном учете

oleg-x

Тогда надо разбиратся уже, почему удаляет, может там заного делает движения, а все старые удаляет (так сказать двойная работа) и надо также и там прописать свой код.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

buketov.av

это. наверное, мне надо идти и смотреть в общий модуль РеглУчетПроведениеСервер, Процедуру "Процедура ОтразитьВсе(ПериодРасчета, Организация = Неопределено, ДанныеПоОтражениюВУчете = Неопределено) Экспорт"
Добавлено: 16 ноя 2018, 15:04


когда я провожу документ, нажимаю Дт/Кт, то вижу свои вновь созданные дописанные проводки, но типовых нет, затем происходит отражение документа в регламентированном учете и мои проводки удаляются и появляются типовые
вот и вопрос: как сделать так. чтобы были и мои и типовые?
Добавлено: 16 ноя 2018, 19:17


пока не удалось найти решение
Добавлено: 17 ноя 2018, 10:58


Ребят, помогите, оч надо, не могу ни как решить эту задачу

buketov.av

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

Код обработчика:


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

все происходит без ошибок, но моих проводок нет
Добавлено: 18 ноя 2018, 20:26


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

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск