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

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

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

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

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


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

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

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

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


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

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

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

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


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

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


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

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

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

Это еще больший бред, чем все предыдущее...
Сделай запрос, получи ОДИН экземпляр номенклатуры, выведи сообщение про его наименование (проверка чисто для тебя), и если выведет верно - проверяй на ЭтоГруппа
+
33. user1302499 11.11.19 12:01 Сейчас в теме
У меня форма подбора, мне нужно чтобы просто не перекидывалось наименование группы
+
38. YannikAlx 43 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 43 11.11.19 12:46 Сейчас в теме
(41) тут все совершенно правильно!
давай двигаться дальше...
На каком-то этапе ты же делаешь что-то не так...
Где твои проверки на Группу в приведенном тексте?
+
43. user1302499 11.11.19 12:48 Сейчас в теме
(42) Если тут правильно, почему ошибка?
+
45. YannikAlx 43 11.11.19 13:06 Сейчас в теме
(43) А потому что нету у тебя ТУТ никакой проверки!
И ты в принципе не понимаешь КАК она должна быть устроена...
Тот чувак пусть тебе и объяснит почему у тебя ошибка....

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

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


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

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

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


И обращайся к ней с клиента... то есть из своей процедуры...
+
64. user1302499 11.11.19 15:19 Сейчас в теме
(61)я же говорил, шо не все так просто :D
+
56. YannikAlx 43 11.11.19 15:09 Сейчас в теме
Вот тут прикрепляй
Прикрепленные файлы:
+
66. YannikAlx 43 11.11.19 15:20 Сейчас в теме
Я сейчас попробую смоделировать твою ситуацию у себя
+
67. user1302499 11.11.19 15:22 Сейчас в теме
(66)Мне пишет что переменная там не определена, короче, жесть
+
69. YannikAlx 43 11.11.19 15:24 Сейчас в теме
70. YannikAlx 43 11.11.19 15:25 Сейчас в теме
(67) так ссылку то нужно передать вот в ту функцию на сервере , которую я написал.
+
71. user1302499 11.11.19 15:30 Сейчас в теме
(70)потом на клиенте Если ГруппаЭто = Истина Тогда ошибка?
+
72. YannikAlx 43 11.11.19 15:31 Сейчас в теме
(71) На клиенте можно просто ЕСЛИ ГруппаЭто(ВыбраннуюСтроку ) Тогда..... Сообщить(
+
73. user1302499 11.11.19 15:37 Сейчас в теме
(72)Работает, выдает ошибку при выборе группы, но теперь когда выбираю Номенклатуру пишет что Невозможно преобразование к типу Булево
+
74. YannikAlx 43 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 43 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 43 11.11.19 16:02 Сейчас в теме
(80) Вы еще раз посмотрите что я прислал...
Ты не точно написал функцию
Прикрепленные файлы:
user1302499; +1
82. YannikAlx 43 11.11.19 16:03 Сейчас в теме
(80) Постарайся увидеть все что делает каждая строчка твоей программы...
Тогда даже если ошибешься - сразу увидишь где ошибка...
user1302499; +1
83. user1302499 11.11.19 16:07 Сейчас в теме
(82) Спасибо, дай Бог тебе здоровья! Сам бы я хрен когда решил это. НО должен признать были мысли делать через функцию с возвратом истины или ложь.
+
84. YannikAlx 43 11.11.19 16:11 Сейчас в теме
(83) Не за что...
user1302499; +1
77. user1302499 11.11.19 15:54 Сейчас в теме
(74)Преобразование к значению тип Булево не может быть выполнено
+
Внимание! Тема сдана в архив

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