|
Программное открытие формы. Упр. формы. | ☑ | ||
---|---|---|---|---|
0
unknown181538
25.03.13
✎
06:04
|
"Умельцы" из 1С сделали, что документ "Установка цен" при вводе на основании поступления заполняется в процедуре ПриСозданииНаСервере();
Мне же нужно ввести обработкой установку цен на основании множества поступлений. Получается, что мне нужно получить форму документа, как бы вводимого на основании, и выполнить запись в этой форме. Пытаюсь получитьФорму на сервере, но не понятно, как передать туда в параметр документ основание. Помогите советом. |
|||
1
Wobland
25.03.13
✎
06:06
|
делать то, что в ПриСозданииНаСервере, без формы не предлагать?
|
|||
2
Cube
25.03.13
✎
06:41
|
(0) "заполняется в процедуре ПриСозданииНаСервере()" - сможешь сделать иначе создание документа, его заполнение и открытие его формы БЕЗ ЗАПИСИ В ИБ - получишь медаль...
|
|||
3
el-gamberro
25.03.13
✎
07:43
|
НЕльзя получать форму на сервере.
|
|||
4
el-gamberro
25.03.13
✎
07:44
|
(2) В 8.2 запросто
|
|||
5
cw014
25.03.13
✎
07:54
|
А чем тебе "обработкаЗаполнения" не нравится?
|
|||
6
el-gamberro
25.03.13
✎
07:56
|
(5) наверное код типовой менять не хочет
|
|||
7
Cube
25.03.13
✎
08:01
|
(4) До 8.2 УФ и не было. Ну, ежели "запросто", давай, блесни...
|
|||
8
el-gamberro
25.03.13
✎
08:11
|
(7) Пишешь что нужно в реквизиты формы и все.
|
|||
9
Cube
25.03.13
✎
08:30
|
(8) Ясно, теоретик... :)
|
|||
10
DosBot
25.03.13
✎
08:34
|
(0) подписка на событие "ОбработкаЗаполнения" и ОткрытьФорму(<ПутьКФорме>, СтруктураЗаполнения), где в структуре заполнения указывать ДокументОснование. не?
|
|||
11
DosBot
25.03.13
✎
08:42
|
+(10) при ОткрытьФорму процедура ОработкаЗаполнения как бы выполняется ;)
|
|||
12
el-gamberro
25.03.13
✎
08:56
|
(9) Сам ты теоретик по видимому.
Вот простой пример: &НаСервереБезКонтекста Функция ПолучитьСтруктуруСоответ() струк = Новый Структура("Важность",Перечисления.ВажностьЗаявки.Несрочно); Возврат струк; КонецФункции &НаКлиенте Процедура СоздатьДок(Команда) ФормаДок = ПолучитьФорму("Документ.Заявка.ФормаОбъекта"); струк = ПолучитьСтруктуруСоответ(); ФормаДок.Открыть(); ФормаДок.Объект.Важность = струк.Важность; КонецПроцедуры |
|||
13
Cube
25.03.13
✎
09:29
|
(12) Хм, что-то я протупил. Была какая-то загвоздка, точно помню....
|
|||
14
unknown181538
26.03.13
✎
05:04
|
(1) Очень там заморочено с вызовом кучи процедур и т.п...
(5) В ней нету заполнения - в 1с дятлы сидят. (12) ПриСозданииНаСервере() ничего не заполнит, т.к. документОснование еще не заполнен... хотя если поменять руками строки... надо попробовать. |
|||
15
el-gamberro
26.03.13
✎
05:22
|
(14) Надо задачу более расширенно посмотреть. Что требуется то в итоге? Получить форму документа заполненного, но без записи в БД? Или просто цены установить?
|
|||
16
unknown181538
26.03.13
✎
23:00
|
(15) По сути нужно просто заполнитьд документ на основании, но заполнение в этой гребаной ут не в ОбработкеЗаполнения происходит, а в ПриСозданииНаСервере().
И алгоритмы показались мне не простыми, т.к. типы цен разные. И возможно даже заполнение с помощью схемы компоновки... |
|||
17
unknown181538
26.03.13
✎
23:11
|
(12) ПриСозданииНаСервере похоже вызывается при получении формы. Т.е. документ основание будто бы надо передать параметрами в ПолучитьФорму(). Но я не вижу такой возможности.
|
|||
18
unknown181538
26.03.13
✎
23:25
|
Дело еще хуже: сначала надо обработку заполнения вызвать, потом форму получить, да еще не сохранив документ до этого...
|
|||
19
unknown181538
27.03.13
✎
03:51
|
Короче добавил реквизит в форму, подправил ее, чтобы заполняла не только не записанные:
&НаСервере Функция ПолучитьМассивДокументов() масс = новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка, | ПоступлениеТоваровУслуг.Дата, | УстановкаЦенНоменклатуры.Ссылка КАК Ссылка1 |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры | ПО (УстановкаЦенНоменклатуры.ДокументОснование = ПоступлениеТоваровУслуг.Ссылка) |ГДЕ | УстановкаЦенНоменклатуры.Ссылка ЕСТЬ NULL | //И ПоступлениеТоваровУслуг.Дата >= &НачДата | И ПоступлениеТоваровУслуг.Дата <= &КонДата"; Запрос.УстановитьПараметр("КонДата", '20130101'); Запрос.УстановитьПараметр("НачДата", '20130101'); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл //Масс.Добавить(Выборка.Ссылка); //Продолжить; Об = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); Об.ДокументОснование = Выборка.Ссылка; Об.Заполнить(Выборка.Ссылка); Об.Дата = Выборка.Дата; Об.Записать(); Масс.Добавить(Об.Ссылка); КонецЦикла; Возврат масс; КонецФункции &НаКлиенте Процедура ВыполнитьОбработку(Команда) МассивДокументов = ПолучитьМассивДокументов(); Для Каждого ДокУ Из МассивДокументов Цикл СтруУ = Новый Структура("Ключ",ДокУ); //Пар = Новый Структура("ДокументОснование",ДокУ); Фрм = ПолучитьФорму("Документ.УстановкаЦенНоменклатуры.ФормаОбъекта",СтруУ,,);//ДокУ.ПолучитьФорму(); фрм.ЭтоПрограммноеЗаполнение = Истина; Отказ = Ложь; СтандартнаяОбработка= Истина; Фрм.ПриСозданииНаСервере(Отказ,СтандартнаяОбработка); Фрм.Записать(); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(""+ДокУ); КонецЦикла; Никому не советую идти этим путем. |
|||
20
el-gamberro
27.03.13
✎
05:19
|
(16) если нужно создать документ, заполнить его, но не обязательно показывать пользователю, то нет смысла заморачиваться с получением формы, а значит и ПриСозданииНаСервере() и прочим
|
|||
21
unknown181538
28.03.13
✎
01:34
|
(20) т.е. нужно заморочиться с тем, чтобы переписать все заполнение?) Там одним простым циклом неотделаться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |