Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/58: Рейтинг темы: голосов - 58, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
1C 8.x

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

15.12.2012, 13:08. Показов 11390. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема при попытке взять процедуру вычисления скидки из общего модуля. Вот сама процедура
1C
1
2
3
4
5
6
7
Процедура РасчетСкидки(СтрокаТабличнойЧасти, СправочникОбъект) Экспорт
Для Каждого   СтрокаТабличнойЧасти ИЗ СтрокаТабличнойЧасти.Товары Цикл
Если  СправочникОбъект.СкидкаВПроцентах >0 Тогда
СтрокаТабличнойЧасти.Цена=СтрокаТабличнойЧасти.Цена-СтрокаТабличнойЧасти.Цена*СправочникОбъект.СкидкаВПроцентах/100;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
А вот это вешаю на обработчик ПриИзменении у реквизита документа типа СправочникСсылка "Контрагенты"
1C
1
2
3
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    СправочникОбъект = Справочники.Контрагенты.НайтиПоНаименованию("Контрагенты");
    Скидка.РасчетСкидки(СтрокаТабличнойЧасти, СправочникОбъект);
Когда меняю контрагента выдает ошибку
{Документ.СчетНаОплатуПокупателю.Форма.Ф ормаДокумента(815)}: Значение не является значением объектного типа (РасчетСкидки)
Скидка.РасчетСкидки(СтрокаТабличнойЧасти , СправочникОбъект);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2012, 13:08
Ответы с готовыми решениями:

Значение не является значением объектного типа
Создал новую инфобазу 1c, залил туда имеющуюся конфигурацию... (которая успешно работала в другом месте) При попытке создать заказ...

Значение не является значением объектного типа
Помогите! Выдает ошибку! (Значение не является значением объектного типа (Цена) Вот код Функция ЦенаИзделия(АктуальнаяДата,...

Значение Не Является Значением Объектного Типа
Создал новую инфобазу 1c, залил туда имеющуюся конфигурацию... (которая успешно работала в другом месте) При попытке создать заказ...

24
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
15.12.2012, 13:30
Цитата Сообщение от Katler Посмотреть сообщение
Проблема при попытке взять процедуру вычисления скидки из общего модуля. Вот сама процедура
Общий модуль как называется?

Цитата Сообщение от Katler Посмотреть сообщение
Когда меняю контрагента выдает ошибку
{Документ.СчетНаОплатуПокупателю.Форма.Ф ормаДокумента(815)}: Значение не является значением объектного типа (РасчетСкидки)
Скидка.РасчетСкидки(СтрокаТабличнойЧасти , СправочникОбъект);
Скидка - это что? Реквизит документа? Имя общего модуля? А наверно и то и другое одновременно, что собственно и вызывает ошибку.
1
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
15.12.2012, 13:44  [ТС]
Спасибо, упустил из виду это.
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
15.12.2012, 14:13
Кстати, а Вы не задумывались, что будет если, выбрать контрагента со скидкой 5%, а потом выбрать контрагента со скидкой 10%?

Добавлено через 1 минуту
И вот это бред какой то:
Цитата Сообщение от Katler Посмотреть сообщение
СправочникОбъект = Справочники.Контрагенты.НайтиПоНаименова нию("Контрагенты");
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
16.12.2012, 19:00  [ТС]
А как тогда получить справочник Контрагенты в модуле документа?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.12.2012, 19:09
Справочники.Контрагеты
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
16.12.2012, 19:24  [ТС]
а подробнее можно?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.12.2012, 19:52
А что подробнее...
Вы спросили:
Цитата Сообщение от Katler Посмотреть сообщение
А как тогда получить справочник Контрагенты в модуле документа?
Я вам ответил:
Цитата Сообщение от Dethmontt Посмотреть сообщение
Справочники.Контрагеты
Что подробнее вам нужно?
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
16.12.2012, 20:13  [ТС]
если писать просто Справочники.Контрагенты вылезает ошибка
{Документ.ОказаниеУслуги.Форма.ФормаДоку мента.Форма(25,25)}: Неопознанный оператор
Справочники.Контрагенты<<?>>; (Проверка: Сервер)
{Документ.ОказаниеУслуги.Форма.ФормаДоку мента.Форма(25,25)}: Неопознанный оператор
Справочники.Контрагенты<<?>>; (Проверка: Тонкий клиент)
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
16.12.2012, 21:43
У Вас есть "готовый" Контрагент в поле ввода, не так ли? Отправляйте его прямо в параметр "СправочникОбъект", только:
в процедуре нет проверки на пустой
путаница с объектами: строка/табличная часть
Как-то надо устаканить
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
17.12.2012, 08:48  [ТС]
Подскажите, пожалуйста, как это можно исправить. А то я чайник в 1С
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
17.12.2012, 13:52
1C
1
2
3
4
5
6
7
8
9
10
Процедура РасчетСкидки(ТЧ, СкидкаВПроцентах) Экспорт
Для Каждого   СтрокаТабличнойЧасти ИЗ ТЧ Цикл
СтрокаТабличнойЧасти.Цена=СтрокаТабличнойЧасти.Цена-СтрокаТабличнойЧасти.Цена*СправочникОбъект.СкидкаВПроцентах/100;
КонецЦикла;
КонецПроцедуры
 
Процедура КонтрагентПриИзменении()
Если Контрагент.Пустая() Тогда Возврат;КонецЕсли;
Если Контрагент.СкидкаВПроцентах=0 Тогда Возврат;КонецЕсли;
Скидка.РасчетСкидки(Товары, Контрагент.СкидкаВПроцентах);
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
17.12.2012, 15:10  [ТС]
Цитата Сообщение от duk337 Посмотреть сообщение
1C
1
2
3
4
Процедура КонтрагентПриИзменении()
Если Контрагент.Пустая() Тогда Возврат;КонецЕсли;
Если Контрагент.СкидкаВПроцентах=0 Тогда Возврат;КонецЕсли;
Скидка.РасчетСкидки(Товары, Контрагент.СкидкаВПроцентах);
Эту процедуру вешать на обработчик Контрагента в модуле формы документа?
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
17.12.2012, 16:38
наверное
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
17.12.2012, 17:35  [ТС]
Сделал так:
В общем модуле
1C
1
2
3
4
5
6
7
8
Процедура РасчетСкидки(ТЧ, Контр) Экспорт
Для Каждого   СтрокаТабличнойЧасти ИЗ ТЧ Цикл
СтрокаТабличнойЧасти.Цена=СтрокаТабличнойЧасти.Цена-СтрокаТабличнойЧасти.Цена*Контр.СкидкаВПроцентах/100;
Если Контр.Пустая() Тогда Возврат;КонецЕсли;
Если Контр.СкидкаВПроцентах=0 Тогда Возврат;КонецЕсли;
    
КонецЦикла;
КонецПроцедуры
В модуле формы документа
1C
1
2
3
4
5
6
7
&НаСервере
Процедура КонтрагентПриИзменении(Элемент)
Контр = Справочники.Контрагенты;
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
ТЧ = Элементы.ПереченьНоменклатуры;
МодульСкидки.РасчетСкидки(ТЧ, Контр);
КонецПроцедуры
Ошибок не выдает, но табличную часть не пересчитывает((
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
17.12.2012, 17:54
1. с какого, простите, событие формы на сервере?
2. Поле Контрагент есть вообще?
3. Справочники.Контрагенты - это объект-менеджер, где конкретное значение не ночевало.
4. Элементы.ПереченьНоменклатуры - это не ТЧ, а таб.поле, элемент управления.
Цитата Сообщение от Katler Посмотреть сообщение
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДан ные;
а это к чему? В каждой строке свой контрагент, что ли?

Добавлено через 1 минуту
Цитата Сообщение от Katler Посмотреть сообщение
Процедура РасчетСкидки(ТЧ, Контр) Экспорт Для Каждого СтрокаТабличнойЧасти ИЗ ТЧ Цикл СтрокаТабличнойЧасти.Цена=СтрокаТаблично йЧасти.Цена-СтрокаТабличнойЧасти.Цена*Контр.СкидкаВП роцентах/100; Если Контр.Пустая() Тогда Возврат;КонецЕсли; Если Контр.СкидкаВПроцентах=0 Тогда Возврат;КонецЕсли; КонецЦикла; КонецПроцедуры
А это что за чушь? Я такого не предлагал.
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
17.12.2012, 19:20  [ТС]
1. А фиг его знает)) Переделал НаКлиенте - начало выдавать
{Документ.ОказаниеУслуги.Форма.ФормаДоку мента.Форма(24,9)}: Переменная не определена (Справочники)
Контр = <<?>>Справочники.Контрагенты; (Проверка: Тонкий клиент)
{Документ.ОказаниеУслуги.Форма.ФормаДоку мента.Форма(27,1)}: Переменная не определена (МодульСкидки)
<<?>>МодульСкидки.РасчетСкидки(ТЧ, Контр); (Проверка: Тонкий клиент)

2. Есть.
3. Я не пойму как тогда получить справочник Контрагенты в модуле формы, чтобы можно было использовать его реквизит СкидкаВПроцентах.
4.Как раз это табличная часть у меня так называется. В другом документе было Товары.

СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДан ные; - это я определяю переменную для использования в общем модуле для вычисления скидки по формуле.

Добавлено через 54 минуты
Цитата Сообщение от duk337 Посмотреть сообщение


А это что за чушь? Я такого не предлагал.
Я просто
1C
1
2
 Если Контрагент.Пустая() Тогда Возврат;КонецЕсли;
Если Контрагент.СкидкаВПроцентах=0 Тогда Возврат;КонецЕсли;
вбил в общий модуль к процедуре вычисления скидки. Или так никак нельзя сделать?
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
17.12.2012, 22:12
Должно быть в событии ПриИзменении поля контрагент:
1C
1
2
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Скидка.РасчетСкидки(СтрокаТабличнойЧасти, Объект.Контрагент);
Проверки делайте в процедуре на сервере.
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
17.12.2012, 22:59
Цитата Сообщение от Katler Посмотреть сообщение
3. Я не пойму как тогда получить справочник Контрагенты в модуле формы, чтобы можно было использовать его реквизит СкидкаВПроцентах.
4.Как раз это табличная часть у меня так называется. В другом документе было Товары.
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДан ные; - это я определяю переменную для использования в общем модуле для вычисления скидки по формуле.
Похвальная уверенность. Надо бы покритичнее.
1. Событие - на клиенте. Данные - на сервере. У Вас всё в одной куче. Так что не "фиг его знает" а "хрен да ни фига". Разберитесь. ПриИзменении - на клиенте, в ней запускается дочерняя на сервере, где проверяется, стоит ли персчитывать ТЧ. И если да, то стартует прока из общего модуля.
2. Есть поле Контрагент и уж наверное ( 3 ) там данные типа Справочник.Контрагенты. Я уже об этом говорил. МОЗГИ ВКЛЮЧИТЕ.
4. Элементы.ИмяТЧ не означает ТЧ. Означает ЭЛЕМЕНТ!!!

СтрокаТЧ, которую Вы получаете, нагружая систему, НЕ ИСПОЛЬЗУЕТСЯ В СЛУЧАЕ ПРОХОДА по тч ЦИКЛОМ!!!!

Если Вы хотите пересчитать цену только одно строчки, меняя контра по документу в целом - то предупреждать надо, поскольку это редкостный изврат.
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 22
18.12.2012, 11:22  [ТС]
Не не, мне как раз нужна вся таблица, а не одна строка. Поэтому и цикл ДляКаждого

Добавлено через 1 час 18 минут
Чтоб прояснить ситуацию - у меня Управляемое приложение.
в Модуле формы документа:
1C
1
2
3
4
5
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
МодульСкидки.РасчетСкидки(СтрокаТабличнойЧасти, Объект.Контрагент);
КонецПроцедуры
В общем модуле:
1C
1
2
3
4
5
6
7
8
Процедура РасчетСкидки(СтрокаТабличнойЧасти, Объект.Контрагент) Экспорт
Для Каждого   СтрокаТабличнойЧасти ИЗ ТЧ Цикл
СтрокаТабличнойЧасти.Цена=СтрокаТабличнойЧасти.Цена-СтрокаТабличнойЧасти.Цена*Объект.Контрагент.СкидкаВПроцентах/100;
Если Объект.Контрагент() Тогда Возврат;КонецЕсли;
Если Объект.Контрагент.СкидкаВПроцентах=0 Тогда Возврат;КонецЕсли;
    
КонецЦикла;
КонецПроцедуры
Ругается на общий модуль, а именно на Объект.Контрагент и еще на ТЧ
{ОбщийМодуль.МодульСкидки.Модуль(1,52)}: Ожидается символ ')'
Процедура РасчетСкидки(СтрокаТабличнойЧасти, Объект<<?>>.Контрагент) Экспорт (Проверка: Тонкий клиент)
{ОбщийМодуль.МодульСкидки.Модуль(2,39)}: Переменная не определена (ТЧ)
Для Каждого СтрокаТабличнойЧасти ИЗ <<?>>ТЧ Цикл (Проверка: Тонкий клиент)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2012, 11:22
Помогаю со студенческими работами здесь

Значение не является значением объектного типа (Записать)
Как правильно записать результат сравнения в базу? На этот код ругается следущим образом - &quot;Значение не является значением...

Значение не является значением объектного типа (ВключатьВОтчет)
Не могу автоматически заполнить Отчет о прибылях и убытках в Бухгалтерской отчетности после обновления формы Бухгалтерской отчетности....

Значение не является значением объектного типа (Метаданные)
Здравствуйте. Создала новый документ копированием документа &quot;Реализация товаров и услуг&quot; (нам нужен для некоторых целей). Но при...

Значение не является значением объектного типа (ТекущиеДанные)
Ребята всё с суммой сижу вот модуль &amp;НаКлиенте Процедура ТабличнаяЧасть2Коэф1ПриИзменении(Элемент) СтрокаТабличнойЧасти2...

Ошибка Значение не является значением объектного типа (Правила)
Добрый вечер! У меня такая проблема: Обновила ЗУП платформа 1С:Предприятие 8.2 (8.2.17.143), конфигурация Зарплата и управление...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru