1с скопировать записи регистра сведений

Обновлено: 04.07.2024

Здравствуйте спецы. Вопрос возник. Мне надо скопировать email контрагента и вставить его в новое контактное лицо контрагента. Делаю так:

Есть запрос, в котором получаю email контрагента.

После запроса создаю новое контактное лицо контрагента "ААА" и хочу туда внести email контрагента, но как видно на картинке, там всё пусто.

Чего не хватает в моём коде и правильно ли делаю, можете подсказать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Удалить запись регистра сведений
Ответ = Вопрос("Для строки уже существует штрих код,сформировать новый штрихкод для выбранной.

Выбрать запись из регистра сведений
Добрый день! На форме обработки есть поле выбора. При нажатии на кнопку выбора появляется форма.

Как получить сведения из регистра сведений
Доброго дня! Есть справочник СотрудникиОрганизации к этому справочнику я добавил РегистрСведений в.

Как получить выбранную строку регистра сведений в справочник
Здравствуйте! Есть Справочник ВидыНарушений со строковыми реквизитами НормативныйДокумент и.

СсылкаНаОбъект - это что? контрагент? В таком случае Вы контактную информацию добавляете контрагенту, а не контактному лицу.

Tklwegsd, СсылкаНаОбъект - да, контрагент, понял, позже проверю.

Добавлено через 20 часов 27 минут
Tklwegsd, сделал так: ЗаписьРегистра.Объект = Справочники.КонтактныеЛицаКонтрагентов;

Получаю ошибку: <ВнешняяОбработка.ОтладкаВнешнихПечатныхФорм.МодульОбъекта(4 2)>: Ошибка при вызове метода контекста (Записать)
ЗаписьРегистра.Записать(Истина);
по причине:
Не удалось записать: "Контактная информация"!

Нублю, нужен совет, куда копать.

ЗаписьРегистра.Объект = Справочники.КонтактныеЛицаКонтрагентов;

Добавлено через 1 минуту
Ответь для себя на вопросы:
1. Какой тип?

Dethmontt, 1. ЗаписьРегистра.Объект - Неопределено
2. Справочники.КонтактныеЛицаКонтрагентов - СправочникМенеджер.КонтактныеЛицаКонтрагентов Справочники.КонтактныеЛицаКонтрагентов - СправочникМенеджер.КонтактныеЛицаКонтрагентов

Добавлено через 46 секунд

Это значение типа НЕОПРЕДЕЛЕНО, а я про ТИП поля БД спрашиваю

Добавлено через 47 секунд
Тип - определяет возможный набор значений

Dethmontt, что-то не пойму, как узнать тип ЗаписьРегистра.Объект
По отдельности:
ЗаписьРегистра - РегистрыСведенийМенеджерЗаписи.КонтактнаяИнформация
Объект - Неопределено

Если прописываю по-старому: ЗаписьРегистра.Объект = СсылкаНаОбъект;
То, ЗаписьРегистра.Объект - СправочникСсылка.Контрагенты.

А мне получается нужно, чтобы был СправочникСсылка.КонтактныеЛицаКонтрагентов.

В дереве конфигурации - в измерениях

Добавлено через 57 секунд

А мне получается нужно, чтобы был СправочникСсылка.КонтактныеЛицаКонтрагентов.

Dethmontt, ЗаписьРегистра.Объект -
СправочникСсылка.Организации, СправочникСсылка.Пользователи, СправочникСсылка.Контрагенты, СправочникСсылка.КонтактныеЛица, СправочникСсылка.ФизическиеЛица, СправочникСсылка.КонтактныеЛицаКонтрагентов, СправочникСсылка.ЛичныеКонтакты

Добавлено через 5 минут
<ВнешняяОбработка.ОтладкаВнешнихПечатныхФорм.МодульОбъекта(3 2,28)>: Переменная не определена (СправочникСсылка)
ЗаписьРегистра.Объект = <<?>>СправочникСсылка.КонтактныеЛицаКонтрагентов; (Проверка: Толстый клиент (обычное приложение))

<ВнешняяОбработка.ОтладкаВнешнихПечатныхФорм.МодульОбъекта(3 2,28)>: Переменная не определена (СправочникСсылка)
ЗаписьРегистра.Объект = <<?>>СправочникСсылка.КонтактныеЛицаКонтрагентов; (Проверка: Толстый клиент (обычное приложение)) Dethmontt, вопрос новичка, как его узнать, подставить? Dethmontt, вопрос новичка, как его узнать, подставить? Встречный вопрос: А откуда берется переменная СсылкаНаОбъект . Dethmontt, СсылкаНаОбъект - реквизит с составным типом данных:
СправочникСсылка.Контрагенты, СправочникСсылка.КонтактныеЛицаКонтрагентов, РегистрСведенийНаборЗаписей.КонтактнаяИнформация Dethmontt, вернулся к тому с чего начинал, код в заголовке.
ЗаписьРегистра.Объект = СсылкаНаОбъект;
А мне надо иначе, чтобы был тип не СправочникСсылка.Контрагента, а СправочникСсылка.КонтактныеЛицаКонтрагентов.

Neophyte1C, вернулись к началу.

Что такое СсылкаНаОбъект откуда там взялось значение "ООО Лена".

Dethmontt, проверяю работу кода через отладчик внешней печатной формы, для реквизита СсылкаНаОбъект указал составной тип данных (СправочникСсылка.Контрагенты, СправочникСсылка.КонтактныеЛицаКонтрагентов, РегистрСведенийНаборЗаписей.КонтактнаяИнформация). Открывая форму подставляю контрагента "ООО Лена".

Сейчас изменил код немного так

Где параметр запроса СсылкаНаОбъект.Владелец - СправочникСсылка.Контрагент, но открываю уже контактное лицо контрагента "Иванов Иван Иванович", а не "ООО Лена".

И получаю следующую ошибку:
<ВнешняяОбработка.ОтладкаВнешнихПечатныхФорм.МодульОбъекта(3 8)>: Ошибка при вызове метода контекста (Записать)
НовыйОбъект.Записать();
по причине:
Значение поля "Владелец" не заполнено или заполнено неверно

Есть управляемая форма списка регистра сведений.
Нужно добавить кнопку для копирования текущий записи (и немного ее изменить).
Не пойму как сделать. Вернее не понятно как получить текущую запись.

ТекСтрока в данном случае получается ДанныеФормыСтруктура

(4) Да обожди ты, не перебивай рассказчика. Дело идет к кульминации.

(6) я отлоадчиком смотрю:
НоваяЗапись.Заполнить(ТекСтрока); - не заполняет новую запись.

не пойму как сделать, что бы не перебирать все реквизиты.

(0) в смысле?
а НоваяЗапись = РегистрыСведений.ар_ПостоянныеПлатежи.СоздатьМенеджерЗаписи(); что делает?

(10) Ты сам с собой общаешься? Круто.
Вообще, может тебе книжки какие почитать, если ты не понимаешь, что такое регистр сведений?

(11) (14)
в итоге я получаю запись в которой заполнено только ЗначениеИзмеренияКотороеДолжноОтличаться

(10) в прямом. Ты изменить существующую хочешь запись, или всё же новую слепить ?

(13) я понимаю что такое регистр сведений. не пойму как получить копию записи (я ее изменю перед записью..).

(16)
Мне надо на основании существующей записи сделать новую, у которой изменится период и сумма.

(19) я ее НЕ получаю. если бы получал вопросов бы не было.

(21) получаешь
(20) ну, так измени период и сумму! Просто возьми и измени. Записать не забудь

(22) изменяю, при записи ругается:
Запись не верна! Значение поля "Контрагент" не может быть пустым!: ар_ПостоянныеПлатежи: 20.09.2016, , , (Регистр сведений: Постоянные платежи)

(24) хреново меняешь значит. Показывай, как ты это делаешь

(28) значит не включены галки "Заполнять из данных заполнения" у потрохов регистра.
ЗАмени на ЗаполнитьЗначенияСвойств()

(29) ЗаполнитьЗначенияСвойств() помогло. огромное спасибо!

но почему не заполнялось через заполнить(0 остается загадкой.
"Заполнять из данных заполнения" - галка стоит.

(30) потому, что по умолчанию из данных заполнения заполняются только те атрибуты, у который в конфигураторе включена галка "Заполнять из данных заполнения". Все остальное платформа не заполняет

Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"

Манипулирование записями регистров без использования регистратора

В 1С:Предприятии 8 все регистры, кроме регистров сведений, всегда связаны с регистраторами. Регистры сведений могут быть независимыми или также подчиненными регистратору. В этом разделе мы опишем работу с регистрами, подчиненными регистраторам.

В большинстве случаев записи регистров, подчиненных регистраторам, создаются при проведении документов. Это наиболее "естественный" способ создания записей. В этом случае в процессе проведения документа формируются записи регистра, и, тем самым, происходит отражение в учете события описываемого документом.

Однако в 1С:Предприятии 8 существует возможность изменять записи регистров без участия документа. При этом следует учитывать, что каждая запись регистра всегда подчинена одному и только одному регистратору (документу). Поэтому с точки зрения "времени жизни" записи всегда подчинены конкретным регистраторам. Однако, записи могут изменяться без участия самого документа. Главное, чтобы в них имелась ссылка на документ.

Для изменения записей регистров, подчиненных регистраторам, используются наборы записей. При этом всегда используется отбор по регистратору. То есть совокупность записей, подчиненных одному регистратору, является "гранулой" изменения регистра. Нельзя добавлять или удалять отдельные записи. Можно только считывать и записывать записи по регистратору.

При изменении записей регистра можно использовать набор записей, входящий в коллекцию движений документа (свойство Движения объекта ДокументОбъект). Однако это не обязательно. Для изменения записей регистра можно использовать и набор записей созданный с помощью менеджера регистра.

Таким образом, чтобы изменить записи регистра необходимо:

  • создать набор записей;
  • установить отбор по определенному регистратору;
  • прочитать набор;
  • изменить записи набора;
  • записать набор.

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

//Выберем всех регистраторов регистра
Запрос = Новый Запрос;
Запрос.Текст ;
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
//Обойдем регистраторов
Пока Выборка.Следующий() Цикл
Сообщить("Изменение записей по регистратору: " + Выборка.Регистратор);
//Для каждого регистратора выполним изменение набора записей
НаборЗаписей = РегистрыНакопления.УчетНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Регистратор;
НаборЗаписей.Прочитать();
Для каждого Запись Из НаборЗаписей Цикл
Запись.Реквизит1 = "Тест";
КонецЦикла;
НаборЗаписей.Записать();
КонецЦикла;

В приведенном примере выполнялось изменение записей. Для добавления записей, если их нет у регистратора, можно выполнять запись без считывания. Для удаления записей можно выполнять запись пустого набора без выполнения считывания.

Заметим, что для добавления большого количества записей по одному регистратору существует возможность записывать записи без замещения. Это регулируется параметром метода Записать(). Такая возможность позволяет добавлять записи, не помещая их всех одновременно в оперативную память.

В регистрах расчетов кроме отбора по регистратору для набора записей можно также установить отбор по другим значениям измерений (только по равенству). Это позволяет выполнить изменение части записей, подчиненных одному регистратору.

Разработка любой конфигурации потребует использования регистров сведений! Чтобы упростить запись и чтение данных в регистре сведений, Вы можете использовать универсальные функции:

Разместил: all4cf  Версии: | 8.x | 8.2 УП | 8.3 |  Дата: 13.08.2015   Прочитано: 29843

Распечатать

Похожие FAQ

Еще в этой же категории

Как изменить запись регистра сведений?  34
НаборЗаписей = РегистрыСведений.НумерацияДоговоров.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(НачалоГода(Дата)); НаборЗаписей.Отбор.Организация.Установить(Организация); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество Как добавить запись в периодический независимый регистр сведений?  15
// Добавление записей в периодический независимый регистр сведений НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта); НаборЗаписей.Отбор.Период.Установить(ТекущаяДата); НовЗапис Как добавить записи в непериодический независимый регистр сведений?  12
НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапи Как добавить записи в независимый регистр сведений?  10
Для добавления отдельной записи в регистр сведений, не подчиненный регистратору, можно использовать объект РегистрСведенийМенеджерЗаписи. имя . Например, для того, чтобы в независимый регистр сведений ЗначенияСвойствОбъектов с измерениями Объект, Открыть запись регистра сведений по ключу.  10
// Создание структуры значений СтруктураФормы = Новый Структура; СтруктураФормы.Вставить(" Пользователь" , Пользователь); СтруктураФормы.Вставить(" Настройка" , Элемент.ТекущаяСтрока); // Почему-то нужно создавать запись через массив (по друго Посмотреть все в категории Регистры сведений

Читайте также: