Доброго дня.
пишу правила для выгрузки из УПП в БП 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 документ операция создается, счета и суммы переносятся.
не переносятся только субконто.
кто нибудь сталкивался с подобным?
есть мысли, как перенести субконто?
Для Каждого Элемент из РезультатЗапроса Цикл
Стр = Состав.Добавить();
Стр.СчетДт = Элемент.СчетДт;
Стр.СчетКт = Элемент.СчетКт;
Стр.Организация = Элемент.Организация;
Стр.Сумма = Элемент.СуммаОборот;
Стр.Период = Источник.Дата;
//СубконтоДТ
СубконтоДт = Новый Соответствие;
//Субконто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); //Склады
КонецЕсли;