Имя: Пароль:
1C
1С v8
УстановитьЗначениеФильтра
,
0 Vitekkkk
 
17.04.13
11:16
Добрый день!
Нужно выбрать остатки по складам выбранным в списке.
Устанавливаю фильтр
Рег.УстановитьЗначениеФильтра("МестоХранения", МестоХранения,2);
Где МестоХранения - Это список значений (несколько складов).
Результата нет.
Для одного склада работает, а вот если спЗначений туда сувать нехочет.
Хотя по описанию вроде должно работать.
------------------------------------------------------------
УстановитьЗначениеФильтра(<?>,,);
Синтаксис:
УстановитьЗначениеФильтра(<Идентиф>,<Значен>,<Вариант>)
Назначение:
Установить значение фильтра для оптимизации расчетов.
Параметры:
<Идентиф> - идентификатор измерения или реквизита.
<Значен> - значение или список значений.
<Вариант> - необязательный параметр. Число: 0 - не фильтровать; 1 - фильтровать по значению; 2 -  искать вхождение. Значение по умолчанию 1. Для варианта ''2'' :
- если параметр <Значен> - это группа справочника, то осуществляется проверка вхождения в группу;
- если параметр <Значен> - это простой элемент справочника или другой тип значения, то осуществляется просто фильтрация по значению;
- для списка значений осуществляется проверка вхождения в список;
- если пустое значение или пустой список значений, то условие не проверяется.
1 Vitekkkk
 
17.04.13
11:17
Помогите пожалуйста победить.
2 Ёпрст
 
17.04.13
11:18
Дык, а при чем тут снеговик ?
3 Ёпрст
 
17.04.13
11:20
а так,
МестоХранения.ДобавитьЗначение(Спр.ТекущийЭлемент());
4 wise
 
17.04.13
11:22
запросом выбирай.
5 Vitekkkk
 
17.04.13
11:27
(2)Список значений здесь уже заполнен
6 Vitekkkk
 
17.04.13
11:29
Рег.УстановитьЗначениеФильтра("ТипНоменклатуры",ТипНоменклатуры);
Рег.УстановитьЗначениеФильтра("Номенклатура",ТекущийЭлемент());
Рег.УстановитьЗначениеФильтра("МестоХранения",МестоХранения,2);
Ост = Рег.СводныйИтог(ТипНоменклатуры, ТекущийЭлемент(), МестоХранения, "Количество");
7 Vitekkkk
 
17.04.13
11:29
И нет результата.
8 Vitekkkk
 
17.04.13
11:30
(4)Вроде как слышал так быстрее работает.
9 Ёпрст
 
17.04.13
11:37
(5) чем и как ?
10 Ёпрст
 
17.04.13
11:38
И уверен, что в регистре Первым измерением у тебя идёт ТипНоменклатуры, вторым - номенклатура и третьим склад ?
11 Ёпрст
 
17.04.13
11:39
И нафига тогда сводный Итог ?
12 Vitekkkk
 
17.04.13
11:39
вы по вопросу помощь окажите или обсудим что быстрее работает?
13 Vitekkkk
 
17.04.13
11:40
Мне в форме списка номенклатуры нужно показать колонку остатки по выбранным складам.
14 Vitekkkk
 
17.04.13
11:41
Ну подскажи тогда какой нужно итог....
15 Vitekkkk
 
17.04.13
11:41
Если сводный не идет.
16 Vitekkkk
 
17.04.13
11:42
(10) ДА
17 Ёпрст
 
17.04.13
11:53
Еще раз тогда - как и чем заполнен список значений.
18 Ёпрст
 
17.04.13
11:54
+ У тебя регистр оборотный что ли ?, раз ты  сводныйИтог берешь ?
19 Ёпрст
 
17.04.13
11:55
Мот регистр всё же останковый, и тебе нужен тупо Остаток ?
20 Vitekkkk
 
17.04.13
12:00
1.Регистр оборотный
допустим так:
   СпрМХ = СоздатьОбъект("Справочник.МестаХранения");
   СпрМХ.НайтиПоКоду(5);
   СкладГП = СпрМХ.ТекущийЭлемент();
   СпрМХ.НайтиПоКоду(3);
   СкладКЦ = СпрМХ.ТекущийЭлемент();
   СпрМХ.НайтиПоКоду(72);
   СкладФАС = СпрМХ.ТекущийЭлемент();    
   
   МестоХранения = СоздатьОбъект("СписокЗначений");
   МестоХранения.ДобавитьЗначение(СкладГП,СкладГП.Наименование);    
   МестоХранения.ДобавитьЗначение(СкладКЦ,СкладКЦ.Наименование);    
   МестоХранения.ДобавитьЗначение(СкладФАС,СкладФАС.Наименование);
21 Ёпрст
 
17.04.13
12:01
(20) Пилять, зачет!
22 Ёпрст
 
17.04.13
12:01
Теперь подумай, что у тебя в списке.
23 Ёпрст
 
17.04.13
12:01
Там не элементы справочника, там строки
24 Ёпрст
 
17.04.13
12:02
Ну и оборотный регистр..тут промолчу.
25 1Сергей
 
17.04.13
12:05
(23) не строки.
26 Vitekkkk
 
17.04.13
12:07
(25)+
27 Ёпрст
 
17.04.13
12:07
(25) ага, увидел.
28 Ёпрст
 
17.04.13
12:07
Один хрен, оборотный регистр - это ..полный пэ.
29 Ёпрст
 
17.04.13
12:10
И пириод какой хоть установлен для итогов ?
И метод Итог что возвращает ?
30 Ёпрст
 
17.04.13
12:10
И размерСписка какой хоть ?
31 Vitekkkk
 
17.04.13
12:12
(24) Ты прав извиняюсь!
Регистр остаток.
размер списка 3
32 Vitekkkk
 
17.04.13
12:13
Пробовал сейчас так:
   Ост = Рег.СводныйОстаток(ТипНоменклатуры, ТекущийЭлемент(), МестоХранения, "Количество");

так же нет результата
33 Ёпрст
 
17.04.13
12:14
(32)
весь код давай, что за рег, на какую дату рссчитан, заместо сводный остаток нужно остаток, раз нет пропуска измерений
34 Vitekkkk
 
17.04.13
12:16
Остаток тоже непрет
35 1Сергей
 
17.04.13
12:19
(34) покажи откуда взялся Рег
36 Vitekkkk
 
17.04.13
12:21
Перем ТипЦен;
Перем СписокНедоступныхКолонок;
Перем ИдентификаторФормы;
Перем СписокКолонок;

Перем КонтролироватьПраваДоступа, ОсновнаяПапкаДоступаНоменклатуры, ИерархическийВид, Контрагент, ЕстьМатрица, Матрица;

Перем Рег;
Перем МестоХранения;


//******************************************************************************
//
Функция ПолучитьОстаток(РасчетИзКолонки = 0)  
   

   Если (РасчетИзКолонки = 1) и (ФлагОстатокВКолонке = 0) Тогда
       Возврат "";
   КонецЕсли;

   Рег.УстановитьЗначениеФильтра("ТипНоменклатуры", ТипНоменклатуры);
   Рег.УстановитьЗначениеФильтра("Номенклатура", ТекущийЭлемент());
   Рег.УстановитьЗначениеФильтра("МестоХранения", МестоХранения,2);
   //Ост = Рег.СводныйИтог(ТипНоменклатуры, ТекущийЭлемент(), МестоХранения, "Количество");
   Ост = Рег.СводныйОстаток(ТипНоменклатуры, ТекущийЭлемент(), МестоХранения, "Количество");
   
   ТабИтогов = СоздатьОбъект("ТаблицаЗначений");

   КоэффициентОсн = 1;
   Если ОсновнаяЕдиницаИзмерения.Выбран() = 1 Тогда
       Если ОсновнаяЕдиницаИзмерения.Коэффициент <> 0 Тогда
           КоэффициентОсн = ОсновнаяЕдиницаИзмерения.Коэффициент;
       КонецЕсли;
   КонецЕсли;
   
   Ост = Ост/КоэффициентОсн;

   Если РасчетИзКолонки = 1 Тогда
       Возврат глФорматКол(Ост, "0");
   Иначе
       Возврат глФорматКол(Ост) + " " + ОсновнаяЕдиницаИзмерения;
   КонецЕсли;

КонецФункции // ПолучитьОстаток    

//******************************************************************************
Функция ПолучитьМХ()
   тхт = "";
   Для х =    1 По МестоХранения.РазмерСписка() Цикл
       тхт = тхт + " " + МестоХранения.ПолучитьЗначение(х).Наименование + ",";
   КонецЦикла;  
   Возврат тхт;    
КонецФункции
//******************************************************************************
//
Процедура УправлениеДиалогом()

   Форма.ГрафаОстаток.Видимость(ФлагОстатокВКолонке);
   
   Для Сч = 1 По СписокНедоступныхКолонок.РазмерСписка() Цикл
       Форма.ПолучитьАтрибут(СписокНедоступныхКолонок.ПолучитьЗначение(Сч)).Доступность(0);
   КонецЦикла;

КонецПроцедуры // УправлениеДиалогом

//******************************************************************************
// Поиск()
//
// Параметры:
//  Нет
//
// Вызывается из формул элементов диалога:
//  По кнопке "Поиск"
//
// Описание:
//  Вызывает обработку поиска элемента справочника по подстроке,
//  если нашли, то производит выбор.
//  Заменяем глобальную глПоискПоПодстроке() для случая режима подбора
//
Процедура Поиск()
   
   Перем ПродолжитьПоиск;
   
   Если Форма.РежимВыбора() <> 2  Тогда
       глПоискПоПодстроке(Контекст);
       Возврат;
   КонецЕсли;
   
   ПродолжитьПоиск = 1; // флаг поиска
   
   // Ищем пока стоит флаг поиска
   Пока ПродолжитьПоиск =1  Цикл
       
       ПродолжитьПоиск  = 0; // по умолчанию не стоит
       СписокПараметров = СоздатьОбъект("СписокЗначений");
       СписокПараметров.ДобавитьЗначение(Вид(),"Вид");
       СписокПараметров.ДобавитьЗначение(Контекст, "Контекст");
       
       ОткрытьФормуМодально("Обработка.ВыборИзСправочникаПоПодстроке", СписокПараметров);
       
       Если ТипЗначенияСтр(СписокПараметров)="Справочник" Тогда
           Если СписокПараметров.Вид() = Вид() Тогда
               Если Форма.РежимВыбора() = 2 Тогда // Если подбор
                   АктивизироватьОбъект(СписокПараметров);
                   ПродолжитьПоиск = 1;
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;      
   КонецЦикла;
   
КонецПроцедуры // Поиск()                                                                                

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()  
   
   СпрМХ = СоздатьОбъект("Справочник.МестаХранения");
   СпрМХ.НайтиПоКоду(5);
   СкладГП = СпрМХ.ТекущийЭлемент();
   СпрМХ.НайтиПоКоду(3);
   СкладКЦ = СпрМХ.ТекущийЭлемент();
   СпрМХ.НайтиПоКоду(72);
   СкладФАС = СпрМХ.ТекущийЭлемент();    
   
   МестоХранения = СоздатьОбъект("СписокЗначений");
   МестоХранения.ДобавитьЗначение(СкладГП,СкладГП.Наименование);    
   МестоХранения.ДобавитьЗначение(СкладКЦ,СкладКЦ.Наименование);    
   МестоХранения.ДобавитьЗначение(СкладФАС,СкладФАС.Наименование);    
   
   ЕстьМатрица = 0;

   Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда
       //МестоХранения = Форма.Параметр.Получить("МестоХранения");
       Контрагент = Форма.Параметр.Получить("Контрагент");
       ТипЦен = Форма.Параметр.Получить("ТипЦен");
       ТипНоменклатуры = Форма.Параметр.Получить("ТипНоменклатуры");
       ВклВПрайсЛист    = Форма.Параметр.Получить("ВключатьВПрайсЛист");
       
       Если (ПустоеЗначение(ТипНоменклатуры) = 0) Тогда
           УстановитьОтбор("ТипНоменклатуры", ТипНоменклатуры);
       ИначеЕсли ВклВПрайсЛист = 1 Тогда
           УстановитьОтбор("ВключатьВПрайсЛист", 1);
       КонецЕсли;
   Иначе
       Контрагент = "";
   КонецЕсли;

   ФлагОстатокИЦенаВКолонке = ВосстановитьЗначение("ДляПодбора_ФлагОстатокИЦенаВКолонке");

   УправлениеДиалогом();
   
   РедактироватьВДиалоге(1,1);
   
   // Управление видимостью колонок.
   глУстановитьВидимостьКолонок(Контекст, ИдентификаторФормы, СписокКолонок, 1);
   
   СохранениеПериодическихРеквизитов(0);

   ОсновнаяПапкаНоменклатуры = глЗначениеПоУмолчанию("ОсновнаяПапкаНоменклатуры");
   Если ТипЗначенияСтр(ОсновнаяПапкаНоменклатуры) = "Справочник" Тогда
       Если ОсновнаяПапкаНоменклатуры.Вид() = "Номенклатура" Тогда
           Если ОсновнаяПапкаНоменклатуры.ЭтоГруппа() = 1 Тогда
               ИспользоватьРодителя(ОсновнаяПапкаНоменклатуры);
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   
   ПризнакОтбора = "";
   Если ТипЗначенияСтр(Форма.Параметр) = "Строка" Тогда
       ПризнакОтбора = Форма.Параметр;
   ИначеЕсли ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда
       ПризнакОтбора = Форма.Параметр.Получить("ПризнакОтбора");
   КонецЕсли;
   Если ПризнакОтбора = "ПередачаВЭксплуатацию" Тогда
       УстановитьОтбор("ПризнакПередачиВЭксплуатацию", 1);
   КонецЕсли;

   ОсновнаяПапкаДоступаНоменклатуры = глЗначениеПоУмолчанию("ОсновнаяПапкаДоступаНоменклатуры");
   Если ОсновнаяПапкаДоступаНоменклатуры.Выбран() = 1 Тогда
       КонтролироватьПраваДоступа = 1;
       ИерархическийВид = -1;
       Форма.кнПоиск.Доступность(0);
       УстановитьОтбор(,);
   ИначеЕсли ПустоеЗначение(Контрагент) = 0 Тогда  //  Дима. Установим отбор по матрице.
       Матрица = Контрагент.ОсновнойДоговор.ДействующаяСпецификацияПоНоменклатуре.Получить(РабочаяДата());
       Если ПустоеЗначение(Матрица) = 0 Тогда
           ЕстьМатрица = 1;
           КонтролироватьПраваДоступа = 0;
           ИерархическийВид = -1;
           Форма.кнПоиск.Доступность(0);
           УстановитьОтбор(,);
           ИерархическийСписок(0);
       КонецЕсли;
   Иначе
       КонтролироватьПраваДоступа = 0;
   КонецЕсли;
   
КонецПроцедуры // ПриОткрытии()

//******************************************************************************
// КонтрольПравДоступа()
//
Функция КонтрольПравДоступа()
                               
   Если (КонтролироватьПраваДоступа = 0) и (ЕстьМатрица = 0) Тогда
       Возврат "";
   КонецЕсли;
   
   Если ТекущийЭлемент().Выбран() = 0 Тогда
       Возврат "";
   КонецЕсли;

   
   Если КонтролироватьПраваДоступа = 1 Тогда
       Если ИерархическийВид <> ИерархическийСписок() Тогда
           ИерархическийВид = ИерархическийСписок();
   
           Если ИерархическийВид = 1 Тогда
               ИспользоватьСписокЭлементов();
           Иначе
       
               Текст = "//{{ЗАПРОС(Сформировать)
                   |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
                   |Группировка Номенклатура без групп;
                   |Условие(Номенклатура в ОсновнаяПапкаДоступаНоменклатуры);
                   |"//}}ЗАПРОС
                   ;
               Запрос = СоздатьОбъект("Запрос");
               Если Запрос.Выполнить(Текст) = 0 Тогда
                   Возврат "";
               КонецЕсли;
       
               Сп = СоздатьОбъект("СписокЗначений");
               
               Пока Запрос.Группировка(1) = 1 Цикл
                   Сп.ДобавитьЗначение(Запрос.Номенклатура);
               КонецЦикла;
               
               ИспользоватьСписокЭлементов(Сп);
               
               Форма.Обновить();
               
           КонецЕсли;
   
       КонецЕсли;
   КонецЕсли;
   
   Если ЕстьМатрица = 1 Тогда
       Если ИерархическийВид <> ИерархическийСписок() Тогда
           ИерархическийВид = ИерархическийСписок();
           Если ИерархическийВид = 1 Тогда
               ИспользоватьСписокЭлементов();
           Иначе
               Сп = СоздатьОбъект("СписокЗначений");
               Матрица.ВыбратьСтроки();
               Пока Матрица.ПолучитьСтроку() = 1 Цикл
                   Сп.ДобавитьЗначение(Матрица.Номенклатура);
               КонецЦикла;
               ИспользоватьСписокЭлементов(Сп);
               Форма.Обновить();
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;

   Если ИерархическийВид = 1 Тогда
       Если ТекущийЭлемент().ПринадлежитГруппе(ОсновнаяПапкаДоступаНоменклатуры) = 0 Тогда
           ИспользоватьРодителя(ОсновнаяПапкаДоступаНоменклатуры);
       КонецЕсли;
   КонецЕсли;
   
   Возврат "";
   
КонецФункции // КонтрольПравДоступа()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриПовторномОткрытии()

   Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда
       МестоХранения = Форма.Параметр.Получить("МестоХранения");
       Контрагент = Форма.Параметр.Получить("Контрагент");
       ТипЦен = Форма.Параметр.Получить("ТипЦен");
   КонецЕсли;

КонецПроцедуры // ПриПовторномОткрытии()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриРедактированииНовойСтроки()
   
   УправлениеДиалогом();
   
   СтавкаНДС = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС");
   ВидНоменклатуры = глЗначениеПоУмолчанию("ОсновнойВидНоменклатуры");
   ЕдиницаИзмерения = глЗначениеПоУмолчанию("ОсновнаяЕдиницаИзмерения");
   
КонецПроцедуры // ПриРедактированииНовойСтроки()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриНачалеРедактированияСтроки()
   
   УправлениеДиалогом();
   
КонецПроцедуры // ПриНачалеРедактированияСтроки()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
   
КонецПроцедуры // ПриНачалеВыбораЗначения()    

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриЗакрытии()

   СохранитьЗначение("ДляПодбора_ФлагОстатокВКолонке", ФлагОстатокВКолонке);

КонецПроцедуры // ПриЗакрытии

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если СтрДлина(Данные) <= 13 Тогда
        Спр = СоздатьОбъект("Справочник.Номенклатура");  
        Если Спр.НайтиПоРеквизиту("ШтрихКод",Данные,1) = 1 Тогда
           АктивизироватьОбъект(Спр.ТекущийЭлемент());
        Иначе
           Предупреждение("Номенклатура с таким штрих-кодом не найдена!!!");
           Возврат;
        КонецЕсли;
    ИначеЕсли СтрДлина(Данные) > 13 Тогда    
        Спр = СоздатьОбъект("Справочник.Номенклатура");  
        Если Спр.НайтиПоРеквизиту("ШтрихКод",Сред(Данные,13,6),1) = 1 Тогда
           АктивизироватьОбъект(Спр.ТекущийЭлемент());
        Иначе
           Предупреждение("Номенклатура с таким штрих-кодом не найдена!!!");
           Возврат;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры              
//*****************************************************************************
Процедура ВыборкаМХ()
   МестоХранения.УдалитьВсе();
   СпВыбМХ = СоздатьОбъект("СписокЗначений");
   СпрМХ = СоздатьОбъект("Справочник.МестаХранения");
   СпрМХ.ВыбратьЭлементы();
   Пока СпрМх.ПолучитьЭлемент() = 1 Цикл
       ИмяМХ = СпрМХ.ТекущийЭлемент().Наименование;
       Если ИмяМХ <> "" Тогда
           СпВыбМХ.ДобавитьЗначение(СпрМХ.ТекущийЭлемент(),ИмяМХ);
       КонецЕсли;    
   КонецЦикла;    
   ЗнМХ = ПолучитьПустоеЗначение();
   ПозицияМХ = 0;
   СпВыбМХ.ОтметитьЗначения(ЗнМХ,"Укажите места хранения для учета остатков.");  

   Для х = 1 по СпВыбМХ.РазмерСписка() Цикл
       Если СпВыбМХ.Пометка(х) = 1 Тогда
           МестоХранения.ДобавитьЗначение(СпВыбМХ.ПолучитьЗначение(х),СпВыбМХ.ПолучитьЗначение(х).Наименование);    
       КонецЕсли;
   КонецЦикла;    
   Если ФлагОстатокВКолонке = 1 Тогда
       ПолучитьОстаток();    
   КонецЕсли;
       
КонецПроцедуры
//******************************************************************************
ИдентификаторФормы    =    "Справочник_Номенклатура_ФормаСписка_ДляПодбора";

// Список колонок видимостью которых будем управлять.
СписокКолонок = СоздатьОбъект("СписокЗначений");
СписокКолонок.ДобавитьЗначение("Код", "Код");
СписокКолонок.ДобавитьЗначение("Наименование",                "Наименование");
СписокКолонок.ДобавитьЗначение("ОсновнаяЕдиницаИзмерения",    "Ед.");
СписокКолонок.ДобавитьЗначение("СчетУчета",                    "Счет учета");
СписокКолонок.ДобавитьЗначение("ТипНоменклатуры",            "Тип номенклатуры");
СписокКолонок.ДобавитьЗначение("ВидНоменклатуры",            "Вид номенклатуры");
СписокКолонок.ДобавитьЗначение("МинОстаток",                "Минимальный остаток");
СписокКолонок.ДобавитьЗначение("СтавкаНДС",                    "Ставка НДС (редактируется в форме элемента)");

// При первом запуске, пока пользователь не настроил видимость колонок,
// будут видимы только колонки "Код","Наименование", "Ед.", "Учетная цена".
СписокКолонок.Пометка(1,    1);
СписокКолонок.Пометка(2,    1);
СписокКолонок.Пометка(3,    1);
СписокКолонок.Пометка(4,    1);

// Список недоступных для редактирования колонок
СписокНедоступныхКолонок = СоздатьОбъект("СписокЗначений");
СписокНедоступныхКолонок.ДобавитьЗначение("Код");
СписокНедоступныхКолонок.ДобавитьЗначение("СтавкаНДС");

Рег = СоздатьОбъект("Регистр.УчетМПЗ");
37 Ёпрст
 
17.04.13
12:33
тьфу блин..
Стал я забывать 7-ку

Я точно не помню, распространяется ли УстановитьЗначениеФильтра на метод СводныйОстаток (вроде нет, оно только для ВыгрузитьИтоги, могу ошибаться)


 // Рег.УстановитьЗначениеФильтра("ТипНоменклатуры", ТипНоменклатуры);
//   Рег.УстановитьЗначениеФильтра("Номенклатура", ТекущийЭлемент());
   Рег.УстановитьЗначениеФильтра("МестоХранения", МестоХранения,2);
   //Ост = Рег.СводныйИтог(ТипНоменклатуры, ТекущийЭлемент(), МестоХранения, "Количество");

   Ост = Рег.СводныйОстаток(ТипНоменклатуры, ТекущийЭлемент(), , "Количество");
38 Vitekkkk
 
17.04.13
12:55
(37) Огромное тебе спасибо за:
<h3>Я точно не помню, распространяется ли УстановитьЗначениеФильтра на метод СводныйОстаток (вроде нет, оно только для ВыгрузитьИтоги, могу ошибаться)</h3>
39 Vitekkkk
 
19.04.13
17:09
Продолжаю тему....
Если использовать метод ВыгрузитьИтоги()
Тогда начинаются тормоза.....
Может кто еще знает как оптимизировать эту функцию чтоб без тормозов?
Функция ПолучитьОстаток(РасчетИзКолонки = 0)  
   

   Если (РасчетИзКолонки = 1) и (ФлагОстатокВКолонке = 0) Тогда
       Возврат "";
   КонецЕсли;

     Рег.УстановитьЗначениеФильтра("ТипНоменклатуры", ТипНоменклатуры);
   Рег.УстановитьЗначениеФильтра("Номенклатура", ТекущийЭлемент());
   Рег.УстановитьЗначениеФильтра("МестоХранения", МестоХранения,2);  
   Рег.ВыгрузитьИтоги(ТЗОст,1,1);
   Ост = ТЗОст.Итог("Количество");


   КоэффициентОсн = 1;
   Если ОсновнаяЕдиницаИзмерения.Выбран() = 1 Тогда
       Если ОсновнаяЕдиницаИзмерения.Коэффициент <> 0 Тогда
           КоэффициентОсн = ОсновнаяЕдиницаИзмерения.Коэффициент;
       КонецЕсли;
   КонецЕсли;
   
   Ост = Ост/КоэффициентОсн;

   Если РасчетИзКолонки = 1 Тогда
       Возврат глФорматКол(Ост, "0");
   Иначе
       Возврат глФорматКол(Ост) + " " + ОсновнаяЕдиницаИзмерения;
   КонецЕсли;

КонецФункции // ПолучитьОстаток
40 Vitekkkk
 
19.04.13
17:10
МестоХранения - Это список значений
41 Vitekkkk
 
19.04.13
17:13
Или может кто нибудь подскажет на какие методы распространяется УстановитьЗначениеФильтра(). Ну кроме как на ВыгрузитьИтоги().
42 Vitekkkk
 
21.04.13
04:52
хочется что бы кто-нибудь помог!!!
43 Vitekkkk
 
22.04.13
09:17
ГОСПОДА-А-А-А-А!!!
Может можно как то по другому реализовать мою задачу чтоб не тормозило?
Колонка Остаток по выбранным складам.
44 Vitekkkk
 
22.04.13
11:18
???
45 Vitekkkk
 
22.04.13
13:22
А если через прямые запросы получать остатки с помощью 1Срр.dll, не быстрее будет?
46 Vitekkkk
 
22.04.13
14:11
Ни кто не поможет? Тему закрывать?
47 Vitekkkk
 
22.04.13
17:56
Блин господа!!!!! ХЭЛП МИ!!!
48 МихаилМ
 
22.04.13
18:02
(45)
1Срр.dll и v8 не совместимы
49 Ёпрст
 
23.04.13
09:01
(39) выгружай Итоги Один раз в ПриОткрытии, далее поиск номенклатуры в ТЗ и привет.