Имя: Пароль:
1C
1С v8
Запись в табличную часть из таблицы значений
0 Nast
 
07.12.12
18:38
На форме документа есть табличное поле с типом таблица значений.
При записи надо записать данные в табличную часть документа.
В процедуре ПриЗаписи() в модуле формы документа формируем табличную часть
Пример:
Процедура ПередЗаписью()
Для НомерСтр=0  По ТЗ.Количество()-1 Цикл
   Стр=Товары.Добавить();
   Стр.Номенклатура =  Справочники.Номенклатура.НайтиПоКоду("1111");
   Стр.Количество =  20;      
 КонецЦикла;  
КонецПроцедуры

Почему после того как документ записали и открываем снова в табличной части ничего нет?
1 Нуф-Нуф
 
07.12.12
18:38
при открытии заполнить ТЗ? Не?
2 Nast
 
07.12.12
18:40
естественно для того и спрашиваю, что надо ТЗ заполнить, то в табличной части пусто
3 Nast
 
07.12.12
18:41
в табличной части пусто, нечем заполнять ТЗ.
Почему не записывается в табличную часть? Что еще надо сделать?
4 kosts
 
07.12.12
18:50
Возможно событие не связано с процедурой. Открой свойства формы и сгенерируй событие снова.
5 zbv
 
07.12.12
18:52
так в ПриЗаписи() или в ПередЗаписью() ?

и почему в ПередЗаписью() нет параметра Отказ ? (связано с (4))
6 Evrepid
 
07.12.12
18:57
Примерно так надо делать:
Вариант 1:
1. Реквизит в документе. (тип Хранилище значений)
2. В процедуре закрытия надо записывать ТЗ в этот реквизит
3. Потом при открытии читаешь значение реквизита.
4. Заполняешь ТЧ по полученному значению ТЗ

Вариант 2:
1. РегистСведений создаешь с реквизитом типа хранилище значения и ссылкой на документ
2. В процедуре закрытия записываешь в регистр данные
3. при открытии находишь нужную запись.
4. Читаешь данные из регистра
5. Заполняешь ТЧ по ТЗ

А в целом прикалываешься? :)
или троллишь?
7 Nast
 
07.12.12
19:02
Событие формы связано с процедурой.
Отказ =Ложь в процедуре ПередЗаписью() в модуле формы. Почему в процедуре ПередЗаписью() не получается?
Есть документ Установка цен номенклатуры, там подобно сделано, но все работает
8 kosts
 
07.12.12
19:06
(6) Крайне не рекомендуется в хранилище хранить ссылки на объекты. А так же как хранилище задействовать в запросах?
9 kosts
 
07.12.12
19:07
(7) Добавь Сообщить() в процедуру, убедись, что она вызывается.
10 Nast
 
07.12.12
19:09
Процедура вызывается
11 kosts
 
07.12.12
19:10
По какой причине на форме не лежит табличная часть, зачем используется ТЗ?
12 kiruha
 
07.12.12
19:11
(10)
Сообщить(" "+Отказ+" "+РежимЗаписи)
13 Nast
 
07.12.12
19:12
Колонки на форме формируются динамически, поэтому не Табличная часть на форме
14 kosts
 
07.12.12
19:14
Может табличная часть вполне себе заполняется, а это при открытии обратно ТЗ не заполняется?
15 Nast
 
07.12.12
19:14
при открытии просто чтобы тупо проверить цикл по строкам табличной части и сообщение
16 Budy
 
07.12.12
19:14
не помню, что там говорится, когда период закрыт или разные там ограничения стоят. Может тут что.
а вообще с учетом пятницы
Я первым делом посмотрел бы тз.ВыбратьСтроку()
Товары.выгрузить().ВыбратьСтроку()
17 kiruha
 
07.12.12
19:15
ЭлементыФормы.Товары

есть или нет ?
18 Nast
 
07.12.12
19:16
(17) нет. На форме табличной части товары НЕТ
19 kiruha
 
07.12.12
19:20
(18)
Сделай скрытой и заполни
20 Nast
 
07.12.12
19:20
(19) что скрытым сделать?
21 Nast
 
07.12.12
19:20
табличную часть сделать скрытой? Зачем?
22 Мимохожий Однако
 
07.12.12
19:22
Табличная часть в каком объекте конфигурации? Для формы обработки можно включить в список сохраняемых при закрытии реквизитов.
23 kiruha
 
07.12.12
19:22
Сделай табличное поле, данные Товары
Заполни через ЭлементыФормы.Товары

видимость как хочешь - я так понял нужно не видимая
24 Nast
 
07.12.12
19:26
в табличной части данные будут по строкам, на форме в колонках, т.е. колонки это недели, их может быть сколько угодно, не делать же 50 реквизитов и тем более не известно сколько их должно быть
25 Evrepid
 
07.12.12
19:28
(8) А где я сказал, что надо в хранилище пихать ссылку на документ? Придумываете?

А кто сказал, что ему нужен запрос по этому реквизиту?
И вообще что вы троллите...
Да и вообщем то насколько я вижу, ТЗ хранится постоянно.
И в общем я предложил верные решения.
26 Nast
 
07.12.12
19:31
(6) спасибо. Попробую эти варианты, но не понятно почему не работает ПередЗаписью()
27 kiruha
 
07.12.12
19:32
еще вариант
вместо Товары написать ЭтотОбъект.Товары

мало что там в коде наваяли
28 Budy
 
07.12.12
19:33
А основной реквизит формы точно правильно указан?
29 Мимохожий Однако
 
07.12.12
19:35
(26)Не стесняйся, снимай.... показывай код полностью.
30 fisher
 
07.12.12
19:38
(0) Странный код. Табличная часть заполняется данными, не зависящими от содержимого таблицы значений. Но только в том случае, если таблица значений не пуста... А ты уверена, что она у тебя не пуста?
31 Nast
 
07.12.12
19:50
разобралась уже
32 Nast
 
07.12.12
19:53
(30) это почему табличная часть заполнятеся данными,не зависящими от содержимого таблицы значений?
33 Nast
 
07.12.12
19:53
А, это просто пример  был приведен и для тестирования чтобы проверить записывается ли туда вообще что-то
34 kosts
 
07.12.12
20:03
(25)
>А где я сказал, что надо в хранилище пихать ссылку на документ?

В (0) вполне видно, что в ТЗ будет ссылка на справочник.

А так же если хранилище:
- Как делать проведение документа, это снова распаковывать хранилище?
- Что надо будет сделать, если необходимо будет к добавить/убрать колонку в ТЗ?
- Как сделать тот же запрос по данным документа?

Так что могу сказать, не намеками - использовать Хранилище для этого дела это бред.
35 kiruha
 
07.12.12
20:04
(31)
разобрАлась  
Настя ?
36 Evrepid
 
07.12.12
20:16
(34) Еще раз... Запроса по ТЗ не требуется. Все остальное выдумки.
37 Evrepid
 
07.12.12
20:22
(34) Все зависит от задачи. И в таком случае, когда требуется все ваше перечисленное, то по вам требуется удвоение данных, в любом из доступных объектов.

База вырастет как минимум в 2 раза, при объемах в 30-40 Гб... удвоение 60-80 Гб... Полная ...
Еще большая хрень. :(
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший