8.х Как обратиться к элементам табличной части внешней обработки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Семен Сосницкий, 21 июл 2014.

  1. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, уважаемые форумчане. Я совсем недавно начал изучать 1с и надеюсь на вашу помощь. Дело в том, что я перепробовал уже кучу способов, описанных в интернете обращения к элементам табличной части внешней обработки[​IMG] . И ни один из них у меня так и не заработал. Я уже совсем отчаялся. В общем вот, у меня есть табличная часть (на картинке слева) - "Средства измерения". Все реквизиты данной табличной части имеют тип данных "строка", то есть ни на что не ссылаются. Собственно как мне получить эти три переменные? Чтобы в переменная1 хранилось бы "рулетка измерительная", в переменная2 - "б/н", а в переменная3 - "07.2014", чтобы я дальше мог вывести эти переменные в макет? Подскажите пожалуйста.
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Это делается перебором строк табличной части.
    Код:
    Для каждого ТекСтрока Из ВашаТаблЧасть Цикл
    ТекСтрока.ВашаПеременная
    КонецЦикла;
  3. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    То есть в моем конкретном случае будет так:
    Код:
    Для каждого НаименованиеСредства Из СредстваИзмерения Цикл
         НаименованиеСредства.переменная1
      КонецЦикла;
    ?
  4. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Ну наверное. Отладчиком если не умеете пользоваться, то научитесь.
    --- Объединение сообщений, 21 июл 2014 ---
    Только переменные надо присваивать.
    --- Объединение сообщений, 21 июл 2014 ---
    Такая конструкция НаименованиеСредства.переменная1 даже не сохранится.
    --- Объединение сообщений, 21 июл 2014 ---
    Код:
    переменная1 = НаименованиеСредства.переменная1;
  5. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Вообще ничего не понимаю... Теперь среда ругается:
    {ВнешняяОбработка.ИзмерениеОбъема(61,2)}: Неопознанный оператор
    <<?>>КонецЦикла;
  6. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Прочтите мое предыдущее сообщение.
  7. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Компилируется без ошибок, но при запуске выдает ошибку: поле объекта не обнаружено (переменная1)
  8. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Ну Вы логически то подумайте. Раз Вы перебираете свою табличную часть под именем "Средства измерения" то значит в ней должны быть такие колонки как "Наименование средства", "Заводской номер" и "Дата проверки". Смекаете?
  9. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Дошло!


    Для каждого НаименованиеСредства Из СредстваИзмерения
    Цикл
    переменная1 = НаименованиеСредства.НаименованиеСредства;
    переменная2 = НаименованиеСредства.ЗаводскойНомер;
    переменная3 = НаименованиеСредства.ДатаПоверки;
    КонецЦикла;

    Спасибо Вам большое, nbIpKuH_BaH9I!
    Но если честно, это выглядит не совсем логично, поэтому я так и мучался долго. Я думал нужно искать подход с точки зрения иерархии, мол сначала указываем имя табличной части, затем указываем имя собственно колонки, что-то вроде "переменная1 = СредстваИзмерения.НаименованиеСредства". Мне кажется так было бы логичнее :)
    Особенно смущает конструкция "переменная1 = НаименованиеСредства.НаименованиеСредства;" - тавтология какая-то
    Спасибо вам большое еще раз!
  10. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Поверьте, все логично до предела. Значение хранится не в колонке, а в ячейке. Табличная часть может содержать до 99999 записей, а не одну как у Вас. Или строки по-другому. Как Вы найдете значение в 49746 строке. Найдете не вопрос. Можно обращаться по индексу еще. Т.е. в Вашем случае будет так
    Код:
    НаименованиеСредства = СредстваИзмерения[0].НаименованиеСредства;
    и т.д.
    Никакой тавтологии. Вы берете значение из табличной части и что Вы будете с ним делать?! Поэтому Вы просто присваиваете это значение переменной.
    Не за что!!!
    vipools нравится это.
  11. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну обзовите каждую строку табчасти по другому
    Код:
    Для каждого стр Из СредстваИзмерения
    Цикл
    переменная1 = стр .НаименованиеСредства;
    переменная2 = стр .ЗаводскойНомер;
    переменная3 = стр .ДатаПоверки;
    КонецЦикла;
  12. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Смотрите синтасис помощник, кроме указанных выше способов, у табличных частей есть метод "Загрузить()", с помощью которого в ТЧ можно поместить таблицу значений, полученную каким либо способом (например в результате запроса)
  13. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Не понимаю причем тут Загрузить() вообще. Автор четко написал, что ему необходимо обратиться к значениям в табличной части.
  14. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Подскажите еще пожалуйста. Сейчас возникла такая проблема: в мою обработку в табличную часть вводятся некие транспортные пакеты, которые берутся из Справочника "Транспортные пакеты". Мне нужно вытащить некоторые значения из выбранных в моей обработке пакетов. Но вот незадача: в справочнике "транспортные пакеты" вообще отсутствуют реквизиты "код" и "наименование", которые являются уникальными, и не совсем понятно, тогда как они заполняются, но самое главное - как мне обратиться к пакетам, которые вводятся в моей обработке, если у них отсутствуют эти реквизиты?[​IMG]

    Точнее понятно, что код заполняется автоматически, но мне же нужно по идее обращаться по наименованию?
  15. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Эти реквизиты не могут отсутствовать. Значит Вы их просто не видите. И вообще причем тут эти реквизиты?! У Вас есть пакет в вашей табличной части. А значит и есть все его значения, ну если конечно он по ссылке передается.
  16. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Да, он передается по ссылке, в моей обработке это реквизит, ссылающийся на "Справочник.ТранспортныеПакеты". Но в справочнике "Транспортные пакеты" действительно нет этих реквизитов. И не подскажете, как можно вытащить значения пакета? Я понимаю, что завалил глупыми вопросами, но я еще совсем начинающий.
    [​IMG]
  17. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Костя, судя по скрину именно ссылка на "Транспортный пакет" идет.

    2ТС: Код и наименование - это стандартные реквизиты справочника. Где вы их не находите?
  18. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Прям так через точку и обращайтесь. Сначала получаете ваш пакет в табличной части, а потом просто через "." к его реквизитам. Что-то типа этого
    Код:
    Пакеты[0].Пакет.Порода
  19. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    обращайтесь к ним как к обычным реквизитам
  20. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Я вижу. Ну мало ли :)

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