Программирование в 1С

Заполнить значения свойств в 1С: структура, строка ТЗ и ТЧ

Коротко

ЗаполнитьЗначенияСвойств копирует значения из источника в уже существующие одноимённые свойства приёмника. Сначала передайте приёмник, потом источник; строку ТЗ или ТЧ предварительно создайте. Это процедура: результат находится в изменённом приёмнике, а не в возвращаемом значении.

Заполнить значения свойств в 1С: минимальный рецепт

Вставьте нужную серверную функцию в модуль отдельной управляемой формы тестовой внешней обработки. Для первых пяти функций реквизиты формы не нужны. Создайте команду формы ПроверитьСвойства, назначьте ей одноимённый клиентский обработчик ниже и выведите команду на форму кнопкой. В конфигураторе установите точку останова на строке РезультатПроверки = Результат;, запустите тестовую обработку в режиме отладки и нажмите кнопку. После возврата с сервера раскройте переменную Результат и сравните её свойства с ожидаемыми значениями. Код не выводит сообщения.

&НаКлиенте
Процедура ПроверитьСвойства(Команда)
    Результат = ПримерОбщихСвойств();
    РезультатПроверки = Результат;
КонецПроцедуры

Для следующего сценария замените только вызов в строке Результат = ПримерОбщихСвойств(); на нужную функцию: ПримерСтрокиТаблицы(), ПримерСпискаСвойств(), ПримерИсключенияСвойств(), ПримерРазныхИмен() или ПримерСтрокиТабличнойЧасти(). Последняя требует указанных ниже метаданных учебного стенда. Все шесть функций выполняются на сервере без контекста и возвращают только структуру скалярных значений; ТЗ и объект документа на клиент не передаются. Это код модуля формы, не автономный фрагмент Консоли.

&НаСервереБезКонтекста
Функция ПримерОбщихСвойств()
    Источник = Новый Структура("Код,Количество,Примечание", "A-17", 4, "тест");
    Приемник = Новый Структура("Код,Количество,Цена", "", 0, 90);
    ЗаполнитьЗначенияСвойств(Приемник, Источник);
    Возврат Приемник;
КонецФункции
ЗаполнитьЗначенияСвойств
Приемникизменяемый объект
Источникобъект с исходными свойствами
СписокСвойствимена через запятую
ИсключаяСвойстваимена исключаемых свойств
Возвращаемого значения нет

Ожидаемое возвращаемое значение: Код = "A-17", Количество = 4, Цена = 90. Примечание не добавится: такого свойства в приёмнике нет. Цена сохранится: источник её не содержит.

Из структуры в типизированную строку таблицы значений

ТЗ создайте на сервере; у неё должны быть колонки до добавления строки. Здесь Код — строка неограниченной длины, Количество — число с 15 разрядами, из них 3 дробных. Передаём число 4, не строку «4»; преобразование произвольных входных данных этим примером не проверяется.

&НаСервереБезКонтекста
Функция ПримерСтрокиТаблицы()
    Источник = Новый Структура("Код,Количество", "A-17", 4);
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Таблица.Колонки.Добавить("Количество", Новый ОписаниеТипов(
        "Число", Новый КвалификаторыЧисла(15, 3)));
    СтрокаТЗ = Таблица.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТЗ, Источник, "Код,Количество");
    Возврат Новый Структура("Код,Количество", СтрокаТЗ.Код, СтрокаТЗ.Количество);
КонецФункции
Строка ТЗ ← Структура
ПриемникСтрокаТаблицыЗначений
СписокСвойствКод,Количество

Ожидаемая структура результата: Код = "A-17", Количество = 4. Таблица содержит одну строку. Колонки.Добавить создаёт колонку, а Таблица.Добавить() возвращает именно СтрокаТаблицыЗначений.

В Консоли кода попросите агента собрать таблицу в памяти и сопоставить имена и типы колонок со структурой источника. Для автономного серверного сценария нужен код без директив модуля формы; это не доступ к контексту уже открытой формы.

Копирование только выбранных свойств

Третий аргумент — строка имён через запятую, не массив и не соответствие имён. Перечисленные свойства должны существовать и в источнике, и в приёмнике.

&НаСервереБезКонтекста
Функция ПримерСпискаСвойств()
    Источник = Новый Структура("Код,Количество", "A-17", 4);
    Приемник = Новый Структура("Код,Количество", "старый", 8);
    ЗаполнитьЗначенияСвойств(Приемник, Источник, "Количество");
    Возврат Приемник;
КонецФункции
Выбранное свойство
Источник и приёмникСтруктура
СписокСвойствКоличество

Ожидаемый результат: Код = "старый", Количество = 4. Если вместо Количество указать отсутствующее поле, ожидается исключение, а не создание свойства.

Как исключить поле из заполнения

Для четвёртого аргумента пропустите третий. В этом рецепте исключаемое поле Код заранее существует с обеих сторон.

&НаСервереБезКонтекста
Функция ПримерИсключенияСвойств()
    Источник = Новый Структура("Код,Количество", "A-17", 4);
    Приемник = Новый Структура("Код,Количество", "старый", 8);
    ЗаполнитьЗначенияСвойств(Приемник, Источник, , "Код");
    Возврат Приемник;
КонецФункции
Исключение поля
Источник и приёмникСтруктура
ИсключаяСвойстваКод; третий аргумент пропущен

Ожидаемый результат: Код = "старый", Количество = 4. По разделу «Описание» синтакс-помощника и независимому справочнику заданный СписокСвойств отключает ИсключаяСвойства; обычно выбирайте один режим.

Несовпадение имён: перенесите значение явно

КоличествоПодобрано и Количество — разные имена. Автоматическое сопоставление не переименовывает поля. Общие свойства заполните процедурой, а отличающиеся перенесите присваиванием.

&НаСервереБезКонтекста
Функция ПримерРазныхИмен()
    Источник = Новый Структура("Код,КоличествоПодобрано", "A-17", 4);
    Приемник = Новый Структура("Код,Количество", "", 0);
    ЗаполнитьЗначенияСвойств(Приемник, Источник);
    Приемник.Количество = Источник.КоличествоПодобрано;
    Возврат Приемник;
КонецФункции
Разные имена
Общее свойствоКод
Явное присваиваниеКоличество ← КоличествоПодобрано

Ожидаемый результат после обоих действий: Код = "A-17", Количество = 4. До явного присваивания Количество осталось бы равным 0.

Из строки ТЗ в строку табличной части без записи

Эта функция предназначена для отдельной управляемой формы внешней обработки в безопасной локальной копии с метаданными локального учебного стенда (выгрузка DemoRetail_xml). В конфигураторе проверьте наличие документа ПриемкаТоваровИСМП, табличной части Товары и реквизита Количество: число 15,3, неотрицательное. Реквизит Объект формы не используется; создаётся отдельный документ в памяти. Если этих метаданных нет, сначала адаптируйте имена и типы, а не запускайте код.

&НаСервереБезКонтекста
Функция ПримерСтрокиТабличнойЧасти()
    Источник = Новый Структура("Количество", 4);
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Количество", Новый ОписаниеТипов(
        "Число", Новый КвалификаторыЧисла(15, 3)));
    СтрокаТЗ = Таблица.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТЗ, Источник, "Количество");
    УчебныйДокумент = Документы.ПриемкаТоваровИСМП.СоздатьДокумент();
    СтрокаТЧ = УчебныйДокумент.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаТЗ, "Количество");
    Возврат Новый Структура("Количество", СтрокаТЧ.Количество);
КонецФункции
Строка ТЧ ← Строка ТЗ
ПриемникСтрока ТЧ объекта документа
СписокСвойствКоличество

Ожидаемое возвращаемое значение: структура Количество = 4. В ТЗ и в Товарах нового объекта по одной строке. Это ДокументТабличнаяЧасть, а не ДанныеФормыКоллекция. Вызовов записи и проведения нет; пользовательский рабочий документ не меняется. Код не рассчитывает суммы, НДС и другие зависимые поля типовой конфигурации.

Частые ошибки и проверка результата

  • Перепутаны источник и приёмник — изменится не тот объект.
  • Вместо строки передана вся ТЗ или вся ТЧ — это другой набор свойств; создайте строку и заполняйте её.
  • В списке указан заголовок колонки вместо имени — используйте идентификатор из метаданных.
  • Неизвестное имя в явном списке вызывает исключение. Список исключений тоже не является способом молча игнорировать опечатки: проверяйте имена в обоих объектах.
  • Код выполняется на тонком клиенте — доступность глобальной процедуры не делает ТаблицаЗначений клиентским типом; перенесите цепочку на сервер.
  • Добавление строки в ТЧ ссылки вместо объекта — метод Добавить для такой ТЧ недопустим.
  • От процедуры ожидают функцию или автоматический пересчёт — проверяйте изменённые поля и отдельно запускайте согласованную бизнес-логику.
  • Рассчитывают на порядок установки полей — синтакс-помощник его не гарантирует; зависимые свойства устанавливайте явно.

Контрольная проверка: сравните возвращённую структуру с указанным результатом, проверьте неизменность исключённых полей и отсутствие записи объекта. Все приведённые значения — ожидаемые результаты по контракту API, не журнал выполненного в 1С прогона.

Для диагностики дайте агенту список фактических имён и типов полей, исходные значения и желаемый результат. Он поможет подготовить явное сопоставление; запуск процедуры формы и проверка её контекста остаются отдельной задачей локального контура.

Частые вопросы о ЗаполнитьЗначенияСвойств

Возвращает ли ЗаполнитьЗначенияСвойств заполненный объект?

Нет. Это процедура, которая меняет приёмник. Проверяйте его поля после вызова.

Можно ли заполнить строку ТЧ из структуры?

Да, по совпадающим именам: предварительно создайте строку табличной части объекта и передайте её приёмником. Само заполнение не записывает документ.

Почему КоличествоПодобрано не заполняет Количество?

Имена различаются. Заполните общие свойства процедурой, затем присвойте Количество из КоличествоПодобрано явно.

Тарифы

ИИ Консоль кода 1С

Лайт

Бесплатно
≈ 0,1 млн токенов на 2 дн.

Для ознакомления с возможностями

  • Все функции бесплатно на 2 дня +2 дня за подписку на Telegram или Max
  • Полный набор инструментов без урезаний
  • Без ввода карты
Начать бесплатно

Старт

1990 руб. в месяц
≈ 10 млн токенов

Для индивидуального использования

Выбрать тариф

Продвинутый

Популярный выбор
3990 руб. в месяц
≈ 25 млн токенов

Для интенсивного использования или команд

  • До 15 конфигураций
  • Встроенный агент запросов 1С
  • Свои подписки Codex, Claude и любые OpenAI-совместимые
  • Внешние обработки без Конфигуратора
  • Приоритетная техническая поддержка
Выбрать тариф