#0
by Aleksey
Переписываю обработку одну из БП 2.0 на 3.0. Суть обработки создания приходных/расходных документов, застрял на таком моменте как в случае ошибки нужно открыть форму документа интерактивно провести его и вернуться дальше на сервер и продолжить работу Нужны идеи как это сделать.
#1
by shuhard
Суть 3.0 пока свистелки и перделке типа выделить 4 документа мышки и отправить на печать
#2
by MSII
В чем сложность? Серверная функция возвращает ссылку на док, на клиенте получаешь форму документа, открываешь, проводишь, снова запускаешь серверную функцию.
#4
by Web00001
Разбить работу обработки на две части: 1. Формирование списка документов которые будут проведены. 2. Проведение документов. Клиент выполнив первую часть, в цикле начинает Записывать документы, с помощью функции, которая возвращает результат попытки записи. Далее я думаю понятно, открываем модально форму документа, в случае неудачи, ждем ее закрытия, продолжаем работу. Как такой вариант?
#5
by Aleksey
сложность вернутся в то место где нас прервали Там генерируется сразу несколько документов причем результат следующего зависит от того что в ТЧ предыдущего В мое случае список формируется на сервере
#7
by Aleksey
нет у меня списка. и не может быть потому часть реквизитов заполняется по данным предыдущего документа Т.е. грубо говоря вызываю серверную процедуру Создать; она делает следующие 1. Формирует список товара за день по которым нужно сформировать приход 2. По каждой фирме из списка указанным пользователем ищет остатки товара согласна этого списка, если что то нашли, тогда формируем расход по этой фирме и приход, где в частности в приходе заполняем номер входящего документа из расходной накладной 3. из того, что по какой-то причине не нашли, формируем приход по выбранному контрагенту для разбирательства 4. Перепроводим расходные документы за этот день И так за каждый день И куда тут делить? при условии что нам нужно где то помнить нашу потребность, которая уменьшается на каждом шаге и список фирм которые уже отработали
#8
by Aleksey
Попытался через структуру передать список документов СписокСозданныхДокументов.Вставить(ДокПрих,ДокПрих.Проведен) Был послан далеко {Форма.ФормаУФ.Форма}: Ошибка при вызове метода контекста (ВыполнитьНаСервере) Результат = ВыполнитьНаСервере(ТекДата); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: ret Форма: Элемент Тип: { по причине: Ошибка преобразования данных XDTO: НачалоСвойства: pair Форма: Элемент Тип: { по причине: Ошибка преобразования данных XDTO: НачалоСвойства: Key Форма: Элемент Тип: { по причине: Ошибка преобразования данных XDTO: НачалоСвойства: { Форма: Элемент Тип: {
#12
by mistеr
>сложность вернутся в то место где нас прервали Во время передачи на клиента может умереть как клиент так и сервер. Поэтому все промежуточное состояние перед передачей нужно записывать в базу. На крайний случай в параметры сеанса.
#13
by Aleksey
вот именно а запись в базу может и не быть, и толстом клиенте это спокойно отлавливалось И как мне открыть форму текДок?
#16
by ptiz
Раз нельзя передать объект, значит, надо передать набор данных, по которому ты сможешь заполнить форму нового объекта на клиенте. С УФ не работал, поэтому точнее не скажу :)
#19
by Aleksey
небыло печали купила баба порося Действительно так получилось как нужно, хотя вроде бы пробовал по разному
#21
by kortun
а зачем ему данные передавать с сервере? ссылка то осталась, можно же проверить потом после открытия модального и еще раз провести
#24
by Aleksey
в оригинале небыло ссылки, пришлось принудительно записывать и молиться что он запишет
#27
by ptiz
Я надеялся, что спецы по УФ подтянутся сюда, подскажут как объект превратить в коллекцию данных, которую можно передать с сервера клиенту, и этими данными заполнить открываемую форму нового. Конечно, можно руками (перебором реквизитов и их запихиванием хоть в структуру), но это слишком тупо.
#28
by kortun
непонятно зачем передавать то? можно попробовать Объект = ВыбДокумент.Скопировать; Не знаю насколько это подойдет в вашем случае.
#29
by kortun
к ну а также можно использовать ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>) тоже поможет
#30
by Aleksey
Нельзя использовать Источник у нас на сервере и это объект в памяти, это даже не ссылка, так как не записан в базе Приемник - это уже на стороне клиента, т.е. то что мы хотим показать пользователю Вопрос, в какой месте мне нужно выполнить команду чтобы заполнить форму на клиенте, данными которые находятся в памяти на сервере
#31
by kortun
сегодня уже не буду экспериментировать. можно попробовать такой вариант. с сервера сделать возврат Объект.Ссылка а на клиенте
#35
by samozvanec
а ты запиши. и ваще цикл идет у тебя - запнулся, выходишь из процедуры, правишь документ, заходишь в процедуру и с него же продолжаешь
#36
by Aleksey
А если по какой то причине не могу записать и хочу дать пользователю ручками провести и понять причину
#37
by alexei366
Мужик решение чтоб тебя устраивало наверно одно, но для этого нужен 1С сервер на SQL. Открываешь форму обработки, жмакаешь кнопку "запустить свою х_у_й_н_ю", там ты вызываешь серверную процедуру тама ты запускаешь фоновое задание со своими параметрами + к этому передаешь этому фоновому заданию индентификатор твоего сеанса. Фоновое задание выполняет твой цикл и когда необходимо вмешательство пользователя записывает во врем хранилище необходимую структуру чтоб клиент понял чо от него надо, и соответственно на клиенте, когда запустил фоновое задание, запускаешь обработчик ожидания и в каждый такт смотриш это врем. хранилище на появление данных. Как-то так может быть, но я не пробывал, ток фантазирую (заодно процент выполнения сможешь передавать).
#39
by ИсчадиеADO
не пробовал. можно ли документ-объект поместить во временное хранилище? Если нет, то можно извратиться, написать унив. процедуры преобразующие данные объекта в структуру, кидать ее в хранилище, а потом заполнять открытый документ уже из этой структуры такой же универс. процедурой :)
#43
by Конфигуратор1с
вообще была задача создать документ, заполнить его и открыть е записывая, стырил с инета код &НаКлиенте
#45
by Конфигуратор1с
По идее, если я правильно понял Вам нужно как то так 1. На клиенте вызываете серверную процедуру где получаете таблицу необходимых документов. 2. Возвращаете таблицу на клиент, где обходом ее получаете форму документа и передаете данные формы на сервер 3. На сервере заполняете форму и проводите; 4. если не получается провести не проводите) 5. На клиенте полученные данные формы проверяете, если не записан объект, то открываете его модально 6. После проведения пользователем продолжаете цикл
#46
by Aleksey
Угу кучу трафика гонять между клиент и сервером ради того что может быть один раз понадобиться интерактивное проведения. Это и есть новая логика УФ? Ну что же круто
#48
by Конфигуратор1с
а новая логика заключается в том, что бы сначала сделать все проверки, найти причины почему не запишется и только потом проводить.
#53
by alexei366
Создай док на сервере, выгрузи его в xml через сериализатор, потом как я описывал в передай на клиент эту батву, тама открой форму дока и обратно через сериализатор и значениевреквизитформы. Наверно сработает.
#54
by Aleksey
а хмл то тут причем? пипец чтобы открыть форму на клиенте еще огород и 2000 строк кода городить?
#55
by Kvestin
С сервера на клиент вы можете вернуть структуру с данными заполнения документа. Конечно, чтобы ее сформировать необходимо будет побегать по реквизитам объекта который вы создали через СоздатьДокумент. В этой структуре могут быть только типы данных, которые можно передавать с клиента на сервер (для упрощения, примитивные типы, СписокЗначений, Структура и ссылки (НЕ ОБЪЕКТЫ!)). Далее вы передаете эту структуры в параметр "ЗначенияЗаполнения" при открытии формы документа. Если все верно сформирована, то платформа сама заполнить поля документа из созданной вами структуры. Список сформированных документов тоже можете передать через список значений с ссылками на эти документы. Извиняюсь, если сумбурно.
#57
by toypaul
теперь ты знаешь чем отличаются программисты на нормальных языках от 1С-ников :) хотя в 1С клиент-серверное взаимодействие реализовано не лучшим способом. особенно удручают ограничения в передаче разных простых объектов (например, ТаблицаЗначений) между сторонами.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- V8 установка на один сервак сервера 1С и сервера SQL
- v8 строка подключения V8.Connect
- Волшебнику и всем кто поможет по теме "v8 УРБД на v8 за четыре шага"
- v8: при v8 = Новый COMОбъект("V8.Application") дает ошибку ..
- v8: Не могу подключиться из V8 к V8
- v8: есть ли аналоги openconf для 1с v8
- v8: Как удалить 1С v8 ?
- v8: Как передать таблицу значений с сервера на клиент
- Как передать управление с сервера на клиента?Можно ли передать Вопрос на клиента
В этой группе 1С
- БП 3.0 Рег задание "Полнотекстовое индексирование"
- v8: Как запросом получить все документы реализации?
- 8.2 Восстановить сохраненное значение реквизита обработки
- v7: Как обойти "Программа завершила работу аварийно"?
- Правила обмена между УТ и БП
- Как программно область макета закрасить в определенный цвет?
- Вывод произвольного текст в табличной части в управляемых формах
- СКД остатки и обороты + реквизиты регистра
- Кодировать строку в последовательность байтов
- Развернуть свернуть Динамический список
- Недоступна кнопка сформировать во внешнем отчете
- Задвоение налогового вычета на одного ребенка у сотрудника.
- "Имеются записи с одинаковыми измерениями" - как найти?
- v7: выборка документов с отбором
- Инвентаризация НЗП УПП РАУЗ - работа с документом
- уф Как передавать значения реквизитов между формами?
- Перенос файлов УПП - Документооборот
- УФ. ТЧ документа. Как получить строки отобранные пользователем?
- Форма недоступна для использования
- Значение пустой строки, тип Справочник