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

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

Автор stix, 21 мая 2015, 08:53

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

stix

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


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

cska-fanat-kz

Цитата: stix от 21 мая 2015, 08:53
Управление торговлей 2.2 ...
написал процедуру на кнопку
Процедура ПроставитьЦеныНажатие(Кнопка)
Перем Элементы, ВыборкаИзРезультатаЗапроса, СтруктураЗначений,СтруктураПоиска, СпособЗаполненияЦен, ХарактеристикаНоменклатуры ;
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;   
СтрокаТабличнойЧасти = СтрокаТабличнойЧасти.Цена ;
УправлениеЦенообразованием.ЗаполнитьЦенуВСтрокеТабличнойЧасти(ДокументОбъект,СтрокаТабличнойЧасти, СтруктураПоиска, ВыборкаИзРезультатаЗапроса,
                                    СтруктураЗначений, СпособЗаполненияЦен, ХарактеристикаНоменклатуры);
КонецПроцедуры

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

выделенную строку - долой
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

stix

cska-fanat-kz, спасибо за совет.... сейчас пошла куча ошибок     Значение не является значением объектного типа
все ссылаются на модуль
Процедура ЗаполнитьЦенуВСтрокеТабличнойЧасти( ДокументОбъект, СтрокаТабличнойЧасти, СтруктураПоиска, ВыборкаИзРезультатаЗапроса,
СтруктураЗначений, СпособЗаполненияЦен, ХарактеристикаНоменклатуры = Неопределено) Экспорт


Перем НДСВСтроке;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Иначе

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

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

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

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

КонецЕсли;

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

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

КонецЕсли;

КонецПроцедуры // ЗаполнитьЦенуВСтрокеТабличнойЧасти()

Никак не разберусь:dfbbdrfb:
Добавлено: 21 мая 2015, 09:55


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

cska-fanat-kz

зачем текст самой процедуры?
тут важно как вызываете...
надо чтобы все параметры были те которые надо...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

stix

{ОбщийМодуль.УправлениеЦенообразованием.Модуль(1657)}: Значение не является значением объектного типа (Свойство)
   СтруктураЗначений.Свойство("НовыйУсловиеПродаж", УсловиеПродаж);

Добавлено: 21 мая 2015, 10:55


например такая ошибка и их много

cska-fanat-kz

значит в параметре где должна быть СТРУКТУРАзначений - НЕ структура!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

stix

Спасибо за совет, земляк! ЦСКА -  салют!

Теги:

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

Рейтинг@Mail.ru

Поиск