Имя: Пароль:
1C
 
Как же всё-таки вывести значения реквизита в табличную часть документа?
0 Russkiy
 
28.04.10
16:36
"...Так я жду ответа на поставленный мной вопрос относительно Шпака" ("Иван Васильевич меняет профессию", управдом Бунша Иван Васильевич)

Привет, ребята!

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

Характер этого форума таков, что нужно ковать железо, пока горячо. Чуть протянул время - и поднятая тема затёрлась и ушла на задний план, оставшись без внимания посетителей... Поэтому моя проблема так пока и не решилась, и я опять выхожу сюда "с протянутой рукой"... :)

У меня в конфигурировании версии 8.1 (релиз 8.1.14.15) такое затруднение. Мне нужно, чтобы в любом документе, содержащем набранный тем или иным способом список товарного состава, можно было видеть определённые реквизиты товара. Конкретно: мой товар - книги, для идентификации его элементов нужно ориентироваться на несколько его признаков (название, автор, издательство и т. д.). В справочниках все эти реквизиты уже есть и видны. При подборе номенклатуры в документ они также видны. А вот в самих документах мне не удаётся сделать их видимыми.

Сделано следующее в документе "Счёт на оплату покупателю":

- в реквизитах табличных частей документа создан реквизит "Автор"; реквизит не индексируется; тип данных - СправочникСсылкаАвторы;
- в форме "ФормаДокумента" создана одноимённая колонка; данные - Автор (т. е., как я понимаю, ссылка на соответствующий реквизит, созданный шагом ранее); элемент управления - поле ввода; включены флажки "Доступность", "Видимость", "Только просмотр; (реквизит нужен в документе только для контроля товарной позиции).

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

Фактический результат: колонка в документе появилась, но при заполнении последнего номенклатурой значений этого реквизита нет, т. е. колонка остаётся пустой, хотя в справочниках значения есть.

Вопрос: как заставить значения этого реквизита появляться в назначенной колонке документа?

Ребята посоветовали поработать с модулем Основной формы, с процедурой "ПриПолученииДанных". Кроме того, дали ссылку "Книга знаний: Книга знаний: v8: Дополнительная вычисляемая или текстовая колонка в списке

Пройдя по ссылке, я конечно нашёл интересную информацию, и в конце концов попытался в модуле сделать следующее:


Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
   
   РаботаСДиалогами.УстановитьКартинкиВСтрокахТЧ(ОформленияСтрок, Неопределено, мКартинкаНаборКомплект, Ложь);
   
   // Вывод данных из справочников
   
   Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
   СамаЯчейка = ОформлениеСтроки.Ячейки.Автор;
   СамаЯчейка.ОтображатьТекст = Истина;
   СамаЯчейка.Текст = "СправочникСсылка.Номенклатура";
   КонецЦикла;
   
   
КонецПроцедуры


В результате получил следующее: в табличных данных в колонке "Автор" по каждой введённой позиции вижу значение "СправочникСсылка.Номенклатура". Оно и понятно, поскольку здесь присутствуют кавычки. Пробовал ввести без них - при обновлении конфигурации выпадает сообщение об ошибке:

{Документ.СчетНаОплатуПокупателю.Форма.ФормаДокумента(3062,24)}: Переменная не определена (СправочникСсылка)
   СамаЯчейка.Текст = <<?>>СправочникСсылка.Номенклатура;

В статье, открывающейся по вышеприведённой ссылке, отмечается, что "Обычно колонка должна быть рассчитываемой, или зависимой от данных, поэтому задействуется второй параметр ДанныеСтроки. Этот механизм можно использовать для отображения остатков товаров в форме подбора, текущих цен, долга контрагента, другой информации по строкам." А как задействовать параметр ДанныеСтроки?

Подскажите, пожалуйста, кто в курсе, что я не так делаю и как нужно сделать, чтобы всё заработало как мне нужно.

Заранее весьма признателен.
1 Живой Ископаемый
 
28.04.10
16:40
СамаЯчейка.Текст = Оформление.ДанныеСтроки.Номенклатура; ?
2 Russkiy
 
28.04.10
16:41
P.S. Вот данная мне в вышеизложенных мытарствах ссылка:

Книга знаний: v8: Дополнительная вычисляемая или текстовая колонка в списке
3 73
 
28.04.10
16:43
(1)+ или может: Оформление.ДанныеСтроки.Номенклатура.Автор

ЗЫ. Реквизит ТЧ можно было не создавать.
4 Russkiy
 
28.04.10
16:45
...Непонятно. При копировании она перестаёт быть ссылкой и становится обычным, да к тому же бесполезным текстом. А как же сохранить ссылку?..
5 Живой Ископаемый
 
28.04.10
16:48
2(4) зачем?
6 ptiz
 
28.04.10
16:48
(4) Ссылка на что?
7 Mitriy
 
28.04.10
16:49
кто тут?
8 Живой Ископаемый
 
28.04.10
16:49
при копировании чего?

Ссылка на что?
9 73
 
28.04.10
16:49
(4) Ты сам сказал, что Автор - реквизит Номенклатуры. Достаточно показать.
10 Живой Ископаемый
 
28.04.10
16:51
2(4) Эта ссылка тебе всегда доступна через номенклатуру.. а номенклатура - всегда ссылка. поэтому ты и затеял показывать а не заставлять пользователя вводить заново.
11 Russkiy
 
28.04.10
16:55
Ребята, что касается ссылки - я попытался её вставить в этот пост из прежнего, чтобы всякий желающий мог увидеть тот вспомогательный материал, который мне был рекомендован для решения проблемы. А простое копирование приводит к тому, что ссылка перестаёт быть ею... Ну да Бог с ней.

Я только что попробовал варианты "Оформление.ДанныеСтроки.Номенклатура" и "Оформление.ДанныеСтроки.Номенклатура.Автор", как мне посоветовали уважеамые Живой Ископаемый и 73. Но 1С выдаёт то же сообщение об ошибке, которое я привёл выше...
12 73
 
28.04.10
16:57
(11)  У тебя в тексте не Оформление, а ОформлениеСтроки.
13 73
 
28.04.10
16:58
(12)+ СамаЯчейка.Текст = ОформлениеСтроки.ДанныеСтроки.Номенклатура.Автор;
14 Шапокляк
 
28.04.10
16:58
"Сделано следующее в документе "Счёт на оплату покупателю":

- в реквизитах табличных частей документа создан реквизит "Автор"; реквизит не индексируется; тип данных - СправочникСсылкаАвторы;
- в форме "ФормаДокумента" создана одноимённая колонка; данные - Автор (т. е., как я понимаю, ссылка на соответствующий реквизит, созданный шагом ранее); элемент управления - поле ввода; включены флажки "Доступность", "Видимость", "Только просмотр; (реквизит нужен в документе только для контроля товарной позиции).
" то есть в счете в табличной части есть реквизит Автор? В форме надо не колонку добавлять тогда, а нажать пункт Форма - Размещение данных, т.е. колонка должна отображать реквизит табличной части.
Следующий вопрос - как в этот реквизит попадают данные. В обработчике события изменения номенклатуры надо менять и этот реквизит, выполняя нечто типа: СтрокаТЧ.Автор=СтрокаТЧ.Номенклатура.Автор


И будет счастье.  Впрочем, сама идея такого показа через заполнение реквизита ТЧ сомнительна.
15 borozavr
 
28.04.10
17:09
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ЗаполнитьКодАртикул(КолонкиТЧТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура);

КонецПроцедуры

Процедура ЗаполнитьКодАртикул(КолонкиТабличнойЧасти, ЯчейкиСтроки, Товар)
       Если Не ЗначениеЗаполнено(Товар) Тогда
           ЯчейкиСтроки.ШтрихКод.УстановитьТекст("");
       Иначе
           ЯчейкиСтроки.ШтрихКод.УстановитьТекст(Товар.ОсновнойШтрихКод);
       КонецЕсли;

КонецПроцедуры //ЗаполнитьКодАртикул()

Убираешь реквизиты табличной части, щелкаешь на табличной части, добавляешь колонку с идентификатором, например "ШтрихКод" и прописываешь код типа как выше
16 Живой Ископаемый
 
28.04.10
17:11
2(15) он сейчас скопирует
"ЯчейкиСтроки.ШтрихКод.УстановитьТекст(Товар.ОсновнойШтрихКод);"


в свой код и опять скажет что у него таже самая ошибка...
17 borozavr
 
28.04.10
17:12
Надеюсь сообразит, что надо типа Товар.Автор
18 Point
 
28.04.10
17:20
(0) А, что за конфигурация (БП,УПП ....)?
19 Russkiy
 
28.04.10
17:24
Ребята, насчёт ссылки: я попытался из прежних постов вывести сюда ссылку, данную мне в качестве вспомогательного материала для решения моей проблемы. А простое копирование приводит к тому, что ссылка превращается в текст. Ну да Бог с ней...

Я только что попробовал, следуя советам уважаемых "Живой Ископаемый" и "73", ввести в код модуля "Оформление.ДанныеСтроки.Номенклатура" и "Оформление.ДанныеСтроки.Номенклатура.Автор". К сожалению, опять при попытке обновления конфигурации выдаётся сообщение об ошибке, приведённое выше...
20 73
 
28.04.10
17:26
Де жа вю?
21 Russkiy
 
28.04.10
17:31
Да нет, до Де жа вю ещё не дошло... Просто что-то зависло на связи, и я, не видя появившегося сообщения, повторил его немного погодя. Так и получилось...
22 73
 
28.04.10
17:33
А (13) помогло?
23 Skylark
 
28.04.10
17:39
да... "вот кол, на колу мочало..."

Ну давай с самого начала - бери исходную базу, открывай в конфигураторе форму документа, щелкай правой кнопкой на табличной части и жми "Добавить колонку"
24 Skylark
 
28.04.10
17:40
В конце табличной части должна появится Колонка1

Сделал?
25 Russkiy
 
28.04.10
17:45
Эту колонку я сделал уже давно, и наименовал её "Автор"
26 Skylark
 
28.04.10
17:49
Отлично, теперь переходи в процедуру события табличной части

"ТоварыПриВыводеСтроки" или как там у тебя табличная часть называется?
27 Skylark
 
28.04.10
17:50
есть такая процедура?
28 Skylark
 
28.04.10
17:51
и в этой процедуре добавляй код

ОформлениеСтроки.Ячейки.Автор.УстановитьТекст(ДанныеСтроки.Номенклатура.Автор)
29 Skylark
 
28.04.10
17:51
Собственно всё
30 Skylark
 
28.04.10
17:55
и вот этого не надо:
- в форме "ФормаДокумента" создана одноимённая колонка; данные - Автор (т. е., как я понимаю, ссылка на соответствующий реквизит

тупо щелкнуть правой кнопкой - добавить колонку, имя колонки исправить с Колонка1 на Автор - и ВСЁ!
31 Russkiy
 
28.04.10
17:59
Srylark! Всё, похоже, получилось! Даже не знаю, как Вас благодарить... Огромное Вам спасибо!

Впрочем, всех остальных участников этого "симпозия" я также сердечно благодарю за участие и отзывчивость. Есть у нас, очевидно, ещё порох в пороховницах, то бишь добрые люди, готовые прийти на помощь. Дай вам Бог всем всяческих благ - земных и неземных!

Пока, ребята!
32 Russkiy
 
28.04.10
18:03
P.S. А форум действительно волшебный...