Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 23:05

Обращение к реквизитам табличной части формы на сервере

Автор amina1000, 26 дек 2013, 15:41

0 Пользователей и 1 гость просматривают эту тему.

amina1000

мой код
&Насервере
Функция ЗаполнитьДокументНаСервере(ДанныеФормы,Заказ,ДатаПлатежа,СуммаПлатежа);
ДокЗнр = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств"));
ДокЗнр.ДокументОснование =заказ;
ДокЗнр.Заполнить(Заказ);
ДокЗнр.Статус=Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Утверждена;
ДокЗнр.ДатаПлатежа=ДатаПлатежа;
ДокЗнр.СуммаДокумента=СуммаПлатежа;
ДокЗнр.Записать(РежимЗаписиДокумента.Проведение);
ЗначениеВДанныеФормы(ДокЗнр,ДанныеФормы);
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
// Вставить содержимое обработчика.            
    стр=Элементы.ТабЗн.ТекущаяСтрока;   
    Для Каждого стр из ТабЗн  цикл
    Заказы=Стр.Ссылка;
    Оплата=Стр.ПометкаОплаты;
   СуммаПлатежа=Стр.СуммаПлатежа;
   ДатаПлатежа=Стр.ДатаПлатежа;
    Если Стр.ПометкаОплаты=Истина тогда
      Форма = ПолучитьФорму("Документ.ЗаявкаНаРасходованиеДенежныхСредств.ФормаОбъекта");
      ДанныеФормы = Форма.Объект;
      ЗаполнитьДокументНаСервере(ДанныеФормы,Заказы,ДатаПлатежа,СуммаПлатежа);
        КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
   //   Форма.Открыть();
      
   конецЕсли
конецЦикла
Мне надо обратиться к табличной части документа ЗаявкаНаРасходованиеДенежныхСредств на сервере. т.к поле СуммаПлатежа должно быть ровно ДокЗНР.РасшифровкаПлатежа.Сумма. Где РасшифровкаПлатежа это Табличная часть формы. Какие будут предложения?

amina1000

можно и на клиенте
Процедура Команда1(Команда)
// Вставить содержимое обработчика.            
    стр=Элементы.ТабЗн.ТекущаяСтрока;   
    Для Каждого стр из ТабЗн  цикл
    Заказы=Стр.Ссылка;
    Оплата=Стр.ПометкаОплаты;
   СуммаПлатежа=Стр.СуммаПлатежа;
   ДатаПлатежа=Стр.ДатаПлатежа;
    Если Стр.ПометкаОплаты=Истина тогда
      Форма = ПолучитьФорму("Документ.ЗаявкаНаРасходованиеДенежныхСредств.ФормаОбъекта");
      ДанныеФормы = Форма.Объект;
      ЗаполнитьДокументНаСервере(ДанныеФормы,Заказы);
        КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
      Форма.Объект.ДатаПлатежа=ДатаПлатежа;
      Форма.Объект.РасшифровкаПлатежа.Сумма=СуммаПлатежа;
      Форма.Записать();
      Форма.Открыть();
      
   конецЕсли
конецЦикла
но у меня ругается на    Форма.Объект.РасшифровкаПлатежа.Сумма=СуммаПлатежа;. как тут обр. к табличной части?

Besart

предлагаю следуюшие варианты:
- учить матчасть,
- более подробно описывать суть задачи,
- вместо ПолучитьФорму использовать ОткрытьФорму и заполнять все значения на клиенте в форме, без создания объекта

amina1000

ОткрытьФорму не подходит. Форма заполняется на основании др докум. в коде все описано. Можно не засорять эфир глупыми советами и общими фразами. Если есть конкретный вопрос по задавайте поясню. и нужны конкретные примеры, без лишнего бла бла...

mixqn

Читал, читал, не смог понять представленный код.
Что-то там не то.
Я правильно понял, что вы из открытой формы получаете еще одну форму? Зачем?
Добавлено: 26 дек 2013, 16:16


Цитата: amina1000 от 26 дек 2013, 16:12Если есть конкретный вопрос по задавайте поясню. и нужны конкретные примеры, без лишнего бла бла...
вот это вы прямо в точку. только это вам совет. вы написали очень много "бла бла", без конкретного вопроса.
Добавлено: 26 дек 2013, 16:20


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

amina1000

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

Besart

правильно обращайтесь к таб. части и взлетит

amina1000

Ну что ж такое опять общие фразы. Я и спрашиваю как?
Вот мои варианты
Форма.Объект.РасшифровкаПлатежа.Сумма=СуммаПлатежа;
Форма.ТекущиеДанные.РасшифровкаПлатежа.Сумма=СуммаПлатежа;
Форма.Объект.ТекущиеДанные.РасшифровкаПлатежа.Сумма=СуммаПлатежа;
Форма.Объект.ТекущиеДанные.РасшифровкаПлатежаСумма=СуммаПлатежа;
на все ругается. Что конкретно не так и как надо, пожалуйста без философии конкретные советы, конкретные вопрос.
Добавлено: 26 дек 2013, 16:37


Пардон наоборот
Форма.Объект.РасшифровкаПлатежа.Сумма=СуммаПлатежа;
Форма.РасшифровкаПлатежа.ТекущиеДанные.Сумма=СуммаПлатежа;
Форма.Объект.РасшифровкаПлатежа.ТекущиеДанные.Сумма=СуммаПлатежа;
Форма.Объект.РасшифровкаПлатежаТекущиеДанные.РасшифровкаПлатежаСумма=СуммаПлатежа;
Добавлено: 26 дек 2013, 16:42


Ошибка вот такая
{Форма.ФормаОтчета.Форма(94)}: Поле объекта не обнаружено (ТекущиеДанные)
      Форма.Объект.РасшифровкаПлатежа.ТекущиеДанные.Сумма=СуммаПлатежа;
и вот такая

{Форма.ФормаОтчета.Форма(94)}: Поле объекта не обнаружено (РасшифровкаПлатежа)
      Форма.РасшифровкаПлатежа.ТекущиеДанные.Сумма=СуммаПлатежа;

и вот такая


Besart


amina1000


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск