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

Обработка заполнения из внешней обработки

Автор Nosferatu112, 16 фев 2023, 14:14

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

Nosferatu112

Есть в Документе в базе УТ11 процедура "обработка заполнения" как из внешней обработки вызвать её если она не экспортная, суть задачи в то что мне нужно создать по кнопке новый док и заполнить определенные реквизиты а остальные реквизиты должны заполниться автоматом, так вот как раз в "обработке заполнения" весь функционал для этого но как вызвать её
&НаСервере
Функция СоздатьДокументНаСервере()

Попытка
НовыйДокумент = Документы.ПриобретениеТоваровУслуг.СоздатьДокумент();


НовыйДокумент.Организация = Объект.Организация;
НовыйДокумент.Партнер = Объект.Поставщик;
НовыйДокумент.Договор = Объект.Договор;
НовыйДокумент.Склад = Объект.Склад;
    НовыйДокумент.Дата = ТекущаяДата();



СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(НовыйДокумент);

СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ОтчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару",  НовыйДокумент.ПоступлениеПоЗаказам, НовыйДокумент.ТребуетсяЗалогЗаТару));

Проверка();

Для каждого Строка из Результат Цикл
СтрокаДок = НовыйДокумент.Товары.Добавить();
СтрокаДок.Номенклатура = Строка.Номенклатура;
СтрокаДок.Количество = Строка.Количество;
СтрокаДок.КоличествоУпаковок = Строка.Количество;
СтрокаДок.КоличествоПоРНПТ = Строка.Количество;
СтрокаДок.Упаковка = Строка.ЕдиницаИзмерения;
СтрокаДок.Цена = Строка.Цена;

ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтрокаДок, СтруктураДействий, Неопределено);
КонецЦикла;

Если ЗначениеЗаполнено(НовыйДокумент.Партнер) Тогда
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Поставщик, НовыйДокумент.Контрагент, Истина);
КонецЕсли;
ПроверитьЗаполнение();
НовыйДокумент.Записать();
Сообщить("Документ успешно создан");
Возврат НовыйДокумент.Ссылка;
   
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
   
КонецФункции

Кусок кода куда я хочу вызвать процедуру

Afinogen

обработка запонения вызывается методом заполнить()

то есть  вы пишете что то типа

НовыйДокумент = Документы.ПриобретениеТоваровУслуг.СоздатьДокумент();
НовыйДокумент.Заполнить(тут если надо  передаете нужные параметры заполнения)


LexaK

Nosferatu112, добавить слово "Экспорт" к процедуре

если помогло нажмите: Спасибо!

Nosferatu112

Afinogen, Действительно, всё очень просто премного благодарен. :)

Nosferatu112

LexaK, Конфа на поддержке в ней нельзя ни чего менять

LexaK

Цитата: Nosferatu112 от 16 фев 2023, 14:25LexaK, Конфа на поддержке в ней нельзя ни чего менять
(если по секрету: Можно)
но если вам не хочется, вот еще вариант

просто скопируйте нужный код из формы в свою внешнюю обработку, и смело обращайтесь к нем!
если помогло нажмите: Спасибо!

Nosferatu112

LexaK, да можно если разрешить изменение без снятия с поддержки и код тоже можно скопипастить но какой смысл если НовыйДокумент.Заполнить(Неопределено); Отрабатывает так же, 1 строка всяко лучше 20

Теги:

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

Рейтинг@Mail.ru

Поиск