Ошибка 1С

1. Гость 15.10.18 15:41
.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. qazaas 15.10.18 15:43 Сейчас в теме
(1) Ошибка заключается в том, что вы передаете с клиента на сервер (или наоборот) недопустимый тип... как видно тип "ПолеФормы".
4. qazaas 15.10.18 15:45 Сейчас в теме
(1) Попробуйте поработать с ним "в одном месте". Если не получается, тогда покажите код, где вы работаете с данным объектом.
3. Гость 15.10.18 15:45
как вообще выбрать какой тип передать, не очень понимаю эту систему, и что в данном случае надо передать?
5. Гость 15.10.18 15:46
уже пробовал, не получается(

а вот код
&НаСервере
Функция СредняяЦенаЗапасов(Идентификатор)
ТекСтрока = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
|ГДЕ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = &Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура);

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда
Возврат ТекСтрока.Количество * Выборка.СредняяЦена

КонецЕсли;
Возврат 0
КонецФункции

&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)

ТекСтрока = Элементы.Товары.ТекущиеДанные;
Сумма = 0;
СредняяЦенаЗапасов(Элемент) ;
ТекСтрока.Сумма = Сумма;

КонецПроцедуры
6. qazaas 15.10.18 15:47 Сейчас в теме
(5)
СредняяЦенаЗапасов(Элемент) ;

Вот и ошибка.
Передавате непосредственно сам идентификатор, а не элемент целиком.
7. Гость 15.10.18 15:50
(6)Пробовал идентификатор передавать все равно ошибка
9. qazaas 15.10.18 15:52 Сейчас в теме
(7) Вам вообще нужны же только номенклатура и количество. Загоните их в структуру и передавайте.

ТекСтрока = Элементы.Товары.ТекущиеДанные;
МояСтруктура = Новый Структура("Номенклатура, Количество", ТекСтрока.Номенклатура, ТекСтрока.Количество);

Сумма = СредняяЦенаЗапасов(МояСтруктура ) ;
ТекСтрока.Сумма = Сумма;
11. Гость 15.10.18 15:54
(9)Нет, нет, нет
Мне нужно найти среднюю цену товара по остаткам номенклатуры, с запросом все хорошо, вот что делать с этим идентификатором
14. qazaas 15.10.18 15:57 Сейчас в теме
(11) Да забудьте про идентификатор. Либо передайте структуру, либо оба значения.

Можете попробовать пример, приведенный antz'ом, с передачей строки - я так не делал просто.
8. Гость 15.10.18 15:51
{Документ.Перемещение.Форма.ФормаДокумента.Форма(73,20)}: Переменная не определена (Идентификатор)
СредняяЦенаЗапасов(<<?>>Идентификатор); (Проверка: Тонкий клиент)
10. antz 15.10.18 15:53 Сейчас в теме
(8) в другой теме ответил)
12. Гость 15.10.18 15:55
(10)В какой другой??? можно ссылку?
13. antz 15.10.18 15:56 Сейчас в теме
15. Гость 15.10.18 15:58
(13)Посмотрите внимательно этот код и поймете что это действие с ошибкой не борится
16. qazaas 15.10.18 16:00 Сейчас в теме
(15) Да все работает - либо мой метод, либо попробуйте antz'a.

UPD. ЕСТЕСТВЕННО, чуток вашу функцию подредактировать надо будет, если вы воспользуетесь передачей структуры.
17. antz 15.10.18 16:02 Сейчас в теме
(15)

Ту тему удалили уже, короче,

СредняяЦенаЗапасов(Элементы.Товары.ТекущаяСтрока)

свойство таблицы формы ТекущаяСтрока - это и есть идентификатор.
18. qazaas 15.10.18 16:04 Сейчас в теме
(17) Да, я заметил и хотел там вам ответить. У него это функция и надо перед вызовом переменную использовать)

В таком случае, более правильнее будет вот так:

Сумма = СредняяЦенаЗапасов(Элементы.Товары.ТекущаяСтрока);


UPD. Есть еще и ТРЕТЬЯ тема -> https://forum.infostart.ru/forum9/topic201802/
19. Гость 15.10.18 16:08
Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура);
Теперь проблема в этой строке, почему то говорит что нет строки номенклатура но она есть
20. antz 15.10.18 16:08 Сейчас в теме
22. antz 15.10.18 16:10 Сейчас в теме
(21) как-то неуверенно) Если есть, тогда и ругаться не должно.
23. Гость 15.10.18 16:17
24. qazaas 15.10.18 16:24 Сейчас в теме
(19) Напишите конкретно, что за ошибка. Может быть ошиблись в одной букве, может быть вы указываете заголовок колонки, а сам реквизит называется несколько иначе.

Можно также скриншоты прислать вашего конструктора формы (взглянуть на вашу таблицу, ее имя и имена колонок).
25. Гость 15.10.18 16:27
(24)Все вроде исправил :) спасибо
26. Гость 15.10.18 17:40
(24)и снова все та же проблема с ТИПом(((

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

&НаКлиенте
Процедура ВидПриИзменении(Элемент)
 	

	ОбработкаПроверкиЗаполненияНаСервере(Элемент,);
	
КонецПроцедуры
Показать
27. antz 15.10.18 17:53 Сейчас в теме
(26)

На сервере не нужно ПредопределенноеЗначение. Просто Перечисление.ВидыНоменклатуры.Услуга.

Процедуру ОбработкаПроверкиЗаполненияНаСервере не надо вызывать. Она вызывается сама либо автоматически либо при вызове метода ПроверитьЗаполнение (почитайте синтакс-помощник уже наконец!)

И почитайте про параметры процедур и функций, книжку по программированию хоть какую-нибудь.
28. qazaas 16.10.18 12:24 Сейчас в теме
(26) Не надо передавать элемент целиком, особенно с клиента на сервер - конечно же, это опять те же грабли получаются, что и были изначально.
29. fly_byte@mail.ru 16.10.18 13:00 Сейчас в теме
Выборка = Запрос.Выполнить().Выбрать(); 

Если Выборка.Следующий() Тогда 
Возврат ТекСтрока.Количество * Выборка.СредняяЦена 

КонецЕсли; 
Возврат 0 
КонецФункции 

&НаКлиенте 
Процедура ТоварыКоличествоПриИзменении(Элемент) 

ТекСтрока = Элементы.Товары.ТекущиеДанные; 
Сумма = 0; 
СредняяЦенаЗапасов(Элемент) ; 
Показать


ругается на элемент по сути, тип какой передаешь?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот