Преобразование одного документа в несколько

1. glime 106 30.03.16 18:07 Сейчас в теме
Добрый день.
Существует не типовая БД в которой есть документ Выплата ЗП через кассу одновременно двигает и взаиморасчеты и регистр денежные средства. Необходимо данное перенести в типовые документы Ведомость на выплату ЗП через кассу и несколько РКО (в зависимости от Статьи ДДС).
Более подробно
В источнике
Выплата ЗП
Реквизиты ТЧ
- ФизЛицо
- Сотрудник
- Сумма
- Статья ДДС
В приемнике
Ведомость
Куча ТЧ (Все они заполняются, все ок)
Несколько РКО (В зависимости от статьи ДДС)

Что сделано:
В ПКО в обработке после выгрузке сделан запрос по данным и циклом идет выгрузка по правилам.
Основная проблема, что при загрузке проведение РКО происходит раньше чем Ведомости, соответственно, вываливатется ошибка проведения РКО в Предупреждениях при синхронизации.
Подскажите как обойти данную проблему.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3166 30.03.16 19:46 Сейчас в теме
(1) glime, проводить РКО после загрузки всех данных.
8. glime 106 31.03.16 08:38 Сейчас в теме
(2) starik-2005, слишком сложно их все отлавливать.
3. vovan_victory 65 30.03.16 21:29 Сейчас в теме
(1) glime, я бы в параметрах конвертации сделал параметр(ну скажем "ТАблицаРКО") с типом таблица значений и с признаком "использовать при загрузке".
В обработчике "Перед загрузкой данных" конвертации:

Если НЕ ТИпЗнч(Параметры.ТаблицаРКО) = ТИп("ТаблицаЗначений") Тогда
  Параметры.ТаблицаРКО = Новый ТаблицаЗначений;
КонецЕСли;

Параметры.ТаблицаРКО.Колонки.Добавить("РКО");

/////

В обработчике "Перед загрузкой" РКО:

РежимЗаписи = "Запись";
// Так мы создадим документ РКО и просто запишем.

В обработчике "После загрузки" РКО:
//Сохраним все РКО в таблице
НоваяСтрока = Параметры.ТаблицаРКО.Добавить();
НоваяСтрока.РКО = Объект.Ссылка; 


В обработчике "Перед загрузкой" Ведомость:

РежимЗаписи = "Проведение";  


В обработчике "После загрузки" Ведомость:

в цикле пробегаем Параметры.ТаблицаРКО и проводим все РКО
SITR-utyos; glime; +2 Ответить
6. glime 106 31.03.16 08:37 Сейчас в теме
(3) vovan_victory, по моему то что я искал. Счас проверю.
9. Xershi 1535 31.03.16 08:53 Сейчас в теме
(1) glime, а просто поменять последовательность правил не помогает?
13. glime 106 01.04.16 11:05 Сейчас в теме
10. Федосеев 31.03.16 09:47 Сейчас в теме
(1) glime, тебе Рустам правильно написал
создаешь правило выгрузки данных в нем пишешь сперва выполнить ПКО (выгрузка ведомости), после второе ПКО (выгрузка РКО). То есть нужно создать два разных ПКО и выгружать их по порядку из ПВД.
4. adva 45 31.03.16 07:04 Сейчас в теме
Еще есть событие у ПКО "после выгрузки в файл", которое означает, что сначала в файл попадут данные по ПКО, а затем уже данные, сформированные данным обработчиком. Т.е. порядок скорее всего поменяется в файле
15. glime 106 01.04.16 11:18 Сейчас в теме
(4) adva, данный способ помог упорядочить выгрузку, возражения будут если я отдам "Попугаи" человеку?
5. Рустам 1 31.03.16 08:11 Сейчас в теме
Создай ПКО, затем создай ПВД. Расположи их в начале. В ПВД, в событии "Перед выгрузкой", добавь условие типа
Если Объект.Статья = "Нужная статья" Тогда
ИмяПко = "Другое ПКО"
КонецЕсли
Федосеев; +1 Ответить
7. glime 106 31.03.16 08:37 Сейчас в теме
(5) Рустам, не помогает, пробовал.
11. insurgut 208 31.03.16 13:12 Сейчас в теме
Основная проблема, что при загрузке проведение РКО происходит раньше чем Ведомости, соответственно, вываливатется ошибка проведения РКО в Предупреждениях при синхронизации.
Подскажите как обойти данную проблему.


Если делать все через план обмена, то ваши РКО упадут в список отложенных движений и при следующем обмене например проведутся как положено.

Если же нужно делать все в раз, в методе самой конвертации Перед загрузкой данных делаете что-то вроде:
Параметры.Вставить("ОбъектыОтложенногоПроведения", Новый Массив);


В ПКО документа РКО После загрузки делаете:
Объект.Записать();
Параметры.ОбъектыОтложенногоПроведения.Добавить(Объект.Ссылка);


В ПКО ведомости После загрузки:
Если Объект.Проведен Тогда
Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецЕсли;


Ну и методе После загрузки данных самой конвертации проводите каждый РКО из вашего массива Параметры.ОбъектыОтложенногоПроведения.
12. insurgut 208 31.03.16 13:15 Сейчас в теме
На самом деле ответы на большинство вопросов по конвертации можно найти в стандартных правилах типовых конфигураций...

P.S. (upd 01.04.2016) Тока заметил что расписанный мною принцип выше расписали. Повторенье - мать ученья :-)
14. glime 106 01.04.16 11:16 Сейчас в теме
Буду краток, использую стандартный перепиленный обмен с зуп 2.5(План обмена скопировал). Раскопал стандартный код загрузки. так вот проведение идет после записи всех объектов в БД, формирование РКО перенес в ПКО ПослеВыгрузкиВФайл что дало последовательность в формируемой таблице ДокументовКПроведение как надо (Ведомость, РКО, РКО), но при разборе проведения РКО в модуле идет проверка на проведенность Ведомости, так вот данная ведомость проведена, а запрос ее не видит. Вроде как пишется отрывается и закрывается транзакция и документ уже должен быть записан, но не могу понять почему, глюк?
16. vovan_victory 65 01.04.16 12:01 Сейчас в теме
(14) glime,время создания ведомости должно быть раньше чем время создания РКО
17. glime 106 01.04.16 12:40 Сейчас в теме
в коде проверки идет просмотр проведено или нет.
18. vovan_victory 65 01.04.16 12:47 Сейчас в теме
(17) glime,а проводки то на какой момент времени? Если РКО проведен раньше чем ведомость, то получается задолженность. Быстрее всего РКО ищет ведомость на дату меньше или равно дате документа, а дата - это не только день, месяц и год, а еще и время.
19. insurgut 208 01.04.16 13:51 Сейчас в теме
(17) glime, в момент загрузки может и не увидеть, для этого в ПКО ведомости после загрузки делаете Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

Ну и обратить внимание на даты, как выше написали. И Дата документа и ПериодРегистрации указанной в ведомости должны быть ранее даты РКО. Проверьте, заполняете ли вы реквизит ПериодРегистрации документа ЗарплатаКВыплатеОрганизаций.

Так же проверьте, заполняете ли вы признак ВыплаченностьЗарплаты в табличной части Зарплата вашей ведомости. Значение должно быть равно либо Перечисления.ВыплаченностьЗарплаты.Выплачено, либо Перечисления.ВыплаченностьЗарплаты.Задепонировано
20. glime 106 01.04.16 14:26 Сейчас в теме
(19) insurgut, то есть принудительно в момент записи, не ждать пока он проведет стандартным механизмом?
21. insurgut 208 01.04.16 14:34 Сейчас в теме
(20) glime, да, только все остальное тоже проверьте.
Оставьте свое сообщение

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