1. user1302499 06.11.19 14:51 Сейчас в теме

Форма подбора

Делаю форму подбора для документа. Почему-то при вытаскивании данных из тч в эту форму отбора кол-во номенклатуры передается, а сама номенклатура - нет. Обратно из формы в ТЧ документа так же передается кол-во, а номенклатура пустое поле. В чем может быть проблема? Связи у полей одинаковые СправочникСсылка.Номенклатура
Найденные решения
4. YannikAlx 31 06.11.19 15:10 Сейчас в теме
Подозреваю, что не совпадают наименования полей номенклатуры в Объект.Комплектующие и в формах...
user1302499; +1 Ответить
81. YannikAlx 31 11.11.19 16:02 Сейчас в теме
(80) Вы еще раз посмотрите что я прислал...
Ты не точно написал функцию
Прикрепленные файлы:
user1302499; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. YannikAlx 31 06.11.19 15:00 Сейчас в теме
(12) мы должны фантазировать о ваших методах?
3. user1302499 06.11.19 15:04 Сейчас в теме
(2)Это в форме накладной

&НаКлиенте
Процедура ОткрытьПодбор(Команда)
	Парам = Новый Структура;
	Парам.Вставить("АдресВХ", ПоместитьТЧВВХ());
	ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаПодбора", Парам, ЭтаФорма);
КонецПроцедуры

&НаСервере
Функция ПоместитьТЧВВХ()
	  Возврат ПоместитьВоВременноеХранилище(Объект.Комплектующие.Выгрузить());
 КонецФункции	
  
&НаКлиенте
Процедура ОбработатьПодбор(АдресВХ) Экспорт
	 ОбработатьПодборНаСервере(АдресВХ);
КонецПроцедуры

&НаСервере
Процедура ОбработатьПодборНаСервере(АдресВХ)
	 Объект.Комплектующие.Загрузить(ПолучитьИзВременногоХранилища(АдресВХ));
КонецПроцедуры	
Показать


Это в форме подбора
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ВыбранныеТовары.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресВХ));
КонецПроцедуры

&НаСервере
Функция ЗавершитьПодборНаСервере()
	Возврат ПоместитьВоВременноеХранилище(ВыбранныеТовары.Выгрузить());
КонецФункции

&НаКлиенте
Процедура ЗавершитьПодбор(Команда)
	АдресВХ = ЗавершитьПодборНаСервере();
	
	ВладелецФормы.ОбработатьПодбор(АдресВХ);
	Закрыть();
КонецПроцедуры
Показать
4. YannikAlx 31 06.11.19 15:10 Сейчас в теме
Подозреваю, что не совпадают наименования полей номенклатуры в Объект.Комплектующие и в формах...
user1302499; +1 Ответить
5. user1302499 06.11.19 15:20 Сейчас в теме
6. YannikAlx 31 06.11.19 15:25 Сейчас в теме
(5) так я же почти из Ростова ;-)))
7. user1302499 06.11.19 16:02 Сейчас в теме
(6) Я тоже почти из Ростова :))

А как при выборе сделать проверку? Я делал
Если ЭтоГруппа Тогда... Ошибка
Если ВыбранноеПоле.ЭтоГруппа Тогда... Ошибка
Если Элемент.ЭтоГруппа Тогда... Ошибка


Не работает(
8. YannikAlx 31 06.11.19 16:38 Сейчас в теме
(7) Если Номенклатура.ЭтоГруппа Тогда

Потому что ЭтоГруппа - это реквизит справочника Номенклатура
Если я правильно понял вопрос...
9. user1302499 06.11.19 16:45 Сейчас в теме
(8)Это не реквезит, это папка в справочнике
11. YannikAlx 31 06.11.19 17:02 Сейчас в теме
(9) Это РЕКВИЗИТ справочника Номенклатура - открой конфигуратор и посмотри!
Когда он равен Истина, ты видишь папку и ничего больше, когда он ЛОЖЬ - ты видишь свой товар и все его свойства...
13. user1302499 07.11.19 14:34 Сейчас в теме
(11)Но его там даже в списке реквизитов нет))
14. YannikAlx 31 07.11.19 14:36 Сейчас в теме
(13) может тогда хотя бы напишешь конфигурацию , в которой нет Реквизита ЭтоГруппа у Номенклатуры?

А вообще - это стандартный реквизит и его ясно нужно смотреть именно в стандартных, если через конфигуратор.
Но в конструкторе запросов его прекрасно видно кстати...
Прикрепленные файлы:
15. user1302499 07.11.19 14:48 Сейчас в теме
16. user1302499 07.11.19 14:51 Сейчас в теме
(14) Можно в лс с тобой поговорить? Я просто написать тебе там почему-то не могу)
10. user1302499 06.11.19 16:48 Сейчас в теме
Переменная не определена Номенклатура
12. YannikAlx 31 06.11.19 17:04 Сейчас в теме
(10) Что значит неопределена, это не переменная, это ссылка должна быть при выборе...

Или Опиши что и когда ты проверяешь...
17. user1302499 11.11.19 08:31 Сейчас в теме
(12)
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	Стр = ВыбранныеТовары.Добавить();
	Если ЭтоГруппа Тогда
		     Сообщить("Работает",);
	КонецЕсли;	
	Стр.Наименование = ВыбраннаяСтрока;
	Стр.Количество =Стр.Количество + 1;
	
	
КонецПроцедуры
Показать


Переменная не определена (ЭтоГруппа)
18. YannikAlx 31 11.11.19 08:55 Сейчас в теме
(17) Что сказать - спроить с 1С невозможно в данном случае - ты ее на самом деле ну никак не определил!
Сам посмотри - ну ЧТО ТАКОЕ в твоем тексте ЭтоГруппа и чему она равна?
Повнимательнее.....
19. user1302499 11.11.19 10:22 Сейчас в теме
(18)Оно равно переменная не определена
20. YannikAlx 31 11.11.19 10:40 Сейчас в теме
Вот 1С тебе и пишет об этом в сообщении!
зачем же сравнивать изначально то что Неопределено с Истиной?
Ты мог бы с таким же успехом написать -
Если ЯТакХочу Тогда
КонецЕсли;

Суть бы ошибки не поменялся... Откуда 1С знает чего ты там хочешь в этом месте?
21. user1302499 11.11.19 11:27 Сейчас в теме
(20)Справочники.Номенклатура.ЭтоГруппа Тоже не работает
23. YannikAlx 31 11.11.19 11:40 Сейчас в теме
(21) А при чем тут СПРАВОЧНИКИ?
Ты что-то совсем отказываешься хоть немного думать самостоятельно....
Что получишь , если напишешь
Если Справочники.Номенклатура.Наименовние="Утюг" Тогда
Сообщить("Утюг");
Конецесли;
25. user1302499 11.11.19 11:43 Сейчас в теме
28. YannikAlx 31 11.11.19 11:54 Сейчас в теме
(25) Не получишь!
Получишь совершенно ту же ошибку , что и сейчас...
22. user1302499 11.11.19 11:28 Сейчас в теме
(20)Вообще на слово Справочники ругается
24. YannikAlx 31 11.11.19 11:41 Сейчас в теме
(22) Ты понимаешь, что можно использовать в сравнениях только Конкретный ЭКЗЕМПЛЯР Справочника, а не все записи сразу?
26. user1302499 11.11.19 11:44 Сейчас в теме
(24)ААААААААААААААААА То есть, нужно сделать запрос и из него проверять группа это или нет?
27. user1302499 11.11.19 11:52 Сейчас в теме
(24)
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
	Если  Выборка.ЭтоГруппа Тогда
		     Сообщить("Работает",);
	КонецЕсли;


Так тоже не катит, на справочники ругается
29. YannikAlx 31 11.11.19 11:56 Сейчас в теме
(27) Ты умеешь запросами пользоваться?
Уж если про выборку заговорили....
Или чем дальше в лес, тем толще партизаны ? В смысле - провалы все больше...
30. user1302499 11.11.19 11:57 Сейчас в теме
(29) Конечно умею, задать группу как параметр просто?
32. YannikAlx 31 11.11.19 11:59 Сейчас в теме
(30) При чем тут группа? Ты выбирай не по группе, а по другим своим потребностям!
А вот ЭтоГруппа - проверяй уже потом, когда получишь ОДНУ конкретную номенклатуру
34. user1302499 11.11.19 12:01 Сейчас в теме
(32) Где я согрешил?
Тип не определен (Запрос)
35. YannikAlx 31 11.11.19 12:13 Сейчас в теме
(34)
Конечно умею
согрешил вот тут... ;-)))

Начни с изучения запросов - ВПЛОТНУЮ!
Пока не научишься ими пользоваться как таблицей умножения в любых вычислениях - можешь даже не дергаться дальше...
От простого к сложному никто не отменял....
Если не умеешь простого, никак не выполнишь ничего...

Почитай книжку сначала хоть какую, потренируйся просто получать любые данные из справочников сначала , потом уж трогай дальше...
36. user1302499 11.11.19 12:23 Сейчас в теме
(35) Я делал запросы там... С регистров брал сведения, партийный учет да еще и по складам, но такое первый раз
37. user1302499 11.11.19 12:24 Сейчас в теме
(35) Может он тут не работает потому что тонкий клиент, как тогда быть?
31. YannikAlx 31 11.11.19 11:58 Сейчас в теме
(27)
Выборка = Справочники.Номенклатура.ВыбратьИерархически();

Это еще больший бред, чем все предыдущее...
Сделай запрос, получи ОДИН экземпляр номенклатуры, выведи сообщение про его наименование (проверка чисто для тебя), и если выведет верно - проверяй на ЭтоГруппа
33. user1302499 11.11.19 12:01 Сейчас в теме
У меня форма подбора, мне нужно чтобы просто не перекидывалось наименование группы
38. YannikAlx 31 11.11.19 12:36 Сейчас в теме
"Никогда такого не было ! И вот опять..." ? )))))
Поверь - тонкость клиента тут совершенно ни при чем - Тонкий клиент полнофункционален!

Что у тебя в первый раз? Покажи свой запрос к справочнику Номенклатура, в котором ты пытаешься получить какую-нибудь номенклатуру, которую хочешь проверить а не группа ли она.
Но чтобы ее проверить , ее сначала получи , ну чтоб хоть для себя, что у тебя все получилось...
(хотя и в самом заппросе вполне можно проверки ставить...)
39. user1302499 11.11.19 12:39 Сейчас в теме
(38)У меня элементарный запрос не работает
Выбрать Номенклатуру Из Номенклатуры....
40. user1302499 11.11.19 12:40 Сейчас в теме
(38) Пишет тип не определен (запрос)
41. user1302499 11.11.19 12:43 Сейчас в теме
(38)
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура.Наименование КАК Наименование
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
Показать


Вот что тут не так?
42. YannikAlx 31 11.11.19 12:46 Сейчас в теме
(41) тут все совершенно правильно!
давай двигаться дальше...
На каком-то этапе ты же делаешь что-то не так...
Где твои проверки на Группу в приведенном тексте?
43. user1302499 11.11.19 12:48 Сейчас в теме
(42) Если тут правильно, почему ошибка?
45. YannikAlx 31 11.11.19 13:06 Сейчас в теме
(43) А потому что нету у тебя ТУТ никакой проверки!
И ты в принципе не понимаешь КАК она должна быть устроена...
Тот чувак пусть тебе и объяснит почему у тебя ошибка....

Одно и то же можно решать различными способами - это раз.
Во вторых с помощью запроса - решение всегда более прозрачно.
И в третьих я не вижу всего твоего кода БЕЗ запроса, а в запрос ты не хочешь внести проверку, то ли не можешь....

Внеси проверку с запросом и сделаешь шаг к пониманию почему у тебя ТАМ ошибка...
48. user1302499 11.11.19 13:14 Сейчас в теме
(45)
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	Стр = ВыбранныеТовары.Добавить();
		
	Если ЭтоГруппа Тогда
		    Сообщить("Ошибка",);
		КонецЕсли;	
		
	
	
	Стр.Наименование = ВыбраннаяСтрока;
	Стр.Количество =Стр.Количество + 1;
	
	
КонецПроцедуры
Показать


вот весь код
51. YannikAlx 31 11.11.19 13:18 Сейчас в теме
(48) Вычисли сколько у тебя всего Групп в Справочнике, то есть выведи в Сообщить( это число...
Используя свой запрос, ибо запрос ты сделал конструктором , возможно понятия не имея а как оно вообще функционирует...
53. YannikAlx 31 11.11.19 13:57 Сейчас в теме
(48)
Стр.Наименование = ВыбраннаяСтрока;

Вот тут скорее всего неверно. Ибо строка обычно - это структура, и нельзя присваивать Наименованию Структуру (но это по правилам, у тебя не видно ЧТО спрятано в ВыбраннаяСтрока)
Если Это на самом деле структура (а это можно увидеть в отладке например), то
Должно быть
Стр.Наименование = ВыбраннаяСтрока.Номенклатура.Наименование;

И соответственно проверка ВыбраннаяСтрока.Номенклатура.ЭтоГруппа
Но это если только ВыбраннаяСтрока - это строка табличной части , к в которой есть Номенклатура
47. YannikAlx 31 11.11.19 13:11 Сейчас в теме
(43) Вот - сделай подсчет в твоем тексте с запросом, а сколько у тебя вообще Групп в Справочнике номенклатура .
Если сделаешь за 1 минуту - считай что можешь двигаться дальше.
Реально - это очень просто....
49. user1302499 11.11.19 13:15 Сейчас в теме
(47)
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.ЭтоГруппа) КАК ЭтоГруппа
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
	
	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Показать



Правильно?
50. user1302499 11.11.19 13:17 Сейчас в теме
(47)Тю, оно не работает потому что на клиенте, может и этогруппа не проверяет потому что оно на клиенте?
44. user1302499 11.11.19 12:52 Сейчас в теме
(42) Чувак который задание дал, сказал шо запрос тут лишнее мне просто надо обратиться в нужное место, чтобы сделать проверку на группу
46. YannikAlx 31 11.11.19 13:07 Сейчас в теме
(44) чувак то безусловно прав скорее всего, но это если б ты понимал ГДЕ это нужное место....
И вот для твоего понимания я прошу сделать проверку с запросом...
52. YannikAlx 31 11.11.19 13:23 Сейчас в теме
Вот видишь ты уже начинаешь хоть что-то анализировать...
Про клиента - верно то что ЗАПРОСЫ НЕВОЗМОЖНЫ на Клиенте, но это совершенно не значит что они Невозможны при работе с Тонким Клиентом.
Запрос при этом должен выполняться в процедуре &НаСервере...
И именно потому что у тебя не хватает БАЗОВЫХ знаний ты никак не вникнешь в суть всей задачи.
Я тебя и прошу выполнить подсчет Групп запросом...
Когда у тебя ЭТО получится - все остальное само собой поймется....
54. user1302499 11.11.19 14:57 Сейчас в теме
55. user1302499 11.11.19 15:09 Сейчас в теме
57. YannikAlx 31 11.11.19 15:10 Сейчас в теме
(55) весь экран с ТОЧКОЙ ОСТАНОВА где-то на
ВыбраннаяСтрока
58. YannikAlx 31 11.11.19 15:11 Сейчас в теме
(55) Без текста программы - результат отладки - бессмыслен
59. YannikAlx 31 11.11.19 15:11 Сейчас в теме
(55) Покажи именно Точку останова
60. user1302499 11.11.19 15:12 Сейчас в теме
61. YannikAlx 31 11.11.19 15:15 Сейчас в теме
(60) Не вижу , что произошла остановка...
Где находится курсор?
Кружок видно , но курсора в нем нету...
62. user1302499 11.11.19 15:16 Сейчас в теме
63. YannikAlx 31 11.11.19 15:19 Сейчас в теме
(62) Ясно...
Перенеси свою проверку на сервер.
Все подобные проверки делать нужно на сервере на мой взгляд, ибо данные там.
На клиенте трудно бывает замутить какую- либо аналдитику...
65. user1302499 11.11.19 15:20 Сейчас в теме
(63)А как я ВыбраннуюСтроку перенесу на серв?
68. YannikAlx 31 11.11.19 15:23 Сейчас в теме
(65) Создай
&НаСервере 
Функция ГруппаЭто(СсылкаНоменклатуры)
Если СсылкаНоменклатуры.ЭтоГруппа Тогда
Возврат ИСТИНА;
ИНАЧЕ Возврат ЛОЖЬ;
КонецФункции;


И обращайся к ней с клиента... то есть из своей процедуры...
64. user1302499 11.11.19 15:19 Сейчас в теме
(61)я же говорил, шо не все так просто :D
56. YannikAlx 31 11.11.19 15:09 Сейчас в теме
Вот тут прикрепляй
Прикрепленные файлы:
66. YannikAlx 31 11.11.19 15:20 Сейчас в теме
Я сейчас попробую смоделировать твою ситуацию у себя
67. user1302499 11.11.19 15:22 Сейчас в теме
(66)Мне пишет что переменная там не определена, короче, жесть
69. YannikAlx 31 11.11.19 15:24 Сейчас в теме
70. YannikAlx 31 11.11.19 15:25 Сейчас в теме
(67) так ссылку то нужно передать вот в ту функцию на сервере , которую я написал.
71. user1302499 11.11.19 15:30 Сейчас в теме
(70)потом на клиенте Если ГруппаЭто = Истина Тогда ошибка?
72. YannikAlx 31 11.11.19 15:31 Сейчас в теме
(71) На клиенте можно просто ЕСЛИ ГруппаЭто(ВыбраннуюСтроку ) Тогда..... Сообщить(
73. user1302499 11.11.19 15:37 Сейчас в теме
(72)Работает, выдает ошибку при выборе группы, но теперь когда выбираю Номенклатуру пишет что Невозможно преобразование к типу Булево
74. YannikAlx 31 11.11.19 15:50 Сейчас в теме
(73) Покажите ваши тексты
И давайте все же понимать, что БЕЗ текстов отсюда ничего не видно
75. user1302499 11.11.19 15:52 Сейчас в теме
(74)
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	Стр = ВыбранныеТовары.Добавить();
		

		
	Если ГруппаЭто(ВыбраннаяСтрока) Тогда
		 Сообщить("Ошибка",);
	Иначе
		Стр.Наименование = ВыбраннаяСтрока;
		Стр.Количество =Стр.Количество + 1; 
	КонецЕсли;	
	
	
	
		
	
КонецПроцедуры

&НаСервере
Функция ГруппаЭто(СсылкаНоменклатуры)
	Если СсылкаНоменклатуры.ЭтоГруппа Тогда
		Возврат ИСТИНА;
	КонецЕсли;
КонецФункции
Показать
76. user1302499 11.11.19 15:53 Сейчас в теме
(74)Если ГруппаЭто(ВыбраннаяСтрока) Тогда
в этой строке ошибка
78. YannikAlx 31 11.11.19 15:54 Сейчас в теме
(76) сравните с тем что я прислал - у вас нет варианта, чему равна функция , когда ЭТоГруппа=Ложь в процедуре на сервере
user1302499; +1 Ответить
79. user1302499 11.11.19 15:57 Сейчас в теме
(78)
&НаСервере
Функция ГруппаЭто(СсылкаНоменклатуры)
	Если СсылкаНоменклатуры.ЭтоГруппа = Ложь Тогда
		Возврат ИСТИНА;
	КонецЕсли;
КонецФункции
80. user1302499 11.11.19 15:57 Сейчас в теме
(78) Оно же так не проверяет правильно
81. YannikAlx 31 11.11.19 16:02 Сейчас в теме
(80) Вы еще раз посмотрите что я прислал...
Ты не точно написал функцию
Прикрепленные файлы:
user1302499; +1 Ответить
82. YannikAlx 31 11.11.19 16:03 Сейчас в теме
(80) Постарайся увидеть все что делает каждая строчка твоей программы...
Тогда даже если ошибешься - сразу увидишь где ошибка...
user1302499; +1 Ответить
83. user1302499 11.11.19 16:07 Сейчас в теме
(82) Спасибо, дай Бог тебе здоровья! Сам бы я хрен когда решил это. НО должен признать были мысли делать через функцию с возвратом истины или ложь.
84. YannikAlx 31 11.11.19 16:11 Сейчас в теме
77. user1302499 11.11.19 15:54 Сейчас в теме
(74)Преобразование к значению тип Булево не может быть выполнено
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист/Cтарший программист 1С
Москва
зарплата от 100 000 руб. до 250 000 руб.
Полный день

Программист 1С
Калининград
зарплата от 60 000 руб. до 80 000 руб.
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день