Имя: Пароль:
1C
1С v8
Загрузка документа и txt
0 ПростоМишаня
 
18.09.19
21:05
Делаю внешнюю обработку которая на входе получает файл .txt а на выходе должен получиться документ со значениями из файла. Первая строка файла это тип документа "РеализацияТоваровИУслуг". Последующие строчки файла это реквизиты этого типа документа.

&НаКлиенте
Процедура ЗагрузитьОбъект(Команда)
    
    ЗагрузитьОбъектНаСервере();
        
КонецПроцедуры


&НаСервере
Процедура ЗагрузитьОбъектНаСервере()
    
    ТекстовыйФайл = Новый ТекстовыйДокумент;
    ТекстовыйФайл.Прочитать("C:\1с\Primer.txt");
    
    // Определяем какой тип документа
    Имясправочника = ТекстовыйФайл.ПолучитьСтроку(1);
    //Будет мешаться в дальйшем при чтении реквизитов
    Текстовыйфайл.УдалитьСтроку(1);
    
    //создаем документ
    Док = Документы.Имясправочника.СоздатьДокумент();
    //Построчно переносим информацию из файла в новый документ
    Для каждого Реквизит Из Док.Метаданные().Реквизиты Цикл        
        Док[Реквизит.Имя] = Текстовыйфайл.ПолучитьСтроку(Реквизит);        
    КонецЦикла;
    
КонецПроцедуры

В 1С я полный ламер, сильно не ругайти, подскажите что не так я делаю. Почему код не работает?
1 ДенисЧ
 
18.09.19
21:20
А кто сказал, что он не работает? Он создаёт документ...
Просто не записывает его...
2 ПростоМишаня
 
18.09.19
21:25
Конкретно в таком виде выдает ошибку Поле объекта не обнаружено (Имясправочника). Могли бы пожалуйста посмотреть код и сказать в чем моя ошибка, скорее всего это синтаксическая ошибка.
3 MakaMaka
 
18.09.19
21:53
Вот за это:
Док = Документы.Имясправочника.СоздатьДокумент();

Тебе надо по рукам линейкой ребром, ногой в печень и с клавы в голову прописать. Потом добить монитором!

У тебя нет в метаданных документа такого, как ты создать хочешь
4 ПростоМишаня
 
18.09.19
21:57
Я хочу создать, просто заранее не известно к какому типу документов мы будем обрашаться, но первая строка файла должна нам это сообщить.
То есть вопрос такой!!
Как из типа Строка получить тип СсылкаДокумент?
5 MakaMaka
 
18.09.19
21:59
Документы[Имясправочника]СоздатьДокумент() ногой тебе в яйцо и с кулака в печень
6 MakaMaka
 
18.09.19
21:59
точку поставь там еще двоечник. ногой мне в печень
7 Franchiser
 
гуру
18.09.19
22:02
Документы[ИмяСправочника].Создатьдокумент()
8 MakaMaka
 
18.09.19
22:03
(7) Так точно, ногой в печень ему.
9 mikecool
 
18.09.19
22:04
а еще всем ногой в печень - откуда на сервере возьмется файл для загрузки?
10 Franchiser
 
гуру
18.09.19
22:05
(9) пусть положит
11 ПростоМишаня
 
18.09.19
22:06
Спасибо, теперь вопрос номер два "несоответствие типов (параметр номер '1')"

Вот в этом месте кода

Для каждого Реквизит Из Док.Метаданные().Реквизиты Цикл        
        Док[Реквизит.Имя] = Текстовыйфайл.ПолучитьСтроку(Реквизит);        
    КонецЦикла;

P.S. Если бы меня всего лишь били в печень за каждый ответ на мой вопрос, я был бы самым умным человеком)
12 mikecool
 
18.09.19
22:07
Текстовыйфайл.ПолучитьСтроку(Реквизит)
вот здесь неверно
13 ПростоМишаня
 
18.09.19
22:11
А как тут поступить? Сделать счетчик какой-то внутри цикла или как обратиться по другому к строкам записанным в файле?
14 MakaMaka
 
18.09.19
22:13
(9) Сначала сынок должен научиться обращаться к разным документам. Потом мы ему через тычки и зуботычины будем пояснять за клиентсерверную архитектуру, что то он написал &НаСервере еще не дает гарантии УФ на 100%. Он мог просто нахвататься верхов в ютюбе ногой ему под задницу
15 MakaMaka
 
18.09.19
22:14
Док[Реквизит.Имя] ? ЧЭЗД? Расшифровать?
ЧТО ЭТО ЗА ДЕРЬМО?
16 MakaMaka
 
18.09.19
22:15
Зачем ты реквизитам разных типов присваешь значения строка? что у тебя в голове парень? ты здоров?
17 MakaMaka
 
18.09.19
22:17
Что ты хочешь нам сказать? Что ты самый умный? это не так, ты это и сам знаешь.

Для каждого Реквизит Из Док.Метаданные().Реквизиты Цикл        
        Док[Реквизит.Имя] = Текстовыйфайл.ПолучитьСтроку(Реквизит);        
    КонецЦикла;

Зачем ты это породил? Кто ты? с какой планеты? Ты точно человек? ориентации нормальной?
Вижу что нет. К сожалению.
18 mistеr
 
18.09.19
22:30
(16) (17) Ты сам-то поостынь. Что с тобой, девушка бросила? Личные проблемы не стоит выплескивать на окружающих.
19 ПростоМишаня
 
18.09.19
22:35
Я же говорю что второй день занимаюсь программированием на 1С и прошу помощи, подскажите как синтаксически грамотно сделать эту часть кода:
Нужно приравнять значения данных из файла значениям реквизитов нового документа.
Заранее извиняюсь и спасибо.
20 Kashey
 
18.09.19
22:42
(19) Разберись для начала с тем, что передаётся в метод ПолучитьСтроку() и что он возвращает. Синтакс-помощник почитай что-ли.
21 ПростоМишаня
 
18.09.19
22:43
Мне нужно получать строки по порядку сверху вниз все подряд
22 MakaMaka
 
18.09.19
22:45
(18) Это хорошо, когда мужчине есть что сказать мужчине. Я отвечу: с девушкой все ок. Закаливаю парня в троллическом стиле мисты. Тут иначе не выжить. Одни умники, ногой им в печень. )))))

(19) Парень. Тут на форуме одни троли, кодить из них умеют 10-15 человек. Остальные притворяются.

Смотри, если у тебя есть организация то твой код:

Документ.Организация = "Рога и копыта"

Не пройдет.
ты должен будешь написать минимум:

Документ.Организация = Справочники.Организации.НайтиПонаименованию("Рога и копыта")
тем самым получив ссылку на элемент справочника, и в реквизит документа подставишь найденную ссылку ногой тебе в печень ))))))

А вообще ты этот файл где взял? Почему грузишь TXT? Обычно грузят табличные документы типа XLSX и ему подобные? Ты давай колись почему текстовый документ в документ грузишь ?
23 Сияющий в темноте
 
18.09.19
22:48
так в цикле счетчик строк,и это,метаданные тоже можно пл счетчику получать.

и,как реквизиты в файл записывались?
24 ПростоМишаня
 
18.09.19
22:50
У меня задание такое в учебных целях. Задача называется перегрузка документа. Во внешней обработке осуществляется выгрузка в TXT файл и загрузка из него же. Причем выгрузка должна быть ИСЧЕРПЫВАЮЩЕЙ вот я не уверен что моя выгрузка достаточно исчерпывающая, но это сейчас не первостепеная задача.
25 MakaMaka
 
18.09.19
22:53
Выложи сюда свой ТХТ файл, прям скопируй сюда этого монстрика своего. яви миру свою мощь!
26 ПростоМишаня
 
18.09.19
22:59
РеализацияТоваровУслуг
Товары
Конфетпром ООО
Основной склад

Нет

Кафе Сказка
Основной договор
Автоматически

руб.
1
1
Да
Нет
62.01
62.02




Счет покупателю КП00-000010 от 08.02.2016 12:00:01



40702810000000000007, ПАО СБЕРБАНК
34 000
<Не указан>

Нет
Абрамов Геннадий Сергеевич
Ларионова Светлана Викторовна





01.01.0001 0:00:00


Товарная накладная
Нет









Нет


Нет
Нет
27 ПростоМишаня
 
18.09.19
23:00
Я специально убрал названия реквизитов чтобы не мучиться с разделителями.
28 ПростоМишаня
 
18.09.19
23:02
РеализацияТоваровУслуг
ВидОперации = Товары
Организация = Конфетпром ООО
Склад = Основной склад
ПодразделениеОрганизации =
ДеятельностьНаПатенте = Нет
Патент =
Контрагент = Кафе Сказка
ДоговорКонтрагента = Основной договор
СпособЗачетаАвансов = Автоматически
ТипЦен =
ВалютаДокумента = руб.
КурсВзаиморасчетов = 1
КратностьВзаиморасчетов = 1
СуммаВключаетНДС = Да
УдалитьУчитыватьНДС = Нет
СчетУчетаРасчетовСКонтрагентом = 62.01
СчетУчетаРасчетовПоАвансам = 62.02
СчетУчетаРасчетовПоТаре =
УдалитьСчетУчетаДоходовПоТаре =
УдалитьСчетУчетаРасходовПоТаре =
УдалитьСтатьяДоходовИРасходовПоТаре =
СчетНаОплатуПокупателю = Счет покупателю КП00-000010 от 08.02.2016 12:00:01
Грузоотправитель =
Грузополучатель =
АдресДоставки =
БанковскийСчетОрганизации = 40702810000000000007, ПАО СБЕРБАНК
СуммаДокумента = 34 000
Ответственный = <Не указан>
Комментарий =
РучнаяКорректировка = Нет
Руководитель = Абрамов Геннадий Сергеевич
ГлавныйБухгалтер = Ларионова Светлана Викторовна
ОтпускПроизвел =
УдалитьЗаРуководителяПоПриказу =
УдалитьЗаГлавногоБухгалтераПоПриказу =
ЗаЗаказчикаНаОсновании =
ДоверенностьНомер =
ДоверенностьДата = 01.01.0001 0:00:00
ДоверенностьВыдана =
ДоверенностьЧерезКого =
ВидЭлектронногоДокумента = Товарная накладная
ДокументБезНДС = Нет
ЗаРуководителяНаОсновании =
ЗаГлавногоБухгалтераНаОсновании =
Перевозчик =
МаркаАвтомобиля =
РегистрационныйЗнакАвтомобиля =
Водитель =
ВодительскоеУдостоверение =
КраткоеНаименованиеГруза =
СопроводительныеДокументы =
ДеятельностьНаТорговомСборе = Нет
ОтветственныйЗаОформление =
СведенияОТранспортировкеИГрузе =
ПеревозкаАвтотранспортом = Нет
ЕстьМаркируемаяПродукцияГИСМ = Нет
29 ПростоМишаня
 
18.09.19
23:02
А так вообще могу и так
30 Сияющий в темноте
 
18.09.19
23:14
короче,забудь про txt и учи сразу html.
если у тебя хоть в одном реквизите попадется перевод строки,то вся твоя выгрузка-пушистому домашнему животному под хвост.

в файл нужно не только наименования реквизитов писать,но и их тип и самому приводить этот тип в строку.
31 MakaMaka
 
18.09.19
23:24
Мой тебе совет, смотри как твое чудо говнокодится:
Ты узнать что такое рекурсия, потом что такое xml;
Потом ты выгружаешь в xml тот кал, что ты выложил;
Потом ты грузишь его обратно в базу. Но это ты быстро не сделаешь. Поэтому бедная твоя печень )))))) ногой тебе в нее.
32 MakaMaka
 
18.09.19
23:26
33 MakaMaka
 
18.09.19
23:27
34 MakaMaka
 
18.09.19
23:28
(30) это вообще не та опера. Ты ему еще предложи через библиотеку на С++ распарсить файл.
35 ПростоМишаня
 
18.09.19
23:54
По условию задачи TXT) я бы с удовольствием использовал xml)
36 MakaMaka
 
19.09.19
00:00
Тогда сделай все реквизиты в документе текстовые и заполняй через попытку. И да, сделай строки неограниченной длины, пусть прикол оценят.
37 catena
 
19.09.19
05:34
(26)А если какой-то из реквизитов будет составного типа?
А как ты определяешь, в каком реквизите справочника нужно искать "40702810000000000007"?
А почему ты уверен, что порядок реквизитов в файле и в твоей выборке будет одинаковым?
38 hhhh
 
19.09.19
05:57
(37) Он же только что выгрузил.конечно у него порядок будет одинаковый.это ведь тест.
39 catena
 
19.09.19
06:03
(38)Это тестовое задание, не факт, смотря как принимать будут. Но при наличии слов "исчерпывающая выгрузка/загрузка", я бы придралась к отсутствию реквизитов и типов.
40 тарам пам пам
 
19.09.19
08:27
(39) ну тут не только типы - ссылки-то тоже надо в виде GUIDов выгружать, а не в виде текстового представления.
41 catena
 
19.09.19
08:37
(40)Ну, это смотря в какую базу грузить будут. Если просто в идентичную, то гуид мало поможет.