Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

1C 8.2 УФ: как передать реквизит упр.формы в процедуру НаСервере

1C 8.2 УФ: как передать реквизит упр.формы в процедуру НаСервере
Я
   Kleo
 
09.01.13 - 11:42
Написана внешняя обработка для упр.приложения для заполнения ТЧ документа, из которого вызывается обработка. В этой обработке открывается упр.форма, на этой форме из ТЗ выбираются нужные склады, затем форма закрывается и по отдельной команде, которая запускается отдельно выполняется процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
так вот в этой процедуре программа уже не видит ТЗ, которая является рекизитов формы и обработки... как сделать, чтобы видела? т.к. затем нужно передать в параметр запроса
 
 
   Kleo
 
1 - 09.01.13 - 15:07
никто не поможет?
   pessok
 
2 - 09.01.13 - 15:08
РеквизитФормыВЗначение?
   pessok
 
3 - 09.01.13 - 15:09
ДанныеФормыВЗначение т.е.
   Kleo
 
4 - 09.01.13 - 15:11
а если нужно в этой же самом модуле формы? можете пример привести, пожалуйста
   SUA
 
5 - 09.01.13 - 15:13
(0)а по-русски, в соответствии с логическими правилами построения предложений?
   SUA
 
6 - 09.01.13 - 15:14
форма закрылась а данные с нее нужны?
или первая форма закрылась (и не нужна далее) и данные с основной нужны?
   acsent
 
7 - 09.01.13 - 15:16
реквизит не нужно никуда передавать оно само
   Kleo
 
8 - 10.01.13 - 05:34
(6) форма всего одна. форма закрылась и нужны данные из реквизитов формы для другой процедуры
   el-gamberro
 
9 - 10.01.13 - 05:40
Самый простой случай:
Закрыть(ПередаваемоеЗначение)

Но судя по описанию путаешь таблицу значений с данные формы коллекция. ТЗ передать можно на сервер, а ДФК нельзя.
   el-gamberro
 
10 - 10.01.13 - 05:43
Ну и еще вариант. Засунуть возвращаемое значение в параметры формы. Тока не забудь сделать его ключевым чтобы после закрытия формы его можно было прочитать.
 
 Рекламное место пустует
   Kleo
 
11 - 10.01.13 - 06:10
(9) есть форма обработки - в ней реквизит и обработки и формы Список - тип значения Таблица Значений. когда обрабатываю на сервере и на клиенте, когда форма еще не закрылась, то ТЗ заполнена. после закрытия ТЗ  - пустая. мне нужно передать в другую процедуру НаСервере ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт, в которой заполняется ТЧ документа, из которого вызывается внешняя обработка
   Кокос
 
12 - 10.01.13 - 06:17
v8: Управляемое приложение. Передача данных между фомами. что-то похожее. через временное хранилиже. только полезетли туда таблицазначений незнаю
   Кокос
 
13 - 10.01.13 - 06:17
я как-то эмулировал ТЗ через СЗ из значений в виде структур
   Кокос
 
14 - 10.01.13 - 06:18
сейчас код найду
   Кокос
 
15 - 10.01.13 - 06:21
&НаКлиенте
Функция ПодготовитьТаблицуЦен(КолонкаЦены) Экспорт
    Separator = "/";
    ExcelObject = new COMObject("Excel.Application");

    ExcelObject.Visible = False;
    WorkBook = ExcelObject.Workbooks.Open(xlsFile);
    Ячейки = WorkBook.ActiveSheet.Cells;
    ТЗ = Новый СписокЗначений;
    Строчка = 2;
    ТЗ.Очистить();
    Пока Не ПустаяСтрока(Ячейки.Cells(Строчка,3).Value) Цикл
        СтрокаМассива = Новый Структура("КодГруппы,КодТовара,Цена");
        СтрокаМассива.КодГруппы = СокрЛП(Ячейки.Cells(Строчка,1).Value)//
 
        СтрокаМассива.КодТовара = Формат(Ячейки.Cells(Строчка,3).Value,"ЧЦ=7; ЧДЦ=0; ЧВН=; ЧГ=")//
 
        СтрокаМассива.Цена = ?(ПустаяСтрока(Ячейки.Cells(Строчка,КолонкаЦены).Value),0,Ячейки.Cells(Строчка,КолонкаЦены).Value)//
 
        ТЗ.Добавить(СтрокаМассива);
        Строчка = Строчка + 1;
    КонецЦикла;
    WorkBook.Close();
    ExcelObject.Quit();
     СтруктураТаблиц = Новый Структура;
     СтруктураТаблиц.Вставить("ТаблицаЗначений",ТЗ);
    Адрес = ПоместитьВоВременноеХранилище(СтруктураТаблиц,ЭтаФорма.УникальныйИдентификатор);
    Возврат Адрес;
КонецФункции
   Кокос
 
16 - 10.01.13 - 06:22
&НаКлиенте
Процедура ЗагрузитьЦены(Команда)
    ТаблицаЦен = ПодготовитьТаблицуЦен(КолонкаЦены);
    ЗагрузитьЦеныВдокументЦен(ТаблицаЦен);
КонецПроцедуры
   Кокос
 
17 - 10.01.13 - 06:23
&НаСервере
Procedure  ЗагрузитьЦены(ТаблицаТоваров)
    
    СтруктураТаблиц = ПолучитьИзВременногоХранилища(ТаблицаТоваров).ТаблицаЗначений;
    Номенклатура = Справочники.Номенклатура;
    Запись= РегистрыСведений.ЦеныНоменклатуры;
    НаборЗаписей = Запись.СоздатьНаборЗаписей();
    Сч = 0;
    НаборЗаписей .Отбор.Регистратор.Установить(РегистрацияЦен.Ссылка, Истина);
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    НаборЗаписей.Записать(Истина);

    Для Сч = 0 По СтруктураТаблиц.Количество()-1 Цикл
        Строчка = СтруктураТаблиц.Получить(Сч).Значение;
        эТовар =  Номенклатура.НайтиПоРеквизиту("Артикул",Строчка.АртикулНоменкл); 
       //НаборЗаписей.Отбор.Номенклатура.Установить(эТовар.Ссылка, Истина);
 
       //НаборЗаписей.Отбор.ВидЦены.Установить(ТипЦены.Ссылка, Истина);
 


        Если Не ЗначениеЗаполнено(эТовар) Тогда Продолжить; КонецЕсли;//  Продолжить;
 
        СтрокаЗаписи = НаборЗаписей.Добавить();
        СтрокаЗаписи.ВидЦены = ТипЦены.Ссылка//СКлад;
 
        СтрокаЗаписи.Валюта = ТипЦены.ВалютаЦены.Ссылка;
        СтрокаЗаписи.Номенклатура = эТовар.Ссылка;
        СтрокаЗаписи.Регистратор = РегистрацияЦен.Ссылка;
        СтрокаЗаписи.Цена = Число(СТрочка.ЦенаБезНДС4зн);
        СтрокаЗаписи.Период = РегистрацияЦен.Дата//СТрочка.ДатаЦены;
 
           СтрокаЗаписи.Активность = Истина;
        
    EndDo;    
    НаборЗаписей.Записать(Истина); 
    
EndProcedure
   Кокос
 
18 - 10.01.13 - 06:24
вобщем както так. у меня там было куча всего закомментированно. посему имена могут не совпадать. но все работает. две клиентские и одна серверная функция

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует