Начиная с версии платформы 8.3.25 расширили функционал работы с временными таблицами. Теперь можно во временную таблицу добавлять новые строки через "ДОБАВИТЬ". Это круто, подумал я, и решил немедленно воспользоваться такой возможностью.
У меня был алгоритм, который заполнял некий регистр сведений и при этом использовал данные этого регистра, чтоб просчитать новую запись для него же. Запись в регистр - это НЕ очень производительная процедура. В попытках отказаться от поштучной записи в этот регистр, используя таблицу значений не увенчались успехом, т.к. при большом количестве циклов поиска нужных данных из этой таблицы значений так же приводили к падению производительности. И тут бац и 1С добавляет такую полезную фичу.
В какой-то момент я решился отрефакторить данный алгоритм. Каково же было разочарование, когда потратив надцать часов, добавление новой записи во временную таблицу мне выдало: "Тип устанавливаемого значения не соответствует типу поля временной таблицы. ...". И тут я провалился ещё на надцать часов, чтоб найти обходные пути.
Итак, новая фича работает только, если добавление происходит используя данные самой базы, как это описано в зазеркалье:
А если в подготовленную временную таблицу:
пытаешься добавить так:
То выскакивает ошибка "Тип устанавливаемого значения не соответствует типу поля временной таблицы. ...". Хотя в параметры запроса были переданы значения с типами аналогичными измерениям и ресурсам регистра сведений. Ошибки вызывали поля НЕ ссылочного типа: число, дата, строка. Это и понятно, в параметрах запроса мы передаём значения, описание типов идут при этом лесом. Попытки выразить их в запросе ни к чему не привели. Я прошерстил кучу форумов и ресурсов, пробовал и так и сяк. В общем нашёл обходной путь как всё таки можно добавить свою строчку во временную таблицу. Единственно, не удалось справится с реквизитом с типом строка, перепробовал разные варианты, итог - строка не поддаётся. Т.е. если у вас в регистре/справочнике и т.п. есть реквизит с типом строка, то воспользоваться функцией ДОБАВИТЬ вам не удастся - будет возникать ошибка.
Прикладываю обработку, в которой реализован обход этой проблемы. Будем надеяться, что 1С решит эту проблему, и в каком-нибудь релизе платформы решит эту проблему, и можно будет нормально добавлять записи, а будет ещё лучше, если будет возможность изменять значение конкретной строки временной таблицы, а то приходится в конце расчета сворачивать строки, что так же затратно при больших объёмах данных.
Приложенная обработка будет работать на конфигурациях, в которых есть регистр сведений КурсыВалют. В обработке 2 кнопки, одна заработает, когда 1С исправят описанную проблему, вторая содержит обходной путь, позволяющий во временную таблицу добавлять свои записи без привязки к конфигурации.
Обработка протестирована на версии платформы: 1С:Предприятие 8.3 (8.3.25.1445).