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

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

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

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

"Необходимо использовать метаданные,запрещено использовать функции "ЗначениеВСтрокуВнутр()" ,"Уникальные Идентификатор()" и подобные функции ,выгружающие уник. идентификаторы объектов , запрещается использовать выгрузку и загрузку в XML и JSON"
9 ДенисЧ
 
31.08.20
18:12
(4) Расстреливают за него?
10 ДенисЧ
 
31.08.20
18:12
(8) Ну а вид и тип выгружать можно? И что тогда будешь делать с дублями наименований?
Можно ещё к наименованию код выгружать...
11 d4rkmesa
 
31.08.20
18:18
(0) "Еще, проблема в том, что Типы могут быть из различных справочников, перечислений и т.д., то есть использование НайтиПоНаименованию не подходит. "

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

Например
При выгрузке

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

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


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

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

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

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

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

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