Имя: Пароль:
1C
1С v8
Есть ТЗ в обработке - выводим доки. Как отобрать интервал документов?
0 Обработка
 
12.01.21
09:56
Наткнулся на некую типовую обработку.
В ТЗ выводят документ по типу.
Но в ТЗ попадают все доки за все время.
Хотелось бы ограничить по интервалу.

Вот код.

#Если  ТолстыйКлиентОбычноеПриложение Тогда
        
        МассивТиповДокументов = Новый Массив;
        
        МассивТиповДокументов.Добавить(Тип("ДокументСписок." + ТипДокумента1С));
        
        Элементы.Документы1С.ТипЗначения = Новый ОписаниеТипов(МассивТиповДокументов);            
        Элементы.Документы1С.СоздатьКолонки();
        
        КолонкаДляУдаления = Элементы.Документы1С.Колонки.Проведен;
        Элементы.Документы1С.Колонки.Удалить(КолонкаДляУдаления);
        
        КолонкаДляУдаления = Элементы.Документы1С.Колонки.Картинка;
        Элементы.Документы1С.Колонки.Удалить(КолонкаДляУдаления);
        
        Элементы.Документы1С.Колонки.Добавить("Название");            
        Элементы.Документы1С.Колонки.Название.УстановитьЭлементУправления(Тип("ПолеВвода"));
        Элементы.Документы1С.Колонки.Название.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("Строка");
        
        Элементы.Документы1С.Колонки.Добавить("КоличествоСтрок", "Кол-во строк");            
        Элементы.Документы1С.Колонки.КоличествоСтрок.УстановитьЭлементУправления(Тип("ПолеВвода"));
        Элементы.Документы1С.Колонки.КоличествоСтрок.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("Строка");    
        
        Элементы.Документы1С.Колонки.Дата.Ширина                 = 15;
        Элементы.Документы1С.Колонки.Номер.Ширина                 = 15;
        Элементы.Документы1С.Колонки.Название.Ширина             = 60;
        Элементы.Документы1С.Колонки.КоличествоСтрок.Ширина     = 10;    
        
        Элементы.Документы1С.ОбновитьСтроки();
        
    #Иначе
1 ДенисЧ
 
12.01.21
09:57
А где заполнение таблицы?
Ну, типа Документы1С.Добавить()...
2 Обработка
 
12.01.21
10:00
(1) В том то и дело что нет его.
Заполняется сама динамически по привязке к массиву.
Есть еще обработчик ТЗ =  Документы1СПриПолученииДанных

#Если ТолстыйКлиентОбычноеПриложение Тогда
    
    Процедура Документы1СПриПолученииДанных(Элемент, ОформленияСтрок)
        
        Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
            
            ОформлениеСтроки.Ячейки.Название.Значение = СокрЛП(ОформлениеСтроки.ДанныеСтроки.Ссылка);         
            
            Если ЗначениеЗаполнено(ИмяТабличнойЧасти1С) Тогда
                КоличествоТоваров = ОформлениеСтроки.ДанныеСтроки.Ссылка[ИмяТабличнойЧасти1С].Количество();
                Если КоличествоТоваров = 0 Тогда
                    ОформлениеСтроки.Ячейки.КоличествоСтрок.Значение = "";    
                Иначе
                    ОформлениеСтроки.Ячейки.КоличествоСтрок.Значение = СокрЛП(КоличествоТоваров);    
                КонецЕсли;    
            КонецЕсли;
        КонецЦикла;
        
    КонецПроцедуры


и все...
3 Обработка
 
12.01.21
10:03
МассивТиповДокументов это === массив
а значение такое  === Документ список: Инвентаризация товаров на складе
4 ДенисЧ
 
12.01.21
10:04
Сами по себе только кошки родятся. А таблицы в 1с самине заполняются.
5 Обработка
 
12.01.21
10:06
(4) Отладчиком прошел не наткнулся на код.
Честно, я такое впервые вижу в обычных формах.
Я понимаю что в УФ есть динамические списки которые прям запросом привязываются.
А тут такое вижу впервые.
6 fisher
 
12.01.21
10:30
(5) Внезапно - в ОФ тоже есть динамические списки :) Просто их запросы предопределены и не изменяются.
Открой любую стандартную форму списка документов - там тоже самое.
Тут изюминка только в том, что тип источника динамически переопределяется.
Хотя тоже раньше с таким не сталкивался.
7 fisher
 
12.01.21
10:33
А в коде из сабжа, кроме инициализации динамического списка - обычное создание вычисляемых колонок дин-списка. В ПриПолученииДанных() - их заполнение.
8 Обработка
 
12.01.21
10:35
Ну как мне быть?

Просто тупо взять ТЗ и запонинить как я хочу?
Хоть запросом с отбором по периоду?
9 ДенисЧ
 
12.01.21
10:41
Источник данных для ТЗ какой указан?
10 fisher
 
12.01.21
10:42
(8) Зачем? Тебе ж просто период задать? Навскидку уже не помню, как в ОФ. Скорее всего через Документы1С.Отбор.
Глянь в отладчике, чего там там в Отбор доступно. "Период" какой-нить или даты начала/окончания.
11 Ёпрст
 
12.01.21
10:58
(0)
ну, добавь командную панель, назначь ей источник действий твоё табличное поле, и автозаполнение. Лишние кнопку можешь удалить с панели, оставив только интервал дат
12 hhhh
 
12.01.21
11:01
(8) пробуй Отбор
13 Обработка
 
12.01.21
11:01
(9) Пустой.
14 НЕА123
 
12.01.21
11:08
(2)
если у всех ечеек Виидимоть = Ложь, то строка не отобразится
15 Ёпрст
 
12.01.21
11:10
ну или через СтандартныйПериод задавать
16 fisher
 
12.01.21
11:16
(13) Еще не сделал, что ли? Элемент отбора "Дата", вид сравнения - интервал, в "ЗначениеС" и "ЗначениеПо" - задаешь нужный диапазон.
17 Ёпрст
 
12.01.21
11:27
ЭлементыФормы.Документы1С.СтандартныйПериод.ДатаНачала = Дата('20210101');
18 Обработка
 
12.01.21
11:32
(16) На обеде был.

Всем спасибо прикрутил отбор!