Ранее перевёл несколько отчётов, которые брали данные из внешней базы SQL, с получения данных через ADO на получение их через механизм внешних источников данных. В итоге значительно сократился и упростился программный код, чему я рад.
Сейчас возникло желание перевести туда же обработку, которая, среди прочего, модифицирует данные во внешнем SQL.
Специально описываю на моём частном случае, потому как именно из-за него, к правильному решению пришёл более сложным путём.
Далее подробности, возможно, избыточные.
Во внешнем SQL есть таблица tovar с полями code (первичный ключ) и name, и есть таблица tovar_barcode с полями tovar_code и barcode, где tovar_code - внешний ключ для поля code из таблицы tovar.
В таблице tovar_barcode, для одного tovar_code может быть несколько разных barcode.
При добавлении этих таблиц в 1С в качестве внешнего источника данных, 1С для таблицы tovar указала "Тип данных таблицы внешнего источника данных" равным "Объектные данные", а для tovar_barcode - Необъектные данные.
Важно, что поле tovar_code таблицы tovar_barcode было автоматически добавлено 1С с типом ВнешнийИсточникДанныхТаблицаСсылка.ВИД_SQL.dbo_tovar, в то время как поле code таблицы tovar имеет тип Число. Причина такого поведения - упомянутый внешний ключ.
В обработке, мне необходимо будет выполнять отбор по полю tovar_code, указывая значение отбора число, а не ссылку на запись из другой таблицы. В свойствах поля меняю его тип на Число.
При попытке выполнить следующий код, получаю ошибку "Поле объекта не обнаружено (tovar_code)"
КодТовара = 70; // для примера
НаборЗаписей = ВнешниеИсточникиДанных.ВИД_SQL.Таблицы.tovar_barcode.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.tovar_code.Установить(КодТовара);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Сообщить(Запись.tovar_code);
Сообщить(Запись.barcode);
КонецЦикла;
Решение - добавить tovar_code в поля ключа. При этом, 1С, почему-то решает что таблица после этого начинает содержать в себе объектные данные и я меняю "Объектные данные" на "Необъектные данные".
Должно получиться как на картинке
Снова выполняю указанный выше код и, о чудо, вижу сообщения со значениями записей.
Всё сказанное делалось на платформе 8.3.25.1394.