Имя: Пароль:
1C
1С v8
Использование Метаданных для получения всей информации из документа
,
0 Hammond
 
17.10.20
19:58
Добрый Вечер, господа!

Есть задание, сделать внешнюю обработку, на которой есть формы "Документ", где пользователь выбирает документ, "Файл", куда выбранный документ должен записываться. Также кнопки "Просмотр файла" "Выгрузить Документ" "загрузить Документ"
суть работы такая:
Нужно как-то считать все данные из выбранного пользователя документа. не могу разобраться, как это сделать. в задании написано "обязательно использовать метаданные". также нельзя использовать "ЗначениеВСтрокуВнутр()", "УникальныеИдентификатор()" и подобный функции. Загрузка должна производиться ТОЛЬКО в файл TXT.

Формы я создал эти, но вот как выбрать через метаданные всю информацию из выбранного документа не знаю
1 acht
 
17.10.20
20:07
Как, однако, у тебя много заданий-то... И со всеми на форум приходишь, да?
2 МихаилМ
 
17.10.20
20:08
из Вашего сообщения понятно , что задание
вы должны сделать самостоятельно.
3 Hammond
 
17.10.20
20:11
Я и делаю, просто нуждаюсь в некоторых подсказках, так как только знакомлюсь с 1с, и каждое задание для меня имеет определенные сложности, так как содержит еще неизвестные мне аспекты, которые я изучаю. а в таком нелегком задании пригодится любая помощь
4 PR2
 
17.10.20
20:13
(0) А в чем сложность-то?
5 МихаилМ
 
17.10.20
20:15
6 Hammond
 
17.10.20
20:17
я не знаком с метаданными вообще. я представляю, что это такое, поскольку весь день изучаю это. но все равно не понимаю, как получить именно информацию из документа
то есть я понял, как получить имена, синонимы всех документов в конфигурации через цикл, но как получить информацию из выбранного документа не понимаю
7 Hammond
 
17.10.20
20:18
я понимаю, что не первый, но так и не нашел нигде помощи
8 PR2
 
17.10.20
20:20
(6) Вообще обычно помогает почитать СП и посмотреть типовые
Ну или накопить денег и платить тем, кто будет тебе все это рассказывать вместо СП и типовых
9 МихаилМ
 
17.10.20
20:21
10 Жан Пердежон
 
17.10.20
20:22
можно и без метаданных, это даже проще
11 Hammond
 
17.10.20
20:22
к сожалению, обязательно использование метаданных, с которыми я встречаюсь первый раз
12 Hammond
 
17.10.20
20:22
(8) я ограничен во времени, поэтому и сижу на формах
13 acht
 
17.10.20
20:31
(12) А мог бы потратить время на учебу, т-щ хитрожопый студент.

Сдается мне, что это задание при приеме на работу в Новосибирске: v8: "Перегрузка документа" Изучаю 1С четвёртый день :)
А мысль о том, что твои работодатели тоже читают этот форум, тебе не приходила?
14 Hammond
 
17.10.20
20:34
Нет, вы не угадали, далеко не в Новосибирске, но суть задания достаточно похожая
к сожалению, ответа там я так и не нашел
а насчет чтения работодателем, то такое может быть. но мне главное выполнить задание и понимать, как это работает.
15 acht
 
17.10.20
20:39
(14) Ну ответ там и не дали ровно по той же причине.
16 Hammond
 
17.10.20
21:23
Знатоки, такой вопрос:
а я могу вообще получить список реквизитов документа?
то есть я пишу метаданные.документ.авансовыйотчет.реквизиты и выдает "КоллекцияОбъектовМетаданных"
а получить получить именно имена реквизитов?
17 mistеr
 
17.10.20
21:24
(0) По-моему, с этой задачей раз в год приходят, если не чаще.

Подсказка. Через метаданые нужно получить имена всех реквизитов документа. Потом обратиться к каждому реквизиту по имени, получить его значение и записать в файл.
18 Hammond
 
17.10.20
21:25
(17) Да, я так и подумал, но не удается получить имена реквизитов. (16)
19 mistеr
 
17.10.20
21:25
(16) Слово "Коллекция" намекает на то, что у нее есть методы, чтобы получить содержимое.
20 Hammond
 
17.10.20
21:29
я понимаю, но что это за метод не могу найти
то есть я пишу метаданные.документ.авансовыйотчет.реквизиты. и должен что-то выбрать, но что - загадка. скорее всего f(x) какую-то
21 hhhh
 
17.10.20
21:47
(20) попробуй почитать про   Для Каждого
22 Hammond
 
17.10.20
21:51
я знаком с циклами
23 Hammond
 
17.10.20
21:55
нашел в интернете функцию перебратьметаданные:
КоллекцияОбъектов = Метаданные.Документы;
//Перебрать коллекцию объектов метаданных    
    Для каждого Метаданное Из КоллекцияОбъектов Цикл
                
        Имя = Метаданное.Имя;
        Синоним = Метаданное.Синоним;
        Комментарий = Метаданное.Комментарий;
КонецЦикла;

я немного его изменил, КоллекцияОбъектов = Метаданные.Документы.АвансовыйОтчет.реквизиты
в конце сообщить(имя); сообщить(синоним); и программа выдает имя ТОЛЬКО одного реквизита
24 acht
 
17.10.20
21:57
(23) Ну ты же знаком с циклами
25 Cthulhu
 
17.10.20
22:00
нахрена изобретать велосипед?????? "все уже украли до нас" (с)
вариант текста - xml. никаких метаданных не надо. выгрузка - вполпинка. загрузка - вполпинка.
26 acht
 
17.10.20
22:03
(25) Т-щ курсант, мне не надо лучше, мне надо, чтобы вы замучились.
27 МихаилМ
 
17.10.20
22:26
(25) тс не описал всего задания . по условиям нельзя использовать хмл джсан и пр. и внутренние идентификаторы.
28 Конструктор1С
 
18.10.20
07:30
(0) для данной задачи не нужны метаданные, XDTO рулит
29 Конструктор1С
 
18.10.20
07:32
(11) видимо авторы задачи сами рукозады
30 hhhh
 
18.10.20
09:07
(28) задача так сформулирована, использовать метаданные,  XDTO запрещено
31 ProxyInspector
 
18.10.20
09:23
Что вы мучаете человека. Это же ваша смена
    
МетаданныеДокумента = ДокументСсылка.Метаданные();
Для Каждого МетаданныеДокументаРеквизит Из МетаданныеДокумента.Реквизиты Цикл
   ИмяРеквизита = МетаданныеДокументаРеквизит.Имя;
   СинонимРеквизита = МетаданныеДокументаРеквизит.Синоним;
КонецЦикла;

Для Каждого МетаданныеТабличнаяЧастьДокумента Из МетаданныеДокумента.ТабличныеЧасти Цикл
    ИмяТабличнойЧасти = МетаданныеТабличнаяЧастьДокумента.Имя;
КонецЦикла;

   Ну и тае далее и тому подобное. Таким образом можно добраться до любого реквизита документа, определенного в конфигурации
32 hhhh
 
18.10.20
09:31
(31) он так уже делал в (23). Не получилось. Наверно, родился под несчастливой звездой.
33 ProxyInspector
 
18.10.20
09:32
(32) Я думаю он победит
34 mistеr
 
18.10.20
11:37
(31) Лучше пусть он сейчас помучается, чтобы потом не мучить нас.
35 PR2
 
18.10.20
11:49
(12) Тот, кто ограничен во времени, должен быть неограничен в деньгах
Ну или самостоятельно укладываться в ограниченное время
36 PR2
 
18.10.20
11:52
(31) Что ты лезешь со своим говнокодом, ТС знаком с циклами
Закон Брукера: Даже маленькая практика стоит большой теории.