Добавление данных в существующую временную таблицу - использование и проблемы

04.03.25

Разработка - Инструментарий разработчика

Начиная с версии платформы 8.3.25, разработчики расширили функционал работы с временными таблицами. Теперь можно во временную таблицу добавлять новые строки через "ДОБАВИТЬ". Это круто, подумал я, и решил немедленно воспользоваться такой возможностью. Итак, новая фича работает только, если добавление происходит используя данные самой базы. Если же хочешь добавить свою запись, то выскакивает ошибка "Тип устанавливаемого значения не соответствует типу поля временной таблицы. ...". Хотя в параметры запроса были переданы значения с типами аналогичными измерениям и ресурсам регистра сведений. В приложенной обработке реализован обход проблемы с добавлением своей произвольной строки. Проблема наблюдается в версии платформы 8.3.25.1445, возможно, в новых версиях платформы это исправят.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Добавление данных в существующую временную таблицу - использование и проблемы:
.epf 7,51Kb
2 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Начиная с версии платформы 8.3.25 расширили функционал работы с временными таблицами. Теперь можно во временную таблицу добавлять новые строки через "ДОБАВИТЬ". Это круто, подумал я, и решил немедленно воспользоваться такой возможностью.

У меня был алгоритм, который заполнял некий регистр сведений и при этом использовал данные этого регистра, чтоб просчитать новую запись для него же. Запись в регистр - это НЕ очень производительная процедура. В попытках отказаться от поштучной записи в этот регистр, используя таблицу значений не увенчались успехом, т.к. при большом количестве циклов поиска нужных данных из этой таблицы значений так же приводили к падению производительности. И тут бац и 1С добавляет такую полезную фичу.

В какой-то момент я решился отрефакторить данный алгоритм. Каково же было разочарование, когда потратив надцать часов, добавление новой записи во временную таблицу мне выдало: "Тип устанавливаемого значения не соответствует типу поля временной таблицы. ...". И тут я провалился ещё на надцать часов, чтоб найти обходные пути.

Итак, новая фича работает только, если добавление происходит используя данные самой базы, как это описано в зазеркалье:

 

 

А если в подготовленную временную таблицу:

 

 

пытаешься добавить так:

 

 

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

Прикладываю обработку, в которой реализован обход этой проблемы. Будем надеяться, что 1С решит эту проблему, и в каком-нибудь релизе платформы решит эту проблему, и можно будет нормально добавлять записи, а будет ещё лучше, если будет возможность изменять значение конкретной строки временной таблицы, а то приходится в конце расчета сворачивать строки, что так же затратно при больших объёмах данных.

Приложенная обработка будет работать на конфигурациях, в которых есть регистр сведений КурсыВалют. В обработке 2 кнопки, одна заработает, когда 1С исправят описанную проблему, вторая содержит обходной путь, позволяющий во временную таблицу добавлять свои записи без привязки к конфигурации.

 

 

Обработка протестирована на версии платформы: 1С:Предприятие 8.3 (8.3.25.1445).

Вступайте в нашу телеграмм-группу Инфостарт

Добавление данных в существующую временную таблицу Тип устанавливаемого значения не соответствует типу поля временной таблицы

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    13487    115    0    

81

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    83278    432    171    

362

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    285705    1606    423    

1220

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    16794    63    62    

74

Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    44200    122    54    

135

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    76920    147    41    

154

Разработка Инструментарий разработчика Разработчик Руководитель проекта 1С 8.3 Платные (руб)

Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли объект, из чего он состоит, кто его вызывает, какие роли дают права. Чего найти не удалось – спрашивает, а не выдумывает. Готовый код проходит более полутора сотен проверок по справочнику языка и стандартам разработки, который приезжает вместе с продуктом. Модель – ваша: любой сервер, совместимый с программным интерфейсом OpenAI, в том числе локальный. Правки в конфигурацию Pilot не вносит – их применяет разработчик.

18300 руб.

11.09.2026    3730    5    0    

10

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    28754    103    46    

107
Отзывы
2. kalyaka 1190 05.03.25 14:25 Сейчас в теме
Для решения задачи добавления во временную таблицу данных из переменных необходимо использовать в качестве источника таблицу значений с соответствующими типами колонок:
Таблица = Новый ТаблицаЗначений();
Таблица.Колонки.Добавить("Период", ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.Дата));
Таблица.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
Таблица.Колонки.Добавить("Курс", ОбщегоНазначения.ОписаниеТипаЧисло(10, 4, ДопустимыйЗнак.Неотрицательный));
Таблица.Колонки.Добавить("Кратность", ОбщегоНазначения.ОписаниеТипаЧисло(10, 0, ДопустимыйЗнак.Неотрицательный));

НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Период = ТекущаяДата();
НоваяСтрока.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
НоваяСтрока.Курс = 1;
НоваяСтрока.Кратность = 1;
Показать
triviumfan; adva; _root; +3 – Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kalyaka 1190 05.03.25 13:35 Сейчас в теме
Мои изыскания на эту тему показали, что при чтении запроса не из таблицы БД типизация колонок происходит с классификатора типа по-умолчанию. Например, поле Период в примере типа "Дата" с классификатором "Дата", а при чтении из переменной становится с классификатором "Дата и время".

С числами ситуация сложнее: требуется точное совпадение по разрядам и допустимому знаку.

При добавлении данных во временную таблицу из таблицы значений также может возникает несоответствие типов из-за добавления типа Null. Тип Null добавляется в таблицу значений, которая получена выгрузкой из результата запроса или из таблицы менеджера временных таблиц.

Итог: добавление во временную таблицу возможно только по полям с полным совпадением типов и классификаторов.
triviumfan; axelerleo; +2 – Ответить
2. kalyaka 1190 05.03.25 14:25 Сейчас в теме
Для решения задачи добавления во временную таблицу данных из переменных необходимо использовать в качестве источника таблицу значений с соответствующими типами колонок:
Таблица = Новый ТаблицаЗначений();
Таблица.Колонки.Добавить("Период", ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.Дата));
Таблица.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
Таблица.Колонки.Добавить("Курс", ОбщегоНазначения.ОписаниеТипаЧисло(10, 4, ДопустимыйЗнак.Неотрицательный));
Таблица.Колонки.Добавить("Кратность", ОбщегоНазначения.ОписаниеТипаЧисло(10, 0, ДопустимыйЗнак.Неотрицательный));

НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Период = ТекущаяДата();
НоваяСтрока.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
НоваяСтрока.Курс = 1;
НоваяСтрока.Кратность = 1;
Показать
triviumfan; adva; _root; +3 – Ответить
3. _root 184 05.03.25 21:29 Сейчас в теме
(2) Хороший вариант, который позволяет и тип строка обрабатывать, только он для моих нужд медленнее в 5 раз, чем добавление без использования таблицы значений.
Прикрепленные файлы:
5. Avatarzorro 82 07.03.25 05:59 Сейчас в теме
А где у тебя типы совпадают? То что ты берешь код и наименование (оба строки или число-строка) в одном запросе и в другом это не значит что они одинаковые. Длины могут быть разные.


Я использовал добавить как оно вышло. Никаких проблем не встретил
6. _root 184 07.03.25 12:47 Сейчас в теме
(5) А в этом запросе ошибки и не возникает, этот запрос предоставлен в зазеркалье. Проблема возникает если тебе нужно добавить свою строку. Как это можно сделать описано в комментарии (2), но этот вариант медленней работает нежели конструкция:
ВЫБРАТЬ
	&Период КАК Период,
	&Валюта КАК Валюта,
	&Курс КАК Курс,
	&Кратность КАК Кратность
ДОБАВИТЬ ВТ_КурсВалют


Вот такая конструкция медленней в 5 раз, но при этом более универсальная:
ВЫБРАТЬ
	Таблица.Период КАК Период,
	Таблица.Валюта КАК Валюта,
	Таблица.Курс КАК Курс,
	Таблица.Кратность КАК Кратность
ДОБАВИТЬ ВТ_КурсВалют
ИЗ
	&Таблица КАК Таблица
7. Avatarzorro 82 07.03.25 16:29 Сейчас в теме
(6) через выразить приведи к нужным длинам. должно помочь
8. _root 184 08.03.25 23:28 Сейчас в теме
(7) А ты попробуй. Если почитаешь повнимательно, то увидишь, что этот вариант пробовался.
9. adva 45 05.06.25 05:29 Сейчас в теме
(6) Так медленнее может и в пять раз, но можно за раз эти же 5 строк и добавить. Надо при таких условиях сравнивать
10. _root 184 06.09.25 14:35 Сейчас в теме
(9) Однозначно, лучше использовать более универсальную конструкцию при помещении нескольких строк. Но в моём случае, нужно было добавлять по одной записи, т.к. каждая добавленная запись влияла на дальнейший расчёт.
11. triviumfan 103 15.11.25 10:26 Сейчас в теме
Печально, что нельзя таким образом создать ВТ с колонкой составного типа. Опять какой-то костыль от 1с.
12. triviumfan 103 15.11.25 13:29 Сейчас в теме
(11) Соврал, если правильно инициализировать ВТ с составным типом, то и добавление в неё будет без ошибки. Изначально я наткнулся на ошибку как в топике.
Для отправки сообщения требуется регистрация/авторизация