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

Указать документ основание из полученных данных

Автор Вадим Ф, 01 авг 2018, 09:19

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

Вадим Ф

Добрый день, ребята. Никак не могу решить эту задачу!
Подскажите...
Есть код в реализации товаров и услуг на получение выделенных документов.
    ПолучитьФорму = Документы.ГрузовыеОтправления.ПолучитьФормуСписка("ФормаСписка");
Строки = ПолучитьФорму.ЭлементыФормы.ДокументСписок.ВыделенныеСтроки;

Для Каждого Элемент Из Строки Цикл
Выбранные = Элемент;
КонецЦикла;


Задача: нужно чтобы реализация делалась с нескольких документов.
Тойсть с тех, которые выделенные.
Как указать что, документы основание, это именно эти документы?
Или это не возможно?

LexaK

а вообще у вас этот, приведеный код работает? действительно получаете таким образом список отмеченных документов?

все равно что вы хотите сделать работать не будет, в реквизит ДокументОснования можно записать ссылку только ОДНОГО документа.
для того что вы хотите сделать нужны доработки
вот один из вариантов (возможны и другие) создайте ТабличнуюЧасть Основания, в ней колонку ДокументОснование
в этом случае вы можете создать несколько строчек и записать все документы на основании которых создаете вашу реализацию
если помогло нажмите: Спасибо!

Вадим Ф

Да, работает. Если вас что-то смущает, пишите. Буду благодарен.

Спасибо, попробую.

AIFrame

Цитата: Вадим Ф от 01 авг 2018, 11:49Да, работает. Если вас что-то смущает
Врешь ведь и не краснеешь. Какие могут быть выделенные строки у формы, которая вообще не открыта?
ПолучитьФорму = Документы.ГрузовыеОтправления.ПолучитьФормуСписка("ФормаСписка");
Ну получил ты форму списка. А зачем? Она не открыта. Нет там выделенных строк.

Вот если бы ты на форму списка добавил кнопку и в коде кнопки написал:
Строки = ЭлементыФормы.ДокументСписок.ВыделенныеСтроки;
Оно бы еще может и взлетело.

Цитата: LexaK от 01 авг 2018, 10:32все равно что вы хотите сделать работать не будет, в реквизит ДокументОснования можно записать ссылку только ОДНОГО документа.
для того что вы хотите сделать нужны доработки
вот один из вариантов (возможны и другие) создайте ТабличнуюЧасть Основания, в ней колонку ДокументОснование
в этом случае вы можете создать несколько строчек и записать все документы на основании которых создаете вашу реализацию
В двух местах наврал.
1 - РТУ может создаваться на основании нескольких документов. Любой документ может создаваться на основании нескольких. Наличие реквизита для хранения ссылки "основания" у конечного документа вообще не нужно. Оно нужно для критериев отбора -> структуры подчиненности. Если док научен в процедуре ОбработкаЗаполнения обрабатывать из параметров заполнения массив документов - ничто не мешает создавать из нескольких.

2 - Делать отдельную ТЧ для перечисления оснований не надо, хватит реквизита в Товарах у РТУ. И то, нужно это только для порядка.

Итого, чтобы замутить желаемое, нужно:
1. Получить список выделенных строк на открытой форме. Именно на открытой, а не какой-то абстрактной форме из конфигурации.
МассивСтрок = Новый Массив;
Для Каждого СтрокаВыделения ИЗ ЭлементыФормы.Список.ВыделенныеСтроки Цикл
    МассивСтрок.Добавить(СтрокаВыделения.Ссылка);
КонецЦикла;


2. Передадим этот массив при создании нового документа
РТУ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
РТУ.Заполнить(МассивСтрок);
РТУ.ПолучитьФорму().Открыть();


3. Научим РТУ обрабатывать массив при заполнении, если она еще этого не умеет.
В модуле объекта РТУ ищем или добавляем
Процедура ОбработкаЗаполнения(Основание)
    Если ТипЗнч(Основание) = Тип("Массив") Тогда
        // Описываем логику заполнения с перебором строк массива
    КонецЕсли;
КонецПроцедуры




Вадим Ф


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

Рейтинг@Mail.ru

Поиск