|
как реквизиты из строки перевести в нужный тип ? | ☑ | ||
---|---|---|---|---|
0
wlbmJames
27.02.12
✎
12:07
|
Привет народ. Сегодня уже задавал вопрос.
Как создать документ, зная его имя и значения реквизитов ? т.е. у меня есть текстовый файл, в котором написано, например - РеализацияТоваровУслуг, Организация такая-то, контрагент такой-то и т.д. Нужно прочитать эти данные из файла и на их основании создать нужный документ. Документ создал, подсказали как. Теперь нужно как-то реквизиты правильно заполнить. Советовали типа такого : Объект = Документы["РеализацияТоваровУслуг"].СоздатьДокумент(); Объект["Организация"] = "такая-то"; Но Организация и т.д. не строкового типа :) |
|||
1
wlbmJames
27.02.12
✎
12:08
|
Никто не подскажет как половчее нужный тип получить ? %)
|
|||
2
Reset
27.02.12
✎
12:10
|
Поиском твоих строковых значений в соотв. справочниках.
|
|||
3
SUA
27.02.12
✎
12:12
|
найтипонаименованию
или еще как |
|||
4
n koretsky
27.02.12
✎
12:17
|
Объект["Организация"] = ?(ЗначениеЗаполнено(Справочники.Организации.НайтиПоНаименованию(СокрЛП(НазваниеОрганизацииПолученноеИзФайла)), Справочники.Организации.НайтиПоНаименованию(СокрЛП(НазваниеОрганизацииПолученноеИзФайла)), Справочники.Организации.ПустаяСсылка());
//Или проще ДокументОбъект.Организация = Справочники.Организации.НайтиПоНаименованию(НазваниеОрганизацииИзСтрокиФайла); |
|||
5
Wobland
27.02.12
✎
12:17
|
(4) зачем два раза искать? чтоб одна строка была?
|
|||
6
wlbmJames
27.02.12
✎
12:17
|
НайтиПоНаименованию это, конечно хорошо. Но тут есть проблема. Через текстовый файл я переношу документы из друго базы. И не 1 вид документа или не 2, а любой. Поэтому нужно придумать какой-то универсалный механизм, потому что откуда я могу знать, что в случаном документе будет СправочникСсылка..., что ПеречислениеСсылка..., а что ДокументСсылка... и тд %)
|
|||
7
Wobland
27.02.12
✎
12:18
|
(6) предварительно запомни, что у тебя за объект - документ, справочник или ещё что
|
|||
8
n koretsky
27.02.12
✎
12:19
|
(7) ты сам понял, что ты написал?
|
|||
9
salvator
27.02.12
✎
12:20
|
(6) Универсальный обмен данными через XML чем не устраивает?
|
|||
10
Wobland
27.02.12
✎
12:20
|
(8) да
|
|||
11
Reset
27.02.12
✎
12:20
|
(6) А ты точно не изобретаешь сейчас какую-нибудь Конвертацию Данных? :)
|
|||
12
n koretsky
27.02.12
✎
12:21
|
(10) сорри, промазал, писал к шестому сообщению
|
|||
13
palpetrovich
27.02.12
✎
12:21
|
(6) "из друго базы" - если это тоже 1с - то смори (9) и не изобретай велосипед
|
|||
14
pessok
27.02.12
✎
12:24
|
Объект["Организация"] = Справочники.Организации.НайтиПоНаименованию("такая-то");
не спасает? |
|||
15
pessok
27.02.12
✎
12:25
|
не спасает :) используй КД. я уже пытался такое навертеть через COM, после возни лицом в грязи понял, что лучше таки КД :)
|
|||
16
wlbmJames
27.02.12
✎
12:31
|
Я не изобретаю велосипед :)) Меня, можно сказать, принудили его изобретать :) Задание такое. Написаль обработку, которая переносит документ между двумя одинаковыми конфами через текстовый файл )
|
|||
17
palpetrovich
27.02.12
✎
12:31
|
(15) не обязательно, вот у меня односторонний обмен УТ->БП, так я создал реквизит КодУТ в нужных справочниках БП - и по КОМ-у 2 года уже полет нормальный :)
(16) это что, тестовое задание? |
|||
18
wlbmJames
27.02.12
✎
12:32
|
Что-то пипа того %)
|
|||
19
Zolotko
27.02.12
✎
12:34
|
(16) делай через описание типов. Определяешь тип реквизита, потом определяешь как данные у тебя передаются по этому реквизиту: код, наименование, номер, гуид и т.д.; ищешь по значению и подставляешь в документ. все
|
|||
20
Агент Инфостарта
27.02.12
✎
12:36
|
(18) Ищи другую контору. Представляю, что дальше будет.
|
|||
21
lxs
27.02.12
✎
12:36
|
(4) читай СП о том, что возвращает НайтиПоНаименованию. Фигню написал.
|
|||
22
aleks-id
27.02.12
✎
12:37
|
по сути XML тоже текстовый файл. заюзай универсальный обмен и не парь мозг
|
|||
23
palpetrovich
27.02.12
✎
12:38
|
(16) если это тест и только "обработку, которая переносит документ между двумя одинаковыми конфами" - морочь себе голову, считай что справочники у тебя идентичные - стало-быть ищи по-коду и не парься ;)
|
|||
24
lxs
27.02.12
✎
12:38
|
(16) xml - это тот самый обычный текстовый файл. Шли всех нах и используй стандартные методы.
|
|||
25
palpetrovich
27.02.12
✎
12:39
|
* морочь = НЕ морочь :)
|
|||
26
wlbmJames
27.02.12
✎
12:40
|
Ога. Приношу им такой стандартню обработку переноса через XML без палева. Вы чо посоны это я написал!!!!11 :D
|
|||
27
wlbmJames
27.02.12
✎
12:41
|
Как получить строковое имя типа ? %)
|
|||
28
Zolotko
27.02.12
✎
12:42
|
(24) а может они готовятся перейти на неоднородные системы? Задание полезное. Я такое писала - упрощает обмен с базами, которые не могут выгружать данные по правилам обмена
|
|||
29
lxs
27.02.12
✎
12:43
|
(28) какие правила?
ЗаписьXML и ЧтениеXML для идентичных баз никто не отменял. |
|||
30
wlbmJames
27.02.12
✎
12:43
|
если это тест и только "обработку, которая переносит документ между двумя одинаковыми конфами" - морочь себе голову, считай что справочники у тебя идентичные - стало-быть ищи по-коду и не парься ;)
Так и хичу сделать. Для этого надо получить строковое имя типа. %) |
|||
31
salvator
27.02.12
✎
12:44
|
(26) Можешь сам написать, ничего сверхъестественного там нет.
Разбиваешь обработку на 2 логических части - выгрузка в хмл и загрузка из файла. |
|||
32
wlbmJames
27.02.12
✎
12:44
|
*хочу
|
|||
33
Zolotko
27.02.12
✎
12:47
|
(27) ОписаниеТиповРеквизита = МдРеквизитыЗагружаемогоСправочника[РеквизитДокумента.Имя].Тип;
|
|||
34
palpetrovich
27.02.12
✎
12:49
|
(30) если не нигде ошибся, не тестил
ДокМетаданные = Метаданные.Документы[ТекВидДока]; Кво = ДокМетаданные.Реквизиты.Количество()-1; Для К = 0 По Кво Цикл ТекРеквизит = ДокМетаданные.Реквизиты.Получить(К); ТекРеквизитИмя = ТекРеквизит.Имя; Сообщить("Реквизит: " + ТекРеквизитИмя + " Тип: " + ТекРеквизит.Тип); КонецЦикла; Для каждого ТЧДока Из ДокМетаданные.ТабличныеЧасти Цикл Сообщить("Табличная часть: " + ТЧДока); Кво = ДокМетаданные.ТабличныеЧасти[ТЧДока.Имя].Реквизиты.Количество()-1; Для К = 0 По Кво Цикл ТекРеквизит = ДокМетаданные.ТабличныеЧасти[ТЧДока.Имя].Реквизиты.Получить(К); ТекРеквизитИмя = ТекРеквизит.Имя; Сообщить("Реквизит ТЧ: " + ТекРеквизитИмя + " Тип: " + ТекРеквизит.Тип); КонецЦикла; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |