• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы 9AAAA
  • Дата начала
9

9AAAA

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

vbs

Изучай матчасть по адресу СоздатьОбъект :
Док = СоздатьОбъект("Документ.Реализация");
 
9

9AAAA

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

9AAAA

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

puh14

СоздатьДокумент() - не существует, есть СОздатьОбъект() синтаксис выше привел vbs
Ну объект Док ты создал.. А документ нашел? а то получается "покажите мне накладную, номера не знаю, даты не знаю"
 
P

puh14

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

9AAAA

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

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

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

puh14

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

Дайнеко

Вот puh14 задал ключевой вопрос: в каком месте пишутся эти строки. На всякий случай поясню, что имею в виду не город и улицу, а расположение модуля.
 
V

vbs

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

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

9AAAA

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

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

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

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


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

vbs

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

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

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

puh14

"Если долго мучатся что-нибудь получится!" ;-)

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

Дайнеко

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

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

KiR

Дайнеко, я имел ввиду что синтакс помощник ходя бы синтаксис покажет и может у человека сразу придет понимание что он делает не так как нужно и задумается о том что надо бы базовой методологией заняться, а не сразу в дебри лезть... я к примеру на курсы ходил для этого. но курсы для ленивых - нормальный человек может обойтись кучей литературы и видео...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!