Имя: Пароль:
1C
1С v8
Выгрузка из табличной части в документы (1С)
0 FuruDesu
 
26.09.17
10:45
В 1С новичок, если подскажите, буду рад.
Есть форма, на которой расположена табличная часть (Склад, Товар, Количество Цена) с заполняющимися данными по кнопке. Необходимо по нажатию другой кнопки создать 3 документа, которые заполнятся данными взятыми из этой таблицы. За основу документа взял "Поступление товаров и услуг". Насколько понимаю, всё должно делаться через запрос, но как именно, пока слабо себе представляю.
P.S. Если похожая тема уже была, то извиняюсь.

Код:
&НаКлиенте
Процедура Заполнить(Команда)
    
    ЗаполнитьНаСервере();
    
КонецПроцедуры

&НаСервере    
Процедура ЗаполнитьНаСервере()

    ТаблицаТоваров = Новый ТаблицаЗначений;
    
    ТаблицаТоваров.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
    ТаблицаТоваров.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    ТаблицаТоваров.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    ТаблицаТоваров.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
    
    НоваяСтрока = ТаблицаТоваров.Добавить();
    НоваяСтрока.Склад= Справочники.Склады.НайтиПоНаименованию("Склад1");
    НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар1");
    
    НоваяСтрока = ТаблицаТоваров.Добавить();
    НоваяСтрока.Склад = Справочники.Склады.НайтиПоНаименованию("Склад1");
    НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар2");
    
    НоваяСтрока = ТаблицаТоваров.Добавить();
    НоваяСтрока.Склад = Справочники.Склады.НайтиПоНаименованию("Склад2");
    НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар1");
    
    НоваяСтрока = ТаблицаТоваров.Добавить();
    НоваяСтрока.Склад = Справочники.Склады.НайтиПоНаименованию("Склад3");
    НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар1");
    
    НоваяСтрока = ТаблицаТоваров.Добавить();
    НоваяСтрока.Склад = Справочники.Склады.НайтиПоНаименованию("Склад1");
    НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар3");        
    
    НоваяСтрока = ТаблицаТоваров.Добавить();
    НоваяСтрока.Склад = Справочники.Склады.НайтиПоНаименованию("Склад3");
    НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар2");
        
    Для каждого НоваяСтрока из ТаблицаТоваров Цикл
        НоваяСтрока.Количество = 1;
        НоваяСтрока.Цена= 50;
    КонецЦикла;  
    
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    ДокОбъект.Товары.Загрузить(ТаблицаТоваров);
    ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
    
КонецПроцедуры;
1 Numerus Mikhail
 
26.09.17
10:48
Это код убогого заполнения табличной части.
А где хотя бы наброски кода для создания документов?
2 FuruDesu
 
26.09.17
10:55
(1) Не отрицаю, что убогого, я ведь сказал, что далеко не профан. Прежде чем делать наброски, мне хотя бы надо в теории понять, что требуется для этого. Пустой документ я и так сделать смогу, мне непонятно, как передать данный из таблицы в реквизиты.
3 igorPetrov
 
26.09.17
10:57
(2) Зачем это нужно?
4 h-sp
 
26.09.17
10:59
(2) ну так же

   Для каждого Строка из ТаблицаТоваров Цикл
        НоваяСтрока = НовыйДок.Товары.Добавить();
        НоваяСтрока.Количество = Строка.Количество;
        НоваяСтрока.Цена= 50;
    КонецЦикла;
5 Numerus Mikhail
 
26.09.17
11:02
(2) Документ создается так:

НовыйДок = Документы.ТвойДокумент.СоздатьОбъект();

Реквизиты заполняются так:

НовыйДок.ТвойРеквизит = ЗначениеРеквизита;


Цикл ты умеешь делать. Что еще непонятного?
6 FIXXXL
 
26.09.17
11:05
(0) у тебя перед заполнением данные в таблице или ТЧ в наличии уже? зачем тогда цирк с ТаблицаТоваров = Новый ТаблицаЗначений; ?

Создавай нужный документ, в его ТЧ добавляй строки и заполняй значения в этих строках