8.х заполнение регистраСведений из DBF

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем o_O, 21 июн 2010.

  1. TopicStarter Overlay
    o_O
    Offline

    o_O Опытный в 1С

    Регистрация:
    18 июн 2010
    Сообщения:
    234
    Симпатии:
    0
    Баллы:
    26
    Помогите, пжлста, никак разобраться не могу, как добавлять записи из dbf в регистр сведений.

    БАЗА = "D:\BASE.DBF" ;
    DBF = Новый Xbase;
    DBF.ОткрытьФайл(БАЗА);

    ИМЯ = РегистрыСведений.ИМЕНА.СоздатьНаборЗаписей();
    ИМЯ.СокрИмя = DBF.ПолучитьЗначениеПоля("SNAME");

    ИМЯ.Записать();
    DBF.ЗакрытьФайл();

    Не пойму как добавить запись из ячейки SNAME dbf файла в ячейку СокрИмя регистра сведений ИМЕНА.
    спасибо!
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Структуру регистра приведите, а также озвучте переодический/непереодический, подчиненный регистратору/независимый.
  3. TopicStarter Overlay
    o_O
    Offline

    o_O Опытный в 1С

    Регистрация:
    18 июн 2010
    Сообщения:
    234
    Симпатии:
    0
    Баллы:
    26
    Периодичность в пределах года. Независимый.

    Структура условна. Допустим dbf файл содержит поля Номер(NUMBER), Наименование(NAME), Краткое наименование(SNAME).
    Соответственно и регистр сведений содержит 3 Измерения Номер-Число, Наименование-Строка, Краткое наименование-Строка.
  4. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    а вам не кажется, что чтения файла вам необходим цикл?
  5. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Думаю будет что-то типа такого (не проверял, писалось прям здесь):
    Код:
    БД = Новый XBase;
    БД.ОткрытьФайл("D:\BASE.DBF"); 
    
    НаборЗаписей = РегистрыСведений.ИМЕНА.СоздатьНаборЗаписей();
    
    Пока БД.Следующая() Цикл
    БД_Номер = БД.NUMBER;
    БД_Наименование = БД.NAME;
    БД_КраткоеНаименование = БД.SNAME;
    ТекущаяДата = ТекущаяДата();
    
    НаборЗаписей.Отбор.Период.Установить(ТекущаяДата);
    НаборЗаписей.Отбор.Номер.Установить(БД_Номер);
    НаборЗаписей.Отбор.Наименование.Установить(БД_Наименование);
    НаборЗаписей.Отбор.КраткоеНаименование.Установить(БД_КраткоеНаименование);
    
    НовЗапись = НаборЗаписей.Добавить();
    
    НовЗапись.Период = ТекущаяДата;
    НовЗапись.Номер = БД_Номер;
    НовЗапись.Наименование = БД_Наименование;
    НовЗапись.КраткоеНаименование = БД_КраткоеНаименование;
    
    НаборЗаписей.Записать(Истина);
    КонецЦикла;	
    
    БД.ЗакрытьФайл();
    
    
    Пару строк критики.
    1) Я не вижу в описании у вас ресурсов, вам точно такой регистр сведений нужен?
    2) Неверное построение регистра. Необходимо завести справочник ИМЕНА, где будет реквизит "ПолноеНаименование", а в регистр сведений записывать ссылку на этот справочник. По скольку: во-первых смысл в измерениях регистра хранить полное и краткое наименование, во-вторых я не думаю что это хорошая идея делать измерение регистра строкового типа. Поэтому переделывайте на справочник.
  6. TopicStarter Overlay
    o_O
    Offline

    o_O Опытный в 1С

    Регистрация:
    18 июн 2010
    Сообщения:
    234
    Симпатии:
    0
    Баллы:
    26
    МенеджерЗаписи = РегистрыСведений.АдресныеСокращения.СоздатьМенеджерЗаписи();
    Пока DBF.Следующая() Цикл
    УРОВЕНЬ = DBF.LEVEL;
    МенеджерЗаписи.Уровень = УРОВЕНЬ;
    КонецЦикла;
    МенеджерЗаписи.Записать();

    так не работает! Создается только одна пустая запись.
    Помогите пжлста! Что надо исправить?
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Вам же выше написали пример. используйте не МенеджерЗаписей, а НаборЗаписей и с ним работайте

Поделиться этой страницей