ПЕРЕДАЧА ДАНИХ ІЗ 1С В DBF-файл – ЧАСТИНА 1

931 ЕКСПОРТ ДАНИХ ІЗ ДОВІДНИКА СОТРУДНІКІ_2

9311 ПОСТАНОВКА ЗАВДАННЯ

У розд 746 ми завантажили в 1С, використовуючи обєкт типу XBase, DBF-файл з даними про початковому сальдо Обєкти того ж типу застосовуються і для вивантаження даних з 1С

Розглянемо завдання переносу даних з довідника Сотруднікі_2 в файл еmployeedbf

Завдання ускладнюється тим, що реквізит Оклад довідника Сотруднікі_2 є періодичним Перенесення значень цього реквізиту ми виконаємо в окремий файл salarydbf, тобто зробимо так само, як і 1С, яка зберігає дані про періодичні реквізитах у файлі 1SCONSTDBF Структуру файлу salarydbf відтворює табл 92, в заголовках стовпців якої після символу / вказано імя відповідного поля DBFфайла

Таблиця 92

Структура файлу salarydbf на прикладі історії окладів Горюнової У В

Код \ Id

Дата / Date

Імя документа

/DocNarne

Номер документа

/Docld

Оклад / Salary

2010

20112001

ПріказОПріеме

2

2500

2010

22112001

ІзмененіеОклада

2

2700

2010

30112001

3200

Характеристики полів файлу salarydbf опишемо в табл 93, в якій формат числових полів визначається заданими в конфігурації 1С властивостями Довжина і Точність відповідних реквізитів

Характеристики полів файлу salarydbf

Таблиця 93

Імя поля

Властивості поля

Id, Docld

Числові поля формату 50

Date

Поле типу Дата

DocName

Рядок з 20 символів

Salary

Числове поле формату 102

Другим ускладнює обставиною є те, що реквізити Освіта, ПріказОклад, ПріказПріем і Календар мають типи, які в чистому вигляді не можна відтворити в DBF-файлі (Засобами 1С в DBF-файлі можна визначити числові, символьні, логічні поля і поля типу Дата) Тому нам доведеться деяким чином замінити значення цих реквізитів на значення стандартних типів, але таким чином, щоб мати можливість відновити при зворотному перетворенні вихідні величини Заміни будемо виконувати згідно з правилами, викладеними в табл 94

Таблиця 94

Правила перетворення значень обєктів 1С

Обєкт 1С

На що замінюється в DBF-файлі

Елемент довідника

Ідентифікатор довідника і код елемента

Документ

Ідентифікатор документа і номер документа

Календар

Ідентифікатор календаря

І нарешті, третій ускладнюючий фактор в тому, що, крім даних про співробітників, довідник містить групи, що відображають імена підрозділів підприємства, а також описує ієрархію груп і співробітників (див табл 51) У створюваному файлі ці відомості також треба зберегти

Таким чином, файл employeedbf матиме відображені в табл 95 поля

Таблиця 95

Поля файлу employeedbf

Імя DBFполя

Імя 1Cреквізіта

Властивості DBF-поля

Опис

Id

Код

Числове поле формату 50

Код співробітника або групи

Parentld

&quot &quot 50

Посилання на групу, в яку входить поточний елемент

IsGroup

Логічне поле

Має значення істина, якщо елемент є групою, або брехняв іншому випадку

Name

Найменування

Рядок з 30 символів

ПІБ співробітника або імя групи

Ed

Освіта

Рядок з 13 символів

Має значення Образованіе_2

EdId

&quot

Числове поле формату 30

Код відповідного запису

в довіднику Образованіе_2

Імя DBFполя

Імя 1Cреквізіта

Властивості DBF-поля

Опис

OrderEng

ПріказПріем

Рядок з 15 символів

Має значення ПріказОПріеме

OrderEngld

&quot

Числове поле формату 50

Номер наказу про прийом на роботу

OrderSal

ПріказОклад

Рядок з 13 символів

Має значення ІзмененіеОклада

OrderSalld

&quot

Числове поле формату 50

Номер наказу про зміну окладу

Calendar

Календар

Рядок з 9 символів

Ідентифікатор календаря

Очевидно, що, маючи файли employeedbf і salarydbf, можна повністю відновити довідник Сотруднікі_2 Правда, відновлений довідник не буде точною копією оригіналу

9312 ПРОЦЕДУРИ ПЕРЕНЕСЕННЯ ДАНИХ

По-перше, потрібно за відомою структурі довідника Сотруднікі_2 і за викладеними правилами перетворення даних створити файли employeedbf і salarydbf Попередньо, однак, ми в процедурі АтрСвойства сформуємо таблицю значень, що містить перетворене відповідно до табл 95 опис атрибутів (реквізитів) довідника Сотруднікі_2 Для цього нам доведеться скористатися обєктом Метадані Запустимо процедуру АтрСвойства з обробки Проба і переглянемо п олучение результат

процедура АтрСвойства (тЗнач) далі

процедура ЕщеОднаСтрока (тЗнач, відСпр, тіпРек, ин, кон) далі

процедура Виконати () / / Повязана з кнопкою Пуск обробки Проба перем тЗнач

ОчістітьОкноСообщеній ()

/ / Формуємо таблицю з описом реквізитів довідника Сотруднікі_2

АтрСвойства (тЗнач)

/ / Перегляд таблиці значень Результат см на рис 93

тЗначВибратьСтроку (, Перетворені реквізити довідника Сотруднікі_2) КонецПроцедури / / Виконати

/ / Повертає таблицю значень, що містить перетворене опис

/ / Атрибутів довідника Сотруднікі_2 процедура АтрСвойства (тЗнач)

перем відСпр

тЗнач = СоздатьОбект (ТабліцаЗначеній)

відСпр = Сотруднікі_2; / / Вид довідника

/ / Формуємо стовпчики таблиці значень тЗначНоваяКолонка (Ідентифікатор, Рядок) тЗначНоваяКолонка (Тип, Рядок) тЗначНоваяКолонка (Довжина, Число) тЗначНоваяКолонка (Точність, Число) тЗначНоваяКолонка (Періодичний, Число)

/ / Запишемо в таблицю значень ідентифікатор, тип, довжину і точність реквізитів

/ / Довідника Сотруднікі_2 Довжина записується для символьних і числових

/ / Реквізитів, а точність тільки для числових

/ / Два перших реквізиту це атрибути Код і Найменування довідника

тЗначНоваяСтрока () / / Додаємо новий рядок в таблицю значень

/ / Атрибут Код тЗначІдентіфікатор = Код;

тЗначТіп = МетаданниеСправочнік (відСпр) ТіпКода

тЗначДліна = МетаданниеСправочнік (відСпр) ДлінаКода тЗначТочность = 0

тЗначПеріодіческій = 0

тЗначНоваяСтрока () / / Ще одна нова рядок

/ / Атрибут Найменування тЗначІдентіфікатор = Найменування; тЗначТіп = Рядок;

тЗначДліна = МетаданниеСправочнік (відСпр) ДлінаНаіменованія

тЗначТочность = 0 тЗначПеріодіческій = 0

/ / Реквізити довідника Сотруднікі_2

/ / Нагадуємо, що реквізити типу Довідник і Документ породжують 2 DBF-поля,

/ / Тому для них в тЗначвиділяємо два рядки

для ін = 1 по МетаданниеСправочнік (відСпр) Реквізит () цикл

/ / Тип реквізиту

тіпРек = МетаданниеСправочнік (відСпр) Реквізит (ін) Тип

/ / Чергова нова рядок ЕщеОднаСтрока (тЗнач, відСпр, тіпРек, ин, “)

якщо (тіпРек = Довідник) або (тіпРек = Документ) тоді

/ / Чергова нова рядок

ЕщеОднаСтрока (тЗнач, відСпр, тіпРек, ин, 2) КонецЕсли

конецЦікла КонецПроцедури / / АтрСвойства

/ / Додає новий рядок в таблицю значень тЗнач

процедура ЕщеОднаСтрока (тЗнач, відСпр, тіпРек, ин, кон)

перем обВід / / Різновид типу обєкта

// кон = “, Якщо додається перший рядок для довідника або документа

// кон = 2, якщо додається другий рядок для довідника або документа тЗначНоваяСтрока ()

якщо (тіпРек = Число) або (тіпРек = Рядок) або (тіпРек = Дата) тоді тЗначІдентіфікатор =

МетаданныеСправочник(видСпр)Реквизит(ин)Идентификатор

тЗначТіп = тіпРек

тЗначДліна = МетаданниеСправочнік (відСпр) Реквізит (ін) Довжина

інакше / / Довідник, Документ або Календар якщо тіпРек = Календар тоді

тЗначІдентіфікатор =

МетаданныеСправочник(видСпр)Реквизит(ин)Идентификатор

інакше

обВід = МетаданниеСправочнік (відСпр) Реквізит (ін) Вид тЗначІдентіфікатор = обВід + кон

КонецЕсли

якщо кон = ” тоді тЗначТіп Рядок;

тЗначДліна = СтрДліна (тЗначІдентіфікатор) інакше / /кон = 2

тЗначТіп = Число;

якщо тіпРек = Довідник тоді

тЗначДліна = МетаданниеСправочнік (обВід) ДлінаКода інакше / / тіпРек = Документ

тЗначДліна = МетаданниеДокумент (обВід) ДлінаНомера КонецЕсли

КонецЕсли КонецЕсли

тЗначТочность = МетаданниеСправочнік (відСпр) Реквізит (ін) Точність тЗначПеріодіческій = МетаданныеСправочник(видСпр)Реквизит(ин)Периодический

КонецПроцедури / / ЕщеОднаСтрока

Зауваження:

Рис 93 Результат роботи процедури АтрСвойства

1 Процедури АтрСвойства і ЕщеОднаСтрока показують, що обєкт Метадані забезпечує доступ до значення будь-якого компонента структури обєкта агрегатного типу

2 Приклади структур метаданих системи наведені в дод 1

Тепер таблицятЗначмістить практично всі необхідні дані для створення файлу employeedbf Залишилося тільки замінити значення стовпця Ідентифікатор на відповідні імена полів файлу employeedbf Виконаємо ці заміни в процедурі ДляДБФ У процедурі СоздатьПоляДБФ підготуємо, користуючись даними таблиці значеньтЗнач,поля для файлу employeedbf, а в процедурі СоздатьСотр сформуємо файл employeedbf і його індекси

Перенесення даних у файл employeedbf виконає процедура ПеренестіСотр, обраб ативающая довідник Сотруднікі_2 по наступномуалгоритмом:

1 Початок

2 Виконати вибірку елементів довідника Сотруднікі_2

3 Для кожного елемента знайти стерпні в DBF-поля значення

4 Створити новий запис у файлі employeedbf і перенести в неї знайдені в п 3 значення

Джерело: Бартеньев О В 1С: Підприємство: програмування для всіх Базові обєкти та розрахунки на одній дискеті М: Діалог-МІФІ, 2005 464 с

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*