Имя: Пароль:
1C
1С v8
Добавление реквизита в документы с последующим выводом в журнал документов.
,
0 Arnulf
 
08.11.16
07:00
Всем доброго времени суток! Подскажите по коду пожалуйста чайнику. Как с помощью процедуры ПередЗаписью добавить реквизит, где записывается табличная часть документа (первая строка). Чтобы потом этот реквизит вывести в форму списка журнала документов.
1 PuhUfa
 
08.11.16
07:09
(0) а как сам пробовал? и что не получилось?
2 Arnulf
 
08.11.16
07:12
(1) Сам не пробывал... Так по советовал сделать преподаватель. Но весь интернет обрыскал и не нашёл ничего похожего.
3 DrZombi
 
гуру
08.11.16
07:22
(2) Вот ты попробуй, и нам опиши :)
А потом и вопросы задавай, что не получилось...

А так... Открываешь конфигуратор и работаешь в нем
4 DrZombi
 
гуру
08.11.16
07:24
+(2) Добавь реквизит в шапку. Можно текстовый, длины 1000 символов хватит
Заполняй его первым значением из первой строчки, либо несколькими строчками.

В итоге у тебя будет реквизит, заполненный неким информационным мусором.

...
Реквизит из шапки уже можно добавить в журнал (список документов)
5 DrZombi
 
гуру
08.11.16
07:25
+(4) Заполнять такое чудо можно из Модуля документа - "ПередЗаписью"
6 DrZombi
 
гуру
08.11.16
07:27
+(5) Рекомендую не фонатеть и обойтись к примеру всего 5-тью первыми строчками... Все ровно если в табличной части будет уже 100 или 1000 строк, то смысла от такой информации уже будет еще меньше :)
7 Arnulf
 
08.11.16
08:03
(6) &НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Для Каждого ВыбранныйЭлемент Из Этаформа.Элементы.ГруппаНомерДата Цикл
НоваяСтрока = Объект.ОписаниеТабличнойЧасти.Добавить();
МассивТипов = новый Массив;
МассивТипов.Добавить(Тип("Строка"));
ДобавляемыеРеквизиты = Новый Массив;
МассивТипов = новый Массив;
МассивТипов.Добавить(Тип("Строка"));
Реквизит = Новый РеквизитФормы("НМА",новый ОписаниеТипов(МассивТипов),Объект.Номер, "Поле ввода строки", Истина);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
НоваяСтрока.ОписаниеТабличнойЧасти =("ЭтаФорма.Элементы.ДеревоНоменклатурыКарточкаНоменклатурыНаименование");

КонецЦикла;
КонецПроцедуры
Что я не так делаю?
8 PuhUfa
 
08.11.16
08:21
(7) Ты уверен что правильно понял условия задачи?
9 Arnulf
 
08.11.16
08:24
(8) да
10 Arnulf
 
08.11.16
08:25
(8) но боюсь я не правильно реализую(
11 PuhUfa
 
08.11.16
08:28
(9) >>с помощью процедуры ПередЗаписью добавить реквизит
добавить реквизит куда?

Что то мне кажется, что задача куда проще. Добавить в документ "Реквизит". ПередЗаписью в этот "Реквизит" записывать значение из первой строки ТЧ и потом в Списке просто добавить еще колонку отображающую значение этого реквизита.
12 Arnulf
 
08.11.16
08:36
(11) Реквизит создал дал имя "описание табличной части", а как записать содержимое табличной части (первых 3 строк достаточно), чтобы знаения строк записывались через запятую...  Вот тут запутался( С помощью процдуры "ПередЗаписью" конечно же...
13 Рэйв
 
08.11.16
08:37
(12)ты н понимаешь простой вещи. Программно созданный реквизит нигде не хранится в базе и умират вместе с объектом.
Тебе для вывода в журнал нужен ЗАПИСАННЫЙ рквизит. Так что слушай (11)
14 Arnulf
 
15.11.16
05:23
(13) Я записал реквизит. Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
                Для Каждого ВыбранныйЭлемент Из Этаформа.Элементы.ГруппаНомерДата Цикл
НоваяСтрока = Объект.ОписаниеТабличнойЧасти.Добавить();
МассивТипов = новый Массив;
МассивТипов.Добавить(Тип("Строка"));
ДобавляемыеРеквизиты = Новый Массив;
МассивТипов = новый Массив;
МассивТипов.Добавить(Тип("Строка"));
Реквизит= ЭтаФорма.Объект.ОписаниеТабличнойЧасти;
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
НоваяСтрока.ОписаниеТабличнойЧасти =ДеревоНоменклатуры.ДеревоНоменклатурыНоменклатура;
КонецЦикла;


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

И в ничего не отображается в журнале просто пустое поле...
15 h-sp
 
15.11.16
05:42
(14) ты совсем не понимаешь,чего творишь.

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

И ПередЗаписью ты должен делать не в форме, а в модуле объекта.
Это опять же в структуре конфигурации,  правой кнопкой мыши щелкаешь и там открыть модуль объекта.
16 Arnulf
 
15.11.16
05:44
(15) Я именно так и сделал причём в 3х документах, которые записываются в этом журнале.
17 h-sp
 
15.11.16
05:54
(16) тогда что в (14)? мираж?
18 Arnulf
 
15.11.16
05:56
(17) АААА всё понял) Спасибо) Сейчас попробую)
19 Arnulf
 
15.11.16
06:38
(17) Вот я сделал в модуле документа но всё так-же не отображается(
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)      
                Для Каждого Документа Из Документы.Списание Цикл
НоваяСтрока = ОписаниеТабличнойЧасти.Добавить();
МассивТипов = новый Массив;
МассивТипов.Добавить(Тип("Строка"));
ДобавляемыеРеквизиты = Новый Массив;
МассивТипов = новый Массив;
МассивТипов.Добавить(Тип("Строка"));
Реквизит=ОписаниеТабличнойЧасти;
ДобавляемыеРеквизиты.Добавить(Реквизит);

НоваяСтрока=ОписаниеТабличнойЧасти =("ДеревоНоменклатуры.ДеревоНоменклатурыНоменклатура");
ДобавляемыеРеквизиты=(ОписаниеТабличнойЧасти);


Объект= Документы.Списание.ПолучитьСсылку().ОписаниеТабличнойЧасти;
КарточкаНоменклатуры.Наименование=Объект.Наименование;
Объект.Записать();
                    
КонецЦикла;
КонецПроцедуры
20 Рэйв
 
15.11.16
08:17
(19)Ты не тормоз. нет. Ты медленный газ :-)
21 Arnulf
 
15.11.16
08:20
(20) Я Просто чайник)
22 h-sp
 
15.11.16
09:22
(21)  реквизит добавляешь не в тексте программы, а в дерево конфигурации. Щелкаешь добавить и вводишь имя реквизита. ВСё.
23 Adilgeriy
 
15.11.16
09:25
посмотри кадровые документы в ЗУП 2.5 там этот механизм реализован полностью как ты хочешь
24 Adilgeriy
 
15.11.16
09:25
но он работает не перед записью а при изменении табличной части
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс