Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Общий Журнал Форма Списка Значение не является значением объектного типа

Общий Журнал Форма Списка Значение не является значением объектного типа
Я
   Farid0516
 
21.11.21 - 12:24
пожалуйста помоги


{ЖурналДокументов.ОбщийЖурнал.Форма.ФормаСписка.Форма(178)}: Значение не является значением объектного типа (ВОЕН)
                зн=зн.ВОЕН;
   Farid0516
 
1 - 21.11.21 - 12:25
Процедура РеестрДокуметов()
    ТабДок=новый ТабличныйДокумент ;
    Макет =ЖурналыДокументов.ОбщийЖурнал.ПолучитьМакет("РеестрДокументов");
    обЗаголовок=Макет.ПолучитьОбласть("Заголовок|Графа");
    обЗаголовок.Параметры.заголовок="ОбщийЖурнал";
    
    ВидСравненияДата=ЖурналДокументовСписок.Отбор.Дата.ВидСравнения;
    обЗаголовок.Параметры.ДатаНачало=?(ЗначениеЗаполнено(ЖурналДокументовСписок.Отбор.Дата.ЗначениеС),ЖурналДокументовСписок.Отбор.Дата.ЗначениеС,"");
    обЗаголовок.Параметры.ДатаКонца=?(ЗначениеЗаполнено(ЖурналДокументовСписок.Отбор.Дата.ЗначениеПо),ЖурналДокументовСписок.Отбор.Дата.ЗначениеПо,"");
    Если  ВидСравненияДата=ВидСравнения.БольшеИлиРавно тогда
        обЗаголовок.Параметры.ДатаНачало= ЖурналДокументовСписок.Отбор.Дата.Значение ;
    Конецесли;
    Если  ВидСравненияДата=ВидСравнения.МеньшеИлиРавно тогда
        обЗаголовок.Параметры.ДатаКонца=ЖурналДокументовСписок.Отбор.Дата.Значение ;
    Конецесли;
    

    обЗаголовок. Область(1,1,1,1).ШиринаКолонки=ЭлементыФормы.ЖурналДокументовСписок.Колонки["ВидДокумента"].Ширина;
    

    ТабДок.Вывести(обЗаголовок);
    ОбШапка=макет.ПолучитьОбласть("Шапка|Графа");
    ////////////ТекКолонка=0;

    ////////////для каждого Колонка из ЭлементыФормы.ЖурналДокументовСписок.Колонки цикл

    ////////////    если Колонка.Имя="Картинка" тогда

    ////////////        Продолжить;

    ////////////    Конецесли;

    ////////////    ТекКолонка=ТекКолонка+1;

    ////////////    ОбШапка.Область(1,1,1,1).ШиринаКолонки=Колонка.Ширина;

    ////////////    если ТекКолонка=1 тогда

    ////////////    Иначе

    ////////////        ТабДок.Присоединить(ОбШапка);

    ////////////    Конецесли;

    ////////////КонецЦикла;

    
    
    СписокРеквизиты=Новый СписокЗначений;
    ТекКолонка=0;
    
    для каждого Колонка из ЭлементыФормы.ЖурналДокументовСписок.Колонки цикл
        если Колонка.Имя="Картинка" тогда
            Продолжить;
        Конецесли;
        ТекКолонка=ТекКолонка+1;
        ОбШапка.Параметры.наимГрафа=Колонка.ТекстШапки;
        ОбШапка.Область(1,1,1,1).ШиринаКолонки=Колонка.Ширина;
        если ТекКолонка=1 тогда
            ТабДок.Вывести(ОбШапка);
        Иначе
            ТабДок.Присоединить(ОбШапка);
        Конецесли;
    КонецЦикла;
    
    //

    //

    
    
    Запрос=новый запрос;
    запрос_Текст="ВЫБРАТЬ * 
                 |ИЗ
                 |    ЖурналДокументов.ОбщийЖурнал КАК ОбщийЖурнал" ;
                 
    ОтборЖурнал=ЖурналДокументовСписок.Отбор;
    
    ТекстУсловие ="";
    н=0;
    для каждого ВыбОтбор из ОтборЖурнал цикл
        если не ВыбОтбор.Использование тогда
            продолжить;
        Конецесли;
        
        н=н+1;
        
        если ВыбОтбор.ВидСравнения=ВидСравнения.Больше тогда
            условие=ВыбОтбор.Имя+">&"+ВыбОтбор.Имя;
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.БольшеИлиРавно тогда
            условие=ВыбОтбор.Имя+">=&"+ВыбОтбор.Имя;
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
            
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.Равно тогда
            если  ВыбОтбор.Имя="ВидДокумента" тогда
                условие="Выразить(Ссылка как Документ."+ВыбОтбор.Значение.Имя+")<>НЕОПРЕДЕЛЕНО";
            Иначе
                условие=ВыбОтбор.Имя+"=&"+ВыбОтбор.Имя;
                запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
            КонецЕсли;
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.НеРавно тогда
            условие="НЕ "+ВыбОтбор.Имя+"=&"+ВыбОтбор.Имя;
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
            
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.Меньше тогда
            условие=ВыбОтбор.Имя+"<&"+ВыбОтбор.Имя;
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.МеньшеИлиРавно тогда
            условие=ВыбОтбор.Имя+"<=&"+ВыбОтбор.Имя;
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
            
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.ВИерархии тогда
            условие=ВыбОтбор.Имя+" В Иерархии (&"+ВыбОтбор.Имя+")";
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.НеВИерархии тогда
            условие="НЕ "+ВыбОтбор.Имя+" В Иерархии (&"+ВыбОтбор.Имя+")";
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
            
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.ВСписке тогда
            условие=ВыбОтбор.Имя+" В (&"+ВыбОтбор.Имя+")";
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.НеВСписке тогда
            условие="НЕ "+ВыбОтбор.Имя+" В (&"+ВыбОтбор.Имя+")";
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
            
            
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.ВСпискеПоИерархии тогда
            условие=ВыбОтбор.Имя+" В Иерархии (&"+ВыбОтбор.Имя+")";
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.НеВСпискеПоИерархии тогда
            условие="НЕ "+ВыбОтбор.Имя+" В Иерархии (&"+ВыбОтбор.Имя+")";
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
            
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.Интервал тогда
            условие="("+ВыбОтбор.Имя+">&"+ВыбОтбор.Имя+"С и "+ВыбОтбор.Имя+"<&"+ВыбОтбор.Имя+"По)";
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"С",ВыбОтбор.ЗначениеС);
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"По",ВыбОтбор.ЗначениеПо);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.ИнтервалВключаяГраницы тогда
            условие="("+ВыбОтбор.Имя+">=&"+ВыбОтбор.Имя+"С и "+ВыбОтбор.Имя+"<=&"+ВыбОтбор.Имя+"По)";
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"С",ВыбОтбор.ЗначениеС);
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"По",ВыбОтбор.ЗначениеПо);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.ИнтервалВключаяНачало тогда
            условие="("+ВыбОтбор.Имя+">=&"+ВыбОтбор.Имя+"С и "+ВыбОтбор.Имя+"<&"+ВыбОтбор.Имя+"По)";
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"С",ВыбОтбор.ЗначениеС);
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"По",ВыбОтбор.ЗначениеПо);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.ИнтервалВключаяОкончание тогда
            условие="("+ВыбОтбор.Имя+">&"+ВыбОтбор.Имя+"С и "+ВыбОтбор.Имя+"<=&"+ВыбОтбор.Имя+"По)";
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"С",ВыбОтбор.ЗначениеС);
            запрос.УстановитьПараметр(ВыбОтбор.Имя+"По",ВыбОтбор.ЗначениеПо);
            
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.Содержит тогда
            условие=ВыбОтбор.Имя+" ПОДОБНО &"+ВыбОтбор.Имя;
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
        Иначеесли ВыбОтбор.ВидСравнения=ВидСравнения.Содержит тогда
            условие="НЕ "+ВыбОтбор.Имя+" ПОДОБНО &"+ВыбОтбор.Имя;
            запрос.УстановитьПараметр(ВыбОтбор.Имя,ВыбОтбор.Значение);
        Конецесли ;
        ТекстУсловие=ТекстУсловие+Символы.ПС  +?(н>1," И ","")+условие;
    Конеццикла;
    
    если ТекстУсловие<>"" тогда
         запрос_Текст=запрос_Текст+"
         |ГДЕ
         |"+ТекстУсловие;
     Конецесли;
     
     запрос.Текст= запрос_Текст;
     Выборка=запрос.Выполнить().Выбрать();
     ТЗИтог=Новый ТаблицаЗначений;
     ТЗИтог.Колонки.Добавить("Синоним",Новый ОписаниеТипов("Строка"));
     ТЗИтог.Колонки.Добавить("СуммаДокумента",Новый ОписаниеТипов("Число"));
     ТЗИтог.Колонки.Добавить("РознСумма",Новый ОписаниеТипов("Число"));
     
    
    
                 
    обДетал=Макет.ПолучитьОбласть("Детал|Графа");
    пока  Выборка.Следующий() цикл
        ТекКолонка=0;
        ДокОб=выборка.ссылка.ПолучитьоБъект();
        Синоним=ДокОб.Метаданные().Синоним;
        РознСумма=0;
        СуммаДокумента=0;
        для каждого Колонка из ЭлементыФормы.ЖурналДокументовСписок.Колонки цикл
            если Колонка.Имя="Картинка" тогда
                Продолжить;
            Конецесли;
            если Колонка.Имя="ВидДокумента" тогда
                зн=Синоним;
            Иначеесли Колонка.Имя="ВОЕН" тогда
                зн=зн.ВОЕН;    
            Иначеесли Колонка.Имя="РознСумма" тогда
                зн="";
                если РаботаСТЧДокумента.ЕстьРеквизитТЧ(ДокОб,"РознСумма","Товары")<>неопределено тогда
                    РознСумма=  ДокОб.товары.Итог("РознСумма");
                     зн=формат(рознСумма,"ЧДЦ=2");
                Конецесли;
            Иначе
                зн =Выборка[Колонка.Имя];
            Конецесли;
            обДетал.Область(1,1,1,1).ГоризонтальноеПоложение=колонка.ГоризонтальноеПоложениеВКолонке;
            обДетал.Область(1,1,1,1).Формат=Колонка.Формат;
            
            если  Колонка.Имя="СуммаДокумента" и значениеЗаполнено(зн) тогда
                СуммаДокумента=зн;
            Конецесли;
            
            обДетал.Параметры.Значение=зн;
            
            ТекКолонка=ТекКолонка+1;
            если ТекКолонка=1 тогда
                ТабДок.Вывести(обДетал);
            Иначе
                ТабДок.Присоединить(обДетал);
            Конецесли;
        КонецЦикла;
        
        стр=ТЗИтог.Найти(Синоним,"Синоним"); 
        если Стр=неопределено тогда
            стр= ТЗИтог.Добавить();
            стр.синоним= Синоним;
        Конецесли;
        стр.СуммаДокумента=Стр.СуммаДокумента+СуммаДокумента;
        стр.РознСумма=Стр.РознСумма+РознСумма;
        
        
    Конеццикла;
    
    ОбИтог= Макет.ПолучитьОбласть("Итого");
    ТабДок.Вывести(Макет.ПолучитьОбласть("Подвал"));


    для каждого СтрИтог из   ТЗИтог Цикл
        ОбИтог.Параметры.Заполнить(СтрИтог);
        ТабДок.Вывести(ОбИтог);

    Конеццикла;
    
    
    ТабДок.Показать("ОбщийЖурнал");    
    
КонецПроцедуры

Процедура ДействияФормыкнРеестрДокументов(Кнопка)
    РеестрДокуметов();
КонецПроцедуры

Процедура ЖурналДокументовСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    Об=ДанныеСтроки.Ссылка.ПолучитьОбъект();
    Если не ПустаяСтрока(ДанныеСтроки.Контрагент) Тогда
    ОформлениеСтроки.Ячейки.ВОЕН.Значение=ДанныеСтроки.Контрагент.ВОЕН;
    КонецЕсли;
    //СуммаДокумента=0;

    //если об.Метаданные().Имя="СписаниеТоваров" или об.Метаданные().Имя="ПеремещениеТоваров" тогда

    //    запрос=новый запрос;

    //    запрос.Текст="ВЫБРАТЬ

    //                 |    ТоварыНаСкладахОбороты.СебестоимостьРасход

    //                 |ИЗ

    //                 |    РегистрНакопления.ТоварыНаСкладах.Обороты(, , Регистратор, ) КАК ТоварыНаСкладахОбороты

    //                 |ГДЕ

    //                 |    ТоварыНаСкладахОбороты.Регистратор = &Регистратор

    //                 |

    //                 |СГРУППИРОВАТЬ ПО

    //                 |    ТоварыНаСкладахОбороты.СебестоимостьРасход";

    //    запрос.УстановитьПараметр("Регистратор",ДанныеСтроки.Ссылка);

    //    СуммаДокумента=запрос.Выполнить().Выгрузить().Итог("СебестоимостьРасход");

    //ИначеЕсли РаботаСТЧДокумента.ЕстьРеквизитШапки(Об,"СуммаДокумента")<> неопределено тогда

    //    СуммаДокумента=об.СуммаДокумента;

    //ИначеЕсли РаботаСТЧДокумента.ЕстьРеквизитШапки(Об,"Сумма")<> неопределено тогда

    //    СуммаДокумента=об.Сумма;

    //Конецесли;

    //    ОформлениеСтроки.Ячейки.СуммаДокумента.значение=СуммаДокумента;

                     
КонецПроцедуры
   Farid0516
 
2 - 21.11.21 - 12:36
ВОЕН=Контрагент ИНН
проблема возникает только при наличии документов, у которых нет контрагента
   Farid0516
 
3 - 21.11.21 - 12:37
Если в журнале есть только контрагентские документы, проблем нет.
Например Документы ПрочиеРасходы нет контрагент
   Ёпрст
 
4 - 21.11.21 - 17:30
(0)
вот тут бред, не Пит:
       для каждого Колонка из ЭлементыФормы.ЖурналДокументовСписок.Колонки цикл
            если Колонка.Имя="Картинка" тогда
                Продолжить;
            Конецесли;
            если Колонка.Имя="ВидДокумента" тогда
                зн=Синоним;
            Иначеесли Колонка.Имя="ВОЕН" тогда
                зн=зн.ВОЕН;    
            Иначеесли Колонка.Имя="РознСумма" тогда
                зн="";
                если РаботаСТЧДокумента.ЕстьРеквизитТЧ(ДокОб,"РознСумма","Товары")<>неопределено тогда
                    РознСумма=  ДокОб.товары.Итог("РознСумма");
                     зн=формат(рознСумма,"ЧДЦ=2");
                Конецесли;
            Иначе
                зн =Выборка[Колонка.Имя];
            Конецесли;



замени на   Иначеесли Колонка.Имя="ВОЕН" тогда
                зн=Выборка[Колонка.Имя]; 
хотя бы.
Иначе, у тебя переменная зн не определена, а ты у неё еще и реквизит какой-то спрашиваешь, аналогично зн = синоним
   Farid0516
 
5 - 21.11.21 - 17:48
{ЖурналДокументов.ОбщийЖурнал.Форма.ФормаСписка.Форма(178)}: Поле объекта не обнаружено (ВОЕН)
                зн=Выборка[Колонка.Имя]
   hhhh
 
6 - 21.11.21 - 18:00
(5) так в запрос-то добавьте это поле ВОЕН. Чего вы чудите?
   hhhh
 
7 - 21.11.21 - 18:04
(5) тоесчть Выбрать * - это у вас дебилизм, выберите все поля конкретно, которые нужны.
   Ёпрст
 
8 - 21.11.21 - 18:08
(5) Да посмотрел код по-диагонали, всё в топку.
   Farid0516
 
9 - 21.11.21 - 18:24
Я не программист. Я занимаюсь этим 4-5 дней и хочу быть программистом )
   МимохожийОднако
 
10 - 21.11.21 - 18:32
(9) Не важно, кто ты. Важно, что пишешь и какие выводы делаешь из замечаний
   Farid0516
 
11 - 21.11.21 - 18:40
Жду комментариев, как это конкретизировать. Спасибо за помощь
   Farid0516
 
12 - 21.11.21 - 18:40
Проблема продолжается
   Farid0516
 
13 - 21.11.21 - 18:41
Если в журнале есть только контрагентские документы, проблем нет.
Например Документы ПрочиеРасходы нет контрагент!!!
   ДенисЧ
 
14 - 21.11.21 - 18:43
Самый тупой вариант - поставить попытку при получении ВОЕН.
Намного лучший вариант - бежать от 1с
   Ёпрст
 
15 - 21.11.21 - 20:39
На вот, наслаждайся

     ИначеЕсли Колонка.Имя="ВОЕН" тогда
         Попытка  
               зн=Выборка.Контрагент.ВОЕН; 
         Исключение
              зн = "нету воена нихрена";
         КонецПопытки;

   Ёпрст
 
16 - 21.11.21 - 20:45
И да, весь код в топку, Если че, настройки отбора в журнале можно через тот же Построитель поиметь, это проще, чем прописывать весь отбор ручонками как в (0)

Тип того:

Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
Построитель.Выполнить();

   Droning1C
 
17 - 21.11.21 - 21:44
Когда нет контрагент и в ВОЕНом беда,
Когда в синтакс-помощник букв целый орда,
Когда хочется плак и слёзка бежит - 
Посмотри курс Гилева и будет профИт.
   Farid0516
 
18 - 22.11.21 - 08:43
На вот, наслаждайся

     ИначеЕсли Колонка.Имя="ВОЕН" тогда
         Попытка  
               зн=Выборка.Контрагент.ВОЕН; 
         Исключение
              зн = "нету воена нихрена";
         КонецПопытки;


Успешный. Большое спасибо  Ёпрст
   Droning1C
 
19 - 22.11.21 - 12:15
(18) цэ костыль. и в таком месте, где ему грех находиться.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.