• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Журнал документов + ТЗ

  • Автор темы perfomance
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

perfomance

Всем Хай. В академических целях интересует: Возможно ли в Фоме Журнала документов оганизовать просмотр табличной части текущего документа в расположенной в форме журнала таблице значений. Т.е. при перемещении курсора по списку документов в журнале его табличная часть отображалась бы в подрисованной таблице значений на этом же журнале документов. По аналогии как в журнале операций - журнал разделен на две части - сверху сами записи операций, а при установлении курсора на запись - снизу отображается ее содержимое. У кого какие есть предложения? Касательно платформы 7.7
 
H

Hryv

В форме журнала
Процедура ПриВыбореСтроки()
ТЗ.Очистить();
ТекущийДокумент.ВыгрузитьТабличнуюЧасть(ТЗ);
КонецПроцедуры
 
P

perfomance

По описанию процедура ПриВыбореСтроки() не катит . Вот что гласит описание(точнее замечание):"Замечание: Режим обработки выбора строки (двойной щелчок мыши или кла­виша Enter) предопределенной процедурой ПриВыбореСтроки включается в форме списка справочника, журнала, счетов, журнала операций, журна­ла проводок при помощи метода Форма.ОбработкаВыбораСтроки(1).
А задача заключается в том чтобы ТЗ отображала данные при перемещении курсора по форме журнала
 
H

Hryv

Действительно...

Попробуй добавить в таблицу журнала текстовое поле и ему в "формулу" пропиши вызов процедуры
а само поле сделай невидимым
 
V

vbs

Попробуй добавить в таблицу журнала текстовое поле и ему в "формулу" пропиши вызов процедуры
а само поле сделай невидимым
Классная идея. Только не процедуру повесить на это поле, а функцию.
Попробовал на Бух 4.5, мне понравилось, взял на вооружение
 
P

perfomance

Попробуй добавить в таблицу журнала текстовое поле и ему в "формулу" пропиши вызов процедуры
а само поле сделай невидимым

Сорри за вопрос, но именно какое поле? Т.е. создать какой нито общий "текстовый" реквизит для документов или же "текстовый" реквизит конкретного документа, который будет добавляться в форму журнала?
 
V

vitfil

Текстовое поле на форме журнала. Никаких реквизитов в документы добавлять не следует.

Кстати, я бы посоветовал использовать не ТЗ, а ТП+ПоставщикДанных из 1С++
 
H

Hryv

perfomance, текстовое поле, которое есть на панели элементов диалога с синей буквой Т на иконке


Только не процедуру повесить на это поле, а функцию.
а зачем в данном случае функция?
само текстовое поле не будет видно и в него ничего возвращать не надо

или процедура вообще не будет отрабатывать? :mellow:
 
P

perfomance

perfomance, текстовое поле, которое есть на панели элементов диалога с синей буквой Т на иконке

Понятно....

а зачем в данном случае функция?
само текстовое поле не будет видно и в него ничего возвращать не надо
или процедура вообще не будет отрабатывать? :mellow:

Млин. Ну если попробовать вписать в формулу такого "текстового поля" и в модуле обозвать ее как Процедура, то уже в самой системе выходит ошибка: "Процедура вызывается как функция (ИмяФункции)" в табло.
Функция по определению может вычислять и возвращать определенные значения. Просто в модуле самой Функции которая поместится в текстовое поле надо вписать вызов процедуры , которая именно будет выполнять какие либо операторы (так сказать возбуждаться ) из - за выполняемой каждый раз функции.
 
H

Hryv

в самой системе выходит ошибка: "Процедура вызывается как функция (ИмяФункции)" в табло.

тогда понятно почему нельзя процедуру
я просто на практике не проверял

perfomance, заработало как ты хотел или нет?
 
P

perfomance

perfomance, заработало как ты хотел или нет?

Заработало. При следовании курсора по списку документов их табличная часть успешно выгружается в ТЗ , которая подрисована внизу. Использовал метод "ВыгрузитьТабличнуюЧасть (ТЗ, "Реквизиты")". Но вот пока фича в том что ТЗ не дает делать скроллинг. Т.е допустим табличную часть документа згрузили в ТЗ и грубо говоря в табличной части строк 20, а сама ТЗ "Маленького роста". И если у ТЗ захочешь протащить линейкой - то она просто не дает. Как колом. Может это особенность метода "ВыгрузитьТабличнуюЧасть"? наверное при данном методе не создаются строки в ТЗ как таковые. Точно - просто линейка не понимает что ТЗ строки то отображает, а на самом деле их нет.
 
H

Hryv

А если после ВыгрузитьТабличнуюЧасть дописать Форма.Обновить()
 
P

perfomance

А если после ВыгрузитьТабличнуюЧасть дописать Форма.Обновить()

Не а - одна фигня. Скроллинг ТЗ не дает. Во грабли то . Пробовал методом "ВыгрузитьТабличнуюЧасть" и выбрать строки из текущего документа методом ВыбратьСтроки() с последующим занесением в ТЗ.
 
V

vbs

Не а - одна фигня. Скроллинг ТЗ не дает. Во грабли то . Пробовал методом "ВыгрузитьТабличнуюЧасть" и выбрать строки из текущего документа методом ВыбратьСтроки() с последующим занесением в ТЗ.
Похоже, это излишество

А метод, предложенный Hryv, сгодится еще и для создания связанных таблиц значений !
 
H

Hryv

Не скролит, потому что при попытке промотать ТЗ вниз сразу идет вызов функции забитой в текстовое поле
Кстати, вправо/влево скролит без проблем

Пока не придумал как решить

А метод, предложенный Hryv, сгодится еще и для создания связанных таблиц значений !

А это как?
В смысле я не понял темин "связанных таблиц значений"
Если можно, то с примерчиком
 
V

vitfil

Не скролит, потому что при попытке промотать ТЗ вниз сразу идет вызов функции забитой в текстовое поле
Кстати, вправо/влево скролит без проблем

Пока не придумал как решить
Перем ТекДок;
Функция ...
Если ТекущийДокумент() <> ТекДок Тогда
ТекущийДокумент().ВыгрузитьтабличнуюЧасть;
ТекДок = ТекущийДокумент();
КонецЕсли;
 
V

vbs

По синтаксису правильно так :
Function ВыборСтроки(Док)
Если Док <> ТекДок Тогда
ТЗ.Очистить();
Док.ВыгрузитьтабличнуюЧасть(ТЗ);
ТекДок = Док;
Return 1
КонецЕсли;
Return 0
endFunction
//******************************************************************************
Но не помогает )))
 
H

Hryv

vitfil, vbs, я проверил это еще до предыдущего моего поста :)


А вот и решение: текстовое поле вешаем не в таблицу журнала, а просто на форму
ИСПЫТАНО!
:mellow:


Модуль журнала
Код:
Перем ТД;

//*---*---*---*---*---*---*---*---*---*---*---*---*---*---*
Функция ВыгрТЧ()									
Если ТД<>ТекущийДокумент Тогда
ТЗ.Очистить();
ТекущийДокумент.ВыгрузитьТабличнуюЧасть(ТЗ);
ТД=ТекущийДокумент;
КонецЕсли;
Возврат 0;
КонецФункции //ВыгрТЧ()
 
V

vitfil

Hryv
а я сразу и не заметил, что вы табличное поле вешали в таблицу журнала. ясен пень, что не работало бы!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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