Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 июл 2022, 03:55

Запутался, не могу вызвать клиентскую процедуру из серверной

Автор Сергей Поляков, 24 ноя 2017, 16:28

0 Пользователей и 1 гость просматривают эту тему.

Сергей Поляков

Управляемое приложение, БП 3.0
Я создаю внешнюю обработку, которая должна для выбранных контрагентов создать документы АктСверки, а затем отправить их по электронному адресу.
1. На форме нажимаю кнопку "Отправить", после чего срабатывает обработчик команды (на клиенте)
2. из него я вызываю процедуру ОтправитьНаСервере , это уже серверная процедура, где я в цикле перебирая ТЧ контрагентов создаю документ акт сверки (1 документ), заполняю его нужными значениями
3. после того как создался документ я хочу этот документ отправить по электронной почте, для этого есть отдельная процедура (она исполняется на клиенте)
и вызваться из сервера она естественно не может.
4. после отправки по почте, нужно возвращаться в цикл перебора по контрагентам и заполнять текущий документ новыми значениями, и т.д.
5. после выполнения всех отправок, документ удалить.
я искал подобные обработки, но там все происходит так: например отправить счета, обработка заполняет счета в табличную часть, а далее все действия происходят на клиенте, отправляются по почте.
А у меня документов "АктСверки" в базе еще нет, я их непосредственно в процессе исполнения обработки создаю, причем именно создаю один документ (чтобы не плодить их в базе много). ПОэтому мне нужно получая ссылку на созданный документ его тут же отправлять, затем заполнять этот же документ новыми значениями и пять отправлять и т.д. в цикле.
Подскажите как можно решить данную ситуацию? или может алгоритм действий подскажите, как по другому сделать?
я не хочу создавать документы АктСверки, они в базе не нужны, нужно только их создать, отправить и удалить (причем желательно чтобы все происходило в рамках одного документа).
спасибо.

oleg-x

Ну возмите любую обработку и допишите что после выполнения найдет все документы и непосредственно удалит.

Выборка = Документы.АктСверки.Выбрать();
Пока Выборка.Следующий() Цикл
    Выборка.Ссылка.ПолучитьОбъект().Удалить();
КонецЦикла;

Или сделайте права на не посредственное удаление и руками удалите.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Сергей Поляков

Спасибо за ответ. Ну я с точки зрения того, чтобы не создавать документы в базе и не удалять их, ведь это не есть хорошо для базы данных.
будет скажем 200 клиентов, и система каждый раз будет создавать 200 и тут же удалять.
в общем я разобрался, оказывается я передавал не ссылку, а объект на клиента, Документ.Ссылка; все заработало ))

oleg-x

Ничего страшного в таком количестве документов нет.
Тем более в создание и удаление, только проводить периодически сжатие базы и все го то.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск