|
Общий Журнал Форма Списка Значение не является значением объектного типа | ☑ | ||
---|---|---|---|---|
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)
вот тут бред, не Пит:
замени на Иначеесли Колонка.Имя="ВОЕН" тогда зн=Выборка[Колонка.Имя]; хотя бы. Иначе, у тебя переменная зн не определена, а ты у неё еще и реквизит какой-то спрашиваешь, аналогично зн = синоним |
|||
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) цэ костыль. и в таком месте, где ему грех находиться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |