Имя: Пароль:
1C
1С v8
Нельзя изменять поле, содержащее объект данных формы
0 moonq4
 
10.09.15
15:42
&НаКлиенте
Процедура Загрузить(Команда)
    
    Если ЗначениеЗаполнено(ИмяФайла) И ЗначениеЗаполнено(Контрагент) Тогда
        
        НовыйДокументПлана = СозданиеДокументов();
        
        Отбор = Новый Структура("Ключ", НовыйДокументПлана);
        Форма = ПолучитьФорму("Документ.ПланПродаж.Форма.ФормаДокумента",Отбор);
        
        ЗаполнитьЦеныКоличество(Форма.ТоварыПоПериодам);
        
        Форма.Открыть();
        
        НоваяСтрокаТЗ = ТЗПланыПродаж.Добавить();
        НоваяСтрокаТЗ.Документ = НовыйДокументПлана;
        НоваяСтрокаТЗ.Контрагент = Контрагент;
    Иначе
        Сообщить("Нужно указать имя файла и контрагента");
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура  ЗаполнитьЦеныКоличество(ТаблицаТовары)
    
    СтрукураНоменклатуры = ЗагрузитьНоменклатуруСервер();
    
    мТЧ = ДанныеФормыВЗначение(ТаблицаТовары,Тип("ТаблицаЗначений"));

    Для каждого СтрокаТЧ Из СтрукураНоменклатуры Цикл
            
            НоваяСтрока = мТЧ.Добавить();
            НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЧ.Номенклатура);
            НоваяСтрока.Цена = 10;
            
    КонецЦикла;
        
    ЗначениеВДанныеФормы(мТЧ,ТаблицаТовары);
    
    
КонецПроцедуры


В чем может быть проблема и как решить?
1 ЧеловекДуши
 
10.09.15
15:48
(0) >>> ЗаполнитьЦеныКоличество(Форма.ТоварыПоПериодам);

Пиши

ЗаполнитьЦеныКоличество(); // Ибо если ты используешь &НаСервере, то это работа с контекстом.

И далее работаешь со своей таблицей на сервере. :)
2 ЧеловекДуши
 
10.09.15
15:50
(0) Сори не приметил, ты пытаешься на сервере заполнить табличную часть формы, открытую "рядом" :)

Заполняй тогда на клиенте, а не на сервере :)
3 moonq4
 
10.09.15
16:01
А как мне работать с не на на клиенте если это таблица значений?
4 ЧеловекДуши
 
10.09.15
16:07
(3) ТЗ это тот же Массив и Структура :)
Ну а коль нужна скорость, а данных много.

Используй ВременноеХранилищеЗначений. Заполняешь его на сервере, разворачиваешь на сервере, но уже там.
5 ЧеловекДуши
 
10.09.15
16:07
+(4) Или вообще заполняй его там. ПриСоздании...
6 ЧеловекДуши
 
10.09.15
16:10
+(3) Если ТЗ на форме, то её можно передать на сервер с параметром "Знач", единственный минус, нельзя менять значения. Т.е. бесполезно, сервер не вернет его обратно :)
7 moonq4
 
10.09.15
16:10
При создании документа?
8 ЧеловекДуши
 
10.09.15
16:10
+(6) Это для команды "&НаСервереБезКонтекста"
9 ЧеловекДуши
 
10.09.15
16:11
(7) Тебе для чего вообще нужна форма?
Что бы пользователь его там типо открыл и записал?
Или что бы он сам просто записался и открылся?
10 moonq4
 
10.09.15
16:13
Я просто заполняю документ, открываю его для тестирования)
11 ЧеловекДуши
 
10.09.15
16:14
(10) Странный подход :)
12 moonq4
 
10.09.15
16:16
Ну что бы сразу узнать, что заполнилось и т.д)
13 moonq4
 
10.09.15
16:18
Но форму мне нужно получать ибо нудная мне таблица находится на форме
14 moonq4
 
10.09.15
16:39
Кто подскажет?
15 moonq4
 
10.09.15
17:11
разобрался, в процедуру передавал параметром реквизит формы, а надо было присвоить его переменной и передать в процедуру =)