Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выгрузка/загрузка данных из документа 1с в txt файл

Выгрузка/загрузка данных из документа 1с в txt файл
Я
   Pyryrym
 
31.08.20 - 17:57
У меня есть  обработка, которая берет реквизиты документа и сохраняет их в txt файл. например вот так:

Номенклатура|Яблоки
Цена|10000

откуда получаю

После чего мне нужно загрузить эти данные обратно. И если дело касается реквизитов с типом Строка, Число и т.п., о никаких проблем нет, но с типом СправочникСсылка, например, значения 1с уже не может вставить. Есть ли какой нибудь способ получить, например, ссылку справочника, имея только имя? Еще, проблема в том, что Типы могут быть из различных справочников, перечислений и т.д., то есть использование НайтиПоНаименованию не подходит. Использовать значениевстрокувнутр нельзя
   ДенисЧ
 
1 - 31.08.20 - 17:58
Ну так выгружай правильно... С видом справочника и гуидом...
   Йохохо
 
2 - 31.08.20 - 18:01
бывает крыжик, что код уникален
   Pyryrym
 
3 - 31.08.20 - 18:04
(2) Я не совсем понимаю смысл слова крыжик
   Pyryrym
 
4 - 31.08.20 - 18:04
(1) GUID нельзя использовать
   H A D G E H O G s
 
5 - 31.08.20 - 18:07
(4) почему?
   Глупый ответ
 
6 - 31.08.20 - 18:08
(4) заведи регистр и в него пиши, ссылка, строка(наименование).
   Глупый ответ
 
7 - 31.08.20 - 18:08
(5) религия запрещает.
   Pyryrym
 
8 - 31.08.20 - 18:11
(5) Задание такое
"Необходимо использовать метаданные,запрещено использовать функции "ЗначениеВСтрокуВнутр()" ,"Уникальные Идентификатор()" и подобные функции ,выгружающие уник. идентификаторы объектов , запрещается использовать выгрузку и загрузку в XML и JSON"
   ДенисЧ
 
9 - 31.08.20 - 18:12
(4) Расстреливают за него?
   ДенисЧ
 
10 - 31.08.20 - 18:12
(8) Ну а вид и тип выгружать можно? И что тогда будешь делать с дублями наименований?
Можно ещё к наименованию код выгружать...
   d4rkmesa
 
11 - 31.08.20 - 18:18
(0) "Еще, проблема в том, что Типы могут быть из различных справочников, перечислений и т.д., то есть использование НайтиПоНаименованию не подходит. "

Не совсем понял, почему тогда НайтиПоНаименованию не подходит.
   Йохохо
 
12 - 31.08.20 - 18:19
(3) галка контролировать уникальность
   Йохохо
 
13 - 31.08.20 - 18:20
(8) наверняка эта конфа наследована от других заданий и достаточно ее открыть
   Pyryrym
 
14 - 31.08.20 - 18:34
(11) Вообще подходит, просто я не до конца понимаю, можно ли ее использовать, не перебирая все справочники?

Например
При выгрузке
    Множество = ТипЗнч(Документ[ИмяРеквизита]) (СправочникСсылка.имяСправочника)

При загрузке 
    
    НовыйДокумент[ИмяРеквизита] = Множество.НайтиПоНаименованию."НаименованиеРеквизита".


Можно ли так сделать, или, как мне изначально представлялось, нужно будет обходить все справочники, смотреть, есть ли совпадения названий, и потом уже искать по наименованию
   dka80
 
15 - 31.08.20 - 18:42
Это задание тут раз десять уже было. Воспользуйся поиском
   Fish
 
16 - 31.08.20 - 18:49
(14) Зачем перебирать все справочники? В (0) у тебя есть имя реквизита. По нему ты можешь легко получить тип этого реквизита и искать уже по наименованию в нужном объекте метаданных.
   Fish
 
17 - 31.08.20 - 18:50
+(16) Вот если там будет составной тип, тогда немного сложнее.
   Pyryrym
 
18 - 31.08.20 - 18:55
(17) я не понял, как получить по реквизиту его тип
   RomanYS
 
19 - 31.08.20 - 18:57
(18) из метаданных
   Pyryrym
 
20 - 31.08.20 - 19:01
А можно, пожалуйста, кодом, я по всякому попробовал, не получается
   Pyryrym
 
21 - 31.08.20 - 19:32
Для Каждого Реквизит Из Документ.Метаданные().Реквизиты Цикл
    ТипРеквизита = Реквизит.Тип;
КонецЦикла;

Тут тип у меня ПеречислениеСсылка.Название, однако присваивается СинонимНазвания
   RomanYS
 
22 - 31.08.20 - 19:40
(21) почитай про описание типов и чем оно отличается от типа.

ОписаниеТипаРеквизита = Документ.Метаданные().Реквизиты[ИмяРеквизита].Тип;
ТипРеквизита = ОписаниеТипаРеквизита.Типы()[0]//только для простого(не составного) типа


далее по типу тебе придётся нужного менеджера объекта получить
   Pyryrym
 
23 - 31.08.20 - 19:42
(22) Спасибо большое, даже не слышал про описание типов
   Pyryrym
 
24 - 01.09.20 - 14:56
(22) С типами я разобрался, не понимаю, зачем менеджер объекта
   RomanYS
 
25 - 01.09.20 - 15:29
(24)  
МенеджерОбъекта.НайтиПоНаименованию(...)
или
МенеджерОбъекта.НайтиПоКоду(...).

можно конечно запросом искать, но всё равно по типу нужно будет имя таблицы получить
   Shecurok
 
26 - 01.09.20 - 15:37
(24) привет. есть возможность отправить обрбаотку на почту? shecurok123@gmail.com
   МихаилМ
 
27 - 01.09.20 - 15:48
   Pyryrym
 
28 - 01.09.20 - 16:38
(25) не подскажешь, как можно получить менеджер объекта. Плюс, у меня у реквизита где тип указан СправочникСсылка.Название, отладчик говорит, что значение - синоним справочника, это так и должно быть:
   Shecurok
 
29 - 01.09.20 - 16:42
(28) очень прошу, скинь обработку на почту. необходимо переместить реквизит типа строка из одной базы в другую. Судя по описанию твоя подойдет. Если бы я мог помочь в решении твоей проблемы, то естественно помог бы.
   Shecurok
 
30 - 01.09.20 - 16:46
могу в обмен (ну мало ли на будущее пригодится) скинуть обработку по установке предопределнных элементов (на infostart 2sm стоит)
 
 Рекламное место пустует
   rudnitskij
 
31 - 01.09.20 - 18:55
(18) "я не понял, как получить по реквизиту его тип" - зачем он вам нужен? Вам нужен тип значения, который в нем записан - для записи в файл. Он точно не будет составным
   Pyryrym
 
32 - 01.09.20 - 20:34
(31) то есть, тип значения реквизита и тип реквизита разные вещи?
   RomanYS
 
33 - 01.09.20 - 21:21
(32) Это ты на (22)(23) должен был осознать: в метаданных описание типов(которое в общем случае может быть составное) а у значения совершенно конкретный тип.
   Pyryrym
 
34 - 02.09.20 - 14:04
(33) У меня еще один вопрос возник - есть ли в синтаксисе языка именно такая конструкция - МенеджерОбъекта.НайтиПоНаименованию(...), То есть обращаться к менеджеру через переменную, или только

Если тип = перечисление, то
Перечисление.НайтиПоИменованию


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