|
Конвертация данных: перенос остатков взаиморасчетов, документ расчётов | ☑ | ||
---|---|---|---|---|
0
OnePrg
04.03.22
✎
12:01
|
Переносим конвертацией данных остатки взаиморасчётов. В базе приёмнике создаём документ "Операция бух". Первые два субконто (контрагенты и договора) переносим как есть, а вот третье субконто "Документ расчётов" переносить как есть не хотим. Создаём в базе приёмнике для каждого документа расчётов документ "Документ расчётов ручной учёт" и пытаемся его засунуть как третье субконто, но он не переносится.
ТаблицаНаФорме = Запрос.Выполнить().Выгрузить(); ТаблицаНаФорме.Колонки.Добавить("СубконтоДт"); Для каждого строка из ТаблицаНаФорме Цикл СубконтоДт = Новый Соответствие; СубконтоДт.Вставить(Новый Структура("Код", "00004"), строка.Субконто1); СубконтоДт.Вставить(Новый Структура("Код", "00011"), строка.Субконто2); //получаем документ расчетов ДокументРасчетов = Неопределено; СтрукПоиска = Новый Структура; СтрукПоиска.Вставить("Организация", строка.Организация); СтрукПоиска.Вставить("Контрагент", строка.Субконто1); СтрукПоиска.Вставить("ДоговорКонтрагента", строка.Субконто2); СтрукПоиска.Вставить("Комментарий", СокрЛП(строка.Субконто3)); Поиск = ТаблицаДокументыРасчетов.НайтиСтроки(СтрукПоиска); Если Поиск.Количество() = 1 Тогда ДокументРасчетов = Поиск[0].Ссылка; ИначеЕсли Поиск.Количество() = 0 Тогда //создать документ ДокРасчетов = Документы.ДокументРасчетовСКонтрагентом.СоздатьДокумент(); ДокРасчетов.Дата = '20211231235959'; ДокРасчетов.ДоговорКонтрагента = строка.Субконто2; ДокРасчетов.Контрагент = строка.Субконто1; ДокРасчетов.Комментарий = СокрЛП(строка.Субконто3); ДокРасчетов.Организация = строка.Организация; Если ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ВозвратТоваровПоставщику") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ДокументРасчетовСКонтрагентом") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ОтчетКомиссионераОПродажах") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ПлатежныйОрдерПоступлениеДенежныхСредств") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ПоступлениеДопРасходов") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ПоступлениеНМА") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") ИЛИ ТипЗнч(строка.Субконто3) = Тип("ДокументСсылка.РегистрацияВходящегоНалоговогоДокумента") Тогда ДокРасчетов.ДатаВходящегоДокумента = строка.Субконто3.ДатаВходящегоДокумента; ДокРасчетов.НомерВходящегоДокумента = строка.Субконто3.НомерВходящегоДокумента; КонецЕсли; ДокРасчетов.Записать(РежимЗаписиДокумента.Запись); //добавить его в таблицу СтрДок = ТаблицаДокументыРасчетов.Добавить(); СтрДок.Ссылка = ДокРасчетов.Ссылка; СтрДок.Комментарий = ДокРасчетов.Комментарий; СтрДок.Организация = ДокРасчетов.Организация; СтрДок.Контрагент = ДокРасчетов.Контрагент; СтрДок.ДоговорКонтрагента = ДокРасчетов.ДоговорКонтрагента; ДокументРасчетов = ДокРасчетов.Ссылка; Иначе Сообщить("Страшная ошибка"); КонецЕсли; Если ДокументРасчетов <> Неопределено Тогда СубконтоДт.Вставить(Новый Структура("Код", "00028"), ДокументРасчетов); Сообщить(ДокументРасчетов); КонецЕсли; строка.СубконтоДт = СубконтоДт; Организация = строка.Организация; КонецЦикла; ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Дата", '20211231235959'); ИсходящиеДанные.Вставить("Организация", Организация); ИсходящиеДанные.Вставить("Комментарий", "Перенос взаиморасчетов"); ИсходящиеДанные.Вставить("Хозрасчетный", ТаблицаНаФорме); ВыгрузитьПоПравилу(,,ИсходящиеДанные, ,"ОперацияБух"); |
|||
1
OnePrg
04.03.22
✎
12:04
|
>Создаём в базе приёмнике для каждого документа расчётов документ "Документ расчётов ручной учёт"
* в базе источнике |
|||
2
OldCondom
04.03.22
✎
12:08
|
Это месиво даже читать больно. Что конкретно не работает?
|
|||
3
OnePrg
04.03.22
✎
12:13
|
СубконтоДт = Новый Соответствие;
СубконтоДт.Вставить(Новый Структура("Код", "00004"), строка.Субконто1); СубконтоДт.Вставить(Новый Структура("Код", "00011"), строка.Субконто2); СубконтоДт.Вставить(Новый Структура("Код", "00028"), ДокументРасчетов); первые два субконто переносятся, третье нет |
|||
4
OldCondom
04.03.22
✎
12:25
|
Ага! Так все сразу понятнее стало!
А теперь, если абстрагироваться от ужаса, который у вас в ПКО и обратить внимание на задачу, то лучше уж перенести документы отдельно , хоть в комментарий записать дату и номер документа источника и в обработчике "ПослеЗагрузкиДанных" (или как то так), запихнуть их третьим субконто. |
|||
5
OnePrg
04.03.22
✎
13:09
|
Передал номер документа расчётов в поле "Содержание", а "ПослеЗагрузки" операции прошёлся по проводкам и заполнил расчётный документ.
|
|||
6
OldCondom
04.03.22
✎
13:26
|
А сколько сил было потрачено на код сверху)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |