Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к материалу: Добавляем дополнительное поле в документ-список

    • #1
    • 05.06.2013 14:22
    0
    Платформа 1С:Предприятие 8.2 в режиме управляемого приложения позволяет отображать списочные данные с помощью объекта формы "динамический список", в котором можно определить практически любой произвольный запрос для получения данных. Например, чтобы выводить сумму остатка по заказу поставщика, мы можем в запросе к таблице документа присоединить виртуальную таблицу остатков регистра накопления "Заказы поставщикам". Но как быть, если наша конфигурация работает в обычно приложении и нам доступен лишь класс "документ-список" для вывода списка документов? Ведь переопределить запрос для такого объекта нельзя...  Подробнее>>
    • #2
    • 05.06.2013 14:25
    0
    Вообще толстые формы рулят! Решая эту задачу динамическим списком, столкнемся с проблемой, что нельзя ограничить как бы то ни было запрос к виртуальной таблице. В результате у нас будут получатся данные по всем заказам и только потом присоединятся к основной таблице. При больших объемах данных это катастрофа. Правда, говорят, в 8.3 что-то оптимизировали по этому поводу
    • #3
    • 05.06.2013 15:54
    0
    Матвей
    Вообще толстые формы рулят! Решая эту задачу динамическим списком, столкнемся с проблемой, что нельзя ограничить как бы то ни было запрос к виртуальной таблице. В результате у нас будут получатся данные по всем заказам и только потом присоединятся к основной таблице. При больших объемах данных это катастрофа. Правда, говорят, в 8.3 что-то оптимизировали по этому поводу

    Это точно. В свое время для оптимизации формировал текст запроса дин. списка программно, туда подставлял параметры и значения передавал. Ускорение было значительным.

    В 8.3 еще не смотрел.
    • #4
    • 11.05.2014 15:27
    0
    Вот оптимальное решение:
    Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    	 Склады = Новый Соответствие;	
    	 Запрос = Новый Запрос;
    	Запрос.Текст = "ВЫБРАТЬ
    	               |	ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.Ссылка КАК Товар,
    	               |	СУММА(ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0)) КАК Остаток
    	               |ИЗ
    	               |	РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки(&Период, Номенклатура В (&МассивНоменклатуры)) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстатки
    	               |
    	               |СГРУППИРОВАТЬ ПО
    	               |	ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура,
    	               |	ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.Ссылка";
    	
    	Запрос.УстановитьПараметр("Период",	КонецДня(ТекущаяДата()));	 //Дата
    	МассивНоменклатуры = Новый Массив; // для передачи в параметр запроса 
    	Соответствие = Новый Соответствие; // для заполнения остатков в строках табличного поля 	
    	Для Каждого Строка из ОформленияСтрок Цикл 
    		МассивНоменклатуры.Добавить(Строка.ДанныеСтроки.Ссылка); 
    		Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка); 
    	КонецЦикла; 	
    	Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры); 	
    	Выборка = Запрос.Выполнить().Выбрать(); 
    	Пока Выборка.Следующий() Цикл 
    		Соответствие.Получить(Выборка.Товар.Ссылка).Ячейки.Остаток.Значение = Выборка.Остаток; 
    	КонецЦикла; 
    	
    КонецПроцедуры
    
    
    • #5
    • 11.11.2014 09:34
    0
    Стр.Ячейки.ОстатокПоЗаказу.Текст = Выборка.СуммаУпрОстаток;
    А если мне нужно не колонку с остатками по заказу, а какой нибудь другой реквизит и не примитивного, а ссылочного типа, например справочник вывести. Тоже
    Стр.Ячейки.Реквизит.Текст = СпрСсылка; ?
Яндекс-директ
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться