|   |   | 
| 
 | как реквизиты из строки перевести в нужный тип ? | ☑ | ||
|---|---|---|---|---|
| 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 По Кво Цикл ТекРеквизит = ДокМетаданные.ТабличныеЧасти[ТЧДока.Имя].Реквизиты.Получить(К); ТекРеквизитИмя = ТекРеквизит.Имя; Сообщить("Реквизит ТЧ: " + ТекРеквизитИмя + " Тип: " + ТекРеквизит.Тип); КонецЦикла; КонецЦикла; | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |