Имя: Пароль:
1C
1С v8
Значение не является значением объектного типа (ВидСравнения)
0 Смертник
 
09.07.13
11:54
Перем мДеревоФильтры Экспорт;

Функция ДобавитьОтбор(ПутьКДанным, Использование = Неопределено, ВидСравнения = Неопределено, Значение = Неопределено, ИспользоватьВБыстрыхОтборах = Истина) Экспорт
   
   ДобавляемыйЭлементОтбора = Неопределено;
   
   Для каждого ЭлементОтбора из ПостроительОтчета.Отбор Цикл
       
       Если ЭлементОтбора.ПутьКДанным = ПутьКДанным Тогда
           
           ДобавляемыйЭлементОтбора = ЭлементОтбора;
           Прервать;
           
       КонецЕсли;
       
   КонецЦикла;
   
   Если ДобавляемыйЭлементОтбора = Неопределено Тогда
       
       Попытка
           
           ДобавляемыйЭлементОтбора = ПостроительОтчета.Отбор.Добавить(ПутьКДанным);
           
       Исключение
           
           Возврат Ложь;
           
       КонецПопытки;
       
   КонецЕсли;
   
   
   Если Использование <> Неопределено Тогда
       
       ДобавляемыйЭлементОтбора.Использование = Использование;
       
   КонецЕсли;
   
   Если ВидСравнения <> Неопределено Тогда
       
       ДобавляемыйЭлементОтбора.ВидСравнения = ВидСравнения;
       
   КонецЕсли;
   
   Если Значение <> Неопределено Тогда
       
       ДобавляемыйЭлементОтбора.Значение = Значение;
       
   КонецЕсли;
   
   //Если ЗначениеС <> Неопределено Тогда
   //    
   //    ДобавляемыйЭлементОтбора.ЗначениеС = ЗначениеС;
   //    
   //КонецЕсли;
   //
   //Если ЗначениеПо <> Неопределено Тогда
   //    
   //    ДобавляемыйЭлементОтбора.ЗначениеПо = ЗначениеПо;
   //    
   //КонецЕсли;
   
   //Если ДобавляемыйЭлементОтбора.Имя = "ДоговорКонтрагента" Тогда
   //    СтрФильтры = мДеревоФильтры.Строки.Добавить();
   //    СтрФильтры.ИмяПоля            = ДобавляемыйЭлементОтбора.Имя;
   //    СтрФильтры.ПредставлениеПоля = ДобавляемыйЭлементОтбора.Представление;
   //    СтрФильтры.ОписаниеТипов    = ДобавляемыйЭлементОтбора.ТипЗначения;
   //    СтрФильтры.ИмяПоляВладелец    = "Контрагент";
   //КонецЕсли;
   
   Возврат Истина;
   
КонецФункции // ДобавитьОтбор()
Процедура ЗаполнитьНачальныеНастройки() Экспорт

   мДеревоФильтры.Строки.Очистить();
   
   ПостроительОтчета.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                             |    ИСТИНА КАК Загрузить,
                             |    ПланыЗаказыПоставщикам.ДоговорКонтрагентаВладелец,
                             |    ПланыЗаказыПоставщикам.НоменклатураНоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
                             |    ПланыЗаказыПоставщикам.КоличествоОстаток КАК Количество,
                             |    ПланыЗаказыПоставщикам.СуммаУпрОстаток КАК Сумма,
                             |    ПланыЗаказыПоставщикам.Номенклатура,
                             |    ПланыЗаказыПоставщикам.ХарактеристикаНоменклатуры,
                             |    ПланыЗаказыПоставщикам.СтавкаНДС,
                             |    ПланыЗаказыПоставщикам.ЕдиницаИзмерения,
                             |    ПланыЗаказыПоставщикам.ЕдиницаИзмеренияКоэффициент КАК Коэффициент,
                             |    ПланыЗаказыПоставщикам.Цена,
                             |    ПланыЗаказыПоставщикам.СтатьяОборотов КАК ру_СтатьяОборотов
                             |ИЗ
                             |    (ВЫБРАТЬ
                             |        бит_ЦФО_Организаций.Организация КАК Организация,
                             |        ру_ПланыЗаказыПоставщикамОбороты.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
                             |        ру_ПланыЗаказыПоставщикамОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                             |        ру_ПланыЗаказыПоставщикамОбороты.Номенклатура КАК Номенклатура,
                             |        ру_ПланыЗаказыПоставщикамОбороты.Номенклатура.НоменклатурнаяГруппа КАК НоменклатураНоменклатурнаяГруппа,
                             |        ру_ПланыЗаказыПоставщикамОбороты.КоличествоПриход КАК КоличествоОстаток,
                             |        ру_ПланыЗаказыПоставщикамОбороты.СуммаУпрПриход КАК СуммаУпрОстаток,
                             |        ру_ПланыЗаказыПоставщикамОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                             |        ру_ПланыЗаказыПоставщикамОбороты.СтавкаНДС КАК СтавкаНДС,
                             |        ру_ПланыЗаказыПоставщикамОбороты.СтавкаНДС КАК ЕдиницаИзмерения,
                             |        ру_ПланыЗаказыПоставщикамОбороты.ЕдиницаИзмерения.Коэффициент КАК ЕдиницаИзмеренияКоэффициент,
                             |        ру_ПланыЗаказыПоставщикамОбороты.Цена КАК Цена,
                             |        ру_ПланыЗаказыПоставщикамОбороты.СтатьяОборотов КАК СтатьяОборотов
                             |    ИЗ
                             |        РегистрНакопления.ру_ПланыЗаказыПоставщикам.Обороты(, , , ПланФакт = ЛОЖЬ) КАК ру_ПланыЗаказыПоставщикамОбороты
                             |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.бит_ЦФО_Организаций КАК бит_ЦФО_Организаций
                             |            ПО ру_ПланыЗаказыПоставщикамОбороты.Подразделение = бит_ЦФО_Организаций.ЦФО) КАК ПланыЗаказыПоставщикам
                             |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                             |            бит_СобственныеКонтрагенты.Контрагент КАК Контрагент,
                             |            бит_СобственныеКонтрагенты.Объект КАК Объект
                             |        ИЗ
                             |            РегистрСведений.бит_СобственныеКонтрагенты КАК бит_СобственныеКонтрагенты
                             |        ГДЕ
                             |            бит_СобственныеКонтрагенты.Контрагент ЕСТЬ NULL ) КАК СобственныеКонтрагенты
                             |        ПО ПланыЗаказыПоставщикам.Организация = СобственныеКонтрагенты.Объект
                             |            И ПланыЗаказыПоставщикам.ДоговорКонтрагентаВладелец = СобственныеКонтрагенты.Контрагент";
   
   ДобавитьОтбор("Контагент");
   ДобавитьОтбор("Номенклатура");
   ДобавитьОтбор("НоменклатурнаяГруппа");
   ДобавитьОтбор("Подразделение");
   
КонецПроцедуры // ЗаполнитьНачальныеНастройки()

Функция ПолучитьДанныеАнализа(Ф_Таблицу, ТабДокумент = "") Экспорт
   
   //ПостроительОтчета.Параметры.Вставить("ДатаНачала", ПериодФормированияОтчета.ДатаНачала);
   //ПостроительОтчета.Параметры.Вставить("ДатаКонца", КонецДня(ПериодФормированияОтчета.ДатаОкончания));
   
   ДанныеВозврата = "";
   
   Если Ф_Таблицу Тогда
       ДанныеВозврата = ПостроительОтчета.ПолучитьЗапрос().Выполнить().Выгрузить();
   Иначе    
       ПостроительОтчета.Выполнить();
       ПостроительОтчета.Вывести(ТабДокумент);
   КонецЕсли;
   
   Возврат(ДанныеВозврата);
   
КонецФункции
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта, флОчищать = Истина) Экспорт
   
   Режим = РежимДиалогаВопрос.ДаНет;
   Текст = "Будет перезаполнена таблица ""Товары"". Продолжить?";
   Ответ = Вопрос(Текст, Режим, 0);
   Если Ответ = КодВозвратаДиалога.Нет Тогда
       Возврат;
   КонецЕсли;
   
   ЗаполнитьНачальныеНастройки();
   ФормаОткрытия = ЭтотОбъект.ПолучитьФорму("Форма");    
   Стр_Отбора = ПостроительОтчета.Отбор.Найти("Подразделение");
   Стр_Отбора.ВидСравнения = ВидСравнения.Равно;
   Стр_Отбора.Значение = Объект.Подразделение;
   Стр_Отбора.Использование = ЗначениеЗаполнено(Объект.Подразделение);
   Ф_Выполнения = ФормаОткрытия.ОткрытьМодально();
   
   //Ф_Выполнения = Истина;
   Если Ф_Выполнения = Истина Тогда
       
       ТЗ_Данных = ПолучитьДанныеАнализа(Истина);
       
       Объект.Товары.Очистить();
       
       Для Каждого Стр_Данных Из ТЗ_Данных Цикл
           
           Стр_Плана = Объект.Товары.Добавить();
                       
       КонецЦикла;
   КонецЕсли;

КонецПроцедуры // Инициализировать

МассивСтрока = Новый Массив;
МассивСтрока.Добавить(Тип("Строка"));
КвалификаторСтроки = Новый КвалификаторыСтроки("110", ДопустимаяДлина.Переменная);
ОписаниеТиповСтрока = Новый ОписаниеТипов(МассивСтрока, , КвалификаторСтроки);

МассивОписаниеТипов = Новый Массив;
МассивОписаниеТипов.Добавить(Тип("ОписаниеТипов"));
ОписаниеТиповОписаниеТипов = Новый ОписаниеТипов(МассивОписаниеТипов);

мДеревоФильтры      = Новый ДеревоЗначений;
мДеревоФильтры.Колонки.Добавить("ИмяПоля",           ОписаниеТиповСтрока);
мДеревоФильтры.Колонки.Добавить("ПредставлениеПоля", ОписаниеТиповСтрока);
мДеревоФильтры.Колонки.Добавить("ОписаниеПоля",      ОписаниеТиповСтрока);
мДеревоФильтры.Колонки.Добавить("ИмяПоляВладелец",   ОписаниеТиповСтрока);
мДеревоФильтры.Колонки.Добавить("ОписаниеТипов",     ОписаниеТиповОписаниеТипов);

Выдает вопрос очистить табличную часть Товары? и выходит на ошибку - Значение не является значением объектного типа (ВидСравнения).
Не могу понять в чем дело, по честному первый раз использую универсальный отбор.
1 Maxus43
 
09.07.13
12:01
на какой строке ошибка то? думаешь тут все будут эту простыню читать?
2 Смертник
 
09.07.13
12:02
Стр_Отбора.ВидСравнения = ВидСравнения.Равно;
Вот тут что то не то
3 Mitriy
 
09.07.13
12:03
Стр_Отбора = неопределено...
4 Maxus43
 
09.07.13
12:03
(2) отладчик однозначно скажет что в Стр_Отбора нет ВидСравнения
5 Franchiser
 
гуру
09.07.13
12:06
Может надо вместо  Стр_Отбора = ПостроительОтчета.Отбор.Найти("Подразделение");

написать
Стр_Отбора = ПостроительОтчета.Отбор.Добавить("Подразделение");
6 svich
 
09.07.13
12:06
(0) У тебя строка
Стр_Отбора = ПостроительОтчета.Отбор.Найти("Подразделение");
Неопределено не возвращает?
8 svich
 
09.07.13
12:08
(5) точно, нужно отбор добавить
9 Смертник
 
09.07.13
13:33
Для каждого ЭлементОтбора из ПостроительОтчета.Отбор Цикл
       
      Если ЭлементОтбора.ПутьКДанным = ПутьКДанным Тогда
+ Code
           
           ДобавляемыйЭлементОтбора = ЭлементОтбора;
Эта часть процедуры разве не добавляет все отборы?
10 svich
 
09.07.13
15:30
(9) нет. Она только выбирает первый отбор из коллекции отборов построителя отбора
11 svich
 
09.07.13
15:31
построителя отчета
12 Смертник
 
09.07.13
15:50
да с построителем затупил конкретно - добрался вот досюда
Ошибка при вызове метода контекста (Очистить)
Объект.Товары.Очистить();
Да и объект определил как Объект = СсылкаНаОбъект;
13 Смертник
 
09.07.13
16:43
Что то вообще заплутал. Поле объекта недоступно для записи (ЭтотОбъект)