| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | «  : 06-04-2010 10:04 »  |  | 
 
 Делаю выборку из другого справочника, значение ключа передаю из текущей строки (текущиеданные.столбец), потом к выборке применяю ПолучитьОбъект и указываю имя нужного мне реквизита для получения значения в переменную, запускаю 1с, а он сообщает мне, что элемент не выбран, как будто выборка не получает значение ключа. С чем это может быть связано? |  
						| 
								|  |  
								| « Последнее редактирование: 06-04-2010 15:23 от Алексей1153++ » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #1 : 06-04-2010 10:09 »  |  | 
 
 текущиеданные.столбец какой тип этого значения? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #2 : 06-04-2010 12:44 »  |  | 
 
 Строка |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #3 : 06-04-2010 14:02 »  |  | 
 
 Напиши полный код, как ты это пытаешься сделать |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #5 : 07-04-2010 12:44 »  |  | 
 
 Почитай встроенный помощник на тему СправочникВыборка: тебе нужен еще перебор элементов, полученных отбором: Пока УслугиВыборка.Следующий() Цикл...
 КонецЦикла;
Или если уверен что значений не больше одного, тогда Если УслугиВыборка.Следующий() Тогда...
 КонецЕсли;
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #6 : 07-04-2010 12:52 »  |  | 
 
 Да зачем мне перебор элементов я конкретное значение сообщаю. Он такую же ошибку выдаёт если делаешь отбор по наименованию. И ещё что идивительно если делаешь сообщить(ЗначениеВыборки) вообще игнорирует. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #7 : 07-04-2010 13:04 »  |  | 
 
 зачем - читать хелп! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #8 : 07-04-2010 13:05 »  |  | 
 
 Квадратные скобки попробовал ПолучитьОбъект()[Всего] тоже самое да и не должно быть так чтобы одно работало, а другое нет. Тут что-то не то. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #9 : 07-04-2010 13:07 »  |  | 
 
 У меня один элемент пока больше не создавал на него и ссылка в текущей строке справочника он не может себя не находить. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #10 : 07-04-2010 13:20 »  |  | 
 
 Теперь вот так сделал:
 Процедура СписокУслугКолРазПриИзменении(Элемент)
 Кол=ЭлементыФормы.СписокУслуг.ТекущиеДанные.КолРаз;
 Услуга=ЭлементыФормы.СписокУслуг.ТекущиеДанные.Услуги;
 Отбор=Новый Структура("Наименование",Услуга);
 УслугиВыборка=Справочники.Услуги.Выбрать(,,Отбор,);
 Пока УслугиВыборка.Следующий() Цикл
 Всего=УслугиВыборка.ПолучитьОбъект().Всего;
 КонецЦикла;
 Цена=ЭлементыФормы.СписокУслуг.ТекущиеДанные.Цена;
 Цена=Кол*Всего;
 КонецПроцедуры
 
 Выдаёт:
 
 {Справочник.Работы.Форма.ФормаЭлемента(16)}: Преобразование значения к типу Число не может быть выполнено
 Цена=Кол*Всего;
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #11 :  07-04-2010 13:30 »   |  | 
 
 Вы вот мне как специалист скажите, после передачи в выборку структуры и совершению выборки что должно быть в переменной куда эта выборка передаётся? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #12 : 07-04-2010 13:40 »  |  | 
 
 Это все есть в хелпе, нужно только читать внимательно: в значении переменной будет элемент типа СправочникВыборка, но не спозиционированная ни на один элемент. Чтобы последовательно позиционироваться на элементы и есть метод Следующий().Код в принципе правильный, поставь точку останова на ошибочную строку (Цена=Кол*Всего;) и проверь значения переменных Кол и Всего.
 
 И научись пользоваться [code]!
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #13 : 07-04-2010 15:37 »  |  | 
 
 Пишу так:
 Процедура СписокУслугКолРазПриИзменении(Элемент)
 Кол=ЭлементыФормы.СписокУслуг.ТекущиеДанные.КолРаз;
 Услуга=ЭлементыФормы.СписокУслуг.ТекущиеДанные.Услуги;
 Отбор=Новый Структура("Наименование",Услуга);
 УслугиВыборка=Справочники.Услуги.Выбрать(,,Отбор,);
 Пока УслугиВыборка.Следующий() Цикл
 Объект=УслугиВыборка.ПолучитьОбъект();
 КонецЦикла;
 Всего=Объек
 |  
						| 
								|  |  
								| « Последнее редактирование: 07-04-2010 16:08 от anton13 » |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #14 : 08-04-2010 07:29 »  |  | 
 
 Ура получилось!Всё оказалось намного проще чем я думал. Вот посмотрите какой короткий код:
 
 Процедура СписокУслугКолРазПриИзменении(Элемент)
 ТекущаяСтрока=ЭлементыФормы.СписокУслуг.ТекущиеДанные;
 СсылкаУслуги=Справочники.Услуги.НайтиПоНаименованию(ТекущаяСтрока.Услуги);
 ТекущаяСтрока.Цена=ТекущаяСтрока.КолРаз*СсылкаУслуги.Всего;
 КонецПроцедуры
 
 Я сделал несколько больших выводов:
 
 1. Нельзя задавать переменной значение ячейки таблицы напрямую. Например:
 
 (Неправильно)
 Цена=ЭлементыФормы.СписокУслуг.ТекущиеДанные.Цена;
 Цена=Кол*Всего;
 
 (Правильно)
 ТекущаяСтрока=ЭлементыФормы.СписокУслуг.ТекущиеДанные;
 ТекущаяСтрока.Цена=ТекущаяСтрока.Кол*Всего
 
 2. Нельзя давать имя "Ссылка" переменной. Видимо есть какое-то совпадение хотя в справочнике в таблице это слово не относится к зарезервированым.
 
 А выборка я так понимаю для более большого количества элементов. И вообще я заметил что с именами в 1С всё время какие-то проблемы например есть наименование элемента, потом создаёшь таблицу в форме этого элемента и там например у тебя тоже столбец наименование так вот программа их путает и возникают ошибки как только создашь разные имена ошибки пропадают.
 
 НАРОД ВНИМАТЕЛЬНО ОТНОСИТЕСЬ К ИМЕНАМ ТАБЛИЦ, ПЕРЕМЕННЫХ И Т.Д.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #15 : 08-04-2010 08:10 »  |  | 
 
 Вот посмотрите какой короткий код: ...
 Если не найдет - вылетит с исключением. Желательна еще проверка Если ЗначениеЗаполнено(СсылкаУслуги) Тогда... 1. Нельзя задавать переменной значение ячейки таблицы напрямую
 Если ты хочешь, чтобы поменялось значение в таблице - то естественно да. ИМХО это и так понятно (если ты понимаешь что такое передача параметров по значению и по ссылке) 2. Нельзя давать имя "Ссылка" переменной
 Естественно - поищи в синтакс-помощнике что такое переменная Ссылка в модулях (и модулях форм) документа/справочника/... И вообще я заметил что с именами в 1С всё время какие-то проблемы ... так вот программа их путает и возникают ошибки
 Просто нужна аккуратность и понимание к чему (какой переменной) ты обращаешься. Я наоборот стараюсь чтобы имена совпадали, при этом никаких подобных проблем не возникает. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #16 : 08-04-2010 09:39 »  |  | 
 
 Просто нужна аккуратность и понимание к чему (какой переменной) ты обращаешься. Я наоборот стараюсь чтобы имена совпадали, при этом никаких подобных проблем не возникает. Это глупость в VisualBasic всё проще и значение можно передать разными способами, а в 1С так намудрили, что даже когда всё делаешь правильно получается, что не правильно. |  
						| 
								|  |  
								| « Последнее редактирование: 08-04-2010 09:42 от anton13 » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #17 : 08-04-2010 09:59 »  |  | 
 
 Offtopic: Ага. А в бейсике на ЕС-1840 еще все проще и понятней было Извини, но форум не для того, чтобы меряться "бейсиками". Свой комментарий я оставил потому, чтобы те, кто будут читать твое сообщение, не сделали неправильных выводов. Если хочешь сравнить 1С и VB - заведи тему в Общении. Но ИМХО конструктивного там ничего не будет. Судя по вопросам - ты только начинаешь осваивать 1С, а уже делаешь вывод что "это глупость". |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anton13 
								Участник    Offline | 
								|  | « Ответ #18 : 08-04-2010 10:14 »  |  | 
 
 Что такое ИМХО? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #19 : 08-04-2010 10:17 »  |  | 
 
 anton13, ИМХО == "по моему скромному мнению" ) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #20 : 08-04-2010 10:47 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |