|
Переменная не определена (VIP) | ☑ | ||
---|---|---|---|---|
0
AlekseyJr
27.06.24
✎
09:43
|
Есть запрос, в косоли запросов всё работает, в коде нет. Пишет ошибку "Переменная не определена (VIP)". VIP - это свойство контрагента. И собственно возникает вопрос, как её определить?))
Функция ПолучитьСписокVIPКонтрагентов() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК Объект, | ЗначенияСвойствОбъектов.Свойство КАК Свойство, | ЗначенияСвойствОбъектов.Значение КАК Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &Свойство"; Запрос.УстановитьПараметр("Свойство", VIP); РезультатЗапроса = Запрос.Выполнить(); Возврат РезультатЗапроса.Выгрузить(); КонецФункции |
|||
1
Инстанс
27.06.24
✎
06:55
|
Код показывай. Ты переменную-то объявил?
|
|||
2
Инстанс
27.06.24
✎
06:56
|
И что за форматирование. Тут, вроде, есть 1С.
|
|||
3
Инстанс
27.06.24
✎
06:57
|
Что такое вип? Говори. Давай разрулим
|
|||
4
AlekseyJr
27.06.24
✎
07:01
|
(3) VIP - это свойство контрагента, по которому я хочу определить список контрагентов с особыми условиями.
|
|||
5
Инстанс
27.06.24
✎
07:02
|
Давай тим вью что ли. Запрос нормальный. Как ты добываешь свойство контрагента. Просто пишешь VIP что ли
|
|||
6
Инстанс
27.06.24
✎
07:03
|
В консоли запросов ты значение-то заполняешь, а в программном коде - ух. Брезгуешь поди
|
|||
7
AlekseyJr
27.06.24
✎
07:03
|
(1) СписокVIPКонтрагентов = ПолучитьСписокVIPКонтрагентов();
Для Каждого Строка ИЗ СписокVIPКонтрагентов Цикл НайденнаяСтрока = СписокVIPКонтрагентов.Найти(Строка.Объект, "Объект"); Если НайденнаяСтрока = Контрагент Тогда ПредельнаяДатаОплаты = ДатаОплаты + 15552000; // 180 дней Иначе ПредельнаяДатаОплаты = ДатаОплаты + 7776000; // 90 дней КонецЕсли; КонецЦикла; Функция ПолучитьСписокVIPКонтрагентов() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК Объект, | ЗначенияСвойствОбъектов.Свойство КАК Свойство, | ЗначенияСвойствОбъектов.Значение КАК Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &Свойство"; Запрос.УстановитьПараметр("Свойство", VIP); РезультатЗапроса = Запрос.Выполнить(); Возврат РезультатЗапроса.Выгрузить(); КонецФункции |
|||
8
Инстанс
27.06.24
✎
07:04
|
Либо код показывай весь
|
|||
9
AlekseyJr
27.06.24
✎
07:04
|
(2) Я не увидел((
|
|||
10
Инстанс
27.06.24
✎
07:05
|
Ну и где переменная VIP?
|
|||
11
Инстанс
27.06.24
✎
07:06
|
Как ты вообще можешь в функции обращаться к необъявленной переменной. Чему тебя в жизни учили
|
|||
12
Инстанс
27.06.24
✎
07:08
|
Конфа какая?
|
|||
13
AlekseyJr
27.06.24
✎
07:09
|
(10) То есть переменная должна быть объявлена за пределами запроса? Я хотел через УстановитьПараметр...
|
|||
14
AlekseyJr
27.06.24
✎
07:10
|
(12) УТ 10.2
|
|||
15
Инстанс
27.06.24
✎
07:11
|
(13) А ты думаешь, если ты пишешь VIP, то что должно случиться? Ты кто по образованию?
|
|||
16
AlekseyJr
27.06.24
✎
07:11
|
(11) Да вот именно ничему, касаемо 1С, пытаюсь сам, с переменным успехом
|
|||
17
Инстанс
27.06.24
✎
07:12
|
Нет, нету старых утэшек. Удалил уже.
|
|||
18
Инстанс
27.06.24
✎
07:12
|
Короче, примерно
|
|||
19
Инстанс
27.06.24
✎
07:14
|
Хотя, блин, у меня нет старой УТ. Я там вообще не работаю. По логике VIP это Булево
Запрос.УстановитьПараметр("Свойство", Истина); |
|||
20
Инстанс
27.06.24
✎
07:14
|
Если траблы, пиши. Зайду, помогу
|
|||
21
AlekseyJr
27.06.24
✎
07:14
|
В моём случаи чудо((( Первый курс закончил, Информатика и вычислительная техника.
|
|||
22
AlekseyJr
27.06.24
✎
07:14
|
(20) Спасибо))
|
|||
23
Инстанс
27.06.24
✎
07:15
|
(21) Ну если ты первый курс закончил, как ты вообще в самостоятельной функции обращаешься к неопределённой переменной
|
|||
24
Мимохожий Однако
27.06.24
✎
07:17
|
(0) Режим отладки использовать научился? Искомая переменная есть на форме обработки? В каком режиме запускаешь базу?
|
|||
25
Инстанс
27.06.24
✎
07:23
|
vip по ходу это доп. свойство. просто название. думаю, это булево. поэтому (19) должен вырулить. а так..
|
|||
26
Мультук
гуру
27.06.24
✎
09:30
|
(0)
Тебе нужно получить ссылку на это доп.свойство VIP = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("VIP", Истина); P.S. Почему НайтиПоНаименованию("") в целом плохо тебе объяснят. А вот как его заменить на что-то взрослое, тебе тоже объяснят, но имхо сработает золотое правило "нельзя впихнуть невпихуемое" P.S. В (26) правильный ответ. |
|||
27
Valdis2007
27.06.24
✎
08:32
|
просто к вип переменным нет допуска еще))
|
|||
28
lEvGl
гуру
27.06.24
✎
09:19
|
(26) скорее так
VIP = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("VIP"); а ДополнительныеРеквизитыИСведения это уже из новых |
|||
29
AlekseyJr
27.06.24
✎
10:00
|
Всем спасибо, методом проб и ошибок пришел к такому решению. Правда не знаю, насколько это правильно, но вроде работает))Хах
Если ЗначениеСвойстваVIPКонтрагента() тогда ПредельнаяДатаОплаты = ДатаОплаты + 15552000; // 180 дней Иначе ПредельнаяДатаОплаты = ДатаОплаты + 7776000; // 90 дней КонецЕсли; Функция ЗначениеСвойстваVIPКонтрагента() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ЗначенияСвойствОбъектов.Объект КАК Объект, | ЗначенияСвойствОбъектов.Свойство КАК Свойство, | ЗначенияСвойствОбъектов.Значение КАК Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &Свойство | И ЗначенияСвойствОбъектов.Объект = &Объект"; VIP = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("06828"); Запрос.УстановитьПараметр("Свойство", VIP); Запрос.УстановитьПараметр("Объект", Контрагент); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Ложь; Иначе РезультатЗапроса = РезультатЗапроса.Выбрать(); РезультатЗапроса.Следующий(); Возврат РезультатЗапроса.Значение; КонецЕсли; КонецФункции |
|||
30
Волшебник
27.06.24
✎
09:46
|
(29) Ненадёжная строка:
VIP = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("06828"); |
|||
31
Инстанс
27.06.24
✎
09:51
|
молодо зелено. хотя не так. ну ёперный театр
|
|||
32
AlekseyJr
27.06.24
✎
09:51
|
(30) У меня было всего два варианта НайтиПоКоду, НайтиПоНаименованию((
|
|||
33
Волшебник
27.06.24
✎
09:52
|
(29) плохие цифры:
ПредельнаяДатаОплаты = ДатаОплаты + 15552000; // 180 дней ПредельнаяДатаОплаты = ДатаОплаты + 7776000; // 90 дней Лучше так: СекундВСутках = 86400; // 24*60*60 ПредельнаяДатаОплаты = ДатаОплаты + 180 * СекундВСутках; // 180 дней ПредельнаяДатаОплаты = ДатаОплаты + 90 * СекундВСутках; // 90 дней |
|||
34
Инстанс
27.06.24
✎
09:52
|
Подаваном-бы тебе к нормальному сеньору.
|
|||
35
AlekseyJr
27.06.24
✎
09:53
|
(31) Это значит "Всё очень плохо!"?
|
|||
36
Волшебник
27.06.24
✎
09:53
|
(32) Ищите по наименованию.
Или сделайте свойство предопределённым. |
|||
37
Волшебник
27.06.24
✎
09:55
|
Плохое изменение типа переменной через переприсваивание:
РезультатЗапроса = РезультатЗапроса.Выбрать(); Правильно так: Выборка = РезультатЗапроса.Выбрать(); |
|||
38
Климов Сергей
27.06.24
✎
09:55
|
(29)
1. (30) +1000 2. Параметры запроса заполняются необъявленными переменными (VIP и Контрагент). 3. Функция ЗначениеСвойстваVIPКонтрагента() поди в цикле вызывается? Тогда это запрос в цикле. А это лютый харам! В этом случае правильно вместе с формированием выборки по контрагентам определять и свойство VIP. В одном запросе. |
|||
39
AlekseyJr
27.06.24
✎
09:56
|
(36) Касаемо предопределённого свойства была мысля, но я не разу так не делал, поэтому отбросил, видимо зря. Буду значит переделывать, спасибо.
|
|||
40
Инстанс
27.06.24
✎
09:57
|
(35) Если начать с того, что ты обращался к необъявленной переменной. Как тебе это в голову пришло. Программист может тупить над фреймворком, но азы-то он должен схватывать на лету.
|
|||
41
Инстанс
27.06.24
✎
09:57
|
(39) Функцию напиши.
|
|||
42
Chai Nic
27.06.24
✎
09:59
|
Ну если уж перфекционировать по полной, то и несколько Возвратов из функции тоже не красиво. Лучше присвоить значение переменной, а Возврат сделать один раз в конце.
|
|||
43
Волшебник
27.06.24
✎
10:00
|
(29) Обращение к неизвестной переменной Контрагент
Запрос.УстановитьПараметр("Объект", Контрагент); |
|||
44
Волшебник
27.06.24
✎
10:00
|
Итак, вывод следующий.
Тупой бот пудрит мозги кожаным мешкам |
|||
45
Инстанс
27.06.24
✎
10:02
|
Юный подаван ищет участие
|
|||
46
Волшебник
27.06.24
✎
10:03
|
(45) Не надо врать. Люди не могут быть такими тупыми.
|
|||
47
Инстанс
27.06.24
✎
10:05
|
(46) У него же написано - Jr. Может, он реально не догоняет.
|
|||
48
Волшебник
27.06.24
✎
10:06
|
(47) У Вас тоже написано "инстанс". Может Вы тоже инстанс гопоты?
|
|||
49
AlekseyJr
27.06.24
✎
10:06
|
(40) Программист, а мне до программиста далеко ещё...
|
|||
50
Инстанс
27.06.24
✎
10:09
|
(48) Это в честь MFC, наверно. hInstance. Почините сайт - со старым логином зайти не могу.
|
|||
51
Волшебник
27.06.24
✎
10:16
|
(50) С каким из сотни?
|
|||
52
Волшебник
27.06.24
✎
10:17
|
(50) Вот нашёл красивый Ваш ник: Лалалалилалалала
|
|||
53
Волшебник
27.06.24
✎
10:18
|
(49) Идите книжки читайте. Перестаньте громоздить куски программного кода друг на друга.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |