Загрузка данных из ТЗ в Регистр Сведений
День добрый. На форме есть ТЗ , в ней только одна колонка "ФИО". Нужно азгрузить данные из ТЗ в независимый РС.
Пробовал так:
Создаётся только одна запись и ругается что запись с ключевыми полями существует.
Пробовал так(нашёл в гугле пример):
Выдаёт ошибку что объект не обнаружен, и ругается на строчку "НаборЗаписей.Отбор.Объект.Установить(ФизическоеЛицо); "
Вопрос: как загрузить данные из ТЗ в РС? Читал что есть метод "Загрузить", но можно ли без него?
Пробовал так:
Для Каждого НоваяСтр Из ТабличноеПоле1 Цикл
// ЗАПИСЬ В РС "ОтветственныеЛица"
Ответст=РегистрыСведений.ОтветственныеЛица.СоздатьНаборЗаписей();
ЗаписьОтветст=Ответст.Добавить();
ЗаписьОтветст.ФизическоеЛицо=Справочники.ФизическиеЛица.НайтиПоНаименованию(НоваяСтр.ФИО);
ЗаписьОтветст.Период='20180101';
Ответст.Записать(Ложь);
КонецЦикла;
ПоказатьСоздаётся только одна запись и ругается что запись с ключевыми полями существует.
Пробовал так(нашёл в гугле пример):
НаборЗаписей = РегистрыСведений.ОтветственныеЛица.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Объект.Установить(ФизическоеЛицо);
Для Каждого СтрокаТаблицы Из ТабличноеПоле1 Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(СтрокаТаблицы.ФИО);
НоваяЗапись.Период='20180101';
КонецЦикла;
НаборЗаписей.Записать();
Выдаёт ошибку что объект не обнаружен, и ругается на строчку "НаборЗаписей.Отбор.Объект.Установить(ФизическоеЛицо); "
Вопрос: как загрузить данные из ТЗ в РС? Читал что есть метод "Загрузить", но можно ли без него?
По теме из базы знаний
- Перенос данных. Правила конвертации из УПП 1.3 в БП 3.0
- Загрузка данных из ОФД в 1С:БП 3.0, 1С:КА 2.4/2.5, УНФ 3.0 о денежных поступлениях (чеках)
- Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники
- Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)
- Доработка универсальной обработки загрузки данных из табличного документа (для возможности загрузки в документ "Перенос данных" (ЗУП 3.1))
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Как-то так, но если регистр изначально не пустой еще нужно проверять уникальность записи по измерениям, (т.е. не добавлять строку, если такая же уже есть):
НаборЗаписей=РегистрыСведений.ОтветственныеЛица.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого НоваяСтр Из ТабличноеПоле1 Цикл
НаборЗаписей=Ответст.Добавить();
ЗаписьОтветст.ФизическоеЛицо=Справочники.ФизическиеЛица.НайтиПоНаименованию(НоваяСтр.ФИО);
ЗаписьОтветст.Период='20180101';
КонецЦикла;
НаборЗаписей.Записать(Ложь);
Показать
(3)
Пробовал так, пишет запись с ключевыми полями существует, хотя РС пустой
НаборЗаписей=РегистрыСведений.ОтветственныеЛица.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого НоваяСтр Из ТабличноеПоле1 Цикл
НаборЗаписей=Ответст.Добавить();
ЗаписьОтветст.ФизическоеЛицо=Справочники.ФизическиеЛица.НайтиПоНаименованию(НоваяСтр.ФИО);
ЗаписьОтветст.Период='20180101';
КонецЦикла;
НаборЗаписей.Записать(Ложь);
ПоказатьНаборЗаписей.Прочитать();
Для Каждого НоваяСтр Из ТабличноеПоле1 Цикл
НаборЗаписей=Ответст.Добавить();
ЗаписьОтветст.ФизическоеЛицо=Справочники.ФизическиеЛица.НайтиПоНаименованию(НоваяСтр.ФИО);
ЗаписьОтветст.Период='20180101';
КонецЦикла;
НаборЗаписей.Записать(Ложь);
Пробовал так, пишет запись с ключевыми полями существует, хотя РС пустой
(4) Если действительно пустой, то в процессе записи Укладываются неуникальные значения. Нужно проверять перед добавлением
НаборЗаписей=РегистрыСведений.ОтветственныеЛица.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТНабора = НаборЗаписей.Выгрузить();
Для Каждого НоваяСтр Из ТабличноеПоле1 Цикл
ФЛ = Справочники.ФизическиеЛица.НайтиПоНаименованию(НоваяСтр.ФИО);
ПараметрыОтбора = Новый Структура("ФизическоеЛицо, Период", ФЛ,'20180101');
СущСтроки = ТНабора.НайтиСтроки(ПараметрыОтбора );
Если СущСтроки.Количество() = 0 Тогда
Запись = ТНабора .Добавить();
Запись.ФизическоеЛицо= ФЛ ;
Запись.Период='20180101';
КонецЕсли;
КонецЦикла;
НаборЗаписей.Загрузить(ТНабора);
НаборЗаписей.Записать(Ложь);
Показать
(11) а как по скорости такой метод?
У меня была на входе ТЗ, мне нужно было дописать недостающее, если просто грузить, то все замещает, пришлось, через менеджер записи построчно ТЗ обходить и писать.
Если делать так как у вас, то боюсь когда записей станет миллион, то слишком долго это будет.
У меня была на входе ТЗ, мне нужно было дописать недостающее, если просто грузить, то все замещает, пришлось, через менеджер записи построчно ТЗ обходить и писать.
Если делать так как у вас, то боюсь когда записей станет миллион, то слишком долго это будет.
Вот примерно так
НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
//Выгружаем регистр штрихкодов в ТЗ и делаем, что нам нужно
ТЗ=НаборЗаписей.Выгрузить();
Для Каждого СтрОтбор из ТЗ Цикл
Если СтрДлина(СокрЛП(СтрОтбор.Штрихкод))=8 Тогда
СтрОтбор.Штрихкод=СокрЛП(СтрОтбор.Штрихкод);
СтрОтбор.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8;
Сообщить(СтрОтбор.ТипШтрихкода);
Сообщить(СтрОтбор.Штрихкод);
КонецЕсли;
КонецЦикла;
//Зачищаем регистр штрихкодов
НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
//Грузим в регистр штрихкодов наши данные из ТЗ
НаборЗаписей.Загрузить(ТЗ);
НаборЗаписей.Записать();
Показать РегШК = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
РегШК.Штрихкод=Штрихкод;
РегШК.Владелец=Номенклатура;
ТипЕАН="Code39";
Если СтрДлина(Штрихкод)=13 Тогда
ТипЕАН="EAN13";
ИначеЕсли СтрДлина(Штрихкод)=8 Тогда
ТипЕАН="EAN8";
КонецЕсли;
РегШК.ТипШтрихкода=ПланыВидовХарактеристик.ТипыШтрихкодов[ТипЕАН];
РегШК.Записать();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот