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

Подписка на событие. Обработка проведения.КА 2.4

Автор buketov.av, 04 сен 2018, 08:24

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

buketov.av

Добрый день всем!
Обращаюсь за помощью, так как ни разу такого не делал. но вот пришло время.
Есть у меня 5 разных документов (типовые), есть регистр накопления (добавленный), мне необходимо делать записи в регистр при проведении этих документов.
Что и где дописать в каждый из документов я знаю, чтобы они сделали записи по регистру, а вот я не очень бы хотел вносить в них изменения, и хотел бы сделать подписку на событие для всех этих документов. Сделал, написал код, для одного документа работает, но не могу понять как в одну подписку на событие или как вообще сделать так, чтобы данная подписка работала на все 5 документов, хотя поля из Источников не всегда совпадают. Один из документов делает приход в регистр(отражение зп в финучете), а остальные 4 расход(все ведомости).

Golickoff

У источника поставьте галку "Составной тип данных" и выбирайте все необходимые документы.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

buketov.av

это я делал и в процедуре задавал условия типа Если ТипЗнч(Источник) = Тип("ДокументСсылка.ОтражениеЗарплатыВФинансовомУчете") Тогда
но безрезультатно
Добавлено: 04 сен 2018, 09:02


пробую варианты дальше

Добавлено: 04 сен 2018, 09:06


или же мне правильнее сделать несколько подписок на события? сколько документов столько и подписок?
Добавлено: 04 сен 2018, 09:57


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

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

Если ТипЗнч(Источник) = Тип("ДокументСсылка.ВедомостьНаВыплатуЗарплатыВБанк")ИЛИ ТипЗнч(Источник) = Тип("ДокументСсылка.ВедомостьНаВыплатуЗарплатыВКассу") ИЛИ
ТипЗнч(Источник) = Тип("ДокументСсылка.ВедомостьНаВыплатуЗарплатыПеречислением")ИЛИ ТипЗнч(Источник) = Тип("ДокументСсылка.ВедомостьНаВыплатуЗарплатыРаздатчиком") Тогда
Наборы = Источник.Движения;
Расчеты = Наборы.РасчетыСКонтрагентами;
Для каждого Стр из Расчеты Цикл
Стр.ВидДвижения = ВидДвиженияНакопления.Расход;
Стр.Период = Источник.Дата;
Стр.Организация = Источник.Организация;
Стр.СпособОтраженияЗарплатыВБухучете = Источник.СпособВыплаты;
Стр.ФизическоеЛицо = Источник.СтрокаЗарплата.ФизическоеЛицо;
Стр.Сумма = Источник.СтрокаЗарплата.КВыплате;
КонецЦикла;
КонецЕсли;

Исключение

КонецПопытки;


Добавлено: 04 сен 2018, 14:11


так тоже не работает, ни как могу понять. как это правильно сделать. Подскажите или дайте образец, я разберусь.


Процедура ДобавитьДвиженияВРегистрЗарплатаДоплатаОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

//Если ТипЗнч(Источник) = Тип("ДокументСсылка.ОтражениеЗарплатыВФинансовомУчете") Тогда
Наборы = Источник.Движения;
Расчеты = Наборы.ЗарплатаДоплата;
Для каждого Стр из Расчеты Цикл
//Стр.Направление = Источник.Направление;
Стр.ВидДвижения = ВидДвиженияНакопления.Приход;
Стр.Период = Источник.Дата;
Стр.Организация = Источник.Организация;
Стр.ФизическоеЛицо = Источник.НачисленнаяЗарплатаИВзносыПоФизлицам.ФизическоеЛицо;
Стр.ВидНачисленияОплатыТрудаДляНУ = Источник.НачисленнаяЗарплатаИВзносыПоФизлицам.ВидНачисленияОплатыТрудаДляНУ;
Стр.СпособОтраженияЗарплатыВБухучете = Источник.НачисленнаяЗарплатаИВзносыПоФизлицам.СпособОтраженияЗарплатыВБухучете;
Стр.Сумма = Источник.НачисленнаяЗарплатаИВзносыПоФизлицам.Сумма;
КонецЦикла;
//КонецЕсли;

КонецПроцедуры

Процедура ДобавитьДвиженияВРегистрЗарплатаДоплатаОбработкаПроведенияРКО(Источник, Отказ, РежимПроведения) Экспорт

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

КонецПроцедуры

Процедура ДобавитьДвиженияВРегистрЗарплатаДоплатаОбработкаПроведенияВедомости(Источник, Отказ, РежимПроведения) Экспорт

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

КонецПроцедуры


Добавлено: 05 сен 2018, 09:08


Разобрался сам. Всем спасибо )))
Решение:

          Наборы = Источник.Движения;
            Расчеты = Наборы.ЗарплатаДоплата;
            Расчеты.Записывать = ИСТИНА;           
            Для каждого Стр из Источник.НачисленнаяЗарплатаИВзносыПоФизлицам Цикл
                Движение = Расчеты.Добавить();
                Движение.ВидДвижения = ВидДвиженияНакопления.Приход;       
                Движение.Период = Источник.Дата;
                Движение.Организация = Источник.Организация;
                Движение.ФизическоеЛицо = Стр.ФизическоеЛицо;
                Движение.ВидНачисленияОплатыТрудаДляНУ = Стр.ВидНачисленияОплатыТрудаДляНУ;
                Движение.СпособОтраженияЗарплатыВБухучете = Стр.СпособОтраженияЗарплатыВБухучете;
                Движение.Сумма = Стр.Сумма;
            КонецЦикла;

Теги:

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

Рейтинг@Mail.ru

Поиск