1с 77 значение не представляет агрегатный объект
1C Предприятие 7.7 Ошибка: Значение не представляет агрегатный объект (ВнешРасчет)
1С: Предприятие 7.7. Конфигурация: УСН ред 1.3(7.70.52) УСН в ТСЖ и УК, ред 3.0 (7.70.252.39)
Нажимаю Документы --> ТСЖ --> Начисление платежей --> Выбираю Услуги, Лицевые счет(а), За какой период, нажимаю Начислить и он выдает ошибку:
ТаблНачислений.Загрузить(Т СЖ_БазовыйОбъект.ВнешРасче т(ТаблНачислений, ДатаНачисления,Разделител� �Строк,ТаблЗнач,StrO,ТипДок));
: Значение не представляет агрегатный объект (ВнешРасчет)
Через конфигурацию уже делал Тестирование и исправление ИБ, не помогло.
Подскажите пожалуйста, в чем может быть проблема?
1С: Предприятие 7.7. Конфигурация: УСН ред 1.3(7.70.52) УСН в ТСЖ и УК, ред 3.0 (7.70.252.39)
Нажимаю Документы --> ТСЖ --> Начисление платежей --> Выбираю Услуги, Лицевые счет(а), За какой период, нажимаю Начислить и он выдает ошибку:
ТаблНачислений.Загрузить(Т СЖ_БазовыйОбъект.ВнешРасче т(ТаблНачислений, ДатаНачисления,Разделител� �Строк,ТаблЗнач,StrO,ТипДок));
: Значение не представляет агрегатный объект (ВнешРасчет)
Через конфигурацию уже делал Тестирование и исправление ИБ, не помогло.
Подскажите пожалуйста, в чем может быть проблема?
Полагаю, что в данной конфигурации есть защищенный внешний модуль, с которым потеряна связь.
Как давно появилась эта ошибка? Может быть после обновления?
Пользователь сказал cпасибо:
Проблема появилась после того как перенесли 1С 7.7 Windows XP с помощью Конфигуратор - Сохранения данных, на такую же 1С 7.7 Windows x64 Конфигуратор - Восстановить данные. Платформа кстати локальная версия и там и там.
В Отладчике сразу в журнале выдает: ТаблНачислений.Загрузить(Т СЖ_БазовыйОбъект.ВнешРасче т(ТаблНачислений, ДатаНачисления,Разделител� �Строк,ТаблЗнач,StrO,ТипДок)); = Ошибка в выражении!
Вот часть кода из этой процедуры:
Процедура ПроизвестиРасчетНачислени й()
НачислитьПоСчетчикам();
КонМес = КонМесяца(ДатаНачисления);
Если ПустоеЗначение(Группа) = 0 Тогда
ГруппаРасчета = Группа; //ГруппаРасчета.ТекущийЭлем� �нт();
Иначе
ГруппаРасчета = "";
КонецЕсли;
ТипДок = 1;
ТаблНачислений.Загрузить(Т СЖ_БазовыйОбъект.ВнешРасче т(ТаблНачислений, ДатаНачисления,Разделител� �Строк,ТаблЗнач,StrO,ТипДок));
Сообщить(""+StrO);
КонецПроцедуры
//__________________________________________________ ___________________________
И самое что интересное теперь выяснилось что и Начисление льгот выдает похожую ошибку:
ТаблНачислений.Загрузить(Т СЖ_БазовыйОбъект.ВнешРасче тЛьгот(ТаблНачислений,Груп паРасчета,
: Значение не представляет агрегатный объект (ВнешРасчетЛьгот)
//ВЕСЬ УЧЕТ 489-1027______________________________________________ _______________________________
Вот сама процедура
Процедура ПроизвестиРасчетЛьгот()
ГруппаРасчета = СоздатьОбъект("Справочник.� �онтрагенты");
Если ПустоеЗначение(ЛицевыеСче� �а) = 0 Тогда
ГруппаРасчета = ЛицевыеСчета;
Сообщить("ГруппаРасчета "+ГруппаРасчета);
Иначе
ГруппаРасчета = ПолучитьПустоеЗначение(Гр� �ппаРасчета);
КонецЕсли;
ТаблНачислений.УдалитьСтр� �ки();
ТаблНачислений.Загрузить(Т СЖ_БазовыйОбъект.ВнешРасче тЛьгот(ТаблНачислений,Груп паРасчета,
ДатаНачисления,Начисляема� �ГруппаСредств,ПоВсем,Разд� �лительСтрок,StrO));
Информация = StrO;
Сообщить(""+StrO);
КонецПроцедуры
//__________________________________________________ ___________________________
Переработанная торговля 7.7 SQL. 1С++, FormEx, Yoksel
Изредка возникает ошибка
Документ.ЗаявкаПокупателя.Форма.Модуль(2134)>: Значение не представляет агрегатный объект (ВалютаВзаиморасчетов)
в строке
ВалютаДоговораСтарая = Договор.ВалютаВзаиморасчетов;
Договор - реквизит шапки документа типа Справочник.Договоры. В справочнике реквизит ВалютаВзаиморасчетов, конечно, есть.
По идее, такой ошибки быть не может, реквизит документа Договор может иметь значение или конкретного договора, или пустого значения типа "Справочник.Договоры". В любом случае "Договор.ВалютаВзаиморасчетов" не должно вызывать ошибку.
Переменных с именем "Договор" не объявлено.
Кто нибудь с таким сталкивался?
(4)(5)
ПолучитьПустоеЗначение("Справочник.Договоры").ВалютаВзаиморасчетов
отрабатывает нормально. И при невыбранном договоре все должно быть окей. Мне кажется, это какой-то странный глюк, связанный или с потерей, или с порчей контекста.
(7) Битая ссылка. Возможно.
Оформи в попытку и на исключение вешай запись в лог ключа для поиска записи и описание всех контекстов.
(8) А ТиИ сложно. Основная база уже на 100 гигов перевалила. Пытаюсь тестировать различными SQL-запросами, но, наверняка, много аспектов упускаю.
(9) На это похоже. Искать надо.
ВалютаДоговораСтарая - Это что такое, Реквизит или переменная?
Если переменная, то научись объявлять переменные через "Перем ВалютаДоговораСтарая;" :)
+(0) Смотри, какого типа "Договор", если просто справочник и он пустой, т.е. не указан, то ошибка имеет иметь место :)
(0) А при перепроведении проблемного документа ошибка воспроизводится?
Такое может быть если реквизит только для элемента, а выбрана группа.
(11) 1С не требует объявления переменных и даже не способна это контролировать. Так что объявлять переменные хорошо, но толку обычно минимум.
(12) в (0) сказано "Договор - реквизит шапки документа типа Справочник.Договоры"
(13) Если бы отловить что-где-когда. :( Более полутора сотен пользователей в дюжине городов и проблема вылазит редко-редко. Сейчас вставил попытку-исключение с автоотправкой себе скриншота и прочей информацией. Может удастся выловить конкретную ситуацию.
Связанный вопрос: предположительно проблема из-за нарушения внутренних связей между 1sjourn, dt*, dh*. Нет ли у кого опыта и примера SQL-запроса для тестирования этих связей?
(13)(16) Это не вызывает ошибки. Похоже, 1С проверяет признак Для элемента/Для группы/Для обоих исключительно на этапе дизайна формы.
select *
from _1sjourn j (nolock)
full join dhXXX dh(nolock) on dh.iddoc = j.iddoc
where dh.iddoc is null or j.iddoc is null
from $Документ.ЗаявкаПокупателя Док (nolock)
left join _1sjourn j (nolock) on j.iddoc = Док.iddoc
where $Док.Договор != $ПустойИД
and Договоры.id is null
(18) Недостаточная проверка. С одним и тем же iddoc могут быть документы разных видов. Как я понимаю, нужно еще учитывать IDDOCDEF. Ну и ХХХ как-нибудь бы автоматически развернуть.
Попробовал вот так, но ничего не выдало. Или таки нет плохой ссылки, или я ошибся в запросе:
DECLARE @query nchar(1000)
DECLARE TablesList CURSOR FOR SELECT name FROM sysobjects WHERE type='U' and name like 'DH%'
OPEN TablesList
FETCH NEXT FROM TablesList INTO @TableName WHILE @@FETCH_STATUS=0 BEGIN
set @IDDOCDEF = SUBSTRING(@TableName,3,30)
print 'Check documents ID '+@IDDOCDEF
set @query = 'select * from _1sjourn j (nolock) full join dh'+@IDDOCDEF+' dh(nolock) on dh.iddoc = j.iddoc where (dh.iddoc is null or j.iddoc is null) and IDDOCDEF='+@IDDOCDEF
exec sp_executesql @query OUTPUT
FETCH NEXT FROM TablesList INTO @TableName
END
CLOSE TablesList
DEALLOCATE TablesList
Наверное в (18) нужно так:
select *
from _1sjourn j (nolock)
full join dhХХХ dh(nolock) on dh.iddoc = j.iddoc
where (dh.iddoc is null or j.iddoc is null) and j.iddocdef = ХХХ
иначе выкатывает, как я понимаю, кучу документов из других dh
(23) Если запрос годный и нет нарушений, тогда возвращается вопрос, с которого началось - причина проблемы.
Причина может быть в банальном сбое в индексах. Перестрой индексы для таблицы договоров (хотя бы первичный)
(23) Может подскажешь, как в моём запросе в (21) выводить только результаты с отклонениями. А то вываливает в management studio кучу "пустых" результатов запросов.
(25) Индексы перестраиваются регулярно.
(26) в запросе в (21) у тебя итак выводятся только записи, iddoc которых нет либо в dh либо в journ. Все Ок. Если куча пустых результатов, значит и нет проблемных записей.
(27) Вот хочется, что бы пустые результаты не выводились. А только те, в которых строки есть.
Может кому понадобится запрос, проверяющий правильность ссылок между журналом и шапкой/таблицей документов:
DECLARE @query nchar(1000)
DECLARE TablesList CURSOR FOR SELECT name FROM sysobjects WHERE type='U' and (name like 'DH%' or name like 'DT%')
OPEN TablesList
FETCH NEXT FROM TablesList INTO @TableName WHILE @@FETCH_STATUS=0 BEGIN
if LEFT(@TableName,2) = 'DH'
set @query = 'select ''DH'+@IDDOCDEF+''' as DocTable, j.iddoc, j.docno, CAST(LEFT(j.DATE_TIME_IDDOC, 8) as DateTime) as docdate from _1sjourn j (nolock) full join dh'+@IDDOCDEF+' dh(nolock) on dh.iddoc = j.iddoc where (dh.iddoc is null or j.iddoc is null) and j.iddocdef='+@IDDOCDEF
else
set @query = 'select ''DT'+@IDDOCDEF+''' as DocTable, j.iddoc, j.docno, CAST(LEFT(j.DATE_TIME_IDDOC, 8) as DateTime) as docdate from _1sjourn j (nolock) full join dt'+@IDDOCDEF+' dt(nolock) on dt.iddoc = j.iddoc where (j.iddoc is null) and j.iddocdef='+@IDDOCDEF
exec sp_executesql @query OUTPUT
FETCH NEXT FROM TablesList INTO @TableName
END
CLOSE TablesList
DEALLOCATE TablesList
Может пустой, может не пустой. Пустое значение правильного типа такую проблему вызывать не может.
Однажды у меня был похожий глюк, оказалось, причина в том, что идентификатор документа, приписанный в 1sjourn к одному виду документов, на самом деле в DH/DT принадлежал к другому виду. В отчетах представление документа было "счет-фактура", а из журнала открывалась заявка с проблемами, похожими на (0).
Но сейчас подобных проблем не обнаруживается. Другая, видно, причина.
В 1С: Бухгалтерия 7.7 новичек. Только устроился и мало в чем разобрался, а тут следующая проблема возникла: При "Формирование записей покупок №xxxxxxx от xx.xx.xx"
Нажимаю заполнить, выдается ошибка:
Если Док.Субконто2.Выбран()=1 Тогда
: Значение не представляет агрегатный объект (Выбран)
В чем может быть проблема, укажите направление в котором идти.
В каком-то из документов "Выписка" или "Авансовый отчет" не заполнен реквизит "Субконто2" (2-е субконто корСчета)
ЗЫ: НовичОк
Во всех документах Субконто2 стоит, но проблема не исчезла. Как мне через точку остановки посмотреть на каком документе стопорится формирование.
Совет (5) - для умеющих программировать в 1С. Видимо, ты не из таких.
Для начала попробуй локализовать ошибку по времени.
Затем открываешь "отладчик", в нем открываешь модуль этого документа, на строке 758 ставишь точку остановки, запускаешь в предприятии формирование своего документа. Будешь много раз остановлен на точке останова, смотри значение переменной ДОК, жми "продолжить выполнение". Последнее значение переменной ДОК, после которой возникнет ошибка, и есть "плохой" документ.
Большое спасибо за помощь, нашел документ из-за которого не формировалась книга покупок. Оказалось что по счету 76.6 проходит выплата алиментов, но у данного счета нету субконто2 и поэтому выдает ошибку, может кто сталкивался, как лучше решить проблему?
Если ( (Док.КоррСчет = СчетПоКоду("60.1")) или (Док.КоррСчет = СчетПоКоду("60.6"))) или ((Док.КоррСчет = СчетПоКоду("76.5")) или (Док.КоррСчет = СчетПоКоду("76.6"))) Тогда
Если Док.Субконто2.Выбран()=1 Тогда
Если Док.Субконто2.АвтоОбработкаНДС=0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Смотрю сейчас стандартную (515-й релиз), есть там субконто2 , "Договоры", у спр. Договоры как раз есть флажок "АвтоОбработкаНДС"
Счет 76.6
Прочие расчеты с разными дебиторами и кредиторами (в условных единицах)
Субсчет 76.6 "Прочие расчеты с разными дебиторами и кредиторами (в условных единицах)" предназначен для обобщения информации о прочих расчетах, фактически осуществляемых в рублях, но учитываемых в условных единицах.
Сальдо и обороты по счету формируются одновременно в условных единицах и в рублях. В качестве условной единицы может использоваться любая валюта из справочника "Валюты".
Аналитический учет ведется по каждому дебитору и кредитору (субконто "Контрагенты") и основанию расчетов (субконто "Договоры"). Каждый дебитор и кредитор - элемент справочника "Контрагенты". Каждое основание расчетов - элемент справочника "Договоры".
Скорее всего, бухи сами подправили План Счетов.
Остается только одно: по совету (10) убрать из условия счет 76.6. В ЗаписиКнигиПокупок оно встречается 4 раза.
Ошибка появляется при любом ответе в диалоговом окне.
(1) luda01, А вы поди на вопрос "отчет, сохраненный версией от . " отвечаете "да", так вы в корне неправы - нужно отвечать "нет" и будет вам счастье. Дело в том, что в данном случае вы хотите баланс, сохраненный более поздней версией, открыть более ранней, что и привело к коллизии программных кодов.
(4) Timesoft, автор наоборот пытается открыть более новую версию более старой
не знаю, как там обруливается такая ситуация в коде отчета
я бы предложил попробовать открыть этот отчет своей родной версией от 1 кв 2012 года.
если и родная будет выдавать такую же ошибку - прогноз плохой. в свое время у меня как-то побился вариант какого-то регламентированного учета. насколько я помню - я находил конкретный файл этого отчета и удалял его. если автор сделать такое не может - остается только удалить все файлы сохраненных отчетов
(5) GPL, Я вот тоже думаю, что надо брать комплект 1 кв 2012, открывать, ставить там нужный период и смотреть что получится (по-моему как раз с 2012 баланс и менялся), но вот факт, что "ошибка появляется при любом ответе" снижает мой оптимизм :)
(6) Timesoft, Я вспомнил, если открыть 2012 и попытаться изменить период в меньшую сторону - не даст скажет типа не предназначена для ранее чем. Надо открыть обслуживание сохраненных форм отчетности и удалить ВСЕ балансы. Должно сработать.
(7) ValeryM, Дык, хочет ли Людмила удалить все балансы - это вопрос !
Может, она хочет открыть сохранённый баланс ?
Народ, прямо сейчас столкнулся с такой же проблемой у своего клиента.
Если вам надо открыть ранее сохраненный баланс, то воспользуйтесь штатной обработкой "Обслуживание сохраненных данных отчетности", которая входит в состав любого комплекта регламентированной отчетности. Перед открытием она, как я понимаю, вначале анализирует все отчеты, которые ранее были сохранены, поэтому вначале надо подождать. Потом в списке находите нужный отчет, и он успешно откроется нужным форматом.
(11) ValeryM, я думаю, что раз на раз не приходится. У меня, например, полностью воспроизвелась ситуация из (1), и единственный способ ее преодоления я описал в (9). И вообще, пора всех на 8ку переводить;)
Тоже попадал в такую ситуацию, помог вариант описанный в (9), открылись все необходимые, ранее созданные отчеты.
1С 7.7 ТиС переписанная. Иногда при формировании части отчетов выходит ошибки: "Значение не представляет агрегатный объект (ОсновноеСвойство)" "Значение не представляет агрегатный объект (Вытяжка)" без номера строки, как если бы в ячейке отчета есть обращение к несуществующему реквизиту. Проблема в том, что действительно когда то в отчетах были столбцы с формулами типа "Номенклатура.ОсновноеСвойство". Потом эти столбцы были удалены. Но иногда всё равно выскакивают такие ошибки. Эпизодически и нерегулярно. Появились ошибки при формировании отчета, обновляешь отчет с совершенно теми же настройками - ошибок нет. - Глобальный поиск по всем таблицам конфигурации ".ОсновноеСвойство" ничего не даёт. - Визуальное исследование таблиц в конфигурации на предмет наличия ".ОсновноеСвойство" в формулах или расшифровках ячеек ничего не обнаруживает. - Поиск по модулям даёт, но ничего связанного с отчетами там нет. - Распаковка конфигурации GComp и глобальный поиск по всей папке SRC по всех кодовых таблицах не даёт ничего, связанного с отчетами. Где еще может крыться проблема? Нет ли какого-средства в 1С конвертировать таблицы в текст, что бы изучить подробно внутренности?
В формуле текста на форме или формуле ячейки в отчете ищет стандартный глобальный поиск по конфе. А он ничего не находит. Картинок на отчетах нет.
Никаких ошибок на сформированном отчете тоже нет. Если в формуле ячейки стоит что-то типа "какаятофигня.ОсновноеСвойство", то в сформированном отчете так и выводится. Но ничего такого в сформированных таблицах отчетов нет.
И если взять из распакованной GCOMP конфигурации, например, таблицу . SRCОтчетыВедомостьПоПартиямТМЦВедомостьПоПартиямТМЦ.mxl то в ней, если смотреть FARом отлично видны всякие ПечНачОст и прочие формулы. А ".ОсновноеСвойство" нет. Однако ошибки "Значение не представляет агрегатный объект (ОсновноеСвойство)" выскакивают.
Использую FormEx, 1C++, Йоксель. ТурбоМД, на сколько знаю, встроен в 1С++. Классы не использую. 1Сшник могу дать только зашифрованный Политика руководства :(
А где ты его нашел? В конфигурации (согласно глобальному поиску по модулям, формулам таблиц, формулам диалогов) буквально пара десятков упоминаний, все в документе "инвентаризацияТМЦ" и справочнике "ПравилаЗаполненияСвойствСправочников".
Поиск по всей конфигурации, распакованной GCOMP даёт те же один документ и один справочник. Страшно заинтриговал. Где оно нашлось?
Наверное, не "ТекСкойство", а "ТекстСвойство". Это еще, по моему, от типового ТиС. Показывает на форме наименование основного свойства номенклатуры. глВерхнийКолонтитулОтчета примитивная функйия, выводящая строку типа "Отчет сформирован 19.09.2013 12:21:54 [ЦБ/D2/Чинючин Владислав Валерьевич]" Картиной к отчетах нет, тексты, вроде как, не должны ошибки показывать.
Журнал доработки облегчает жизнь. База распределенная, пользователей много которых ни разу в жизни не видел и не увижу. Часто проще послать "читайте журнал доработки за такую-то дату", чем по двадцатому разу что-то объяснять.
В табло ничего, да и ошибки возникают и тут же пропадают в произвольный момент у произвольного юзера.
Ошибка не одна, много из. С количеством выводимых строк связь какая-то точно есть. А со скриншотом сложно. Эта хрень вылазит на сотню пользователей пару раз в неделю в среднем. Вроде не мешает, но я в последнее время родил мониторинг баз по всем серверам и такая непонятка в логах начала напрягать.
у тебя есть группировка/фильтр по свойствам при формировании ? типа СвойствоПок = Регистр.Вася.ДоговорПокупателя.Владелец.ОсновноеСвойство.ЗначениеСвойства;
Группировка/фильтр теоретически есть, но ошибка возникала без их использования. Из текста запроса неиспользуемые переменные у меня убираются <реклама>;. Если ошибка не возникает, в отладчике никакого упоминания проблемных "слов" не возникает. А отловить ситуацию, когда ошибка возникает пока не удалось.реклама>
ну и посмотри, чего в анпаках валяется, могёт, ты выгруженный отчет смотришь всегда, а не тот, что в мд.
Читайте также: