7.7 ИсходнаяТаблица

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Gennady, 11 июл 2008.

  1. TopicStarter Overlay
    Gennady
    Offline

    Gennady

    Регистрация:
    11 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Помогите разобраться.
    Как использовать метод Таб.ИсходнаяТаблица()
    в зависимости от выбора реквизита


    Есть справочник ХХХХХ
    у справочника есть реквизиты:
    реквизит1
    реквизит2
    реквизит3
    реквизит4-(печисление) А,Б,В,С.

    также есть таблицы
    таблица1
    таблица2
    таблица3
    таблица4



    Код:
    Процедура Печать()
    
    Спр=СоздатьОбъект("Справочник.ХХХХХ");
    Спр.ВыбратьЭлементы();
    Таб=СоздатьОбъект("Таблица");
    
    Если Спр.ПолучитьАтрибут(реквизит4(А))=1 Тогда
    Таб.ИсходнаяТаблица("таблица4"); 
    ИначеЕсли Спр.ПолучитьАтрибут(реквизит4(Б))=1 Тогда 
    Таб.ИсходнаяТаблица("таблица3");
    КонецЕсли 
    
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("Строка");                   
    Таб.ВывестиСекцию("Секция");
    Таб.ВывестиСекцию("Секция1");
    Таб.ВывестиСекцию("Секция2");
    Таб.ВывестиСекцию("Подвал");                                  
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,0,0);
    Таб.Показать(""); 
    КонецПроцедуры
    
  2. Tiger
    Offline

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Не пойму в чем проблема.... все правильно написано
  3. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А где вопрос??? Типа догадайся сам?

    Перед тем, как использовать ссылку справочника, необходимо ее спозиционировать на элемент "ПолучитьЭлемент()".
    Потом, по написанию, у тебя должна быть функция "реквизит4". Она такая есть?
    И что такое "А" и "Б". Это как минимум определенные переменные - параметры для функции, которая должна вернуть строку.

    А сам метод "ИсходнаяТаблица()" использован правильно :))
  4. TopicStarter Overlay
    Gennady
    Offline

    Gennady

    Регистрация:
    11 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Поясни пожалуйста, функция "реквизит4" как нужно написать?
    "А","Б" это перечисление , вопрос в том как сделать так чтоб при изменении значения"реквизита4"
    с "А" на "Б" на печать выходила соответствующая таблица.
  5. Tiger
    Offline

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Может быть вот это имелось ввиду?
    Код:
    Если Спр.Реквизит4 = Перечисление.Атрибуты.А Тогда
    Таб.ИсходнаяТаблица("Таблица4");
    ИначеЕсли Спр.Реквизит4 = Перечисление.Атрибуты.Б Тогда
    Таб.ИсходнаяТаблица("Таблица3");
    КонецЕсли;
    
    
  6. TopicStarter Overlay
    Gennady
    Offline

    Gennady

    Регистрация:
    11 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Выдает ошибку
    Ожидается идентификатор
  7. Tiger
    Offline

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Не исключено. Потому как я понятия не имею какие там реально существуют таблицы, реквизиты и перечисления. Внимание было уделено только структуре.
    Только я не понял в какой строке спотыкается то? перед "Таблица4"?
  8. TopicStarter Overlay
    Gennady
    Offline

    Gennady

    Регистрация:
    11 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Заработала,но
    Выводит на печать одну и туже таблицу и ошибок не выдает!

    p.s. Мозг закипает :)
  9. TopicStarter Overlay
    Gennady
    Offline

    Gennady

    Регистрация:
    11 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Код:
    Процедура Печать()
    
    Спр=СоздатьОбъект("Справочник.ХХХХХ");
    Спр.ВыбратьЭлементы();
    Таб=СоздатьОбъект("Таблица");
    
    //Если Спр.ПолучитьАтрибут(реквизит4(А))=1 Тогда
    //  Таб.ИсходнаяТаблица("таблица4"); 
    //ИначеЕсли Спр.ПолучитьАтрибут(реквизит4(Б))=1 Тогда 
    //  Таб.ИсходнаяТаблица("таблица3");
    //КонецЕсли; 
    
    Если Спр.Реквизит4 = Перечисление.Атрибуты.А Тогда
    Таб.ИсходнаяТаблица("Таблица4");
    ИначеЕсли Спр.Реквизит4 = Перечисление.Атрибуты.Б Тогда
    Таб.ИсходнаяТаблица("Таблица3");
    КонецЕсли;
    
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("Строка");                   
    Таб.ВывестиСекцию("Секция");
    Таб.ВывестиСекцию("Секция1");
    Таб.ВывестиСекцию("Секция2");
    Таб.ВывестиСекцию("Подвал");                                  
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,0,0);
    Таб.Показать(""); 
    КонецПроцедуры
    

    Справочник ХХХХХ

    Реквизиты:
    реквизит1
    реквизит2
    реквизит3
    реквизит4 -перечисление

    Перечисление -Атрибуты
    -значение-А
    -значение-Б
  10. TopicStarter Overlay
    Gennady
    Offline

    Gennady

    Регистрация:
    11 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Всё нормально заработало!
    Большое Всем спасибо !!!
  11. TopicStarter Overlay
    Gennady
    Offline

    Gennady

    Регистрация:
    11 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Не сочти за наглость, напиши пожалуйста фукцию "реквизит4" ,поделись знаниями,буду
    очень тебе благодарен.
  12. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    :)))))
    Я бы поделился. Да не знаю что тебе надо.

    Про функцию я написал потому, что синтаксис у тебя был как с использованием функции. Но это скорее(!) всего ошибка.
    Странно. Конечно это надо по месту смотреть. Но типовая ошибка заключается в том, что у тебя нет перебора элементов.
    Отсюда вывод:
    - либо в справочнике только 1 элемент (тогда надо использовать константы, или если подчиненный [этого, кстати, тоже не видно] - то реквизит справочника)
    - либо нужно делать перебор элементов, и каждый из них обрабатывать.

    Чтобы исключить вопросы, типа "расскажи как", сразу отвечу "не знаю". Для этого надо видеть всю ИБ и поставленную задачу (а это уже стоит денег).

Поделиться этой страницей