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

Как получить в табличную часть документа табличную часть справочника

Автор lavlan, 06 мар 2023, 20:12

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

lavlan

Есть два справочника и один документ...

УзлыИАгрегаты (1)
Реквизиты
-Наименование

ИзделияВСборе  (2)
Реквизиты
-Наименование
 -НоменклатурныйНомер
Табличная часть
 -УзлыИАгрегатыНаименование (из спр. УзлыИАгрегаты)
 -КоличествоВИзделии

Документ (1)
Реквизиты
 -ИзделиеВСбореНаименование (из спр. ИзделияВСборе)
 -ИзделияВСбореНоменклатурныйНомер (из спр. ИзделияВСборе)
 -ЗаводскойНомер (редактируемое поле)
Табличная часть
 -Наименование (из спр. ИзделияВСборе)
 -КоличествоВИзделии (из спр. ИзделияВСборе)
 -КоличествоПоФакту (числовое поле заполняется ручками)

Возможно ли при выборе ИзделиеВСбореНаименование программно заполнить остальные реквизиты и табличную часть в документе?
З.Ы.
Сильно не пинайте пытаюсь вернуться в ИТ после 15 летнего перерыва...

Максим75

конечно можно и даже нужно.

в событии ПриИзменении реквизита необходимо будет написать запрос (или парочку пакетных запросов), чтобы выбрать реквизиты элемента справочника и реквизиты табличной части элемента справочника.
нет времени писать запрос по Вашим данным, вышлю что-то из своего

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладная.Номер КАК Номер,
| ПриходнаяНакладная.Дата КАК Дата,
| ПриходнаяНакладная.СуммаДокумента КАК СуммаДокумента,
| ПриходнаяНакладная.Поставщик.Наименование КАК Поставщик
|ИЗ
| Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
|ГДЕ
| ПриходнаяНакладная.Ссылка = &СсылкаНаДокумент
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПриходнаяНакладнаяТМЦ.НомерСтроки КАК НомерСтроки,
| ПриходнаяНакладнаяТМЦ.Товар.Наименование КАК Товар,
| ПриходнаяНакладнаяТМЦ.Колво КАК Колво,
| ПриходнаяНакладнаяТМЦ.Цена КАК Цена,
| ПриходнаяНакладнаяТМЦ.Сумма КАК Сумма
|ИЗ
| Документ.ПриходнаяНакладная.ТМЦ КАК ПриходнаяНакладнаяТМЦ
|ГДЕ
| ПриходнаяНакладнаяТМЦ.Ссылка = &СсылкаНаДокумент";

Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();//выполняется пакет запросов
//один по шапке документа
//второй по табличной части
//получаем массив результатов выполнения запроса
//обращение к каждому результату как к элементы массива.

ВыборкаШапка = МассивРезультатовЗапроса[0].Выбрать();//выборка по первому элементу массива, т.е. по шапке документа
ВыборкаТовары = МассивРезультатовЗапроса[1].Выбрать();//выборка по второму элементу массива, т.е. по табличной части товары


делать примерно так же, заменить документ на справочник и вперед.
получить две выборки, обойти каждую и заполнить необходимые реквизиты.

lavlan

Максим75,
Я наверное где то накосячил тк при проверке выскочило вот это
{Документ.ПриходВВСТ.Форма.ФормаДокумента.Форма(5,17)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)

&НаКлиенте
Процедура ИзделиеВВСТПриИзменении(Элемент)
    // Вставить содержимое обработчика.
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СправочникВВСТвСборе.НоменклатурныйНомер КАК НоменклатурныйНомер
        //|    ПриходнаяНакладная.Дата КАК Дата,
        //|    ПриходнаяНакладная.СуммаДокумента КАК СуммаДокумента,
        //|    ПриходнаяНакладная.Поставщик.Наименование КАК Поставщик
        |ИЗ
        |    Справочник.СправочникВВСТвСборе КАК СправочникВВСТвСборе
        |ГДЕ
        |    СправочникВВСТвСборе.Ссылка = &СсылкаНаСправочник
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    СправочникВВСТвСборе.НомерСтроки КАК НомерСтроки,
        |    СправочникВВСТвСборе.СоставнаяЧасть КАК УзлыИАгрегатыНаименование,
        |    СправочникВВСТвСборе.КоличествоВИзделии КАК УзлыИАгрегатыКоличествоВИзделии
        //|    ПриходнаяНакладнаяТМЦ.Цена КАК Цена,
        //|    ПриходнаяНакладнаяТМЦ.Сумма КАК Сумма
        |ИЗ
        |    Справочник.СправочникВВСТвСборе.УзлыИАгрегаты КАК СправочникВВСТвСборе
        |ГДЕ
        |    СправочникВВСТвСборе.Ссылка = &СсылкаНаСправочник";
   
    Запрос.УстановитьПараметр("СсылкаНаСправочник", СсылкаНаСправочник);
   
    МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();
    //выполняется пакет запросов
    //один по шапке документа
    //второй по табличной части
    //получаем массив результатов выполнения запроса
    //обращение к каждому результату как к элементы массива.
   
    ВыборкаШапка = МассивРезультатовЗапроса[0].Выбрать();//выборка по первому элементу массива, т.е. по шапке документа
    ВыборкаТовары = МассивРезультатовЗапроса[1].Выбрать();//выборка по второму элементу массива, т.е. по табличной части товары
КонецПроцедуры

Конфигурация пишется с нуля...
в 7.7 все как то ни так было...

Максим75

lavlan, Запрос доступен на толстом клиенте, на сервере.
Вы скорее всего на тонком запускаетесь.

lavlan

сделал так...

&НаСервере

Процедура ИзделиеВВСТПриИзмененииНаСервере()
Объект.УзлыИАгрегаты.Очистить();
Объект.ЗаводскойНомерВВСТ="";
    Если Объект.ИзделиеВВСТ <> Справочники.СправочникВВСТвСборе.ПустаяСсылка() Тогда

Для Каждого ЭлементТабличнаяЧасть Из Объект.ИзделиеВВСТ.УзлыИАгрегаты Цикл
НовСтр = Объект.УзлыИАгрегаты.Добавить();
НовСтр.УзлыИАгрегатыНаименование = ЭлементТабличнаяЧасть.УзлыИАгрегаты;
НовСтр.УзлыИАгрегатыКоличествоВИзделии = ЭлементТабличнаяЧасть.УзлыИАгрегатыКоличествоВИзделии;
НовСтр.УзлыИАгрегатыВысвобождается = ЭлементТабличнаяЧасть.УзлыИАгрегатыВысвобождается;


//НовСтр.УзлыИАгрегатыНаименование = ЭлемТабЧасть.СоставнаяЧасть;

КонецЦикла;
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ИзделиеВВСТПриИзменении(Элемент)
ИзделиеВВСТПриИзмененииНаСервере();
КонецПроцедуры


&НаСервере
Процедура ДокументОснованиеПриИзмененииНаСервере()
Объект.ДокументНомер = "";
Объект.ДокументДата = "";
КонецПроцедуры


&НаКлиенте
Процедура ДокументОснованиеПриИзменении(Элемент)
ДокументОснованиеПриИзмененииНаСервере();
КонецПроцедуры


Максим75

lavlan, ну и отлично.
объектный метод тоже работает, все кто с 7-ки приходит, часто его пользуют, там это было проще.
с 8-кой кому как, кто запросы обожает, кто объектный, дело вкуса.

Теги:

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

Рейтинг@Mail.ru

Поиск