Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:27

Ошибка!Значение не является значением объектного типа.

Автор andryscha92, 31 окт 2013, 20:32

0 Пользователей и 1 гость просматривают эту тему.

andryscha92

Здравствуйте!Есть отчет который называется "Отчет по готовой продукции". Если выбирать формирование периода за месяц например октябрь то всё корректно отрабатывает.Но если период ставить год например 2013 то вылетает такая ошибка!

andryscha92

Цитата: andryscha92 от 31 окт 2013, 20:32
Здравствуйте!Есть отчет который называется "Отчет по готовой продукции". Если выбирать формирование периода за месяц например октябрь то всё корректно отрабатывает.Но если период ставить год например 2013 то вылетает такая ошибка!
нашел и перепровел документ, и проблема исчезла.
Добавлено: 31 окт 2013, 21:26


Теперь ошибка в следующем

mixqn

Судя по всему, при определенных условиях значение ТекПокупатель - не объектного типа (не ссылка судя по всему). Проверьте в отладчике, какое значение имеет ТекПокупатель, затем посмотрите, как определяется ТекПокупатель - буквально, откуда берется значение (из документа скорее всего) ну и затем посмотрите, почему в вашем случае ТекПокупатель оказывается не объектного типа.

andryscha92

Цитата: mixqn от 31 окт 2013, 23:10
Судя по всему, при определенных условиях значение ТекПокупатель - не объектного типа (не ссылка судя по всему). Проверьте в отладчике, какое значение имеет ТекПокупатель, затем посмотрите, как определяется ТекПокупатель - буквально, откуда берется значение (из документа скорее всего) ну и затем посмотрите, почему в вашем случае ТекПокупатель оказывается не объектного типа.
Если в таблицу значений попадает документ "регламентная операция" то там сумма отрицательная и контрагент отсутствует, соответственно  ошибка и в этом ТекПокупатель = "".что делать с этими регламентыми документами теперь? вот сам код:

Процедура ОпределитьКоличествоНоменклатуры()
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   ХозрасчетныйОборотыДтКт.Регистратор,
                  |   ХозрасчетныйОборотыДтКт.СубконтоКт1,
                  |   ХозрасчетныйОборотыДтКт.СуммаОборот КАК Сумма,
                  |   ХозрасчетныйОборотыДтКт.Регистратор.Контрагент КАК Контрагент
                  |ИЗ
                  |   РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Регистратор, СчетДт = &СчетДт, , СчетКт = &СчетКт, , ) КАК ХозрасчетныйОборотыДтКт";
   Запрос.УстановитьПараметр("НачалоПериода", ВыбНачПериода);
   Запрос.УстановитьПараметр("КонецПериода", КонецДня(ВыбКонПериода));
   Запрос.УстановитьПараметр("СчетДт", ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД);
   Запрос.УстановитьПараметр("СчетКт", ПланыСчетов.Хозрасчетный.ГотоваяПродукция);
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   Счет62 = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;
   Счет901 = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД;
   Пока Выборка.Следующий() Цикл
      ТекНоменклатура = Выборка.СубконтоКт1;
      ТекПокупатель = "";
      Если ТипЗнч(Выборка.Регистратор) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
         ТекПокупатель = Выборка.Контрагент;   
      ИначеЕсли Выборка.Сумма < 0 Тогда
         Проводки=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
          Проводки.Отбор.Регистратор.Значение = Выборка.Регистратор;
         Проводки.Прочитать();

         Для Каждого Движение Из Проводки Цикл
            Если (Движение.СчетДт = Счет62) И (Движение.СчетКт = Счет901) Тогда
               ТекПокупатель = Движение.СубконтоДт.Контрагенты;   
               Прервать;
            КонецЕсли;
         КонецЦикла;
      КонецЕсли;
      ТекстКлюча = СокрЛП(ТекНоменклатура.Наименование+";"+СокрЛП(ТекПокупатель.Наименование));
      Если ТабНоменклатуры.Найти(ТекстКлюча,"Ключ")=Неопределено Тогда
         НоваяСтрока = ТабНоменклатуры.Добавить();
         НоваяСтрока.Номенклатура = ТекНоменклатура;
         НоваяСтрока.Покупатель = ТекПокупатель;
         НоваяСтрока.Ключ = ТекстКлюча;
      КонецЕсли;
   КонецЦикла;
   
КонецПроцедуры

Dethmontt

|   isnull(ХозрасчетныйОборотыДтКт.Регистратор.Контрагент,Значение(Справочник.Контрагенты.ПустаяСсылка)) КАК Контрагент

//..................
//..................

Если ЗначениеЗаполнено(ТекПокупатель) Тогда
   ТекстКлюча = СокрЛП(ТекНоменклатура.Наименование+";"+СокрЛП(ТекПокупатель.Наименование));
Иначе
   ТекстКлюча  = СокрЛП(ТекНоменклатура.Наименование);
КонецЕсли;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

andryscha92

Цитата: Dethmontt от 01 ноя 2013, 00:24
|   isnull(ХозрасчетныйОборотыДтКт.Регистратор.Контрагент,Значение(Справочник.Контрагенты.ПустаяСсылка)) КАК Контрагент

//..................
//..................

Если ЗначениеЗаполнено(ТекПокупатель) Тогда
   ТекстКлюча = СокрЛП(ТекНоменклатура.Наименование+";"+СокрЛП(ТекПокупатель.Наименование));
Иначе
   ТекстКлюча  = СокрЛП(ТекНоменклатура.Наименование);
КонецЕсли;

Спасибо огромное!Всё заработало!!!

sawogle

Цитата: andryscha92 от 01 ноя 2013, 01:08
Цитата: Dethmontt от 01 ноя 2013, 00:24
|   isnull(ХозрасчетныйОборотыДтКт.Регистратор.Контрагент,Значение(Справочник.Контрагенты.ПустаяСсылка)) КАК Контрагент

//..................
//..................

Если ЗначениеЗаполнено(ТекПокупатель) Тогда
   ТекстКлюча = СокрЛП(ТекНоменклатура.Наименование+";"+СокрЛП(ТекПокупатель.Наименование));
Иначе
   ТекстКлюча  = СокрЛП(ТекНоменклатура.Наименование);
КонецЕсли;

Спасибо огромное!Всё заработало!!!
здравствуйте! подскажите пожалуйста такой вопрос на форме справочника для заполнения контрагентов я создал отдельную произвольную форму для внесения данных адреса НЕ в Табличную часть написал процедуру на кнопке "записать"  но выдает ошибку "Значение не является значением объектного типа (Добавить)" скрины исходника и формы прилагаются. Помогите пожалуйста разобраться что я не так пишу

AIFrame

sawogle,
Ты обращаешься к ссылке как к объекту. Сначала получи объект по ссылке, а уже потом, у объекта - Добавить().
ОбъектДляИзменения = СсылкаНаОбъект.ПолучитьОбъект();
ОбъектДляИзменения.Добавить();
// и прочее туда-сюда
ОбъектДляИзменения.Записать();

sawogle

Цитата: AIFrame от 20 янв 2018, 17:36
sawogle,
Ты обращаешься к ссылке как к объекту. Сначала получи объект по ссылке, а уже потом, у объекта - Добавить().
ОбъектДляИзменения = СсылкаНаОбъект.ПолучитьОбъект();
ОбъектДляИзменения.Добавить();
// и прочее туда-сюда
ОбъектДляИзменения.Записать();

Спасибо. Но чего-то не получилось :dfbbdrfb:
Не судите строго:nhsrm:

IL2016

Цитата: sawogle от 20 янв 2018, 14:42здравствуйте! подскажите пожалуйста такой вопрос на форме справочника для заполнения контрагентов я создал отдельную произвольную форму для внесения данных адреса НЕ в Табличную часть написал процедуру на кнопке "записать" 
опишите подробно что хотите получить и порядок действий результата работы.
к примеру открыли спр.Контрагенты, там жмем на кнопку создать или на строку уже существующего контрагента, далее выходит ваша произвольная форма? а вот наименование контрагента где вносится? или как должно заполняться?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск