выгрузка в dbf

Форум 1С: Одинэс.Ру

Найти!

выгрузка в dbf

Anonymous
16.03.2009 - 22:00
делаю выгрузку из УТ дока реализация в дбф формат.
Если есть примеры, скиньте пожалуйста.
вот мой код:
Перем КолвоСтрок;
 
Процедура КнопкаВыполнитьНажатие(Кнопка)
 
         Состояние("Запущена выгрузка данных");
         ПолучитьДанныеВТаблице();
         Если КолвоСтрок<>0 Тогда
              ВыгрузитьТаблицуВФайл();
         Иначе
         Сообщить("В документе табличная часть пуста!");    
 
         КонецЕсли;
      
КонецПроцедуры
 

Процедура ПолучитьДанныеВТаблице()
 
//ТабЗнач = Новый("ТаблицаЗначений");
//ТабЗнач = Док.Товары.Выгрузить(,"Код,Номенклатура,Количество,Единица,Цена, Коэффициент, Сумма,СтавкаНДС,СуммаНДС,Всего");
КолвоСтрок = Док.Товары.Количество();
КонецПроцедуры
 
Процедура ВыгрузитьТаблицуВФайл()
 
ТабЗнач = Новый("ТаблицаЗначений");
ТабЗнач.НоваяКолонка("Код","Число",10,0);
ТабЗнач.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
ТабЗнач.НоваяКолонка("Количество","Число",10,2);
ТабЗнач.НоваяКолонка("ЕдИзм","Справочник.ЕдиницыИзмерения");
ТабЗнач.НоваяКолонка("Цена","Число",10,2);
ТабЗнач.НоваяКолонка("Коэф","Число",10,2);
ТабЗнач.НоваяКолонка("Сумма","Число",10,2);
ТабЗнач.НоваяКолонка("СтавкаНДС","Перечисление.СтавкиНДС");
ТабЗнач.НоваяКолонка("НДС","Число",10,2);
ТабЗнач.НоваяКолонка("Всего","Число",10,2);
    ТабЗнач = Док.Товары.Выгрузить(,"Код,Номенклатура,Количество,Единица,Цена, Коэффициент, Сумма,СтавкаНДС,СуммаНДС,Всего");
 
БД = Новый XBase;
 
БД.Поля.Добавить("CODE", "S", 5);
БД.Поля.Добавить("NAME", "S", 40);
 
БД.СоздатьФайл("C:\start.dbf",);
//БД.Индексы.Добавить("IDXCODE", "CODE");
 
БД.АвтоСохранение = Истина;
 
Пока ТабЗнач.Следующий() Цикл
 
БД.Добавить();
        
        БД.CODE = ТабЗнач.Код;
        БД.NAME = ТабЗнач.Номенклатура;
        
КонецЦикла;
 
БД.ЗакрытьФайл();
КонецПроцедуры
 

делала по примеру. Вопрос что с ТЗ. не создает колонок. Подскажите
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
25.04.2024 - 10:44
Смотри также:
Расширенный поиск в справочнике
Использование регистратора в запросах и вывод "лишних" данных
Как сделать зачет с договора в ЕВРО на договор в рублях по одному контрагенту

Re: выгрузка в dbf

Чучундер
1 - 16.03.2009 - 22:47
я в 8-ке ни гугу, но может попробовать по аналогии с 7.7 вот так:
ТабЗнач = Новый("ТаблицаЗначений");
ТабЗнач = Док.Товары.Выгрузить(,"Код,Номенклатура,Количество,Единица,Цена, Коэффициент, Сумма,СтавкаНДС,СуммаНДС,Всего");
ТабЗнач.ВыбратьСтроку(,"тест выгрузки");

Re: выгрузка в dbf

Друзья зовут меня Курулай
2 - 17.03.2009 - 02:13
(0) вы пытаетесь тупо приспособить к восьмёрке семёрочный код
в 8.1 тип колонки задаётся вообще не так, как в 7.7
в семёрке тип колонки задаётся тупо строкой (наподобие "Справочник.Номенклатура", или "Число", или "Строка")
а в восьмёрке тип колонки задаётся объектом "ОписаниеТипов"
откройте синтаксис-помощник уже
 
КоллекцияКолонокТаблицыЗначений (ValueTableColumnCollection)
Добавить (Add)
Синтаксис:
Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>)
Параметры:
<Имя> (необязательный)
Тип: Строка. Имя колонки.
Значение по умолчанию: Пустая строка
<Тип> (необязательный)
Тип: ОписаниеТипов. Объект, описывающий допустимые типы значений для колонки. Если параметр не указан, в колонке можно будет хранить значение любого типа.

Re: выгрузка в dbf

Друзья зовут меня Курулай
3 - 17.03.2009 - 02:16
ОписаниеТипов (TypeDescription)
Представляет собой объект для управления допустимыми типами значений. В основном предназначен для присвоения в качестве значений соответствующим свойствам других объектов. Набор допустимых типов и квалификаторы примитивных типов задаются при создании объекта.
 
Пример: // Создание описателя типов для таблицы значений
 
КЧ = Новый КвалификаторыЧисла(12,2);
КС = Новый КвалификаторыСтроки(20);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
 
// Создание таблицы значений
ТаблицаЗначений = Новый ТаблицаЗначений;
 
// добавим в таблицу значений три колонки
ТаблицаЗначений.Колонки.Добавить("Отдел",ОписаниеТиповС,"Отдел",20);
ТаблицаЗначений.Колонки.Добавить("Сотрудник",ОписаниеТиповС,
        "Фамилия сотрудника",20);
ТаблицаЗначений.Колонки.Добавить("Оклад",ОписаниеТиповЧ,"Оклад",10);

Re: выгрузка в dbf

Друзья зовут меня Курулай
4 - 17.03.2009 - 04:26
кстати, ещё вот эта строка смущает:
 
ТабЗнач = Док.Товары.Выгрузить(,"Код,Номенклатура,Количество,Единица,Цена, Коэффициент, Сумма,СтавкаНДС,СуммаНДС,Всего");
 
там что, действительно в табличной части "Товары" есть реквизит "Код" ?
уберите оттуда "Код", попробуйте без негою
 
и вообще, непонятно, зачем сначала для ТабЗнач  подробно объявлять и описывать колонки, а потом убить все эти колонки методом:
ТабЗнач = Док.Товары.Выгрузить(,)
 
ведь этот метод похерит все ваши объявления и вернёт в ТабЗнач новую таблицу значений с колонками, перечисленными в его втором параметре.
 
Короче, удаляйте всю эту хрень, она тут ващще не нужна:
 

ТабЗнач = Новый("ТаблицаЗначений");
ТабЗнач.НоваяКолонка("Код","Число",10,0);
ТабЗнач.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
ТабЗнач.НоваяКолонка("Количество","Число",10,2);
ТабЗнач.НоваяКолонка("ЕдИзм","Справочник.ЕдиницыИзмерения");
ТабЗнач.НоваяКолонка("Цена","Число",10,2);
ТабЗнач.НоваяКолонка("Коэф","Число",10,2);
ТабЗнач.НоваяКолонка("Сумма","Число",10,2);
ТабЗнач.НоваяКолонка("СтавкаНДС","Перечисление.СтавкиНДС");
ТабЗнач.НоваяКолонка("НДС","Число",10,2);
ТабЗнач.НоваяКолонка("Всего","Число",10,2);

 

Re: выгрузка в dbf

Anonymous
5 - 17.03.2009 - 05:03
Спасибо. Разобралас. переделала. есть следующие вопросы.
Как выгрузить дбф файл с кодировкой ДОС. не понимаю как ее задать. Код уже такой:
 
Перем КолвоСтрок;
 
Процедура КнопкаВыполнитьНажатие(Кнопка)
 
         Состояние("Запущена выгрузка данных");
         КолвоСтрок = Док.Товары.Количество();
         Если КолвоСтрок<>0 Тогда
            ВыгрузитьТаблицуВФайл();
         Иначе
         Сообщить("В документе табличная часть пуста!");    
         КонецЕсли;
      
КонецПроцедуры
 
Процедура ВыгрузитьТаблицуВФайл()
 
БД = Новый XBase;
 
БД.Поля.Добавить("N", "N", 4);
БД.Поля.Добавить("ARTIKUL", "C", 10);
    БД.Поля.Добавить("TOVAR", "C", 80);
БД.Поля.Добавить("KOLVO", "N", 10);
БД.Поля.Добавить("EDIZM", "C", 10);
БД.Поля.Добавить("CENA", "N", 15,2);
БД.Поля.Добавить("KOEF", "N", 10);
    БД.Поля.Добавить("SUMMA", "N", 15,2);
БД.Поля.Добавить("CENABEZNDS", "N", 15,2);
БД.Поля.Добавить("PRNDS", "N", 5,2);
 
к = Строка(док.Номер);
БД.СоздатьФайл("C:\P"+ Прав(к,7) +".dbf",);
 
//бд.Кодировка.OEM;
 
БД.АвтоСохранение = Истина;
  //  БД.ОткрытьФайл("C:\P"+ Прав(к,7) +".dbf");
    Для каждого стр из  Док.Товары Цикл
 
БД.Добавить();
        
        БД.N = стр.НомерСтроки;
БД.ARTIKUL = "";
БД.TOVAR = стр.Номенклатура;
        БД.KOLVO = стр.Количество;
БД.EDIZM = стр.ЕдиницаИзмерения;
БД.CENA = стр.Цена;
БД.KOEF   = стр.Коэффициент;
БД.SUMMA     = стр.Сумма + стр.СуммаНДС;
БД.CENABEZNDS = стр.Сумма;
БД.PRNDS = стр.СтавкаНДС;
    КонецЦикла;
    Предупреждение("Выгрузилось ");
БД.ЗакрытьФайл();
КонецПроцедуры

Интересные темы

odines.ru
25.04.2024 - 10:44
Смотри также:
ТИИ
Как победить: обновление для данной версии не найдено.
Принятие к учету ОС по частям

Re: выгрузка в dbf

Anonymous
6 - 17.03.2009 - 05:14
Вот такая ОШИБКА
 
{Форма.Форма(39)}: Ошибка при вызове метода контекста (Добавить): Перед выполнением операции нужно открыть базу
БД.Добавить();
по причине:
Перед выполнением операции нужно открыть базу

Re: выгрузка в dbf

С С С Р
7 - 17.03.2009 - 05:16
(6)сижу и смотрю в код и думаю........ а перед работой открыли базу или нет О_о

Re: выгрузка в dbf

Anonymous
8 - 17.03.2009 - 05:18
видимо нет... а где это надо сделать?

Re: выгрузка в dbf

С С С Р
9 - 17.03.2009 - 05:18
(6)Барышня, помоему, создать базу нужно отдельной процедурой, а открыть уже в другой!

Re: выгрузка в dbf

Друзья зовут меня Курулай
10 - 17.03.2009 - 05:20
(6) милая, обхъясни мне тупому только одно
зачем выгружать в формате ДБФ ??? для переноса данных он подходит наименее всего.
какова цель этой выгрузки, куда оно потом используется?

Re: выгрузка в dbf

Anonymous
11 - 17.03.2009 - 05:21
документ выгружается в дбф формат и уходит по почте поставщикам. так надо. это было условие изначально.

Re: выгрузка в dbf

С С С Р
12 - 17.03.2009 - 05:25
(6) сделайте на форме кнопку "создать базу", и кнопку "выгрузить".
кнопка "создать"-создаёт базу, а кнопка "Выгрузить"- всё остальное

Re: выгрузка в dbf

Anonymous
13 - 17.03.2009 - 05:26
если создавать разными процедурами. тогда БД надо задавать перем ? извините, мне не оч понятно

Re: выгрузка в dbf

Anonymous
14 - 17.03.2009 - 05:28
вот это у меня будет создавать базу?
 
БД = Новый XBase;
 
БД.Поля.Добавить("N", "N", 4);
БД.Поля.Добавить("ARTIKUL", "C", 10);
    БД.Поля.Добавить("TOVAR", "C", 80);
БД.Поля.Добавить("KOLVO", "N", 10);
БД.Поля.Добавить("EDIZM", "C", 10);
БД.Поля.Добавить("CENA", "N", 15,2);
БД.Поля.Добавить("KOEF", "N", 10);
    БД.Поля.Добавить("SUMMA", "N", 15,2);
БД.Поля.Добавить("CENABEZNDS", "N", 15,2);
БД.Поля.Добавить("PRNDS", "N", 5,2);
 
к = Строка(док.Номер);
БД.СоздатьФайл("C:\P"+ Прав(к,7) +".dbf",);
 

а обращаться потом как ?

Re: выгрузка в dbf

С С С Р
15 - 17.03.2009 - 05:37
незнаю как в 8.0, я с ДБФ на восьмёрке не работал, а в 77 никаких переменных объявлять не нужно, просто нужна пауза между созданием и открытием базы ИМХО

Re: выгрузка в dbf

С С С Р
16 - 17.03.2009 - 05:39
(14) :) у вас файл создан, обратитесь к нему- не стесняйтесь
БД.ОткрытьФайл("C:\P"+ Прав(к,7) +".dbf");

Re: выгрузка в dbf

Anonymous
17 - 17.03.2009 - 05:40
я обратилась. это не помогает...

Re: выгрузка в dbf

Anonymous
18 - 17.03.2009 - 05:42
{Форма.Форма(35)}: Ошибка при вызове метода контекста (ОткрытьФайл): Перед выполнением операции нужно закрыть базу
    БД.ОткрытьФайл("C:\P"+ Прав(к,7) +".dbf",);
по причине:
Перед выполнением операции нужно закрыть базу

Re: выгрузка в dbf

С С С Р
19 - 17.03.2009 - 05:43
и ещё, где гарантии что название вашего документа будет содержать правильные символы, символы которые доступны в Windows?

Re: выгрузка в dbf

С С С Р
20 - 17.03.2009 - 05:47
(19) прошу прощения, не посмотрел что речь идёт о КОДе, думал что привязка к наименованию :(.
Я правильно понял? кол-во документов будет завязано в цикл, будет много файликов ДБФ?

Re: выгрузка в dbf

С С С Р
21 - 17.03.2009 - 05:50
так..... бардак в мыслях полнейший.... женщина, перед нажатием на кнопку создать и сформировать удалите все ранее созданные файлы

Re: выгрузка в dbf

Anonymous
22 - 17.03.2009 - 05:54
так. я всего то беру 1 док и выгружаю его тч в файл дбф

Re: выгрузка в dbf

Anonymous
23 - 17.03.2009 - 06:05
так. файл очистила. заработало.

Re: выгрузка в dbf

Anonymous
24 - 17.03.2009 - 06:10
спасибо!
 
вопрос с кодировкой остался. я вроде ее уже прописала
 
бд.Кодировка = КодировкаXBase.OEM;
 
в чем может быть еще дело ?

Re: выгрузка в dbf

С С С Р
25 - 17.03.2009 - 06:12
olgji:молодой человек, у меня всё заработало спасибо вам огромное что потратили на меня время, я в следующий раз сюда зайду- думаю что вы мне поможете!
СССР: да не за что, приходите, мы обязательно вам поможем!

Re: выгрузка в dbf

Anonymous
26 - 17.03.2009 - 06:15
действительно спасибо за время. я думаю, все когда-то учились и задавали глупые вопросы. зато это я уже не спрошу. и сама кому то подскажу. что в этом такого ?

Re: выгрузка в dbf

Anonymous
27 - 17.03.2009 - 06:18
а с кодировкой и того проще. просто сразу после создания прописать и все. по крайней мере работает.
у меня вопрос следующий. Если у нас тип перечесление. например ставкиНДС, как их в число перевести. Сначала обрезать знак %...а потом преобразование типов ?

Re: выгрузка в dbf

С С С Р
28 - 17.03.2009 - 06:21
(27)да, можно так

Re: выгрузка в dbf

Дятeл
29 - 17.03.2009 - 06:22
Если ПреобразовываемаяСтавкаНДС = Перечисление.СтавкиНДС.СтокаТоПроцентов тогда
ЗначениеДляВыгрузки = СтокаТоПроцентов
ИначеЕсли...
 
а вообще в типовых есть функция возвращающая числовое значение ставки по значению перечисления

Re: выгрузка в dbf

Anonymous
30 - 17.03.2009 - 06:31
ура, ставки выгрузились.
только вот осталась ошибка. иногда появляется иногда нет.
 
{Форма.Форма(37)}: Ошибка при вызове метода контекста (ОчиститьФайл): Перед выполнением операции нужно открыть базу
бд.ОчиститьФайл();
по причине:
Перед выполнением операции нужно открыть базу

Re: выгрузка в dbf

Anonymous
31 - 17.03.2009 - 06:33
я когда второй раз делаю. все хорошо и выгружает. но это ж неправильно в принципе....

Re: выгрузка в dbf

Дятeл
32 - 17.03.2009 - 06:51
(30) думаю ошибка в 36 строке модуля формы.
К списку тем 1 > К списку форумов

Добавить новое сообщение

Ваше имя:
Тема сообщения:
Сообщение:
« ошибка SDBL: Ссылочная константа содержит недопустимый ссылочный номер Сообщения всем активным пользователям системы »
© 2009 Форум 1С: Одинэс.Ру