Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 19:51
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Значение не является значением объектного типа(Имя)  (Прочитано 3246 раз)

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

Оффлайн vaslik

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-06
  • Сайт: 
  • Профессия: Ученик 1С
"Управление торговлей для Казахстана", редакция 2.2...
На кпопке процедурка
Процедура ЗаполнениеЦенНажатие(Кнопка)
Перем НДСВСтроке, ДокументОбъект,МетаданныеДокумента, ИмяТабличнойЧасти, СтрокаТабличнойЧасти, СтруктураПоиска, ВыборкаИзРезультатаЗапроса, СтруктураЗначений, СпособЗаполненияЦен, ХарактеристикаНоменклатуры;

УправлениеЦенообразованием.ЗаполнитьЦенуВСтрокеТабличнойЧасти( ДокументОбъект, СтрокаТабличнойЧасти, СтруктураПоиска, ВыборкаИзРезультатаЗапроса,
СтруктураЗначений, СпособЗаполненияЦен, ХарактеристикаНоменклатуры = Неопределено) ;





// получим имя табличной части и имя документа
ИмяТабличнойЧасти   = ЭлементыФормы.Товары.ТекущиеДанные;                           
МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Родитель();

Если Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Реквизиты.Найти("Цена") = Неопределено Тогда    //***********************
Возврат;
КонецЕсли;

//Найдем товар из текущей строки документа в выборке из результата запроса.
Если Не ЗначениеЗаполнено(СтруктураПоиска.Номенклатура) Тогда
Возврат; // Искать нечего.
КонецЕсли;

ВыборкаИзРезультатаЗапроса.Сбросить();
Если ХарактеристикаНоменклатуры = Неопределено
Или ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка() Тогда
СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
НашлиВВыборке = ВыборкаИзРезультатаЗапроса.НайтиСледующий(СтруктураПоиска);
Иначе
СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", ХарактеристикаНоменклатуры);
НашлиВВыборке = ВыборкаИзРезультатаЗапроса.НайтиСледующий(СтруктураПоиска);
Если Не НашлиВВыборке Тогда
ВыборкаИзРезультатаЗапроса.Сбросить();
СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
НашлиВВыборке = ВыборкаИзРезультатаЗапроса.НайтиСледующий(СтруктураПоиска);
КонецЕсли;
КонецЕсли;

Если НашлиВВыборке Тогда // Нашли запись

// Если для данного товара есть цена данного типа
// Единицу устанавливаем в единицу цены, если она не задана, то в основную единицу товара
Если Не ЗначениеЗаполнено(ВыборкаИзРезультатаЗапроса.Цена) Тогда
СтрокаТабличнойЧасти.Цена = 0;
Иначе // присваиваем значение цены и единицы цены
СтруктураНовойВалюты = ОбщегоНазначения.ПолучитьКурсВалюты(СтруктураЗначений.НовыйТипЦен.ВалютаЦены, ДокументОбъект.Дата);
ТекущаяВалюта        = СтруктураЗначений.НовыйТипЦен.ВалютаЦены;
ТекущийКурс          = СтруктураНовойВалюты.Курс;
ТекущаяКратность     = СтруктураНовойВалюты.Кратность;

ЭтоЦеныНоменклатуры = (СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры);

// Переоределим тип цен, когда цены рассчитываются по типам цен номенклатуры
Если ЭтоЦеныНоменклатуры Тогда
СтруктураЗначений.НовыйТипЦен = ВыборкаИзРезультатаЗапроса.ТипЦен;
КонецЕсли;

Цена = ВыборкаИзРезультатаЗапроса.Цена;

Если ЭтоЦеныНоменклатуры И СтруктураЗначений.НовыйТипЦен.Рассчитывается Тогда
Если ВыборкаИзРезультатаЗапроса.СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип Тогда
Цена = Цена * (1 + ВыборкаИзРезультатаЗапроса.ПроцентСкидкиНаценки / 100);
Цена = ОбщегоНазначения.ПересчитатьИзВалютыВВалюту(Цена, ВыборкаИзРезультатаЗапроса.ВалютаЦены,
   ТекущаяВалюта, ВыборкаИзРезультатаЗапроса.КурсВалютыЦены, ТекущийКурс,
   ВыборкаИзРезультатаЗапроса.КратностьВалютыЦены, ТекущаяКратность);
ИначеЕсли ВыборкаИзРезультатаЗапроса.СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоВхождениюБазовойЦеныВДиапазон Тогда
Цена = УправлениеЦенообразованием.ПолучитьЦенуПоЦеновымДиапазонам(СтруктураЗначений.НовыйТипЦен, ДокументОбъект.Дата, Цена, ТекущаяВалюта, ВыборкаИзРезультатаЗапроса.ВалютаЦены);

СтруктураНовойВалюты = ОбщегоНазначения.ПолучитьКурсВалюты(ТекущаяВалюта, ДокументОбъект.Дата);
ТекущийКурс          = СтруктураНовойВалюты.Курс;
ТекущаяКратность     = СтруктураНовойВалюты.Кратность;
КонецЕсли;
Иначе
ТекущаяВалюта = ВыборкаИзРезультатаЗапроса.ВалютаЦены;
СтруктураТекущейВалюты = ОбщегоНазначения.ПолучитьКурсВалюты(ТекущаяВалюта, ДокументОбъект.Дата);
ТекущийКурс            = СтруктураТекущейВалюты.Курс;
ТекущаяКратность       = СтруктураТекущейВалюты.Кратность;
КонецЕсли;

Цена = Цена * (1 + ВыборкаИзРезультатаЗапроса.ПроцентНаценкиПоУсловиямПродаж / 100);

// Пересчитываем цену в единицу измерения количества
Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЕдиницаИзмерения", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
Если СтрокаТабличнойЧасти.ЕдиницаИзмерения <> ВыборкаИзРезультатаЗапроса.ЕдиницаИзмеренияЦены Тогда
КоэффициентКоличества = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
КоэффициентЦены       = ВыборкаИзРезультатаЗапроса.ЕдиницаИзмеренияЦены.Коэффициент;

Если КоэффициентЦены <> 0 Тогда
Цена = Цена * КоэффициентКоличества / КоэффициентЦены;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Если ЭтоЦеныНоменклатуры Тогда
Цена = УправлениеЦенообразованием.ОкруглитьЦену(Цена, СтруктураЗначений.НовыйТипЦен.ПорядокОкругления,
                     СтруктураЗначений.НовыйТипЦен.ОкруглятьВБольшуюСторону);
КонецЕсли;

// Пересчитываем цену в валюту документа
Если СтруктураЗначений.НовыйВалютаДокумента <> ТекущаяВалюта Тогда
Если Не ЗначениеЗаполнено(СтруктураЗначений.НовыйВалютаДокумента) Тогда

ВалютаДокумента = глЗначениеПеременной("ВалютаУправленческогоУчета");
СтруктураВалюты = ОбщегоНазначения.ПолучитьКурсВалюты(ВалютаДокумента, ДокументОбъект.Дата);
КурсДокумента      = СтруктураВалюты.Курс;
КратностьДокумента = СтруктураВалюты.Кратность;

// В документе нет валюты, возьмем валюту регламентированного учета
Цена = ОбщегоНазначения.ПересчитатьИзВалютыВВалюту(Цена,
ТекущаяВалюта,
ВалютаДокумента,
ТекущийКурс,
КурсДокумента,
ТекущаяКратность,
КратностьДокумента);

Иначе

Цена = ОбщегоНазначения.ПересчитатьИзВалютыВВалюту(Цена,
ТекущаяВалюта,
СтруктураЗначений.НовыйВалютаДокумента,
ТекущийКурс,
СтруктураЗначений.НовыйКурсДокумента,
ТекущаяКратность,
СтруктураЗначений.НовыйКратностьДокумента);

КонецЕсли;
КонецЕсли;

// Пересчитываем цену по параметрам налогообложения.
// Ставку определяем исходя из переданных параметров
СтруктураЗначений.Свойство("ЕстьСтавкаНДСВТабличнойЧасти", НДСВСтроке);

СтрокаТабличнойЧасти.Цена = ОбработкаТабличныхЧастей.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена,
СпособЗаполненияЦен,
СтруктураЗначений.НовыйТипЦен.ЦенаВключаетНДС,
СтруктураЗначений.НовыйУчитыватьНДС, СтруктураЗначений.НовыйСуммаВключаетНДС,
?(СтруктураЗначений.НовыйУчитыватьНДС, ?(НДСВСтроке = Истина, УчетНДСИАкциза.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС), УчетНДСИАкциза.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.Номенклатура.СтавкаНДС)),0));

КонецЕсли;

Иначе // информации по цене этого товара нет в запросе

// Установим цену в ноль.
СтрокаТабличнойЧасти.Цена = 0;

КонецЕсли;

КонецПроцедуры

При выполнении дает ошибку

{ОбщийМодуль.ОбщегоНазначения.Модуль(3891)}: Значение не является значением объектного типа (Имя)
   Возврат Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Имя;



Помогите, пожалуйста, советом


Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Функция НайтиПоТипу может возвращать разные значения, нужно поставить точку останова и посмотреть что она возвращает.
Ссылка на примеры работ https://yadi.sk/d/ksVluPMBkiRzX

Оффлайн vaslik

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-06
  • Сайт: 
  • Профессия: Ученик 1С
Функция НайтиПоТипу может возвращать разные значения, нужно поставить точку останова и посмотреть что она возвращает.

У меня закавыка вот в этом месте
 //получим имя табличной части и имя документа
ИмяТабличнойЧасти   = ЭлементыФормы.Товары.ТекущиеДанные;                           
МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Родитель();

Если Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Реквизиты.Найти("Цена") = Неопределено Тогда   
Возврат;
КонецЕсли;




и на нее ругается
{ОбщийМодуль.ОбщегоНазначения.Модуль(3891)}: Значение не является значением объектного типа (Имя)
   Возврат Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Имя;



Вот кусок который ругается:
Функция ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти) Экспорт

Возврат Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Имя;

КонецФункции

I NEED HELP!!!

Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Функция НайтиПоТипу может возвращать разные значения, нужно поставить точку останова и посмотреть что она возвращает.
Ссылка на примеры работ https://yadi.sk/d/ksVluPMBkiRzX

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
CAUSE СтрокаТабличнойЧасти ISN'T FUCKING СТРОКА FUCKING ТАБЛИЧНОЙ FUCKING ЧАСТИ!!!!!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн vaslik

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-06
  • Сайт: 
  • Профессия: Ученик 1С
CAUSE СтрокаТабличнойЧасти ISN'T FUCKING СТРОКА FUCKING ТАБЛИЧНОЙ FUCKING ЧАСТИ!!!!!


а что тогда?

Оффлайн Rasty

  • *****
  • Сообщений: 989
  • РЕПУТАЦИЯ: 139
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
вы определяете Тип значения строки табличной части, целой строки, не отдельной колонки, а целой строки, тип значений строки табличной части это СтрокаТабличнойЧасти
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн vaslik

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-06
  • Сайт: 
  • Профессия: Ученик 1С
Да объясните же толком что надо делать...

Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Править код.
Вы ищете в метаданных тип, которого там не может быть, поэтому вам возвращается значение "Неопределено", а у "неопределено" реквизитов быть не может. Поэтому вам пишет ошибку.
Ссылка на примеры работ https://yadi.sk/d/ksVluPMBkiRzX

Оффлайн vaslik

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-09-06
  • Сайт: 
  • Профессия: Ученик 1С
Править код.
Вы ищете в метаданных тип, которого там не может быть, поэтому вам возвращается значение "Неопределено", а у "неопределено" реквизитов быть не может. Поэтому вам пишет ошибку.
и что мне следует сделать, чтобы при при выполнени все сработало? объясните пожалуйста


Теги:
 

Значение "00000000001" поля "Код" не уникально

Автор gigsonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 6890
Последний ответ 24 Ноя 2014, 12:21
от gigson
Значение поля "Владелец" не заполнено или заполнено неверно

Автор ReclaimРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3259
Последний ответ 16 Ноя 2015, 09:36
от cska-fanat-kz
Как в СКД вычислить значение ресурса для группировки по значениям ресурса нижестоящей группировки

Автор ОтцовскийРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 976
Последний ответ 23 Ноя 2016, 12:53
от sertak
как получить значение реквизита "Код" в обработке "ПодборНоменклатуры" в УТ10.3

Автор JalibРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1094
Последний ответ 02 Дек 2016, 12:58
от Jalib
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

Автор ppkmliteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8572
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
141 Сообщений
AIFrame
71 Сообщений
ilyay ilyay
65 Сообщений
alex0402
52 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
BuhRust
31 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 329
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal