Запись в регистр сведений программно #625168


#0 by amadeus2010
Добрый день, пытаюсь решить следующую задачу.Надо программно заполнить спр.Контрагенты из ексел.В разделе контакты пытаюсь заполнить поле юридический адрес контрагента, таким образом что если адрес уже существует то код должен обновить его, а если поле адрес пустое то заполнить его данными из файла.Вот код для заполнения адреса //////////////////////////////////////////////////////////////// при компиляции выдается  Ошибка при вызове метода контекста (Получить)    Запись=Набор.Получить(СтруктураЮрАдреса); P.S Если убрать часть кода где создается структура то код работает,но нет проверки и обновления адреса
#1 by Светлый Гений
выдержка из СП: РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Получить (InformationRegisterRecordSet.<Имя регистра сведений>.Get) РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>) Получить (Get) Синтаксис: Получить(<Индекс>) Параметры: <Индекс> (обязательный) Тип: Число. Индекс записи. Возвращаемое значение: Тип: РегистрСведенийЗапись. Описание: Получает значение по индексу. Работает аналогично оператору []. Примечание: Применяется в случаях, когда использование оператора [] невозможно. Пример: см. пример метода Очистить
#2 by Шапокляк
А почему нельзя использовать СоздатьМенеджерЗаписи и все туда спокойно записать?
#3 by zladenuw
Синтаксис: ПолучитьМенеджерЗаписи Возвращаемое значение: Тип: РегистрСведенийМенеджерЗаписи. Описание: ВыбранПолучает объект для чтения, изменения, добавления и удаления записи регистра сведений, на которой в данный момент спозиционирована выборка. Может ты так хотел получить?
#4 by amadeus2010
структурой я делаю отбор записей, а методом получить хотел вытащить записи для вставки их в поля справочника.
#5 by amadeus2010
т.е имеете в виду вместо Набор = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей написать Создать МенеджерЗаписи?
#6 by dmpl
Во-первых, где установка отбора для набора записей? Ты что, сразу весь регистр контактной информации будешь перезаписывать? Во-вторых, что мешает установить отбор, прочитать набор записей, ну а дальше уже проверять - есть ли нужная запись или нет? После чего записать модифицированный набор записей. А если действовать через менеджер записи, то вообще ничего проверять не надо - просто пиши, и она перепишет старый адрес, если он есть. P.S. А набор записей надо писать так: Только про отборы не забыть, а то придется восстанавливать содержимое регистра.
#7 by Шапокляк
Да, только это я имею в виду. Если есть данные в регистре - перезапишет, если нет - напишет новые
#8 by amadeus2010
т.е если я напишу вместо и весь мой остальной код///////// то должно все работать?
#9 by Popkorm
#10 by amadeus2010
т.е не используя запрос к регистру можно получить юридический и фактический адрес контрагента и проверить если запись есть то заменить ее новой а если нет то добавить запись?
#11 by SanGvin
режим записи - замещение. т.е. если есть - заменит, если  нет создаст.
#12 by dmpl
Этот код перепишет всю контактную информацию контрагента 3 новыми записями. Плюс 3 записи набора записей вместо одной.
#13 by dmpl
Это делается на уровне платформы, которая гарантирует уникальность записи в регистре сведений с заданным набором измерений.
#14 by Popkorm
в регистрах сведений не бывает корректировки записей,старая запись удаляется и пишется новая
#15 by amadeus2010
как я понял этим кодом я заменяю свой и уже не использую запрос для выбора данных из регистра?
#16 by amadeus2010
Немного подправил код под свои нужды, учитывая что источник данных ексель //////////////////////////////////////////////////////////// /////////////////////////////////////////////////// а так всем большое спасибо.
#17 by dmpl
Только стоит учесть - если контрагенту будет назначена еще какая-то информация (например, телефон или e-mail), то загрузка удалит эти данные.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С