Обращение к документу из кода

Тема в разделе "1C и всё что с ней связано", создана пользователем 9AAAA, 29 июн 2011.

  1. 9AAAA

    9AAAA Гость

    Приветствую вас
    Вот например в коде
    Код (Text):
     Докум. Фирма. ЮрЛицо.ЮрАдрес
    Здесь все понятно, обращаемся к справочнику Фирма,далее там находится реквизит ЮрЛицо, потом обращаемся к справочнику ЮрЛицо, и там есть реквизит ЮрАдрес. Все просто. А вот как вытаскивать данные не из справочника, а из документа
    Я пробовал вот так:
    Код (Text):
     Док.Реализация.Телефон
     
  2. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Изучай матчасть по адресу СоздатьОбъект :
    Док = СоздатьОбъект("Документ.Реализация");
     
  3. 9AAAA

    9AAAA Гость

    Я так и сделал потом
    Код (Text):
     Док1= СоздатьДокумент("РеализацияПрочее");
    Срок=Док1.Комментарий
    Но все равно не выводится
    Почему РеализацияПрочее - потому что в этом справочнике есть поле комментарий, а в справочнике Реализация такого поля нету (хотя Openconf выводит)
     
  4. 9AAAA

    9AAAA Гость

    а когда пытаюсь сделать так как написано (вместо Док1, пишу Док), то он выдает ошибку
    "Неаерное присвоение значение. Используйте Текущий документ()", хотя такой функции и в помине нету
     
  5. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    СоздатьДокумент() - не существует, есть СОздатьОбъект() синтаксис выше привел vbs
    Ну объект Док ты создал.. А документ нашел? а то получается "покажите мне накладную, номера не знаю, даты не знаю"
     
  6. 9AAAA

    9AAAA Гость

    И как находить Документ
     
  7. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    а вот вопрос - что ты имеешь от документа? Номер,дату, значение какого-либо реквизита? Номер является уникальным в пределах периодичности документа (обычно год), тогда используешь Док.НайтиПоНомеру("01001001", '01.01.11'). Если у тебя есть ссылка на документ тогда Док.Найтидокумент(ТекущийДокумент());, если у тебя есть значение реквизита - то Док.НайтиПоРеквизиту("Пользователь",ГлПользователь) - но тут может быть промашка - реквизит не уникальный, а найти тебе вернет первое значение из списка найденных. Так что лучше всего по номеру и ссылке.
     
  8. 9AAAA

    9AAAA Гость

    мне нужно найти реквизит

    Добавлено: Так когда пишу
    Код (Text):
     Док1.НайтиПоРеквизиту
    ругается что поле агрегатного объекта не обнаружено
    Мне необходимо получить из документа реализации поле комментарий. Документ уже создал, теперь остаось его найти?
    НайтиПоРеквизиту работает со Справочником, в Документе не видит этого поля.
    Ты можешь дать номер своей аськи, а то у меня очень медленно продвигается работа

    Через отладчик я убедился что функция создатьОбъект создает объект с девственно читыми реквизитами.
    Я использую вот такую функцию
    Код (Text):
     Справка=Док1.ПолучитьАтрибут("Комментарий")
    Но так как реквизиты чистые то в справку ничего не пишется
    Цель моего шаманизма - есть поле Комментарий, я хочу данные из этого поля выводить на печатную форму
     
  9. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Непосредственно сидя в документе? или из списка документов? Если из самого документа (должен быть записан) - тогда текущийДокумент().Реквизит,если из списка (журнала) тогда ТекущийДокумент.Реквизит ( это только для активного в данный момент на форме). А создатьОбъект в основном используется из кокой-то сторонней обработки/отчета, нафиг он нужен если ты уже сидишь в объекте или на нем спозиционировался?
    стучись если что одиндватривосемьшестьодинсемьодинвосемь
     
  10. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Вот puh14 задал ключевой вопрос: в каком месте пишутся эти строки. На всякий случай поясню, что имею в виду не город и улицу, а расположение модуля.
     
  11. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Ох, и каша у тебя в голове !
    1. РеализацияПрочее и Реализация - это не справочники, а документы
    2. Комментарий - ОБЩИЙ реквизит для ВСЕХ документов
    3. СоздатьДокумент("РеализацияПрочее"); - ахинея, которая работать не будет без AddIn.XMLParser (а это явно не твой случай)
    4. Для документов есть метод ВыбратьПоЗначению

    puh14, терпи - парень активный, он тебя вопросами достанет. Будешь в качестве "АудиоЖКК" работать
     
  12. 9AAAA

    9AAAA Гость

    vbs Все так как вы говорили, я пятый день сижу на 1с и в голове немножко каша.
    Метод ВыбратьПоЗначению в нем нужно указывать две даты- даты начала и конца. А мне нужно чтобы метод автоматически вытягивал из реквизита значение и подставлял в Печатную форму
    Попытка номер раз
    Код (Text):
    Срок=Докум.Комментарий
    При этом выводит ошибку переменная срок не определена, но запускается и в место где должно быть значение получившиеся стоит черное слово срок
    Попытка номер два
    Код (Text):
    Док1=СоздатьОбъект(""Документ.РеализацияПрочее")
    Срок= Док1.Комментарий
    При этом я в отладчике посмотрел (заодно и им научился пользоваться), что когда я пишу СоздатьОбъект, то объект создается но полностью пустой и при проходе второй строчки в переменную Срок ничего не записывается, потому что Док1.Комментарий содержит пустую строку
    На всякий случай привожу здесь процедуру ПриОткрытии модуля модифицируемой печатной формы
    Код (Text):
     Процедура ПриОткрытии()

    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда

    Докум   = Форма.Параметр.Получить("Контекст");
    Устройство = Форма.Параметр.Получить("Устройство");
    КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");

    Печать(Докум, Устройство, КолвоКопий);
    Статусвозврата(0);
    Возврат;
    КонецЕсли;


    КонецПроцедуры // ПриОткрытии()
    P.S. Моя цель - вытащить, то что написано в Документе РеализацияПрочее поле Комментарий и вставить его в переменную срок на печатной форме.
    Идентификатор Секции и имя переменной я поменял (было склад стало срок). то необходимо, потому что я модернизирую печатные формы из реализации
     
  13. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Первая строчка не нужна, вторая бессмысленна, пока нет позиционирования на конкретном документе.
    К тому же этот кусок кода содержит синтаксические ошибки
    Об обеих забыть (на данном этапе)
    Если указанная строка находится в процедуре Печать внешней формы, нет никаких оснований сомневаться,
    что переменная Срок будет иметь значение Комментарий выбранного (если он-таки выбран !) документа,
    ибо Докум - это контекст документа (а следовательно через него есть доступ ко всем реквизитам выбранного документа - контекст
    передается параметром)
    В случае сомнений, отправляемся в отладчик, где смотрим значение Докум.Комментарий после отработки строки :

    Докум = Форма.Параметр.Получить("Контекст");

    PS. Наконец-то, со 135-й попытки стало ясно, что ты хочешь !
     
  14. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    "Если долго мучатся что-нибудь получится!" ;-)

    Лучше конечно хоть чуток литературу почитать. Хоть на той-же мисте
     
  15. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    или хотя бы синтакс-помощник!
     
  16. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Ох, и мудрым стал KiR, летит время!
    А я вот замечу одну мысль. Когда человек осваивает новую среду, для него все неясно. В такой ситуации от хэлпов и помощников толку никакого. У него как шоры на глазах. Не стану скрывать, что в 8-ке с помощником стал более-менее пользоваться спустя месяца 3-4. Вот не понимаю этих разделов. Где и что искать? Не понимаю этих лаконичных толкований.
    Мысль: на первом этапе человеку нужна базовая методология. Четкого уложения в голове элементарщины. Как обращаться к документу, справочнику. Из документа, из отчета. Настолько четкого, что мыслях нет ни одной зазубрины, как Устав ГиКС. А уж потом рука полезет смотреть в справку напомнить название или параметры.

    Совет: у нашего предприятия есть одно из правил - любую проблему нужно начать с положительного шага. Напишите 1 строку программы, но работающую. Потом к ней 2-ю. Учитывая количество дней в году и ваш юный возраст...
     
  17. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Дайнеко, я имел ввиду что синтакс помощник ходя бы синтаксис покажет и может у человека сразу придет понимание что он делает не так как нужно и задумается о том что надо бы базовой методологией заняться, а не сразу в дебри лезть... я к примеру на курсы ходил для этого. но курсы для ленивых - нормальный человек может обойтись кучей литературы и видео...
     
Загрузка...
Похожие Темы - Обращение документу из
  1. Bafomet
    Ответов:
    18
    Просмотров:
    150
  2. Shouldercannon
    Ответов:
    1
    Просмотров:
    149
  3. proteam
    Ответов:
    7
    Просмотров:
    791
  4. Вовкин
    Ответов:
    0
    Просмотров:
    723
  5. Вовкин
    Ответов:
    0
    Просмотров:
    684

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