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

Как реализовать заполнение ПКО, оплаты банковской картой и реализации товаров и услуг данными из обработки.

Автор r0ss1, 07 июн 2023, 16:18

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

r0ss1

Доброго времени суток. Начал изучать 1С, дано задание: в обработке вводятся данные (номенклатура, контрагент, склад, организация, сумма, тип оплаты), далее по кнопке заполняются документы (ПКО/ОплатаБанковскойКартой и РеализацияТоваровУслуг). Подскажите, как реализовать заполнение документов на основе данных табличной части и как передавать названия созданных документов в другую табличную часть?
Форма выглядит следующим образом:

LexaK

r0ss1, примерно так (очень примерно) необходимо соблюдать совпадение имен одинаковых реквизитов!  :befhbt:
&НаСервере  
Функция СоздатьДокументы()

мДок = Новый Массив;

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

//////так же создаете и другие документы
//...

Возврат мДок; //возвращаем массив ссылок созданных документов


КонецФункции

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

r0ss1

LexaK, спасибо за ответ, хотелось бы узнать по поводу заполнения второй табличной части со списком созданных документов. Как реализовать её заполнение и сделать так, чтобы документ можно было просмотреть?
Так же хотелось бы узнать о работоспособности следующих строк:
Если Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = "Наличные" Тогда
{ ... }
ИначеЕсли Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = "Банковская карта" Тогда

LexaK

Цитата: r0ss1 от 07 июн 2023, 23:59заполнения второй табличной части со списком созданных документов
после получения массива ссылок созданных документов, их надо вывести в свою часть
примерно так
...
СозданныеДокументы = СоздатьДокументы();
Для каждого лкДок Из СозданныеДокументы Цикл
лкНов = ВашаТЗСДокументами.Добавить();
лкНов.Документ = лкДок; //реквизит Документ, тип: Все документы либо составной по вашей задаче
КонецЦикла;

соответственно затем кликая мышкой вы сможете открыть созданный документа


по поводу кода
Если Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = "Наличные" Тогда
{ ... }
ИначеЕсли Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = "Банковская карта" Тогда
на первый взгляд вообще не рабочий код!
если на форме этой же обработке что-то делаете, и объект является обработкой, то надо через него обращаться к реквизитам
и очень хорошо представлять себе что можно и нужно делать НаКлиенте а что НаСервере.
если помогло нажмите: Спасибо!

fruitella

r0ss1, Можно сделать немного по другому, создать 2 формы:
1) Форма списка - в нем отображать весь список документов
2) Форма документа - эта та форма, где у тебя находятся данные самого документа, который был выбран из данного списка
При выборе строки из текущего списка документов, ты будешь проваливаться в сам документ и видеть все данные чем он был заполнен.

Для передачи названия созданных документов или иных данных, можно обойти весь список циклом и передать их в твой реквизит, например в ТЧ. Затем получить объект и воспользоваться методом записать.
Для сохранения данных между документами и передачи между формами, можно воспользоваться временным хранилищем. Из параметров можно вытянуть ссылку переданного документа, табличную часть или любой другой реквизит. Это производится в процедуре в событиях "ПриСозданииНаСервере".

Я недавно делал похожую задачу, но немного с другими требованиями.

Afinogen

Цитата: r0ss1 от 07 июн 2023, 23:59LexaK, спасибо за ответ, хотелось бы узнать по поводу заполнения второй табличной части со списком созданных документов. Как реализовать её заполнение и сделать так, чтобы документ можно было просмотреть?
Так же хотелось бы узнать о работоспособности следующих строк:
Если Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = "Наличные" Тогда
{ ... }
ИначеЕсли Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = "Банковская карта" Тогда

1. смотрите в конфигураторе какой тип значения у реквизита "ВидОплаты" (вангую  или справочник или скорее всего перечисление)
2. смотрите где вызывается  обработчик (в вашем случае это явно вызов на сервере)
3. если вызываете на сервере то достаточно прописать
Если Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = Перечисления.ВидыОплат.Наличные Тогда
{ ... }

ну или как там перечисление называется

если на клиенте то  можно прописать так

Если Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты = ПредопределенноеЗначение("Перечисление.ВидыОплат.Наличные) Тогда
{ ... }

но конструктция

Обработки.РабочееМестоМенеджераПоПродажам.ВидОплаты

на сервере работать не будет))) тьак что  у вас 1-й вариант






Теги:

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

Рейтинг@Mail.ru

Поиск