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

Но судя по описанию путаешь таблицу значений с данные формы коллекция. ТЗ передать можно на сервер, а ДФК нельзя.
10 el-gamberro
 
10.01.13
05:43
Ну и еще вариант. Засунуть возвращаемое значение в параметры формы. Тока не забудь сделать его ключевым чтобы после закрытия формы его можно было прочитать.
11 Kleo
 
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
вобщем както так. у меня там было куча всего закомментированно. посему имена могут не совпадать. но все работает. две клиентские и одна серверная функция
Основная теорема систематики: Новые системы плодят новые проблемы.