Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Створення кнопки на формі табличної частини, на основі якої буде заповнення з іншого документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
bandrah
Потрібно створити кнопку і до неї додати можливість заповнювати табличну частину на основі іншого документа. Документ ПеремещениеТоваров таб часть товары потрібно заповняти на основі даних ОтчетПроизводстваЗаСмену материалы, стандартний механізм не підходить, бо нада окрему кнопку з вибором документа і його заповнити ось код по якому пробую це зробити але не спрацьовує

необходимо зарегистрироваться для просмотра ссылки
&НаСервере
Процедура Заполнить(Команда)
  
    //1_Вариант
    СписокДокументов = ПолучитьСписокДокументовНаСервере();
    ДокументОснование = СписокДокументов.ВыбратьЭлемент();
    Если ДокументОснование <> Неопределено Тогда
        ЗаполнитьПоДокументуНаСервере(ДокументОснование.Значение);
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПоДокументуНаСервере(ДокументОснование)
    //при наличии одноименных реквизитов с одинаковыми типами в обоих документах можно прописать так
    ЗаполнитьЗначенияСвойств(Объект, ДокументОснование);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьСписокДокументовНаСервере()
    Список = Новый СписокЗначений;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОтчетПроизводстваЗаСменуМатериалы.Номенклатура,
                   |    ОтчетПроизводстваЗаСменуМатериалы.Счет,
                   |    ОтчетПроизводстваЗаСменуМатериалы.ЕдиницаИзмерения,
                   |    ОтчетПроизводстваЗаСменуМатериалы.Коэффициент,
                   |    ОтчетПроизводстваЗаСменуМатериалы.Количество,
                   |    ОтчетПроизводстваЗаСменуМатериалы.Ссылка
                   |ИЗ
                   |    Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Список.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
    КонецЦикла;

    Возврат Список;
    
КонецФункции


Можливо хтось має робочий механізм для реалізації такої кнопки чи є ідеї щоб підправити даний?
Макс1С
bandrah @ Сегодня, 15:53 необходимо зарегистрироваться для просмотра ссылки ,
Советую покопать в сторону внешней обработки заполнения ТЧ.
Вот очень хороший пример:
необходимо зарегистрироваться для просмотра ссылки
только вместо выбора номенклатуры, вам нужен выбор документа, потом запрос по ТЧ Материалы одного документа и заполнение ТЧ текущего документа.А в таком запросе как у вас выберутся данные из всех документов ОтчетПроизводстваЗаСмену (запросом). И ЗаполнитьЗначенияСвойств() не сработает для табличных частей, только для реквизитов "шапки". Для копирования данных из одного документа в другой, можно делать так:
   
РасходнаяНакладная = Документы.РасходнаяНакладная.СоздатьДокумент();
    // заполняем реквизиты документа
    ЗаполнитьЗначенияСвойств(РасходнаяНакладная, ПриходнаяНакладная, , "Дата, Проведен, ПометкаУдаления");

    // заполняем табличную часть документа
    Для каждого СтрокаСоставаПриходнойНакладной из ПриходнаяНакладная.Состав Цикл
          
        СтрокаСоставаРасходнойНакладной = РасходнаяНакладная.Состав.Добавить();    

        // заполняем значения очередной строки табличной части
        ЗаполнитьЗначенияСвойств(СтрокаСоставаРасходнойНакладной, СтрокаСоставаПриходнойНакладной);      
    КонецЦикла;

взято из необходимо зарегистрироваться для просмотра ссылки
fly
Цитата(bandrah @ 01.10.19, 15:53) необходимо зарегистрироваться для просмотра ссылки
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();



Попробуйте методом ТабличнойЧасти Загрузить

Табличная часть (Tabular section)
Загрузить (Load)
Синтаксис:
Загрузить(<Таблица>)
Параметры:
<Таблица> (обязательный)
Тип: ТаблицаЗначений.
Таблица значений, откуда загружается табличная часть. Колонки таблиц совмещаются по именам.
Описание:
Загружает табличную часть из таблицы значений. При этом все прежние строки табличной части удаляются. При загрузке значения в колонках табличной части заполняются значениями из колонок таблицы значений с совпадающими именами.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:
Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:
Состав.Загрузить(ТаблицаСостава);

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить();



Документ.ТаблЧасть.Загрузить(ВыборкаДетальныеЗаписи);



Цитата(bandrah @ 01.10.19, 15:53) необходимо зарегистрироваться для просмотра ссылки
бо нада окрему кнопку з вибором документа і його заповнити


по сути перед заполнением этот метод сразу очистит ТЧ от данных и заполнит одноименные Колонки значениями
bandrah
дякую за поради, буду пробувати про результати напишу пізніше
bandrah
Взяв механізм із документа Повернення товарів від покупця в кнопці заповнити є дві під кнопки заповнити по документу вцілому або додати із документа...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.