Все ошибки и проблемы были выявлены на версии ERP 2.5.17.194. В последующих версиях этих проблем может уже и не быть.
Ошибка арифметического переполнения SQL. Возникает при работе с действительно большими суммами:

Как отследить и найти: Находите запрос, сохраняете его со всеми параметрами, потом урезаете пошагово запрос до того момента, пока ошибка не исчезнет. Анализируете последнее на предмет возможной конвертации типа числа.
В нашем случае ошибка возникает в модуле БюджетированиеСервер в процедуре ПересчитатьТаблицуДанныхВВалюту. В нашем случае ошибок несколько, но одни однотипные. Ошибка в строке запроса: ТОГДА %2 * ЕСТЬNULL(КоэффициентыПересчетаИзФункциональнойВалюты.КоэффициентПересчета, 1) где %2 подменяется, например на СуммаВФункциональнойВалюте. Здесь происходит неявное преобразование типа. Из виртульной таблицы в запросе мы получаем СуммаВФункциональнойВалюте, которой сервер SQL присвоил тип Numeric, не смотря на то, что СуммаВФункциональнойВалюте едва в него умещалась.
Но вот результат перемножения этого числа ЕСТЬNULL(КоэффициентыПересчетаИзФункциональнойВалюты.КоэффициентПересчета, 1) уже нельзя преобразовать к исходному типу, хотя, внимание , мы умножаем на единицу в нашем примере. На лицо явная ошибка SQL. Исправить ошибку SQL мы не можем, но можем в запросе указать явно нужный итоговый тип числа. Итоговое решение:
#Удаление
| ТОГДА %2 * ЕСТЬNULL(КоэффициентыПересчетаИзФункциональнойВалютыСтроки.КоэффициентПересчета, 1)
#КонецУдаления
#Вставка
| ТОГДА ВЫРАЗИТЬ(%2 КАК ЧИСЛО (25,2)) * ЕСТЬNULL(КоэффициентыПересчетаИзФункциональнойВалютыСтроки.КоэффициентПересчета, 1)
#КонецВставки
На всякий случай, вы можете скачать готовое расширение, с примерами из этой публикации.
Проблемы с выгрузкой и загрузкой модели бюджетирования.
Первая проблем - огромный размер файла и очень длительное время загрузки и выгрузки.
Присмотревшись внутрь файла, вы можете увидеть там половину базы, включая склады, серии и т.д. Дело в том, что выгрузка работает рекурсивно. Если у вас разрезы аналитики виды номенклатуры, то выгрузятся все реквизиты видов номенклатуры, потом все реквизиты реквизитов в видах номенклатуры потом... Ну, принцип вы поняли. А если ничего из этого в приемнике не нужно? Там свои виды номенклатуры и т.д. Будем урезать осетра. В модуле ВыгрузкаЗагрузкаМоделейМеждународногоУчетаИБюджетирования в процедуре ЗаписатьЗначениеПриНеобходимости исключим лишнее:
ТекстПодзапроса = "ВЫБРАТЬ * ИЗ #Таблица КАК ТаблицаОбъекта_ ГДЕ Ссылка = &Ссылка";
#Вставка
// Нет необходимости выгружать подчиненые ревизиты
Если ОбъектМД.ПолноеИмя()= "Справочник.ВидыНоменклатуры" Тогда
ТекстПодзапроса = "ВЫБРАТЬ Ссылка, Наименование ИЗ #Таблица КАК ТаблицаОбъекта_ ГДЕ Ссылка = &Ссылка";
ИначеЕсли ОбъектМД.ПолноеИмя()= "Справочник.УпаковкиЕдиницыИзмерения" Тогда
Возврат; // не выгружаем
КонецЕсли;
#КонецВставки
Проблемы с модификацией объектов подсистемы
Сюрприз, при добавлении своих реквизитов в объекты подсистемы, выгрузка и загрузка модели бюджетирования перестает работать.
Казалось бы, зачем менять то, что работает. В нашем случае политика партии организации такая, что бюджетирование делается в мастер базе, после чего через свой брокер тиражируется по остальным. Для этого нужно к объектам добавит общий реквизит с уникальным идентификатором из мастер базы по которому проводится синхронизация.
Ошибка при загрузке:
Возможно, структура загружаемых данных не соответствует конфигурации, проверьте актуальность файла данных
{ОбщийМодуль.ВыгрузкаЗагрузкаМоделейМеждународногоУчетаИБюджетирования.Модуль(255)}: Ошибка при вызове метода контекста (ПрочитатьXML): Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.СтатьиРасходов Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.СтатьиРасходов:Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}НСИ_ГУИД Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
Ошибка возникает в строке ЗаписанноеЗначение = Сериализатор.ПрочитатьXML(ЧтениеXML), где видно, что мы пытаемся прочитать объект, согласно модели, которая ничего не знает о новых общих реквизитах. Слава богу, что эти объекты выгружаются через брокер и их можно не выгружать через файл.
Для этого я в модифицирую предыдущий код, еще больше облегчая файл переноса:
ТекстПодзапроса = "ВЫБРАТЬ * ИЗ #Таблица КАК ТаблицаОбъекта_ ГДЕ Ссылка = &Ссылка";
#Вставка
// Нет необходимости выгружать подчиненые ревизиты
Если ОбъектМД.ПолноеИмя()= "Справочник.ВидыНоменклатуры" Тогда
ТекстПодзапроса = "ВЫБРАТЬ Ссылка, Наименование ИЗ #Таблица КАК ТаблицаОбъекта_ ГДЕ Ссылка = &Ссылка";
ИначеЕсли ОбъектМД.ПолноеИмя()= "Справочник.УпаковкиЕдиницыИзмерения" Тогда
Возврат; // не выгружаем
ИначеЕсли ОбъектМД.ПолноеИмя()= "Справочник.НаправленияДеятельности" Тогда
Возврат; // не выгружаем
ИначеЕсли ОбъектМД.ПолноеИмя()= "ПланВидовХарактеристик.СтатьиРасходов" Тогда
Возврат; // не выгружаем
ИначеЕсли ОбъектМД.ПолноеИмя()= "ПланВидовХарактеристик.СтатьиДоходов" Тогда
Возврат; // не выгружаем
ИначеЕсли ОбъектМД.ПолноеИмя()= "Справочник.СтатьиДвиженияДенежныхСредств" Тогда
Возврат; // не выгружаем
КонецЕсли;
#КонецВставки
Если кто знает способ, как обойти проблему с доп. реквизитом другим способом, пожалуйста, напишите в комментариях, может пригодиться.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.17.194
Вступайте в нашу телеграмм-группу Инфостарт