Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Перенос табличных частей (ОФ)

Перенос табличных частей (ОФ)
Я
   JuixyJes
 
30.04.19 - 10:24
Имеется документ Заявка, в нем 3 табличных части, 1 главная и 2 подчиненных, в последних 2х стоит фильтр по Уникальному идентификатору. Как перенести в документ Расчет эти 3 табличных части, но чтоб фильтр применялся уже при выборе документа заявки?
 
 
   Fish
 
1 - 30.04.19 - 10:26
Предлагаю циклами.
   JuixyJes
 
2 - 30.04.19 - 10:45
(1) Циклами я переношу, но фильтры по Уникальному идентификатору не работают. В заявке он работает при активации строки
   Fish
 
3 - 30.04.19 - 10:48
(2) "фильтры по Уникальному идентификатору не работают" - Показывай код, как делаешь отбор.
   JuixyJes
 
4 - 30.04.19 - 10:50
Процедура ЗаявкаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Данные = ЭлементыФормы.Заявка.ТекущаяСтрока;
    Если НоваяСтрока Тогда 
        Данные.ИД = Новый УникальныйИдентификатор;
    КонецЕсли;

КонецПроцедуры

Процедура МатериалыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Данные = ЭлементыФормы.Заявка.ТекущаяСтрока;
    ТекДанные = ЭлементыФормы.Материалы.ТекущаяСтрока;
    Если НоваяСтрока Тогда
        ТекДанные.ИД = Данные.ИД;
    КонецЕсли;
    
КонецПроцедуры

Процедура ЗаявкаПередУдалением(Элемент, Отказ)
    Данные = ЭлементыФормы.Заявка.ТекущаяСтрока;
    Отбор = Новый Структура("ИД",Данные.ИД);
    Масс = Материалы.НайтиСтроки(Отбор);
    масс1 = Технологии.НайтиСтроки(Отбор);
    Для каждого Строка из Масс Цикл
        Материалы.Удалить(Строка);
    КонецЦикла;
    Для каждого Строка из масс1 Цикл
        Технологии.Удалить(Строка);
    КонецЦикла;
КонецПроцедуры

Процедура ЗаявкаПриАктивизацииСтроки(Элемент)
    
    
    Данные = ЭлементыФормы.Заявка.ТекущаяСтрока;
    Если Данные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ЭлементыФормы.Материалы.ОтборСтрок.ИД.Значение = Данные.ИД;
    ЭлементыФормы.Материалы.ОтборСтрок.ИД.Использование = истина;
    ЭлементыФормы.Технологии.ОтборСтрок.ИД.Значение = Данные.ИД;
    ЭлементыФормы.Технологии.ОтборСтрок.ИД.Использование = истина;
    
    М=Материалы.Итог("Сумма");
    Т=Технологии.Итог("Сумма");     
    С = Т + М;
            
    ЭлементыФормы.Надпись3.Заголовок = "Всего: " + Строка(С) + "р Материалы: " + Строка(М) + "р Технологии: " + Строка(Т)+ "р";
КонецПроцедуры

Процедура ТехнологииПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    Данные = ЭлементыФормы.Заявка.ТекущаяСтрока;
    ТекДанные = ЭлементыФормы.Технологии.ТекущаяСтрока;
    Если НоваяСтрока Тогда
        ТекДанные.ИД = Данные.ИД;
    КонецЕсли;
     
КонецПроцедуры


Вот, пожалуйте)
   Fish
 
5 - 30.04.19 - 10:54
(4) Не, покажи код переноса в документ Расчёт.
   Fish
 
6 - 30.04.19 - 10:54
+(5) У тебя же такая цель, судя по (0)? Перенести данные из одного документа в другой?
   JuixyJes
 
7 - 30.04.19 - 10:58
Процедура ЗаявкаПриИзменении(Элемент,ДанныеЗаполнения, СтандартнаяОбработка,Расчет)
    //Заполнение Расчета

    Автор = Заявка.Автор;
    Коментарий = Заявка.Коментарий;
    СпособОплаты = Заявка.СпособОплаты;
    Заявка = Заявка.Ссылка;
    ЗаявкаТЧ.Очистить();
    
    Для Каждого ТекСтрокаЗаявка Из Заявка.Заявка Цикл
        НоваяСтрока = ЗаявкаТЧ.Добавить();
        НоваяСтрока.Количество = ТекСтрокаЗаявка.Количество;
        НоваяСтрока.ПлановыйСрокГот = ТекСтрокаЗаявка.ПлановыйСрокГот;
        НоваяСтрока.Продукция = ТекСтрокаЗаявка.Продукция;
        НоваяСтрока.РазмерФормат = ТекСтрокаЗаявка.РазмерФормат;
        НоваяСтрока.СрокОригиналМ = ТекСтрокаЗаявка.СрокОригиналМ;
        НоваяСтрока.фПлановыйСрокГот = ТекСтрокаЗаявка.фПлановыйСрокГот;
        НоваяСтрока.фСрокОригиналМ = ТекСтрокаЗаявка.фСрокОригиналМ;
    КонецЦикла;
    Материалы.Очистить();
    Для Каждого ТекСтрокаМатериалы Из Заявка.Материалы Цикл
        НоваяСтрока = Материалы.Добавить();
        НоваяСтрока.Количество = ТекСтрокаМатериалы.Количество;
        НоваяСтрока.Материал = ТекСтрокаМатериалы.Материал;
        НоваяСтрока.Сумма = ТекСтрокаМатериалы.Сумма;
        НоваяСтрока.Цена = ТекСтрокаМатериалы.Цена;
    КонецЦикла;
    Технологии.Очистить();
    Для Каждого ТекСтрокаТехнологии Из Заявка.Технологии Цикл
        НоваяСтрока = Технологии.Добавить();
        НоваяСтрока.Количество = ТекСтрокаТехнологии.Количество;
        НоваяСтрока.КТУ = ТекСтрокаТехнологии.КТУ;
        НоваяСтрока.Сумма = ТекСтрокаТехнологии.Сумма;
        НоваяСтрока.Технологии = ТекСтрокаТехнологии.Технологии;
        НоваяСтрока.Цена = ТекСтрокаТехнологии.Цена;
    КонецЦикла;
    
    //Заполнение информации об оплате

    СТ=Технологии.Итог("Сумма");
    СМ=Материалы.Итог("Сумма");
    С=СТ+СМ;
    Сумма = С;
    
    Выб = Документы.Оплата.Выбрать();
    Пока выб.Следующий() Цикл
        Опл = Выб.СуммаОплаты;
    КонецЦикла;
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    РасчетОплатыОбороты.Расчет КАК Расчет,
    |    РасчетОплатыОбороты.СуммаЗаказаОборот КАК СуммаЗаказаОборот,
    |    РасчетОплатыОбороты.СуммаЗаказаПриход КАК СуммаЗаказаПриход,
    |    РасчетОплатыОбороты.СуммаЗаказаРасход КАК СуммаЗаказаРасход
    |ИЗ
    |    РегистрНакопления.РасчетОплаты.Обороты КАК РасчетОплатыОбороты
    |ГДЕ
    |    РасчетОплатыОбороты.Расчет = &Расчет";
    
    Запрос.УстановитьПараметр("Расчет", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    //Если ВыборкаДетальныеЗаписи.Количество()<> 0 Тогда

        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            
            ЭлементыФормы.Стоимость.Заголовок = "Стоимость: " + Строка(ВыборкаДетальныеЗаписи.СуммаЗаказаПриход)+ "р";
            
            ЭлементыФормы.Оплачено.Заголовок = "Оплачено: " + Строка(ВыборкаДетальныеЗаписи.СуммаЗаказаРасход)+ "р" ;
            
            ЭлементыФормы.Остаток.Заголовок = "Остаток: " + Строка(ВыборкаДетальныеЗаписи.СуммаЗаказаОборот)+ "р"  ;
            Ост = ВыборкаДетальныеЗаписи.СуммаЗаказаОборот;
        КонецЦикла;
    //Иначе 

    //    ЭлементыФормы.Стоимость.Заголовок = "Стоимость: " + Строка(С)+ "р";

    //    

    //    ЭлементыФормы.Оплачено.Заголовок = "Оплачено: " +  Строка(С)+ "р";

    //    

    //    ЭлементыФормы.Остаток.Заголовок = "Остаток: 0р"   ;

    //    

    //    Ост = 0;


        
    //КонецЕсли;

    
    
    
    ВыбД = Документы.Заявка.Выбрать();
    Пока ВыбД.Следующий() Цикл
        ЭлементыФормы.Клиент.Заголовок = "Клиент: " + Строка(ВыбД.Клиент)+ " ИНН: " + Строка(ВыбД.Клиент.ИНН);
        ЭлементыФормы.Телефоны.Заголовок = "Дом.Тел: " + Строка(ВыбД.Клиент.ТелефонД)+ " Раб.Тел: " + Строка(ВыбД.Клиент.ТелефонР)+ " Моб.Тел: " + Строка(ВыбД.Клиент.ТелефонМ)+ " Факс: " + Строка(ВыбД.Клиент.Факс);
        ЭлементыФормы.КонтЛицо.Заголовок =  Строка(ВыбД.КонтактноеЛицо);
        ЭлементыФормы.ЭлектронныеКонтакты.Заголовок = "E-m@il: " + Строка(ВыбД.Клиент.Email)+ " ICQ: " + Строка(ВыбД.Клиент.ICQ);
    КонецЦикла; 
    
    
КонецПроцедуры

Процедура ЗаявкаТЧПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Данные = ЭлементыФормы.ЗаявкаТЧ.ТекущаяСтрока;
    Если НоваяСтрока Тогда 
        Данные.ИД = Новый УникальныйИдентификатор;
    КонецЕсли;
    
КонецПроцедуры

Процедура МатериалыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Данные = ЭлементыФормы.ЗаявкаТЧ.ТекущаяСтрока;
    ТекДанные = ЭлементыФормы.Материалы.ТекущаяСтрока;
    Если НоваяСтрока Тогда
        ТекДанные.ИД = Данные.ИД;
    КонецЕсли;
    
КонецПроцедуры

Процедура ЗаявкаТЧПередУдалением(Элемент, Отказ)
    Данные = ЭлементыФормы.ЗаявкаТЧ.ТекущаяСтрока;
    Отбор = Новый Структура("ИД",Данные.ИД);
    Масс = Материалы.НайтиСтроки(Отбор);
    масс1 = Технологии.НайтиСтроки(Отбор);
    Для каждого Строка из Масс Цикл
        Материалы.Удалить(Строка);
    КонецЦикла;
    Для каждого Строка из масс1 Цикл
        Технологии.Удалить(Строка);
    КонецЦикла;
КонецПроцедуры

Процедура ЗаявкаТЧПриАктивизацииСтроки(Элемент)
    Данные = ЭлементыФормы.ЗаявкаТЧ.ТекущаяСтрока;
    Если Данные = Неопределено Тогда
        Возврат;
    КонецЕсли;    
    ЭлементыФормы.Материалы.ОтборСтрок.ИД.Значение = Данные.ИД;
    ЭлементыФормы.Материалы.ОтборСтрок.ИД.Использование = истина;
    ЭлементыФормы.Технологии.ОтборСтрок.ИД.Значение = Данные.ИД;
    ЭлементыФормы.Технологии.ОтборСтрок.ИД.Использование = истина;
    КонецПроцедуры

Процедура ТехнологииПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    Данные = ЭлементыФормы.ЗаявкаТЧ.ТекущаяСтрока;
    ТекДанные = ЭлементыФормы.Технологии.ТекущаяСтрока;
    Если НоваяСтрока Тогда
        ТекДанные.ИД = Данные.ИД;
    КонецЕсли;
    

КонецПроцедуры



Ну вот так
   JuixyJes
 
8 - 30.04.19 - 11:25
+ (7) Видимо увидев ЭТО все в ужасе убежали:D

Список тем форума
Рекламное место пустует  Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.