|
Конвертация 2.0. Перенос нетипового субконто | ☑ | ||
---|---|---|---|---|
0
Other
03.09.11
✎
22:22
|
Доброго всем.
Переношу остатки из нетиповой ББУ 7 в ББУ 8. В семерке добавлен справочник и вид субконто РасчетныеДокументы для счета 206. Правила использую типовые с обновленными метаданными. В ББУ 8 добавил соответствующий справочник, настроил для него ПКО, добавил в план видов характеристик "субконто бюджет" еще один предопределенный. Выборка производится "произвольным алгоритмом" в бух. операцию. При загрузке данных возникает ошибка: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4761)}: Ошибка записи объекта ТипОбъекта = Операция (бухгалтерская) Объект = Операция (бухгалтерская) МЦ000001 от 31.12.2010 0:00:00 ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Запись не верна! Вид субконто "<>" не доступен для данной записи! (Регистр бухгалтерии: Журнал проводок; Номер строки: 1) ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4754) КодСообщения = 26 В какую сторону копать? |
|||
1
Other
03.09.11
✎
22:24
|
В догонку, сам справочник по ссылкам переносится как надо, а вот в оперцию не подставляется.
сам алгоритм выборки: // Заполняет выборку данных для правила ОперацияБух движениями переноса остатков со счета 206 // // Входящие данные: // ВыборкаДанных - СписокЗначений // ВыборкаДанных = ВходящиеДанные.Получить("ВыборкаДанных"); СтрокаСчетаСодержание = "206"; Содержание = Параметры.СодержаниеВводОстатков + СтрокаСчетаСодержание; СтрокаСчета = "206.04.1, 206.04.2, 206.04.3, " + "206.05.1, 206.05.2, 206.05.3, " + "206.06.1, 206.06.2, 206.06.3, " + "206.07.1, 206.07.2, 206.07.3, " + "206.08.1, 206.08.2, 206.08.3, " + "206.09.1, 206.09.2, 206.09.3, " + "206.18.1, 206.18.2, 206.18.3, " + "206.19.1, 206.19.2, 206.19.3, " + "206.20.1, 206.20.2, 206.20.3, " + "206.21.1, 206.21.2, 206.21.3"; Ит = СоздатьОбъект("БухгалтерскиеИтоги"); // Выполнять для каждого разделителя учета по отдельности, т. е. по одному документу на фирму ФирмаВыборка = СоздатьОбъект("Справочник.Фирмы"); ФирмаВыборка.ВыбратьЭлементы(0); Пока (ФирмаВыборка.ПолучитьЭлемент() > 0) Цикл // Фирма Фирма = ФирмаВыборка.ТекущийЭлемент(); Ит.ИспользоватьРазделительУчета(Фирма); Ит.ИспользоватьПланСчетов(ОсновнойПланСчетов()); Ит.ИспользоватьСубконто(ВидыСубконто.ФКР,, 1); Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,, 1); Ит.ИспользоватьСубконто(ВидыСубконто.РасчетныеДокументы,, 1); Ит.ИспользоватьСубконто(,, 1); Ит.ИспользоватьСубконто(,, 1); Ит.ВключатьСубсчета(1); Ит.ВыполнитьЗапрос(, Параметры.ДатаПереносаОстатков, СтрокаСчета,,, 1,, "С"); Ит.ВыбратьСчета(); Пока (Ит.ПолучитьСчет() = 1) Цикл // Счет СуммаДокумента = 0; Счет = Ит.Счет; Если Счет.ЭтоГруппа() = 1 Тогда продолжить; КонецЕсли; КВДЧисло = Число(Сред(Счет.Код, 8, 1)); СчетНовыйКод = Лев(Счет.Код, 6); Содержание = "Со счета " + Счет.Код; КодСубсчет = Сред(Счет.Код, 5, 2); // Новый документ ТекСтрока = СоздатьОбъект("СписокЗначений"); ТекСтрока.ДобавитьЗначение(Содержание, "Содержание"); ТекСтрока.ДобавитьЗначение(Фирма, "Баланс"); ТекСтрока.ДобавитьЗначение(Фирма, "Учреждение"); // Подготовить ТЧ для движений ТаблицаДвижения = СоздатьОбъект("ТаблицаЗначений"); ТаблицаДвижения.НоваяКолонка("СубконтоДт"); ТаблицаДвижения.НоваяКолонка("СубконтоКт"); ТаблицаДвижения.НоваяКолонка("Баланс"); ТаблицаДвижения.НоваяКолонка("ВалютаДт"); ТаблицаДвижения.НоваяКолонка("ВалютаКт"); ТаблицаДвижения.НоваяКолонка("КБКДт"); ТаблицаДвижения.НоваяКолонка("КБККт"); ТаблицаДвижения.НоваяКолонка("КВД"); ТаблицаДвижения.НоваяКолонка("Учреждение"); ТаблицаДвижения.НоваяКолонка("НомерЖурнала"); ТаблицаДвижения.НоваяКолонка("Содержание"); ТаблицаДвижения.НоваяКолонка("ХарактеристикаДвиженияДт"); ТаблицаДвижения.НоваяКолонка("ХарактеристикаДвиженияКт"); ТаблицаДвижения.НоваяКолонка("ВалютнаяСуммаДт"); ТаблицаДвижения.НоваяКолонка("ВалютнаяСуммаКт"); ТаблицаДвижения.НоваяКолонка("КоличествоДт"); ТаблицаДвижения.НоваяКолонка("КоличествоКт"); ТаблицаДвижения.НоваяКолонка("Сумма"); ТаблицаДвижения.НоваяКолонка("Регистратор"); ТаблицаДвижения.НоваяКолонка("СчетДт"); ТаблицаДвижения.НоваяКолонка("СчетКт"); Если ((КодСубсчет = "04") Или (КодСубсчет = "05") Или (КодСубсчет = "06") Или (КодСубсчет = "07") Или (КодСубсчет = "08") Или (КодСубсчет = "09") Или (КодСубсчет = "18") Или (КодСубсчет = "19") Или (КодСубсчет = "20") Или (КодСубсчет = "21") Или (КодСубсчет = "22") Или (КодСубсчет = "23") Или (КодСубсчет = "24")) Тогда ЕстьДоговор = 1; Иначе ЕстьДоговор = 0; КонецЕсли; СуммаДокумента = СуммаДокумента + Ит.СКД("С"); Ит.ВыбратьСубконто(ВидыСубконто.ФКР); Пока (Ит.ПолучитьСубконто(ВидыСубконто.ФКР) = 1) Цикл // ФКР ФКР = Ит.Субконто(ВидыСубконто.ФКР); Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты); Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл // Контрагенты Контрагенты = Ит.Субконто(ВидыСубконто.Контрагенты); Если (ЕстьДоговор = 1) Тогда Ит.ВыбратьСубконто(4); Пока Ит.ПолучитьСубконто(4) = 1 Цикл // Договоры Договоры = Ит.Субконто(4); Ит.ВыбратьСубконто(5); Пока Ит.ПолучитьСубконто(5) = 1 Цикл //Расчетные документы РасчетныеДокументы = Ит.Субконто(5); Сумма = Ит.СКД("С"); Если (Сумма = 0) Тогда Продолжить; КонецЕсли; ТаблицаДвижения.НоваяСтрока(); // СубконтоДт СубконтоДт = СоздатьОбъект("ТаблицаЗначений"); СубконтоДт.НоваяКолонка("Ключ"); СубконтоДт.НоваяКолонка("Значение"); // Контрагенты СубконтоДт.НоваяСтрока(); СубконтоДт.Ключ = ВидыСубконто.Контрагенты; СубконтоДт.Значение = Контрагенты; // Договоры СубконтоДт.НоваяСтрока(); СубконтоДт.Ключ = ВидыСубконто.Договоры; СубконтоДт.Значение = Договоры; // Расчетные документы СубконтоДт.НоваяСтрока(); СубконтоДт.Ключ = ВидыСубконто.РасчетныеДокументы; СубконтоДт.Значение = РасчетныеДокументы; ТаблицаДвижения.СубконтоДт = СубконтоДт; // СубконтоКт (пустое) СубконтоКт = СоздатьОбъект("ТаблицаЗначений"); СубконтоКт.НоваяКолонка("Ключ"); СубконтоКт.НоваяКолонка("Значение"); ТаблицаДвижения.СубконтоКт = СубконтоКт; ТаблицаДвижения.Баланс = Фирма; ТаблицаДвижения.КБКДт = ФКР; ТаблицаДвижения.КВД = КВДЧисло; ТаблицаДвижения.Учреждение = Фирма; ТаблицаДвижения.Содержание = Содержание; ТаблицаДвижения.Сумма = Сумма; ТаблицаДвижения.СчетДт = СчетНовыйКод; ТаблицаДвижения.СчетКт = "000"; ТаблицаДвижения.ХарактеристикаДвиженияДт = Перечисление.ВидыДвиженийНФА.ВводОстатков; КонецЦикла; //Расчетные документы; КонецЦикла; // Договоры Иначе // (ЕстьДоговор = 0) Сумма = Ит.СКД("С"); Если (Сумма = 0) Тогда Продолжить; КонецЕсли; ТаблицаДвижения.НоваяСтрока(); // СубконтоДт СубконтоДт = СоздатьОбъект("ТаблицаЗначений"); СубконтоДт.НоваяКолонка("Ключ"); СубконтоДт.НоваяКолонка("Значение"); // Контрагенты СубконтоДт.НоваяСтрока(); СубконтоДт.Ключ = ВидыСубконто.Контрагенты; СубконтоДт.Значение = Контрагенты; ТаблицаДвижения.СубконтоДт = СубконтоДт; // СубконтоКт (пустое) СубконтоКт = СоздатьОбъект("ТаблицаЗначений"); СубконтоКт.НоваяКолонка("Ключ"); СубконтоКт.НоваяКолонка("Значение"); ТаблицаДвижения.СубконтоКт = СубконтоКт; ТаблицаДвижения.Баланс = Фирма; ТаблицаДвижения.КБКДт = ФКР; ТаблицаДвижения.КВД = КВДЧисло; ТаблицаДвижения.Учреждение = Фирма; ТаблицаДвижения.Содержание = Содержание; ТаблицаДвижения.Сумма = Сумма; ТаблицаДвижения.СчетДт = СчетНовыйКод; ТаблицаДвижения.СчетКт = "000"; ТаблицаДвижения.ХарактеристикаДвиженияДт = Перечисление.ВидыДвиженийНФА.ВводОстатков; КонецЕсли; // Если (ЕстьДоговор = 1) КонецЦикла; // Контрагенты КонецЦикла; // ФКР Если (ТаблицаДвижения.КоличествоСтрок() > 0) Тогда ТекСтрока.ДобавитьЗначение(СуммаДокумента, "СуммаОперации"); ТекСтрока.ДобавитьЗначение(ТаблицаДвижения, "ЕПСБУ"); ВыборкаДанных.ДобавитьЗначение(ТекСтрока); КонецЕсли; КонецЦикла; // Счет КонецЦикла; // Фирма |
|||
2
Other
04.09.11
✎
10:36
|
кто-нибудь знает где почитать про то, как конвертация ищет данные при загрузке?
|
|||
3
Other
04.09.11
✎
11:14
|
Разобрался. Просто в метаданных продублировались ВидыСубконто.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |