Имя: Пароль:
1C
 
Как обойти клиент-сервер при обработке и открытии файла?
0 НоваяВолна
 
23.11.22
14:13
Проблема такая. Делается обработка, В которой пользователь заполняет табличную часть номенклатурой, количеством, ценой. И выбирает документ (документы разного вида, но выбранный - один) в табличную часть которого надо дописать строки из ТЧ обработки.
Последнюю операцию я делаю по кнопке "Добавить в документ" Соответственно, она срабатывает на Клиенте и вызывает Сервер для операций с документом (добавление записей). А вот как вернутся на Клиент и открыть форму вновь заполненного документа.... туплю.
1 vicof
 
23.11.22
14:15
При чем тут файл?
Ты с клиента вызываешь свое заполнение. Вот после заполнения и открывай.
2 НоваяВолна
 
23.11.22
14:16
(0) обработка внешняя и ТЧ обработки в основном заполняется копипастом из Excel, т.е. заполнение не из базы
3 Ryzeman
 
23.11.22
14:18
(2) ты не хочешь записывать документ? Заполняешь новый объект и хочешь его показать?
4 Ryzeman
 
23.11.22
14:18
Иначе твой вопрос вообще не имеет смысла
5 Kassern
 
23.11.22
14:19
(0) легко и просто
Вы же кнопку на клиенте запускаете, там же и открывайте форму заполненного документа
6 mikecool
 
23.11.22
14:20
ОткрытьФорму + ПараметрыЗаполнения
7 Kassern
 
23.11.22
14:21
" А вот как вернутся на Клиент" - это же азы)
&НаКлиенте
Процедура НажатьПипку (Элемент)
Результат=ПоработатьНаСервере();
//вот и вернулись на клиент, так же можно через оповещение продолжить работу.
КонецПроцедуры

&НаСервере
Функция ПоработатьНаСервере()
Возврат ...
КонецФункции
8 mikecool
 
23.11.22
14:24
(7) зачем, если есть (6) ?
9 НоваяВолна
 
23.11.22
14:25
(3) Документ сам по себе уже создан и записан. Надо дописать и показать без записи...
(5) (7) по кнопке, которая конечно срабатывает на Клиенте, идет стандартный вызов Серверной процедуры. Он мне нужен чтобы взять документ и добавить строки..
.... и вот документ готов... но он На Сервере . Функций с Возвратом нет.
10 Kassern
 
23.11.22
14:26
(9) А дописать в этой кнопке после обращения на сервер открытие документа никак?
11 Kassern
 
23.11.22
14:27
(8) человек спросил как с сервера вернутся на клиент, я и написал как)
12 НоваяВолна
 
23.11.22
14:27
(10) открывать то надо Форму, а ее на Сервере нет
13 Kassern
 
23.11.22
14:29
(12) Услышьте меня
У вас есть в обработке кнопка с определенным событием на клиенте
В этом событии (процедуре) вы вызываете сервер и что-то там заполняете в ИБ. Что мешает в ЭТОЙ процедуре, после серверного вызова дописать открытие формы?
14 НоваяВолна
 
23.11.22
14:29
(11) про Функцию и Возврат я тоже думал, но у меня по кнопке надо выполнить заполнение документа, а это стандартная Серверная Процедура
15 Kassern
 
23.11.22
14:30
&НаКлиенте
Процедура НажатьПипку (Элемент)

ЗаполнитьДокНаСервере(ДокСсылка);

ПоказатьЗначение(,ДокСсылка);

КонецПроцедуры
16 Kassern
 
23.11.22
14:31
(14) Что мешает сделать на подобие (15) ?
17 mikecool
 
23.11.22
14:32
(14) посмотри еще раз на (6)
18 Kassern
 
23.11.22
14:32
Ну или ОткрытьЗначение(ТовДокСсылкаар) - не помню уже как там точно
19 Ryzeman
 
23.11.22
14:32
(9) То, что ты хочешь нельзя сделать так, как ты хочешь. Открывай форму уже существующего с параметрами открытия как тебе написали в (6), все свои данные запихивай в эти параметры, а уже на форме перезаполняй.

(13) (16) Да он записывать не хочет же. Ссылка вернёт не то, что  он хочет
20 Kassern
 
23.11.22
14:32
(19) я думал, что он на сервере записывает данные в документ и хочет уже записанный открыть
21 Ryzeman
 
23.11.22
14:33
(18) Ему не объект нужен на самом деле, а форма в которой новые данные введены.
22 RomanYS
 
23.11.22
14:34
(6) Это идеальный путь, но он может требовать обработку этих параметров на стороне формы, что не всегда возможно.
23 lodger
 
23.11.22
14:34
(13) зачем тыкать ИБ, если человек мог ошибиться?
я бы сделал так:
есть обработка
- на обработке ТЧ, колонки, свои заполняшки
- на обработке поле выбора документа
- в обработке кнопка "закинуть строки В документ"
- - по кнопке делается структура параметров с таблицей значений из ТЧ обормотки.
есть неопределенное число документов
- в большой конфе ПриСознанииНаСервере всегда есть Переопределяемый со входящим параметром
- - в это месте Взводим Модифицированность = истина, и в ТЧ объекта закидываем строки из ТЗ из параметра открытия формы.
24 Kassern
 
23.11.22
14:37
(23) Не прочитал (9) "Надо дописать и показать без записи... "
25 Ryzeman
 
23.11.22
14:39
(15) Кстати, есть прикольный, хоть и кривой приём - использовать ОткрытьФорму(). Там можно указать владельца, и тогда в новой форме пытаться его получить и содрать дранные с открытой формы-владельца. Без параметров. С одной стороные решение из разряда "удаляем гланды через задницу", но в редких сценариях может пригодиться :) Через "ПоказатьЗначение" так не выйдет
26 RomanYS
 
23.11.22
14:44
(25) А что мешает править данные открытой формы на клиенте? Можно обойтись без правки открываемой формы
27 Kassern
 
23.11.22
14:47
Как вариант, можно таким макаром сделать:

&НаКлиенте
Процедура ЗаполнитьИОткрыть(Команда)

    Форма = ПолучитьФорму("Документ.НужныйДок.ФормаОбъекта",Новый Структура("Ключ", ДокСсылка));
    ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
    ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
    Форма.Открыть();

КонецПроцедуры


&НаСервере
Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док=ДокСсылка.ПолучитьОбъект();
//Заполняем то, что нужно
ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции
28 Kassern
 
23.11.22
14:48
(26) Например много обращений на сервер, для получения данных из ИБ. Зачем по 100 раз сервер дергать, когда можно 1 раз вызвать и там все заполнить?
29 Kassern
 
23.11.22
14:51
(25) По просьбам трудящихся -> (27)  =)