Перейти к содержимому


(РЕШЕНО) Сохранение документа в файл DBF


Сообщений в теме: 106

#1 umka)

    Активист


  • 348 сообщений

Отправлено 21 февраля 2012 - 10:59

Подскажите пожал как сделать чтобы накладная сохранялась в
DBF формате?
База = Новый XBase;
//Указываем кодировку
База.Кодировка = КодировкаXBase.OEM;
//Добавляем поля в DBF файл
База.Поля.Добавить("KOD","S",11);
База.Поля.Добавить("NOM","S",50);

Путь = "C:\PRIMER.DBF";
База.СоздатьФайл(Путь);
База.Записать();
//Очищаем файл
База.ОчиститьФайл();
Для Каждого Стр из Т Цикл
База.Добавить();
База.KOD = Стр.Код;
База.NOM = Стр.Наименование;
База.Записать();
КонецЦикла;
База.Записать();
База.ЗакрытьФайл();

Сообщение отредактировал alexburn: 21 февраля 2012 - 11:02


#2 umka)

    Активист


  • 348 сообщений

Отправлено 21 февраля 2012 - 12:21

как это можно осуществить быстро?

#3 nbIpKuH_BaH9I

    Одинесина


  • 527 сообщений

Отправлено 21 февраля 2012 - 16:40

В dbf необходимо поля создавать. Я думаю, что это плохая затея.
Изображение
Помог мой ответ, нажми Изображение.

#4 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 07:00

возможно и плохая идея,но осуществить необходимо

#5 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 338 сообщений

Отправлено 22 февраля 2012 - 08:03

Быстро только кошки родятся.

Ну а в чем собственно крабла?

Создать DBF и описать поля?
Выбрать состав табличной части и передать их в DBF?
Повесить на кнопку процедуру, которая будет делать предыдущие два шага?

Или Вы хотите наполнить DBFку без ручного цикла, а типа как запросом "INSERT INTO ..."?

Сообщение отредактировал uza: 22 февраля 2012 - 08:04

Не все полезно - что в БД залезло

#6 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 08:43

сохранить документ в дбф, при нажатии на кнопку пусть будет. как это сделать? с чего начать вообще?

#7 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 08:52

Начните с прочтения книги "Технологии интеграции Предприятие 1С".

В этой книге все описано как заполнять DBF-файлы. Потом делайте, и пишите что не получается.
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#8 Speaker1982

    Частый гость


  • 136 сообщений

Отправлено 22 февраля 2012 - 09:41

Ну типа того...:)

База = Новый XBase;
База.Поля.Добавить("KOD","C",11);
База.Поля.Добавить("NOM","C",50);
База.Поля.Добавить("ORG","C",50);
База.Поля.Добавить("KONTR","C",50);
База.Поля.Добавить("DOGNUM","C",10);
База.Поля.Добавить("STRTOVAR","C",50);
База.Поля.Добавить("STRKOL","N",12,2);
База.Поля.Добавить("STRK","N",10,2);
База.Поля.Добавить("STRCENA","N",12,2);
Путь = "C:\PRIMER.DBF";
База.СоздатьФайл(Путь);
База.ОчиститьФайл();
Накладная = Документы.РасходнаяНакладная.НайтиПоКоду ("00000001");
Строки = Накладная.Товары;
Для Каждого Стр из Строки Цикл
База.Добавить();
База.KOD = Стр.Ссылка.Код;
База.NOM = Стр.Ссылка.Наименование;
База.ORG= Стр.Ссылка.Организация;
База.KONTR= Стр.Ссылка.Контрагент;
База.DOGNUM= Стр.Ссылка.ДоговорКонтрагента.Номер;
База.STRTOVAR= Стр.Номенклатура;
База.STRKOL= Стр.Количество;
База.STRK= Стр.Коэффициант;
База.STRCENA= Стр.Цена;
КонецЦикла;
База.Записать();
База.ЗакрытьФайл();

Сообщение отредактировал alexburn: 22 февраля 2012 - 09:42


#9 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 13:58

а это как работает? при нажатии на кнопку? и куда это надо вписать?

#10 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 14:03

Это по всей видимости пример. Почитайте книжку, теорию пересказывать тут вам никто не будет:)
Но на пальцах - создаются поля в файле, такие как KOD,NOM,ORG, и квалификатор значения.
Потом создается сам файл, обрабатываются и записываются в определенные поля значения, записывается файл. ВСЕ!
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#11 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 14:48

) вставлять его в модуль объекта накладной? как процедуру прописать?

#12 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 14:50

Да без разницы куда вставлять, главное чтоб он выполнял то что хотите. Обычно прописывается в обработчике команды.
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#13 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 14:58

накладная как внешняя обработка идет, тогда в строке Накладная = Документы.РасходнаяНакладная.НайтиПоКоду ("00000001");
Строки = Накладная.Товары; что писать тут?

#14 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 15:03

Обработать табличную часть, например:
Накладная = Документы.РасходнаяНакладная.НайтиПоКоду ("00000001");
Строки = Накладная.Товары.Выбрать;
Пока Строки.Следующий() Цикл
обработка строк
КонецЦикла

Сообщение отредактировал alexburn: 22 февраля 2012 - 15:05

Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#15 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 15:07

{Обработка.Накладная.Команда.Команда1.МодульКоманды(17,13)}: Переменная не определена (Документы)
Накладная = <<?>>Документы.НакладнаяСоСкидками.НайтиПоКоду ("00000001"); (Проверка: Тонкий клиент)

#16 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 15:09

Блиииин, вы что, берете тупо код и вставляете его? а головой подумать?????
В 8.2 к объектам обращаться через Документ.НакладнаяСоСкидками.НайтиПоКоду("0000000000000000000000000000000000000001);
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#17 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 15:11

просто не стандартная расход накладная,а своя у нас обработка, вот как тут быть

#18 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 15:21

Вопрос не понятен.
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#19 umka)

    Активист


  • 348 сообщений

Отправлено 22 февраля 2012 - 15:30

как правильно надо прописать?

#20 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 22 февраля 2012 - 19:32

Даже такое не можете написать:
ДокСсылка = Документ.НакладнаяСоСкидками.НайтиПоКоду(ВашКод);
Или я снова туплю?
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#21 umka)

    Активист


  • 348 сообщений

Отправлено 23 февраля 2012 - 08:31

это написал,просто думал там что то такое надо писать особенное.спс)

#22 umka)

    Активист


  • 348 сообщений

Отправлено 27 февраля 2012 - 10:46

файл создается,необходимо чтобы данными заполнялся,как это прописать , подскажите пожал

#23 alexburn

    Suum cuique


  • 4 654 сообщений

Отправлено 27 февраля 2012 - 10:50

Вам уже подсказали в сообщениии № 8.
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#24 umka)

    Активист


  • 348 сообщений

Отправлено 27 февраля 2012 - 13:10

именно так и делаю, а не заполняется

#25 Requin

    Ветеран


  • 1 234 сообщений

Отправлено 27 февраля 2012 - 13:15

Просмотр сообщенияumka) (27 февраля 2012 - 13:10) писал:

именно так и делаю, а не заполняется
Показывайте код.
Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Изображение

#26 umka)

    Активист


  • 348 сообщений

Отправлено 27 февраля 2012 - 13:21

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
СоздатьДБФ();
КонецПроцедуры
  &НаСервере
  Процедура СоздатьДБФ()
База = Новый XBase;
База.Поля.Добавить("KOD","C",11);
База.Поля.Добавить("ORG","C",50);
База.Поля.Добавить("KONTR","C",50);
База.Поля.Добавить("ART","C",10);
//База.Поля.Добавить("STRTOVAR","C",50);
База.Поля.Добавить("NOM","C",50);
База.Поля.Добавить("STRKOL","N",12,2);
База.Поля.Добавить("STRCENA","N",12,2);
База.Поля.Добавить("STRSUM","N",10,2);
Путь = "C:\PRIMER.DBF";
База.СоздатьФайл(Путь);
База.ОчиститьФайл();
ДокСсылка=Документы.РеализацияТоваровУслуг;
//ДокСсылка = Объект.Ссылка.Товары;
Строки =ДокСсылка.Товары;
Для Каждого Стр из Строки Цикл
База.Добавить();
База.KOD = Стр.Ссылка.Код;
База.ORG= Стр.Ссылка.Организация;
База.KONTR= Стр.Ссылка.Контрагент;
База.ART= Стр.Ссылка.Артикул;
//База.STRTOVAR= Стр.Номенклатура;
База.NOM = Стр.Номенклатура;
База.STRKOL= Стр.Количество;
База.STRCENA= Стр.Цена;
База.STRSUM= Стр.Сумма;
КонецЦикла;
База.Записать();
База.ЗакрытьФайл()
КонецПроцедуры


ошибка {Документ.РеализацияТоваровУслуг.Команда.DBF.МодульКоманды(23)}: Поле объекта не обнаружено (Товары)
Строки =ДокСсылка.Товары;

пробывал и так написать ДокСсылка = Объект.Ссылка.Товары,тож ошибку выдает(

#27 Requin

    Ветеран


  • 1 234 сообщений

Отправлено 27 февраля 2012 - 13:28

Ну дак ссылку получить надо.
ДокСсылка=Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДокумента);

Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Изображение

#28 umka)

    Активист


  • 348 сообщений

Отправлено 27 февраля 2012 - 13:34

(НомерДокумента) тут номер писать или просто ""?

файл то создается с полями, а данных в нем нету( почему?

они ж должны браться с документа реализация товаров, а нету(

#29 Requin

    Ветеран


  • 1 234 сообщений

Отправлено 27 февраля 2012 - 13:41

Номер нужного документа.

Это что у вас за команда? Какие у нее свойства и параметры? Может достаточно просто:
ДокСсылка = ПараметрКоманды;
(только передайте его в процедуру СоздатьДБФ)

Сообщение отредактировал Requin: 27 февраля 2012 - 13:43

Если тебе что-то не нравится, то не спеши это исправлять, если не помнишь, для чего это сделали.
Изображение

#30 umka)

    Активист


  • 348 сообщений

Отправлено 27 февраля 2012 - 13:45

именно номер нужного документа? так там каждый документ практически нужен. я ж открываю нужный документ, нажимаю сохранить и он должен сохранятся в дбф





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных