|
Параметр в открытой форме | ☑ | ||
---|---|---|---|---|
0
ParamPamPam
19.02.19
✎
14:09
|
В УПП:Мясокомбинат в обычной форме документа ПоступлениеТоваровУслуг была форма "ВалютыИЦены", как в управляемой форме сделать что бы она работала?
//Код кнопки вызова формы в обычной форме документа : // Процедура вызывается при нажатии кнопки "ЦеныВалюта" командной панели // табличного поля "Товары", вызывает сервисный механизм для изменения // общих для всей табличной части "Товары" реквизитов - таких, например, // как тип цен, валюта и т. д. &НаКлиенте Процедура ДействиеЦеныВалюта(Команда) СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов; // Задать набор реквизитов для редактирования. //СтруктураРеквизитовДокумента = Ценообразование.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(ЭтотОбъект); СтруктураРеквизитовДокумента.Вставить("НДСВключенВСтоимость"); СтруктураЗапрещенных = Неопределено; Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку ИЛИ ЭтаФорма.Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия Тогда СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость"); Иначе СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость, УчитыватьНДС, СуммаВключаетНДС, РегистрироватьЦеныПоставщика"); КонецЕсли; КонецЕсли; мВалютаРегламентированногоУчета = УниверсальныеМеханизмыТонкийКлиент.глЗначениеПеременнойНаСервере("ВалютаРегламентированногоУчета"); // Вызов общей формы "Цены и валюта" и пересчеты по результатам выбора в этой форме. СтруктураЗначений = Ценообразование.ОткрытьФормуЦеныИВалюта(ЭтотОбъект, СтруктураРеквизитовДокумента, мВалютаРегламентированногоУчета, СтруктураЗапрещенных, "Товары"); Если СтруктураЗначений <> Неопределено Тогда ЗаполнениеДокументов.ИзменитьЦеныВалюту(ЭтотОбъект, СпособЗаполненияЦен, СтруктураРеквизитовДокумента, СтруктураЗапрещенных, "Товары", мВалютаРегламентированногоУчета, , СтруктураЗначений); КонецЕсли; УстановитьВидимость(); КонецПроцедуры У меня в управляемой открывается так: &НаСервере Функция ДокументОбъектВЗначениеНаСервере() возврат РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.ПоступлениеТоваровУслуг")); КонецФункции // Процедура вызывается при нажатии кнопки "ЦеныВалюта" командной панели // табличного поля "Товары", вызывает сервисный механизм для изменения // общих для всей табличной части "Товары" реквизитов - таких, например, // как тип цен, валюта и т. д. // &НаКлиенте Процедура ДействиеЦеныВалюта(Команда) СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов; ДокументОбъект1 = ДокументОбъектВЗначениеНаСервере(); // Задать набор реквизитов для СтруктураРеквизитовДокумента = Ценообразование.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(ДокументОбъект1); СтруктураРеквизитовДокумента.Вставить("НДСВключенВСтоимость"); СтруктураЗапрещенных = Неопределено; Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку ИЛИ ЭтаФорма.Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия Тогда СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость"); Иначе СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость, УчитыватьНДС, СуммаВключаетНДС, РегистрироватьЦеныПоставщика"); КонецЕсли; КонецЕсли; мВалютаРегламентированногоУчета = УниверсальныеМеханизмыТонкийКлиент.глЗначениеПеременнойНаСервере("ВалютаРегламентированногоУчета"); // Вызов общей формы "Цены и валюта" и пересчеты по результатам выбора в этой форме. СтруктураЗначений = Ценообразование.ОткрытьФормуЦеныИВалюта(ДокументОбъект1, СтруктураРеквизитовДокумента, мВалютаРегламентированногоУчета, СтруктураЗапрещенных, "Товары"); Если СтруктураЗначений <> Неопределено Тогда ЗаполнениеДокументов.ИзменитьЦеныВалюту(ДокументОбъект1, СпособЗаполненияЦен, СтруктураРеквизитовДокумента, СтруктураЗапрещенных, "Товары", мВалютаРегламентированногоУчета, , СтруктураЗначений); КонецЕсли; УстановитьВидимость(); КонецПроцедуры Скрин формы: https://b.radikal.ru/b40/1902/b3/e6227c1e6b0d.jpg Но если меняю значение "Сумма ВКЛ ДНС" ничего не происходит с номенклатурой Подскажите как передать ДокументОбъект. Спасибо |
|||
1
DrWatson
19.02.19
✎
14:20
|
(0) Я так понимаю должно выдавать ошибку в момент возврата из функции ДокументОбъектВЗначениеНаСервере()?
|
|||
2
ParamPamPam
19.02.19
✎
15:08
|
(1) Совсем нет, ошибок не возникает.
Если указывать вместо ДокументОбъект1 другие значения: Объект, Объект.Ссылка, ЭтаФорма и пр. ругается что невозможно преобразовать метаданные |
|||
3
singlych
19.02.19
✎
15:59
|
навскидку, не размениваясь на оптимизацию серверных вызовов, я бы так сделал
&НаКлиенте Процедура ДействиеЦеныВалюта(Команда) СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов; // Задать набор реквизитов для редактирования. СтруктураРеквизитовДокумента = ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(); СтруктураЗапрещенных = ПолучитьСтруктуруЗапрещенных(); мВалютаРегламентированногоУчета = УниверсальныеМеханизмыТонкийКлиент.глЗначениеПеременнойНаСервере("ВалютаРегламентированногоУчета"); // Вызов общей формы "Цены и валюта" и пересчеты по результатам выбора в этой форме. СтруктураЗначений = Ценообразование.ОткрытьФормуЦеныИВалюта(ЭтотОбъект, СтруктураРеквизитовДокумента, мВалютаРегламентированногоУчета, СтруктураЗапрещенных, "Товары"); Если СтруктураЗначений <> Неопределено Тогда ИзменитьЦеныИВалюту(СпособЗаполненияЦен, СтруктураРеквизитовДокумента, СтруктураЗапрещенных, СтруктураЗначений, мВалютаРегламентированногоУчета); КонецЕсли; УстановитьВидимость(); КонецПроцедуры &НаСервере Функция ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования() ОбъектФормы = РеквизитФормыВЗначение("Объект"); СтруктураРеквизитовДокумента = Ценообразование.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(ОбъектФормы); СтруктураРеквизитовДокумента.Вставить("НДСВключенВСтоимость"); Возврат СтруктураРеквизитовДокумента; КонецФункции &НаСервере Функция ПолучитьСтруктуруЗапрещенных() СтруктураЗапрещенных = Неопределено; Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку ИЛИ Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия Тогда СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость"); Иначе СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость, УчитыватьНДС, СуммаВключаетНДС, РегистрироватьЦеныПоставщика"); КонецЕсли; КонецЕсли; Возврат СтруктураЗапрещенных; КонецФункции &НаСервере Процедура ИзменитьЦеныВалюту(СпособЗаполненияЦен, СтруктураРеквизитовДокумента, СтруктураЗапрещенных, СтруктураЗначений, мВалютаРегламентированногоУчета) ОбъектФормы = РеквизитФормыВЗначение("Объект"); ЗаполнениеДокументов.ИзменитьЦеныВалюту(ОбъектФормы, СпособЗаполненияЦен, СтруктураРеквизитовДокумента, СтруктураЗапрещенных, "Товары", мВалютаРегламентированногоУчета, , СтруктураЗначений); ЗначениеВРеквизитФормы(ОбъектФормы, "Объект"); КонецПроцедуры |
|||
4
singlych
19.02.19
✎
16:02
|
(3) а, ну и СпособЗаполненияЦен тоже на сервере надо получать.
Лучше, конечно, все за один вызов. |
|||
5
singlych
19.02.19
✎
16:09
|
типа того
&НаКлиенте Процедура ДействиеЦеныВалюта(Команда) Контекст = КонтекстИзмененияЦен(); // Вызов общей формы "Цены и валюта" и пересчеты по результатам выбора в этой форме. СтруктураЗначений = Ценообразование.ОткрытьФормуЦеныИВалюта(ЭтотОбъект, Контекст.СтруктураРеквизитовДокумента, Контекст.ВалютаРегламентированногоУчета, Контекст.СтруктураЗапрещенных, Контекст.ИмяТабличнойЧасти); Если СтруктураЗначений <> Неопределено Тогда ИзменитьЦеныИВалюту(Контекст, СтруктураЗначений); КонецЕсли; УстановитьВидимость(); КонецПроцедуры &НаСервере Функция КонтекстИзмененияЦен() СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов; ОбъектФормы = РеквизитФормыВЗначение("Объект"); СтруктураРеквизитовДокумента = Ценообразование.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(ОбъектФормы); СтруктураРеквизитовДокумента.Вставить("НДСВключенВСтоимость"); СтруктураЗапрещенных = Неопределено; Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку ИЛИ Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда Если ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия Тогда СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость"); Иначе СтруктураЗапрещенных = Новый Структура("НДСВключенВСтоимость, УчитыватьНДС, СуммаВключаетНДС, РегистрироватьЦеныПоставщика"); КонецЕсли; КонецЕсли; ВалютаРегламентированногоУчета = УниверсальныеМеханизмыТонкийКлиент.глЗначениеПеременнойНаСервере("ВалютаРегламентированногоУчета"); ИмяТабличнойЧасти = "Товары"; Контекст = Новый Структура; Контекст.Вставить("СпособЗаполненияЦен", СпособЗаполненияЦен); Контекст.Вставить("СтруктураРеквизитовДокумента", СтруктураРеквизитовДокумента); Контекст.Вставить("СтруктураЗапрещенных", СтруктураЗапрещенных); Контекст.Вставить("ВалютаРегламентированногоУчета", мВалютаРегламентированногоУчета); Контекст.Вставить("ИмяТабличнойЧасти", ИмяТабличнойЧасти); Возврат Контекст; КонецФункции &НаСервере Процедура ИзменитьЦеныВалюту(Контекст, СтруктураЗначений) ОбъектФормы = РеквизитФормыВЗначение("Объект"); ЗаполнениеДокументов.ИзменитьЦеныВалюту(ОбъектФормы, Контекст.СпособЗаполненияЦен, Контекст.СтруктураРеквизитовДокумента, Контекст.СтруктураЗапрещенных, Контекст.ИмяТабличнойЧасти, Контекст.ВалютаРегламентированногоУчета, , СтруктураЗначений); ЗначениеВРеквизитФормы(ОбъектФормы, "Объект"); КонецПроцедуры |
|||
6
ParamPamPam
20.02.19
✎
10:25
|
Добавил в конце вызов такой процедуры:
&НаСервере Процедура ДокументОбъектВРеквизитНаСервере(ДокументОбъект) ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); КонецПроцедуры и всё работает) Спасибо всем за ответы |
|||
7
singlych
20.02.19
✎
12:40
|
(6) Это потому что в читерском режиме. В чистом управляемом все поломается.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |