Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Необъяснимое поведение 1С (7.7)

Tanya
читатель
офлайн
Дата регистрации: 03.12.2001
Сообщений: 8412
Пост №11
 
08.11.2007 14:13

"Первоначально<br>> ТовЦена=Товар.Розн_Цена.Получить(ПолучитьТА()); : <br>> {Документ.РасходнаяДолг.Форма.Модуль(256)}: Значение не представляет <br>> агрегатный объект (Получить)<br><br>Просто в любой обработке попробуете пример (хоть мой пример ) обращения к реквизитам справочника, то увидите разницу в сообщениях. Так что если сбой не у вас, то пусть точно скажут какое сообщение при исполнении.<br><br>Если у вас нет, то может например был сбой при обновлении ,слетела периодичность у реквизита.<br>"

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №12
 
08.11.2007 14:39

"Да ничего там не слетало... поскольку обновления не было, конфигурация у нас почти самописная и от 1С обновлений не берём, правим все сами.<br>Сейчас пример по пробую.<br><br>Модуль документа, предопределенная процедура ПриЗакрытии() (чисто синтетический тест!)<br>Товар.ИспользоватьДату(ПолучитьТА()); ТовЦена=Товар.Розн_Цена.Получить(ПолучитьТА());<br><br>Далее после проведения документа в момент его закрытия - "коврик" с текстом "Ошибка при выполнении модуля! Закрыть?" и в табло (копирую через буфер обмена)<br>ТовЦена=Товар.Розн_Цена.Получить(ПолучитьТА());<br>{Документ.РасходнаяДолг.Форма.Модуль(263)}: Значение не представляет агрегатный объект (Получить)<br><br>Далее идём в Монитор и видим событие:<br>Событие: Ошибка времени выполнения<br>Категория: Ошибка<br>Комментарий: ТовЦена=Товар.Розн_Цена.Получить(ПолучитьТА()); : {Документ.РасходнаяДолг.Форма.Модуль(263)}: Значение не представляет агрегатный объект (Получить)<br><br>Подобная же строчка:<br>В одном из отчётов (работает как часы)<br>Цена=Запрос.Товар.Розн_Цена.Получить(Запрос.КонецПериода());<br>и в другом документе (введено за сегодня 16 документов данного типа, без ошибок)<br>СтарЦена=Товар.Розн_Цена.Получить(ДатаДок);"

Алексей Потапов
читатель
офлайн
Дата регистрации: 18.08.2006
Сообщений: 108
Пост №13
 
08.11.2007 21:50

а товар у которого вычисляется Розн_Цена всё время из одного и того же справочника? и пустых строк в документе нет? в смысле, без выбранного товара

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №14
 
09.11.2007 12:31

"Да, товар из одного и того же справочника. Наличие пустых строк проверяется еще при поптыке проведения.<br>Пока тестирую метод:<br> Если ТипЗначенияСтр(Товар.Розн_Цена)="Число" Тогда<br> ТовЦена=Товар.Розн_Цена;<br> Иначе<br> ТовЦена=Товар.Розн_Цена.Получить(ПолучитьТА());<br> КонецЕсли;<br>но документов с необходимым условием пока в рабочей базе ни кто не создавал, а в тренировочной пашет на ура."

Алексей Потапов
читатель
офлайн
Дата регистрации: 18.08.2006
Сообщений: 108
Пост №15
 
09.11.2007 13:18

Если ТипЗначенияСтр(Товар.Розн_Цена)="Число" Тогда<br>= тут всегда будет число, потому что тип значения, заданный в конфигураторе не изменить.<br>просто нужна внимательность при анализе ошибки. сколько было ситуаций, когда "грешили" на движок 1с, а потом оказывалось, что всё логично и ошибка в вычислении появлялась закономерно. можно попытаться в "попытка-исключение" кинуть в сообщение или номер документа или номер товара, чтобы проанализировать отличие сбойного значения от нормальных.

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №16
 
09.11.2007 14:55

"Приняв к сведению пост Thorvardr 07.11.2007 22:59<br>> обычно это бывает если где то по алгоритму перед этим вызывалось:<br>> Товар.ИспользоватьДату(КакаяТоДата);<br>> после этого к цене надо образаться не Товар.Розн_Цена.Получить(КакаяТоДата); , а просто Товар.Розн_Цена<br><br>и обкотав данную ситуацию было выявлено, что если предварительно использовать метод ИспользоватьДату то ТипЗначенияСтр(Товар.Розн_Цена)="Число". Если же не использовать ИспользоватьДату то отладчик показывает что ТипЗначенияСтр(Товар.Розн_Цена) = "НеизвестныйОбъект" из чего был сделан вывод, что это тип значения - периодический реквизит.<br>Поэтому если число то - ТовЦена=Товар.Розн_Цена; иначе ТовЦена=Товар.Розн_Цена.Получить(ПолучитьТА());<br>Оно то можно конечно обернуть в защищённый блок (Попытка...) но, что будет правильней по отношению к системе? "Тихое" исключение и его обработка или тривиальное получение типа объекта?<br><br>И про "грешить" на движок 1С... переполнение *** видели? Обработка из ~550 строк - загрузка документа в базу с созданием дополнительных единиц измерения, элементов починенных справочников, с участием 4 справочников (во всех 4 при необходимости могут создаваться новые элементы, повторяя иерархию из другой базы, если они не найдены в справочнике), объекта Перечисление. И наконец создание приходного документа с расчётом цены продажи на основе цены покупки из файла переноса данных и установленной наценки на товар."

Алексей Потапов
читатель
офлайн
Дата регистрации: 18.08.2006
Сообщений: 108
Пост №17
 
09.11.2007 15:09

Оно то можно конечно обернуть в защищённый блок (Попытка...) но, что будет правильней по отношению к системе? "Тихое" исключение и его обработка или тривиальное получение типа объекта?<br><br>="обернуть" только для того, чтоб вытащить объект, на котором вызывается сбой. проанализировать, где скрыта ошибка и уже потом программно обработать ситуацию, приводящую к этой ошибке. а "использовать дату" я обычно использовал при создании новых элементов. и этот метод предназначен как раз для созд. новых. может я ошибаюсь - поправьте<br>определить признак периодичности реквизита легко в дереве конфигурации )

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №18
 
09.11.2007 15:21

В конфигурации реквизит Розн_Цена - периодический! Но при использованном методе ИспользоватьДату в где-то в процедуре проведения (там мрак... писали до меня) выдаёт ошибку при обращении Товар.Розн_Цена.Получить(ПолучитьТА())<br><br>Из Отладчика:<br>Тест номер 1:<br>ТипЗначенияСтр(Товар.Розн_Цена) = "НеизвестныйОбъект"<br>Товар.Розн_Цена = НеизвестныйОбъект<br>Товар.Розн_Цена.Получить(ПолучитьТА()) = 1024<br>Тест номер 2:<br>ТипЗначенияСтр(Товар.Розн_Цена) = "Число"<br>Товар.Розн_Цена = 1024<br>Товар.Розн_Цена.Получить(ПолучитьТА()) = Ошибка в выражении!<br><br>Готично?

Алексей Потапов
читатель
офлайн
Дата регистрации: 18.08.2006
Сообщений: 108
Пост №19
 
09.11.2007 15:26

можешь прислать в архиве md-шник или просто текст модуля документа, где возникает ошибка? может найду время в выходные глянуть )) a.potapov@tolcom.ru

IceBeerg
читатель
офлайн
Дата регистрации: 06.10.2004
Сообщений: 803
Пост №20
 
09.11.2007 17:01

Отправил, смотрите :)

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация