Имя: Пароль:
1C
1С v8
Обработка табличной части
,
0 skupidom5
 
11.09.17
22:58
В документе Авансовый отчет на вкладке Оплата по кнопке "Заполнить по поступлениям" открывается форма выбора документов "Поступление товаров и услуг" с множественным выбором.При подборе каждого поступления в оплаты добавляются строчки из поступлений.Нужно реализовать возможность не сразу выбирать поступления,а сначала подобрать поступления в список,а потом уже их содержимое в Оплаты.Как реализовать подбор поступлений в список значений?
1 rudnitskij
 
11.09.17
23:02
посмотреть как этот подбор реализован уже сейчас - вариант неприемлемый?
2 rudnitskij
 
11.09.17
23:03
(1) "...открывается форма выбора документов "Поступление товаров и услуг"..." - нет ли здесь подсказки, какую форму смотреть? Как считают читатели форума?
3 Лефмихалыч
 
11.09.17
23:03
(1) на ветки автора посмотри. Он просит готовое решение, которое можно было скопипастить, не приходя в сознание
4 Лефмихалыч
 
11.09.17
23:03
Ливингстара синдром
5 Злопчинский
 
11.09.17
23:08
(0) херня какаято
6 Злопчинский
 
11.09.17
23:09
В таком изложении задача - бред сивого мерина ибо подбирать в список, а потом переносить список в результат - нахрега лишнее промежуточное звено?
7 skupidom5
 
11.09.17
23:11
сейчас рпеализовано напрямую множественная выборка документов-поступлений и заполнение тч Авансового отчета содержимым тч Услуги из поступлений
Процедура ЗаполнитьОплатыПоОснованиюПТУУслуги(ПТУСсылка) Экспорт
                    
    Курс = ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета);
    Кратность = ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета);
    
    Запрос = Новый Запрос;  
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ПоступлениеТоваровУслугУслуги.Ссылка.Контрагент КАК Контрагент,
    |    ПоступлениеТоваровУслугУслуги.Ссылка.ДоговорКонтрагента КАК ДоговорКонтрагента,
    |    ПоступлениеТоваровУслугУслуги.Ссылка.Сделка КАК Заказ,
    |    ПоступлениеТоваровУслугУслуги.Проект КАК Проект,
    |    ПоступлениеТоваровУслугУслуги.Сумма КАК Сумма,
    |    ВЫБОР
    |        КОГДА ПоступлениеТоваровУслугУслуги.Ссылка.ВалютаДокумента = ПоступлениеТоваровУслугУслуги.Ссылка.ДоговорКонтрагента.ВалютаВзаиморасчетов
    |            ТОГДА ПоступлениеТоваровУслугУслуги.Ссылка.КурсВзаиморасчетов
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК КурсДокумента,
    |    ВЫБОР
    |        КОГДА ПоступлениеТоваровУслугУслуги.Ссылка.ВалютаДокумента = ПоступлениеТоваровУслугУслуги.Ссылка.ДоговорКонтрагента.ВалютаВзаиморасчетов
    |            ТОГДА ПоступлениеТоваровУслугУслуги.Ссылка.КратностьВзаиморасчетов
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК КратностьДокумента,
    |    ПоступлениеТоваровУслугУслуги.Ссылка.НомерВходящегоДокумента КАК НомерВходДок,
    |    ПоступлениеТоваровУслугУслуги.Ссылка.ДатаВходящегоДокумента КАК ДатаВходДок,
    |    ПоступлениеТоваровУслугУслуги.рар_ВидРабот КАК ВидРабот,
    |    ПоступлениеТоваровУслугУслуги.Содержание КАК Содержание,
    |    ПоступлениеТоваровУслугУслуги.Ссылка.Ссылка КАК Поступление,
    |    ПоступлениеТоваровУслугУслуги.Ссылка.ВалютаДокумента КАК ВалютаДокумента
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
    |ГДЕ
    |    ПоступлениеТоваровУслугУслуги.Ссылка = &ПТУ";
    Запрос.УстановитьПараметр("ПТУ",ПТУСсылка);                 
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        // Структура группировки
        СтруктураОтбора = Новый Структура;
        СтруктураОтбора.Вставить("Контрагент",Выборка.Контрагент);
        СтруктураОтбора.Вставить("ДоговорКонтрагента",Выборка.ДоговорКонтрагента);
        СтруктураОтбора.Вставить("ДокументПоступления",Выборка.Поступление);
        Если ЗначениеЗаполнено(Выборка.Заказ) Тогда
            СтруктураОтбора.Вставить("Сделка",Выборка.Заказ);
        КонецЕсли;    
        Если ЗначениеЗаполнено(Выборка.Проект) Тогда
            СтруктураОтбора.Вставить("Проект",Выборка.Проект);
        КонецЕсли;    
        Если ЗначениеЗаполнено(Выборка.ВидРабот) Тогда
            СтруктураОтбора.Вставить("рар_ВидРабот",Выборка.ВидРабот);
        КонецЕсли;
        
        СуммаПересчитанаПоАвансовомуОтчету = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(Выборка.Сумма, Выборка.ВалютаДокумента,ВалютаДокумента,
        Выборка.КурсДокумента, Курс,
        Выборка.КратностьДокумента, Кратность);         
        //    
        СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ОплатаПоставщикам,СтруктураОтбора);
        Если СтрокаТабличнойЧасти <> Неопределено Тогда
            
            СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Сумма + СуммаПересчитанаПоАвансовомуОтчету;
            СтрокаТабличнойЧасти.СуммаВзаиморасчетов = СтрокаТабличнойЧасти.Сумма;
            
        Иначе               
            СтрокаТабличнойЧасти                           = ОплатаПоставщикам.Добавить();             
            СтрокаТабличнойЧасти.Контрагент               = Выборка.Контрагент;
            СтрокаТабличнойЧасти.ДоговорКонтрагента       = Выборка.ДоговорКонтрагента;
            СтрокаТабличнойЧасти.Сделка                     = Выборка.Заказ;
            СтрокаТабличнойЧасти.Проект                         = Выборка.Проект;
            СтрокаТабличнойЧасти.Сумма                    = СуммаПересчитанаПоАвансовомуОтчету;
            СтрокаТабличнойЧасти.КурсВзаиморасчетов       = Выборка.КурсДокумента;
            СтрокаТабличнойЧасти.КратностьВзаиморасчетов  = Выборка.КратностьДокумента;
            СтрокаТабличнойЧасти.СуммаВзаиморасчетов      = Выборка.Сумма;
            // входящий документ:
            СтрокаТабличнойЧасти.ВидДокВходящий           = "расписка";
            СтрокаТабличнойЧасти.ДатаВходящегоДокумента   = СокрЛП(Выборка.ДатаВходДок);
            СтрокаТабличнойЧасти.НомерВходящегоДокумента  = СокрЛП(Выборка.НомерВходДок);
            //
            СтрокаТабличнойЧасти.рар_ВидРабот = Выборка.ВидРабот;
            СтрокаТабличнойЧасти.Содержание = Выборка.Содержание;
            СтрокаТабличнойЧасти.ДокументПоступления      = Выборка.Поступление;
            // Счета учета:
            СчетаУчета = БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом(Организация, СтрокаТабличнойЧасти.Контрагент, СтрокаТабличнойЧасти.ДоговорКонтрагента);  
            СтрокаТабличнойЧасти.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетов;
            СтрокаТабличнойЧасти.СчетУчетаРасчетовПоАвансам        = СчетаУчета.СчетАвансов;             
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры // СкопироватьУслуги()


Процедура КоманднаяПанельОплатаПоставщикамЗаполнитьПоПоступлениям(Кнопка)
    
РеквизитыДокумента = ЭлементыФормы.ОплатаПоставщикам;
ФормаВыбора = Документы.ПоступлениеТоваровУслуг.ПолучитьФормуВыбора(,РеквизитыДокумента);
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.ЗакрыватьПриВыборе = Ложь;
ФормаВыбора.Открыть();

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

Процедура ОплатаПоставщикамОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ЗаполнитьОплатыПоОснованиюПТУУслуги(ВыбранноеЗначение);
    
КонецПроцедуры
8 skupidom5
 
11.09.17
23:13
нужен незамысловатый предварительный подбор поступлений в форму списка при подборе с последующим заполнением тч Авансового отчета
9 Fram
 
11.09.17
23:16
(8) даже если еще 50 раз написать хадание это не ответит на вопрос нахрена
10 Fram
 
11.09.17
23:16
*задание
11 Tateossian
 
11.09.17
23:18
(8) Ты хочешь легко и непринужденно реализовать АРМ Подборщик оплат с их разнесением.

По сабжу. Сделай еще одну промежуточную форму. Ну и вообще - а в чем проблема удалить лишние строчки из авансового отчета?