Имя: Пароль:
1C
1С v8
Общий Журнал Форма Списка Значение не является значением объектного типа
,
0 Farid0516
 
21.11.21
12:24
пожалуйста помоги


{ЖурналДокументов.ОбщийЖурнал.Форма.ФормаСписка.Форма(178)}: Значение не является значением объектного типа (ВОЕН)
                зн=зн.ВОЕН;
1 Farid0516
 
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;
    //если об.Метаданные().Имя="СписаниеТоваров" или об.Метаданные().Имя="ПеремещениеТоваров" тогда
    //    запрос=новый запрос;
    //    запрос.Текст="ВЫБРАТЬ
    //                 |    ТоварыНаСкладахОбороты.СебестоимостьРасход
    //                 |ИЗ
    //                 |    РегистрНакопления.ТоварыНаСкладах.Обороты(, , Регистратор, ) КАК ТоварыНаСкладахОбороты
    //                 |ГДЕ
    //                 |    ТоварыНаСкладахОбороты.Регистратор = &Регистратор
    //                 |
    //                 |СГРУППИРОВАТЬ ПО
    //                 |    ТоварыНаСкладахОбороты.СебестоимостьРасход";
    //    запрос.УстановитьПараметр("Регистратор",ДанныеСтроки.Ссылка);
    //    СуммаДокумента=запрос.Выполнить().Выгрузить().Итог("СебестоимостьРасход");
    //ИначеЕсли РаботаСТЧДокумента.ЕстьРеквизитШапки(Об,"СуммаДокумента")<> неопределено тогда
    //    СуммаДокумента=об.СуммаДокумента;
    //ИначеЕсли РаботаСТЧДокумента.ЕстьРеквизитШапки(Об,"Сумма")<> неопределено тогда
    //    СуммаДокумента=об.Сумма;
    //Конецесли;
    //    ОформлениеСтроки.Ячейки.СуммаДокумента.значение=СуммаДокумента;
                    
КонецПроцедуры
2 Farid0516
 
21.11.21
12:36
ВОЕН=Контрагент ИНН
проблема возникает только при наличии документов, у которых нет контрагента
3 Farid0516
 
21.11.21
12:37
Если в журнале есть только контрагентские документы, проблем нет.
Например Документы ПрочиеРасходы нет контрагент
4 Ёпрст
 
21.11.21
17:30
(0)
вот тут бред, не Пит:

       для каждого Колонка из ЭлементыФормы.ЖурналДокументовСписок.Колонки цикл
            если Колонка.Имя="Картинка" тогда
                Продолжить;
            Конецесли;
            если Колонка.Имя="ВидДокумента" тогда
                зн=Синоним;
            Иначеесли Колонка.Имя="ВОЕН" тогда
                зн=зн.ВОЕН;    
            Иначеесли Колонка.Имя="РознСумма" тогда
                зн="";
                если РаботаСТЧДокумента.ЕстьРеквизитТЧ(ДокОб,"РознСумма","Товары")<>неопределено тогда
                    РознСумма=  ДокОб.товары.Итог("РознСумма");
                     зн=формат(рознСумма,"ЧДЦ=2");
                Конецесли;
            Иначе
                зн =Выборка[Колонка.Имя];
            Конецесли;



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

Тип того:


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

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


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