|
Мой первый запрос | ☑ | ||
---|---|---|---|---|
0
tolok_d
18.02.13
✎
21:51
|
Здравствуйте уважаемые. Вот пытаюсь осваивать понемногу запросы... знаю что поздно, но надо же учиться. Ниже приведен кусок кода в теле модуля формы заказа покупателя:
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Проведен, | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Сделка.Ссылка = &Ссылка |"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если РольДоступна(Метаданные.Роли.МенеджерПоПродажам) И ВыборкаДетальныеЗаписи.Проведен = Истина Тогда //Тут нужно установить доступность всей формы в занчение Ложь КонецЕсли; КонецЦикла; Подскажите почему не находит реализацию? хотя уверен что реализация есть. И, Если не сложно, подскажите как запретить редактирование сразу для всех элементов формы, а не по одному. Заранее спасибо) |
|||
1
Aleksey
18.02.13
✎
22:01
|
А кто сказал что тут нужен запрос?
|
|||
2
Тролль главный
18.02.13
✎
22:02
|
1. возможно реализация имеет ссылки на заказ в табличной части, а не в шапке (то есть нужно использовать не Документ.РеализацияТоваровУслуг, а что-то вроде Документ.РеализацияТоваровУслуг.Товары), но если связи вообще нет, то гораздо хуже - на нет и суда нет
2. ЭтаФорма.ТолькоПросмотр = Истина; |
|||
3
MrStomak
18.02.13
✎
22:02
|
Если это новый объект, тот он еще не записан и ссылка на него пустая. Проведен он или нет надо проверять через ЭтотОбъект.Проведен, а не через запрос непонятно куда. Запрещать редактирование в этом случае нужно сразу в настройках ролей, там есть право "редактировать проведенные" или что-то типа того.
|
|||
4
MrStomak
18.02.13
✎
22:04
|
а, там опрашивается сделка у реализации, тогда написанное в (3) неверно
|
|||
5
Очкарик
18.02.13
✎
22:11
|
Лушче писать так:
РеализацияТоваровУслуг.Сделка.Ссылка.Ссылка.Ссылка = &Ссылка Так надежнее будет, инфа 100% |
|||
6
toxicoff
18.02.13
✎
22:26
|
(4) правильно говорит, только проверить проще через метод "ЭтоНовый()", если документ только что создан вернет истину..
|
|||
7
toxicoff
18.02.13
✎
22:27
|
http://programmist1s.ru/opisanie-yazyika-zaprosa-1s/
может пригодится - статейку про запросы написал |
|||
8
GANR
18.02.13
✎
23:38
|
(0) и вот это РольДоступна(Метаданные.Роли.МенеджерПоПродажам) убери из цикла - быстродействие снижает
|
|||
9
GANR
18.02.13
✎
23:41
|
Условие из цикла надо убрать (8) - проверять до цикла, а проведен = Истина - внутри запроса
|
|||
10
tolok_d
19.02.13
✎
12:01
|
(8) дельный совет. Исправляю
|
|||
11
tolok_d
19.02.13
✎
12:03
|
(1) а что здесь надо? здесь лучьше не через запрос? Тогда вопрос, где можно почитать про случаи когда надо запрос, а когда нет. Или, если Вам не сложно, расскажите.
|
|||
12
tolok_d
19.02.13
✎
12:04
|
(2) проверил. Это вообще реквизит док-а. Или я не так Вас понял?
|
|||
13
tolok_d
19.02.13
✎
12:06
|
(2) а по поводу второго пункта - огромное спасибо
|
|||
14
salvator
19.02.13
✎
12:08
|
(11) У тебя ссылка есть. А ты ее еще раз получаешь. Вопрос: нафига?
|
|||
15
tolok_d
19.02.13
✎
12:10
|
(3) согласен, но мне главное исключить ситуацию когда по документу уже была сделана реализация, тогда надо запретить редактирование. По новому заказу же не может быть реализации?
|
|||
16
tolok_d
19.02.13
✎
12:11
|
(14) где? Если она действительно есть, и ее где-то можно взять и понять что это реализация товаров и услуг, то я буду очень Вам благодарен.
|
|||
17
tolok_d
19.02.13
✎
12:12
|
(5) спасибо. Сейчас попробую. Хотя нигде такого решения не видел
|
|||
18
tolok_d
19.02.13
✎
12:13
|
(7) очень пригодиться. Спасибо огромное
|
|||
19
salvator
19.02.13
✎
12:14
|
(16) Ок, думал Сделка - это ТЧ, сорри.
Тогда вопрос: зачем цикл для обхода выборки? Там может быть более 1-го значения? |
|||
20
tolok_d
19.02.13
✎
12:16
|
(19) да. Согласен. Спасибо большое.
|
|||
21
tolok_d
19.02.13
✎
12:20
|
Благодаря вашим подсказкам, код немножко оптимизировался:
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг //|ГДЕ //| РеализацияТоваровУслуг.Сделка.Ссылка = &Ссылка |"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если РольДоступна(Метаданные.Роли.МенеджерПоПродажам) Тогда Если ВыборкаДетальныеЗаписи.Ссылка.Проведен = Истина Тогда ЭтаФорма.ТолькоПросмотр = Истина; КонецЕсли; КонецЕсли; Но даже когда я убрал условие поиска по ссылке, в выюорке появляется один элемент с значением Неопределено. Что не так? Подскажите пожалуйста. |
|||
22
salvator
19.02.13
✎
12:34
|
(21) А условие зачем убрал из запроса? Убери только поле .Ссылка из него. Сделка и так ссылка уже, незачем масло масленое.
Далее. Нужно спозиционироваться на элементе выборки. Для этого напиши Если ВыборкаДетальныеЗаписи.Следующий() Тогда Если ВыборкаДетальныеЗаписи.Ссылка.Проведен Тогда ... |
|||
23
kimba
19.02.13
✎
13:15
|
Я так понял тебе достаточно этого будет
Если РольДоступна(Метаданные.Роли.МенеджерПоПродажам) И ЭтотОбъект.Проведен Тогда ЭтаФорма.ТолькоПросмотр = Истина; КонецЕсли; |
|||
24
Schwonder
19.02.13
✎
16:04
|
"Выбрать * Из РегистрНакопления.Продажи КАК ПродажиНомерРаз Соединение РегистрНакопления.Продажи КАК ПродажиНомерДва По Истина". Вот так ЗБС.
|
|||
25
Schwonder
19.02.13
✎
16:05
|
Чё стисняться то? XD
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |