Вход | Регистрация

1С:Предприятие ::

Метки:

Помогите кто чем может

Я
   Botant
27.01.04 - 00:33
Програмировать в 1с начал недавно, столкнулся с задачей: необходимо выгрузить содержимое табличной части документа в текстовый файл. Туплю ужасно, то в прямую делаю, то через таблице значений, ничего не помогает. Help me PLEASE!!!!
 
  Рекламное место пустует
   skunk
 
1 - 27.01.04 - 02:05
У всех метода своя, но приблизительно все сводиться к следующему.
Все данные представляються в текстовом ввиде. То есть преобразуются в строку. Но здесь есть один нюанс если с простыми типами данных (строка, число, дата) все просто, то вот со справочниками и прочими внутренними объектами 1с есть не котороые траблы. Ведь нельзя элемент справочника представить ввиди строки. Поэтому при выгрузке вместо него в строку преобразовывают, только один из реквезитов, способный на 100% гарантировать идетнификацию этого элемента.
   ezh
 
2 - 27.01.04 - 02:45
семерки нет под рукой, поэтому не вдаваясь в подробности работы с объектом Текст вот что посоветую:

<prog>
выгружаемаяТЧ = "";

выбратьстроки();

пока получитьстроку() = 1 цикл
выгружаемаяТЧ = выгружаемаяТЧ + Строка(НомерСтроки);
выгружаемаяТЧ = выгружаемаяТЧ + СимволТабуляции;
выгружаемаяТЧ = выгружаемаяТЧ + Строка(ИмяПервогоРеквизитаТЧ);
выгружаемаяТЧ = выгружаемаяТЧ + 
СимволТабуляции;
// и так далее для всех реквизитов

// в конце вместо СимволаТабуляции:
выгружаемаяТЧ = выгружаемаяТЧ + 
НоваяСтрока;

конеццикла;

Текст = СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(выгружаемаяТЧ);
Текст.Записать("ТабличнаяЧасть.txt");
</prog>

// Я могу ошибаться в синтаксисе (нет 77 под рукой), но думаю, метода понятна.
   botnt
4 - 28.01.04 - 21:18
Для ezh: вери большое сенкс!!!
   345
5 - 28.01.04 - 21:41
Ндя .... ноу коммент 2...
   Львенок
 
6 - 28.01.04 - 22:20
(5) Да, я тоже впервые вижу, чтобы чтобы операцию проводили столовым ножом, а вместо зажима использовали вилку. ;)
___
Искренне Ваш, Львенок.
   ezh
 
7 - 28.01.04 - 22:28
(5,6) ну вы и типы. разве форум не для того создан, чтобы люди обменивались знаниями? или вы тащитесь с того, что некоторые люди задают тривиальные вопросы, на которые вы знаете ответ, но НИКОМУ НЕ СКАЖЕТЕ??? звездочки.
   WhiteCat
 
8 - 28.01.04 - 22:35
(7) Ты программировать давно начал? Это не оскорбление, ничего личного. Просто твой алгоритм немного... некрасив, так сказать. Я помню свою первую программу на 1С. Сделал - и забыл. А через полгода заглянул туда и долго смеялся - забавно было, даже не верилось, что ламер, написавший сие - это я сам. Повторю: ничего личного, плиз не обижаться за критику
   ezh
 
9 - 28.01.04 - 22:40
да я и не обижаюсь. задача оптимизации и красоты не стояла. надо было чтобы человек понял. подозреваю, что вы бы сделали через обход реквизитов табличной части через метаданные, но нафик ему это???? да и развернутый цикл работает быстрее. может я чего не заметил???
   WhiteCat
 
10 - 28.01.04 - 22:47
(9) первое - это символ табуляции. Я бы так не делал. Лучше использовать другой разделитель. Второе - строку в текст нужно добавлять внутри цикла, а не копить одну большую и одним разом ее в текст вбухивать
 
 
   ezh
 
11 - 28.01.04 - 22:52
(10) да пусть он этим занимается. я же говорю что синтаксиса под рукой нет - я вообще не знаю можно ли по строке писать в файл, или надо целиком. Помню только, что есть объект по работе с текстовыми файлами. а какие методы и свойства - хрен его знает. а для удобного просмотра как раз символ табуляции лучше всего. Так что не знаю в чем дело и почему "крутые" ребята ерничают. да и пофик мне это.
   WhiteCat
 
12 - 28.01.04 - 22:56
Млин, тут же главное не просмотр а функциональность! Чтобы работало без глюков! А ты чему человека научишь с табуляцией?
   ezh
 
13 - 28.01.04 - 23:06
(12) так ему для просмотра надо, я так понял. а не для того, чтобы потом разбирать этот текстовый файл программно и грузить его куда-то в другую прогу. потом, какие глюки могут быть с табуляцией??? где потеря функциональности. такой же символ как и все другие. это во-первых. а во-вторых - наверняка табуляция не будет где-нибудь левая. пробелы могут быть, табуляция - нет. в третьих Ворд и иже с ними прекрасно грузит такие документы именно по табуляции. ладно, думаю, что тут уже идут вопросы вкуса, а не правильности.
   345
14 - 28.01.04 - 23:11
Да какие нафих табуляции....
Писать можно и одной строкой

Ошибка принципиальная

вот эта конструкция Строка(ИмяПервогоРеквизитаТЧ);
даст имя колонки,.... ну и так далее

Короче, полный бред....

На самом деле - сначала нужно просомтреть документ,
выбрать ссылки на справочники ... и т.д. - короче, на базовые объекты метаданных

выгрузить базовые объекты ... только не забыть, что при выгрузке справочника - там могут (и будут) ссылки на другие справочники

В общем - читать лекцию по программированию с нуля, работе с БД .... есть литература ....

А для (0) можно так
тз = создать...."ТаблицаЗначений"
выгрузитьТабличнуюЧасть(тз)
Стр=ЗначениеВСтроку(тз);
Текст = СоздатьОбъект("Текст"); 
Текст.....
Текст.Записать....

тз выгрузится... но - при попытке загрузить данные в эту же конфу - все будет нормально, а в другую .... потеряешь элементы справочнков.... нет там таких элементов.
   WhiteCat
 
15 - 28.01.04 - 23:14
(13) Ну, тебе видней, я просто свое мнение высказал
   ezh
 
16 - 28.01.04 - 23:19
(14) короче, склифосовский... если ты понял задачу по-другому (вы решили что ему надо сохранять именно объекты с возможностью последующей загрузки обратно или куда бы там ни было, с сохранением всех подчиненных объетов, ссылок и проч), то это не значит, что я решил задачу не правильно. Потому-что я ее понял именно так: надо ДЛЯ ПРОСМОТРА В ТЕКСТОВОМ ВИДЕ выгрузить табличную часть документа. Никакие, блин, ссылки и проч. не нужны. И где же я ее не правильно решил? терпеть не могу засранцев, которые думают, что все должны думать как они.
Парень сказал, что у него получилось - а это значит, что Я ПОНЯЛ ЕГО ПРОБЛЕМУ ПРАВИЛЬНО, А ТЫ НЕТ.
Далее, если уж идет разговор о выгрузке данных, то я бы ему посоветовал использовать конфигурацию Конвертация данных и соответствующие обработки. А вы этого не сделали. Типа - ЗначениеВСтроку... но это не будет работать на других базах...
И наконец - может поспорим, как сработает Строка(ИмяРеквизитаТабличнойЧасти)?

извините за резкость, но я не перевариваю тупые придирки.
   WhiteCat
 
17 - 28.01.04 - 23:19
(14) Одной? Шо за изврат? Разбирать как ее потом? Правила писать?
   WhiteCat
 
18 - 28.01.04 - 23:29
Все, писец, щас начнется. Я умываю руки


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует