Модераторы: stron
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реквизит Табличной Части, Реквизит Табличной Части 
:(
    Опции темы
Guitar_Player
Дата 21.2.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



Я только учусь 1С.Раньше писал вот так для выгрузки реквизита табличной части документа в файл.
Человек который проверял задание сказал отказаться от использования индекса атрибутов(если хотим загрузить в идентичную базу, с той лишь разницей, что в метаданных поменяли местами реквизиты, счетчик собъется и загрузка будет не верна). 

Код

//    Если Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти()>0 Тогда
       // ТЗ    = СоздатьОбъект("ТаблицаЗначений");
       // ДокументДляВыгрузки.ВыгрузитьТабличнуюЧасть(ТЗ);
        //СЗ.ДобавитьЗначение(ТЗ    ,"ТЧ");
        
//    КонецЕсли;
    ЗначениеВФайл(ПутьДляВыгрузки,СЗ);


А как значения табличной части выгружать не через "ВыгрузитьТабличнуюЧасть(ТЗ)", а через обход  метаданных?
PM MAIL WWW ICQ   Вверх
Itsys
Дата 21.2.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Код

ДокументДляВыгрузки.ВыбатьСтроки();
Пока ДокументДляВыгрузки.ПолучитьСтроку() = 1 Цикл
   Для К = 1 По Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти() Цикл
      ИдентификаторКолонки = Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти(К).Идентификатор;
      ЗнКолонки = ДокументДляВыгрузки.ПолучитьАтрибут(ИдентификаторКолонки,  ДокументДляВыгрузки.НомерСтроки)
      .... 
      Дальше делай с ним чего хочешь.
   КонецЦикла;
КонецЦикла;

PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 22.2.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



Код

ЗнКолонки = ДокументДляВыгрузки.ПолучитьАтрибут(ИдентификаторКолонки,  ДокументДляВыгрузки.НомерСтроки)


Можешь объяснить эту строку? У функции ПолучитьАтрибут же 1 параметр. Что за второй?

Это сообщение отредактировал(а) Guitar_Player - 22.2.2008, 19:29
PM MAIL WWW ICQ   Вверх
Itsys
Дата 22.2.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Ты прав, это я с чем-то другим перепутал
ДокументДляВыгрузки.ПолучитьАтрибут(ИдентификаторКолонки)
PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 23.2.2008, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



А что такое тип реквизита? Мне написали по каждому реквизиту выгружать идентификатор, название, тип, а восстанавливать по имени, типу и ссылочной информации или значению для примитивного типа реквизита.
PM MAIL WWW ICQ   Вверх
Itsys
Дата 23.2.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



ТипРеквизита = Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти(К).Тип

Примитивный тип - это "строка", "число" и "дата" (наверное это имелось в виду)
PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 23.2.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



В задании написанно вот так:
По каждому реквизиты выгражать идентификатор(код либо наименование по которому найти значение в базе ), тип и название реквизита.
При загрузке реализовать правильное восстановление данных по имени реквизита, типу и ссылочной информации или значения(в случае примитивного типа реквизита).
==================
Т.е. Тип и название тоже обязательно сохранять в файл, а потом при загрузки присваивать?
В Файл мы сохраняем идентификатор, значение, тип, название. Так? 
PM MAIL WWW ICQ   Вверх
Itsys
Дата 23.2.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Идентификатор и  имя реквизита - это одно и тоже  smile 

Я помнб раньше, до xml была универсальная обработка для выгрузки и загрузки документов и справочников из текстового файла... в нем каждый выгружаемый объект был представлен следующим образом:
Код

Справочник_Номенклатура 1:"Наименование(Строка)#""РыбаЭ""","?Код(Число)#1","СтавкаНДС()#Справочник_СтавкиНДС 1"

и т.д. - так вот первое - это идентификатор реквизита - далее в скобках его тип, в том случае, если реквизит простой - строка, число, дата после # - значение либо ссылка на ранее описанный объект.

Знак вопроса перед реквизитом - означал, что по этому реквизиту необходимо произвести поиск, и, в случае отсутсвия соответствующего объекта (документа либо справочника) - необходимо создать новый. В том случае, если есть несколько знаков ? проверяется совпадение сразу нескольких условий.
PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 23.2.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



Ну я впринципе разобрался че к чему. Спасибо огромное. 
Можно еще вопросик:
Как из типа строка получить тип Справочник.Сотрудник. 
Т.е. как преобразовать к типу?
PM MAIL WWW ICQ   Вверх
Itsys
Дата 23.2.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Никак - прямого преобразования нет, но если строка - это ФИО сотрудника, то воспользоваться методом НайтиПоНаименованию
PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 24.2.2008, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



А как в общем случае. Т.е. я загружаю многострочную часть документа(тип, идентификатор,значение) в виде строк. И как мне эти атрибуты задать. 
PM MAIL WWW ICQ   Вверх
Itsys
Дата 24.2.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Общих случаев быть не может.

При загрузке ты должен написать обработчик, который разбирает строку по пунктам - допустим находит первую Строку:
Код

Справочник_Сотрудники 1:"?Наименование(Строка)#Петров"


Соответсвенно, в справочнике "Сторудники" ищется элемент с наименованием "Петров" - далее, если он не найден - создается новый. После ссылка на него кидается в какой-нибудь Список значений: Спис.Установить("Справочник_Сотрудники 1", Спр.ТекущийЭлемент())

Долее потихоньку ты подходишь к строке с данными о табличной части документа, допустим у тебя в выгружаемом документе Поля следуют следующим образом: Сотрудник-Оклад-Коэффициент, а в загружаемой - Сотрудник-Коэф-Оклад

Соответсвенно есть строка выгрузки:
Код

СтрокаДокумента:"Сотрудник()#Справочник_Сотрудники 1","Оклад(Число)#2000.00","Коэффициент(Число)#1.2"


Ты ее начинаешь разбирать - первый реквизит - Сотрудник - производишь поиск по реквизитам документа в загружаемой базе - нахоишь такой реквизит - проверяешь, что тип соответсвует - если соответвует, то в ячейку табличной части берешь значение из созданного товой Списка значений - Спис.Получить("Справочник_Сотрудники 1"), идем дальше - реквизит оклад - опять ище опять находим - но не на свем месте - проверяем тип - если все ок - ставим, следующий реквизит - Коэффициент - такого в загружаемой базе нет - а дальше - как договоритесь - либо это поле остается пустым, либо определяем, что все поля кроме Коэф уже загружены - т.е. одно значение надо загрузить - и одно поле пустое - скорее всего это оно и устанвливаем туда занчение Коэффициента.

Уфф ВСЕ. smile 
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "1C: Предприятие, SAP, ERP и учётные системы"
stron

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...)

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, stron, Pegas.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.