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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор всех атрибутов документа, 1С 8.0 
:(
    Опции темы
Scatman
Дата 6.6.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.3.2006

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



Можно ли как нить выбрать список всех реквизитов выбранного документа
Код

 Сз=создатьОбъект("СписокЗначений");
    спр=создатьОбъект("Документ.ПКО");
 сз.ДобавитьЗначение(спр.ДокОснование);//добавляем необходимые реквизиты.
        сз.ДобавитьЗначение(спр.Касса);
        сз.ДобавитьЗначение(спр.КодОперации);
        сз.ДобавитьЗначение(спр.Контрагент);
        сз.ДобавитьЗначение(спр.ФизЛицо);
        сз.ДобавитьЗначение(спр.Валюта);
        сз.ДобавитьЗначение(спр.Курс);
        сз.ДобавитьЗначение(спр.Сумма);
                                          сз.ДобавитьЗначение(спр.СтавкаНДС);
        сз.ДобавитьЗначение(спр.ОблагаетсяНП);
        сз.ДобавитьЗначение(спр.СтавкаНП);
        сз.ДобавитьЗначение(спр.СуммаВзаиморасчетов);
        сз.ДобавитьЗначение(спр.ПринятоОТ);
        сз.ДобавитьЗначение(спр.Основание);
        сз.ДобавитьЗначение(спр.Приложение);
                                                                   .....

Что бы не писать все это безобразие каждый раз при выборе другого документа(не ПКО)
PM MAIL   Вверх
evGenie
Дата 7.6.2007, 11:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 7.6.2007
Где: Челябинск

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



Код

Сз=создатьОбъект("СписокЗначений");
Док=СоздатьОбъект("Документ.ПКО");
Док.НайтиДокумент(...);
КолРекв=Метаданные.Документ("ПКО").РеквизитШапки();
Для к=1 По КолРекв Цикл
    Атр=Док.ПолучитьАтрибут(Метаданные.Документ("ПКО").РеквизитШапки(к).Идентификатор);
        сз.ДобавитьЗначение(Атр);
КонецЦикла;

Аналогично для реквизитов ТЧ
PM ICQ   Вверх
Scatman
Дата 12.6.2007, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.3.2006

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



Скажите а как переписать строки 
Док.ПолучитьАтрибут(Метаданные.Документ("ПКО").РеквизитШапки(к).Идентификатор);
Док.ПолучитьАтрибут(Метаданные.Документ("ПКО").РеквизитТабличнойЧасти(к).Идентификатор);
в 8
там нет такого метода как получитьатрибут()
PM MAIL   Вверх
Granata005
Дата 12.6.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.5.2007

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



 smile  Надо бы форум разбить на подфорумы.... 7.7. и 8 .......
PM   Вверх
Engee
Дата 12.6.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 25.3.2007
Где: Санкт-Петербург

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



В 8-ке все немного по-другому:
Код

Мас = Новый Массив;
Для Каждого Реквизит Из Документы.ПКО.СоздатьДокумент().Метаданные().Реквизиты Цикл
    Мас.Добавить(Реквизит);
КонецЦикла;


В массиве будут содержаться все реквизиты ШАПКИ документа. Если нужны реквизиты табличных частей, то делаешь обход по ним.
Я бы все написал универсально вот так:
Код

ДЗ = Новый ДеревоЗначений;
ДЗ.Колонки.Добавить("Реквизит");

МетаданныеДокумента = Документы.ПКО.СоздатьДокумент().Метаданные();

// берем метаданные шапки
Для Каждого Реквизит Из МетаданныеДокумента.Реквизиты Цикл
    НовыйРеквизит = ДЗ.Строки.Добавить();
    НовыйРеквизит.Реквизит = Реквизит.Имя;
КонецЦикла;

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


Это сообщение отредактировал(а) Engee - 12.6.2007, 15:23
PM MAIL   Вверх
Scatman
Дата 12.6.2007, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.3.2006

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



Спасибо конечно 
но мне нужны не реквизиты а их значения
пока удается получить значения только спомощью 
док.Организация 
и тп
хотелось бы писать универсально

Это сообщение отредактировал(а) Scatman - 12.6.2007, 16:44
PM MAIL   Вверх
stron
Дата 12.6.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Консультант
***


Профиль
Группа: Комодератор
Сообщений: 1654
Регистрация: 17.7.2003
Где: Питер

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



Модератор: не забываем указывать версию системы по которой задаём вопрос


--------------------
подписи нет
PM ICQ   Вверх
Scatman
Дата 13.6.2007, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.3.2006

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



в 8 версии
Как получить все атрибуты универсально
PM MAIL   Вверх
Scatman
Дата 14.6.2007, 04:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.3.2006

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



неужели не кто не знает 8
PM MAIL   Вверх
PKD
Дата 14.6.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 24.1.2007
Где: Ukraine, Zaporozh ie

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



Суть структуры БД 1С8, если я понял правильно, организована на уровне регистров.
И наиболее оптимальным обращением к данным, в данной ситуации, 
является использование встроенного языка SQL для обхода значений.

Типа в обработке:
Цитата

Процедура КнопкаВыполнитьНажатие(Кнопка)
//-----------------------------------------------------------------------------
    Текст = "ВЫБРАТЬ
   |    ПКО.*
   |ИЗ
   |    Документ.ПриходныйКассовыйОрдер КАК ПКО
   |ГДЕ
   |    ПКО.Ссылка = &Ссылка";    
//-----------------------------------------------------------------------------
    Запрос = Новый Запрос(Текст);
    Запрос.УстановитьПараметр("Ссылка", Тек_Документ);
//-----------------------------------------------------------------------------
    ПКО = Запрос.Выполнить();
//-----------------------------------------------------------------------------
    Для Каждого Колонка 
    Из          ПКО.Колонки
    Цикл        Кол_Имя = Колонка.Имя;
//работа с колонками "шапки документа" ........................

//определяем табличные части документа
       Кол_Тип = Строка(Колонка.ТипЗначения);

       Если  Кол_Тип = "Результат запроса"
       Тогда Текст = "ВЫБРАТЬ
        |    ПКО.*
        |ИЗ
        |    Документ.ПриходныйКассовыйОрдер." + Кол_Имя + " КАК ПКО
        |ГДЕ
        |    ПКО.Ссылка = &Ссылка";

       Запрос = Новый Запрос(Текст);
       Запрос.УстановитьПараметр("Ссылка", Тек_Документ);

       Таб_ПКО = Запрос.Выполнить();

       Для Каждого Таб_Колонка 
       Из          Таб_ПКО.Колонки
       Цикл        Таб_Кол = Таб_Колонка.Имя;
//работа с колонками табличной части.........
       КонецЦикла;
       КонецЕсли;
    КонецЦикла;
//-----------------------------------------------------------------------------
КонецПроцедуры


Используя язык запросов Вы работаете не с объектами метаданных, а с их ссылочными структурами.
Можно обращаться как к структуре, в данном случае документа ПКО, так и к самим данным.
Выигрыш в производительности очевиден....

P.S. Прошу прощения за кривой код (писал "на коленках"). 

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

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

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

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

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

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

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

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

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

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


 




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


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

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