|
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
|
вобщем както так. у меня там было куча всего закомментированно. посему имена могут не совпадать. но все работает. две клиентские и одна серверная функция
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |