Конвертация данных 2. перенос субконто

1. Dadka_kmv 4 19.01.22 09:03 Сейчас в теме
Доброго дня.
пишу правила для выгрузки из УПП в БП 3.0
в УПП есть документ РасчетСебестоимостиВыпуска
из него мне нужно перетащить движения и запихнуть в БП в документ Операция.
в ПКГС написал следующее:

Состав = Новый ТаблицаЗначений;
Состав.Колонки.Добавить("СчетДт");
Состав.Колонки.Добавить("СчетКт");
Состав.Колонки.Добавить("СубконтоДт");
Состав.Колонки.Добавить("СубконтоКт");
Состав.Колонки.Добавить("Организация");
Состав.Колонки.Добавить("Сумма");
Состав.Колонки.Добавить("Период");

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОборотыДтКт.СчетДт КАК СчетДт,
| ХозрасчетныйОборотыДтКт.СчетКт КАК СчетКт,
| ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК СубконтоДт1,
| ХозрасчетныйОборотыДтКт.СубконтоДт2 КАК СубконтоДт2,
| ХозрасчетныйОборотыДтКт.СубконтоДт3 КАК СубконтоДт3,
| ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК СубконтоКт1,
| ХозрасчетныйОборотыДтКт.СубконтоКт2 КАК СубконтоКт2,
| ХозрасчетныйОборотыДтКт.СубконтоКт3 КАК СубконтоКт3,
| ХозрасчетныйОборотыДтКт.Организация КАК Организация,
| ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаОборот,
| ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК КоличествоОборотДт,
| ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК КоличествоОборотКт,
| ХозрасчетныйОборотыДтКт.ВалютаДт КАК ВалютаДт,
| ХозрасчетныйОборотыДтКт.ВалютаКт КАК ВалютаКт,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт,
| ИСТИНА КАК Активность
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
| &ДатаНачала,
| &ДатаОкончания,
| Регистратор,
| СчетДт.Код = ""41.01""
| ИЛИ СчетДт.Код = ""41.05""
| ИЛИ СчетДт.Код = ""45.01""
| ИЛИ СчетДт.Код = ""10.01"",
| ,
| ,
| ,
| ) КАК ХозрасчетныйОборотыДтКт
|ГДЕ
| ХозрасчетныйОборотыДтКт.Регистратор = &Регистратор
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ХозрасчетныйОборотыДтКт.СчетДт,
| ХозрасчетныйОборотыДтКт.СчетКт,
| ХозрасчетныйОборотыДтКт.СубконтоДт1,
| ХозрасчетныйОборотыДтКт.СубконтоДт2,
| ХозрасчетныйОборотыДтКт.СубконтоДт3,
| ХозрасчетныйОборотыДтКт.СубконтоКт1,
| ХозрасчетныйОборотыДтКт.СубконтоКт2,
| ХозрасчетныйОборотыДтКт.СубконтоКт3,
| ХозрасчетныйОборотыДтКт.Организация,
| ХозрасчетныйОборотыДтКт.СуммаОборот,
| ХозрасчетныйОборотыДтКт.КоличествоОборотДт,
| ХозрасчетныйОборотыДтКт.КоличествоОборотКт,
| NULL,
| NULL,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотДт,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотКт,
| ИСТИНА
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
| &ДатаНачала,
| &ДатаОкончания,
| Регистратор,
| ,
| ,
| СчетКт.Код = ""41.01""
| ИЛИ СчетКт.Код = ""41.05""
| ИЛИ СчетКт.Код = ""45.01""
| ИЛИ СчетКт.Код = ""10.01"",
| ,
| ) КАК ХозрасчетныйОборотыДтКт
|ГДЕ
| ХозрасчетныйОборотыДтКт.Регистратор = &Регистратор";





Запрос.УстановитьПараметр("ДатаНачала", Источник.Дата);
Запрос.УстановитьПараметр("ДатаОкончания", Источник.Дата);
Запрос.УстановитьПараметр("Регистратор", Источник);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();


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

//СубконтоДТ
СубконтоДт = Новый Структура; //Соответствие;
//Субконто1 ДТ
Если Элемент.СчетДт.Код = "45.01" или Элемент.СчетДт.Код = "41.01" или Элемент.СчетДт.Код = "41.05" или Элемент.СчетДт.Код = "10.01" или НЕ Элемент.СчетДт.Код = "90.08.1" или НЕ Элемент.СчетДт.Код = "90.02.1" Тогда
СубконтоДт.Вставить(Новый Структура("Код", "00001"), Элемент.СубконтоДт1); //Субконто1. Номенклатура
КонецЕсли;

//Субконто2 ДТ
Если Элемент.СчетДт.Код = "45.01" или НЕ Элемент.СчетДт.Код = "90.08.1" или НЕ Элемент.СчетДт.Код = "90.02.1" Тогда
СубконтоДт.Вставить(Новый Структура("Код", "00005"), Элемент.СубконтоДт2); //Контрагенты
ИначеЕсли Элемент.СчетДт.Код = "41.01" или Элемент.СчетДт.Код = "41.05" или Элемент.СчетДт.Код = "10.01" или НЕ Элемент.СчетДт.Код = "90.08.1" или НЕ Элемент.СчетДт.Код = "90.02.1" Тогда
СубконтоДт.Вставить(Новый Структура("Код", "00027"), Элемент.СубконтоДт2); //Склады
КонецЕсли;

Стр.СубконтоДт = СубконтоДт;

//СубконтоКТ
СубконтоКт = Новый Структура; //Соответствие;
//Субконто1 КТ
Если Элемент.СчетКт.Код = "45.01" или Элемент.СчетКт.Код = "41.01" или Элемент.СчетКт.Код = "41.05" или Элемент.СчетКт.Код = "10.01" Тогда
СубконтоКт.Вставить(Новый Структура("Код", "00001"), Элемент.СубконтоКт1); //Субконто1. Номенклатура
КонецЕсли;

//Субконто2 КТ
Если Элемент.СчетКт.Код = "45.01" Тогда
СубконтоКт.Вставить(Новый Структура("Код", "00005"), Элемент.СубконтоКт2); //Контрагенты
ИначеЕсли Элемент.СчетКт.Код = "41.01" или Элемент.СчетКт.Код = "41.05" или Элемент.СчетКт.Код = "10.01" Тогда
СубконтоКт.Вставить(Новый Структура("Код", "00027"), Элемент.СубконтоКт2); //Склады
КонецЕсли;

Стр.СубконтоКт = СубконтоКт;

КонецЦикла;


в БП 3.0 документ операция создается, счета и суммы переносятся.
не переносятся только субконто.
кто нибудь сталкивался с подобным?
есть мысли, как перенести субконто?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 19.01.22 09:25 Сейчас в теме
(1)А каким образом определяются ПКО для субконто?
3. neuro88 19.01.22 16:31 Сейчас в теме
скорее всего - нужна типизация субконто.

а для этого надо не структуру создавать:
СубконтоДт = Новый Структура;


а соответствие.
Поскольку для структуры ключ - это всегда текстовое поле. а в соответствии возможно использование различных типов, что и происходит:
СубконтоДт.Вставить(Новый Структура("Код", "00001")

где Новый Структура("Код", "00001") - код элемента плана видов характеристик, как он определен в базе-приемнике

взято из статьи
4. Dadka_kmv 4 21.01.22 09:19 Сейчас в теме
(2) никак.

если кому либо пригодится, то решил так:

в ПКГС

Состав = Новый ТаблицаЗначений;
Состав.Колонки.Добавить("СчетДт");
Состав.Колонки.Добавить("СчетКт");
Состав.Колонки.Добавить("СубконтоДт");
Состав.Колонки.Добавить("СубконтоКт");
Состав.Колонки.Добавить("Организация");
Состав.Колонки.Добавить("Сумма");
Состав.Колонки.Добавить("Период");

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОборотыДтКт.СчетДт КАК СчетДт,
| ХозрасчетныйОборотыДтКт.СчетКт КАК СчетКт,
| ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК СубконтоДт1,
| ХозрасчетныйОборотыДтКт.СубконтоДт2 КАК СубконтоДт2,
| ХозрасчетныйОборотыДтКт.СубконтоДт3 КАК СубконтоДт3,
| ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК СубконтоКт1,
| ХозрасчетныйОборотыДтКт.СубконтоКт2 КАК СубконтоКт2,
| ХозрасчетныйОборотыДтКт.СубконтоКт3 КАК СубконтоКт3,
| ХозрасчетныйОборотыДтКт.Организация КАК Организация,
| ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаОборот,
| ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК КоличествоОборотДт,
| ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК КоличествоОборотКт,
| ХозрасчетныйОборотыДтКт.ВалютаДт КАК ВалютаДт,
| ХозрасчетныйОборотыДтКт.ВалютаКт КАК ВалютаКт,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт,
| ИСТИНА КАК Активность
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
| &ДатаНачала,
| &ДатаОкончания,
| Регистратор,
| СчетДт.Код = ""41.01""
| ИЛИ СчетДт.Код = ""41.05""
| ИЛИ СчетДт.Код = ""45.01""
| ИЛИ СчетДт.Код = ""10.01"",
| ,
| ,
| ,
| ) КАК ХозрасчетныйОборотыДтКт
|ГДЕ
| ХозрасчетныйОборотыДтКт.Регистратор = &Регистратор
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ХозрасчетныйОборотыДтКт.СчетДт,
| ХозрасчетныйОборотыДтКт.СчетКт,
| ХозрасчетныйОборотыДтКт.СубконтоДт1,
| ХозрасчетныйОборотыДтКт.СубконтоДт2,
| ХозрасчетныйОборотыДтКт.СубконтоДт3,
| ХозрасчетныйОборотыДтКт.СубконтоКт1,
| ХозрасчетныйОборотыДтКт.СубконтоКт2,
| ХозрасчетныйОборотыДтКт.СубконтоКт3,
| ХозрасчетныйОборотыДтКт.Организация,
| ХозрасчетныйОборотыДтКт.СуммаОборот,
| ХозрасчетныйОборотыДтКт.КоличествоОборотДт,
| ХозрасчетныйОборотыДтКт.КоличествоОборотКт,
| NULL,
| NULL,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотДт,
| ХозрасчетныйОборотыДтКт.ВалютнаяСуммаОборотКт,
| ИСТИНА
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
| &ДатаНачала,
| &ДатаОкончания,
| Регистратор,
| ,
| ,
| СчетКт.Код = ""41.01""
| ИЛИ СчетКт.Код = ""41.05""
| ИЛИ СчетКт.Код = ""45.01""
| ИЛИ СчетКт.Код = ""10.01"",
| ,
| ) КАК ХозрасчетныйОборотыДтКт
|ГДЕ
| ХозрасчетныйОборотыДтКт.Регистратор = &Регистратор";





Запрос.УстановитьПараметр("ДатаНачала", Источник.Дата);
Запрос.УстановитьПараметр("ДатаОкончания", Источник.Дата);
Запрос.УстановитьПараметр("Регистратор", Источник);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

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

//СубконтоДТ
СубконтоДт = Новый Соответствие;
//Субконто1 ДТ
Если Элемент.СчетДт.Код = "41.01" или Элемент.СчетДт.Код = "41.05" или Элемент.СчетДт.Код = "10.01" Тогда
СубконтоДт.Вставить(Новый Структура("Код", "00001"), Элемент.СубконтоДт1); //Субконто1. Номенклатура
СубконтоДт.Вставить(Новый Структура("Код", "00027"), Элемент.СубконтоДт2); //Склады
КонецЕсли;

//Субконто2 ДТ
Если Элемент.СчетДт.Код = "45.01" Тогда
СубконтоДт.Вставить(Новый Структура("Код", "00005"), Элемент.СубконтоДт2); //Контрагенты
СубконтоДт.Вставить(Новый Структура("Код", "00001"), Элемент.СубконтоДт1); //Субконто1. Номенклатура
КонецЕсли;

Стр.СубконтоДт = СубконтоДт;

//СубконтоКТ
СубконтоКт = Новый Соответствие;
//////Субконто1 КТ
Если Элемент.СчетКт.Код = "45.01" или Элемент.СчетКт.Код = "41.01" или Элемент.СчетКт.Код = "41.05" или Элемент.СчетКт.Код = "10.01" Тогда
СубконтоКт.Вставить(Новый Структура("Код", "00001"), Элемент.СубконтоКт1); //Субконто1. Номенклатура
КонецЕсли;

//Субконто2 КТ
Если Элемент.СчетКт.Код = "45.01" Тогда
СубконтоКт.Вставить(Новый Структура("Код", "00005"), Элемент.СубконтоКт2); //Контрагенты
ИначеЕсли Элемент.СчетКт.Код = "41.01" или Элемент.СчетКт.Код = "41.05" или Элемент.СчетКт.Код = "10.01" Тогда
СубконтоКт.Вставить(Новый Структура("Код", "00027"), Элемент.СубконтоКт2); //Склады
КонецЕсли;

Стр.СубконтоКт = СубконтоКт;

КонецЦикла;

КоллекцияОбъектов = Состав;
5. Dadka_kmv 4 21.01.22 09:20 Сейчас в теме
(3) да, классная статья.
по ней и писал.
Оставьте свое сообщение

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