|
Отображение остатка товара в УТ 10.3 через запрос | ☑ | ||
---|---|---|---|---|
0
WhiteDragon93
08.11.12
✎
07:11
|
Прошу прощения за похожую тему, которую я же создавал (Отображение остатка товара в УТ 10.3). Мне необходимо переписать эту процедуру при помощи запроса. Никак до меня не дойдет что включать в запрос, отбор и как их связать. Нигде путевого справочного материала найти не могу. И еще вопрос: как изменить цвет текста в текстовом поле на форме?
Пока только на такое мозгов хватило: Процедура ТоварыПриАктивизацииСтроки(Элемент) ТекСтрока = Элемент.ТекущаяСтрока; Отбор=Новый Структура("Номенклатура", ТекСтрока.Номенклатура); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.СерияНоменклатуры, | ТоварыНаСкладахОстатки.Качество, | ТоварыНаСкладахОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки"; Выборка = Запрос.Выполнить().Выбрать(,,Отбор); Если Выборка.Следующий() Тогда ЭлементыФормы.НадписьОстаток.Заголовок= "Остаток:" + Выборка.КоличествоОстаток; КонецЕсли; КонецПроцедуры |
|||
1
Wobland
08.11.12
✎
07:13
|
в прошлой ветке тебе и запрос давали
|
|||
2
Wobland
08.11.12
✎
07:13
|
+(1) Запрос.УстановитьПараметр(), Выполнить().Выбрать(), Пока Следующий()
всё, работай |
|||
3
WhiteDragon93
08.11.12
✎
07:17
|
(1) помню, но не смог я его прилепить, спасибо за помощь :)
сутки не спал, эх... буду делать |
|||
4
Wobland
08.11.12
✎
07:20
|
(3) читай (2), где будет непонятно, спросишь
|
|||
5
WhiteDragon93
08.11.12
✎
07:34
|
эмм... так?
Запрос.УстановитьПараметр("Отбор", Отбор); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЭлементыФормы.НадписьОстаток.Заголовок= "Остаток:" + Выборка.КоличествоОстаток; КонецЦикла; КонецПроцедуры |
|||
6
Wobland
08.11.12
✎
07:37
|
(5) то есть запрос ты не вкурил. а ещё хвастался "Да запрос-то сделать смогу, не беда"
|
|||
7
Wobland
08.11.12
✎
07:37
|
Запрос.УстановитьПараметр("Номенклатура", НужнаяНоменклатура);
... |
|||
8
perec1982
08.11.12
✎
07:38
|
Красить ячейки с помощью свойства Таб поля при получении данных.
Для каждого … Из ОформленияСтрок Цикл |
|||
9
WhiteDragon93
08.11.12
✎
07:40
|
(6) да вот видимо лохонулся...
|
|||
10
WhiteDragon93
08.11.12
✎
07:46
|
Вообще ничего понять не могу, не зря человеку сон дан. Вздремну пару часов и вернусь. Может во сне запрос приснится :)
|
|||
11
Wobland
08.11.12
✎
07:47
|
перекопипастить сюда запрос что ли.. или пускай уж спит..
|
|||
12
WhiteDragon93
08.11.12
✎
07:48
|
А пока у меня получается какой-то перебор значений, но потом все равно заголовок = 1
|
|||
13
WhiteDragon93
08.11.12
✎
07:48
|
(11) вот
ВЫБРАТЬ ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Качество = &Качество И Номенклатура = &Номенклатура И СерияНоменклатуры = &СерияНоменклатуры И Склад = &Склад И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры) КАК ТоварыНаСкладахОстатки |
|||
14
zak555
08.11.12
✎
07:50
|
запрос на одну строку ?
|
|||
15
perec1982
08.11.12
✎
07:50
|
Куда выводястя остатки! В фору подбора?
|
|||
16
Wobland
08.11.12
✎
07:51
|
(14) не более чем на одну
|
|||
17
Wobland
08.11.12
✎
07:52
|
(13) вот и задай параметры запроса. поштучно. выполни и попробуй выбрать. если получится, значит, в поле КоличествоОстаток что-то будет, если нет - значит ноль
|
|||
18
zak555
08.11.12
✎
07:54
|
(16) если он тыкает на другую строку -- новый запрос идёт
|
|||
19
Wobland
08.11.12
✎
07:55
|
(18) он так и хочет. да пускай так и будет
|
|||
20
zak555
08.11.12
✎
07:55
|
(19) так это быдлокод
|
|||
21
cw014
08.11.12
✎
07:56
|
При активизации запрос фигачить - здорово. Можно с таким же успехом его в цикл поместить
|
|||
22
WhiteDragon93
08.11.12
✎
08:07
|
Объясните, пожалуйста, другими словами (не как в СП), что такое параметры запроса?
|
|||
23
ДенисЧ
08.11.12
✎
08:08
|
(22) Это те данные, которые ты явно не можешь прописать в запросе, потому что они зависят от внешней ситуации, например от того, что указал пользователь
|
|||
24
cw014
08.11.12
✎
08:09
|
(23) Данная информация вообще под контролем ФСБ, зачем ты ее рассекречиваешь? :)
|
|||
25
ДенисЧ
08.11.12
✎
08:11
|
(24) у меня есть разрешение на разглашение данной информации.
Мне за это платят. |
|||
26
cw014
08.11.12
✎
08:12
|
(25) Понятно, отзываем людей в черном :)
|
|||
27
perec1982
08.11.12
✎
08:20
|
Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
МассивНоменклатуры = Новый Массив; Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл //Если Не ОформлениеСтроки.ДанныеСтроки.Ссылка.ЭтоГруппа Тогда МассивНоменклатуры.Добавить(ОформлениеСтроки.ДанныеСтроки.Номенклатура); //КонецЕсли; КонецЦикла; ГруппаДоступностиСкладов = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ГруппаДоступностиСкладов"); ЗапросПоСкладам = Новый Запрос; ЗапросПоСкладам.УстановитьПараметр("ГруппаДоступности",ГруппаДоступностиСкладов); ЗапросПоСкладам.Текст = "ВЫБРАТЬ | СоставГруппДоступностиСкладов.Склад |ИЗ | РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов |ГДЕ | СоставГруппДоступностиСкладов.ГруппаДоступности = &ГруппаДоступности"; МассивСклады = ЗапросПоСкладам.Выполнить().Выгрузить().ВыгрузитьКолонку("Склад"); ТаблицаОстатков = УправлениеЗапасами.ПолучитьТаблицуСвободныхОстатковПоСериям(МассивСклады, "", МассивНоменклатуры); Если Элемент.Колонки.Остаток.Видимость Тогда Для Каждого ОформлениеСтроки ИЗ ОформленияСтрок Цикл НайденнаяСтрока = ТаблицаОстатков.Найти(ОформлениеСтроки.ДанныеСтроки.Номенклатура, "Номенклатура"); Если НайденнаяСтрока <> Неопределено Тогда ОформлениеСтроки.Ячейки.ОстатокОсновногоСклада.УстановитьТекст(Формат(НайденнаяСтрока.Остаток,"ЧО=")); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
28
WhiteDragon93
08.11.12
✎
08:20
|
А что в (13) означает это:
( &Период, Качество = &Качество И Номенклатура = &Номенклатура И СерияНоменклатуры = &СерияНоменклатуры И Склад = &Склад И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры) ? |
|||
29
ДенисЧ
08.11.12
✎
08:22
|
(28) А может, для начала книжки умные почитаешь?
|
|||
30
WhiteDragon93
08.11.12
✎
08:27
|
(29) я 1С занимаюсь от силы 2 недели, по этому, уж извините, если потревожил, спрашиваю все, что не понимаю. А так, в планах очень даже есть, правда в нормальном качестве придется поискать. Сегодня пока пытался кое-что из пары прочесть, чуть глаза не сломал.
|
|||
31
Wobland
08.11.12
✎
08:36
|
(30) пары? мои опасения оказались верны? 1С уже преподают в вузах?
виртуальные таблицы тебе надо изучить |
|||
32
WhiteDragon93
08.11.12
✎
08:45
|
(31) лучше бы 1С, чем Паскаль, которые преподают бабульки, писавшие еще под калькуляторы и тетрис и заставляющие нас заниматься "правильным кодингом".
А так не пугайтесь, я просто скачал пару книг и посмотрел в них про запросы очень бегло. |
|||
33
Wobland
08.11.12
✎
08:46
|
(32) не трожь структурные языки. это понимание достаточно важно
|
|||
34
WhiteDragon93
08.11.12
✎
08:51
|
(33) да я не спорю, учиться в любом случае на нем. Но у нас просто если ты вместо того, чтобы описать тип (н-р: atype = array[1..n,1..m] of integer) и присвоить его переменной взял и присвоил массив переменной напрямую, все, пиши пропало...
|
|||
35
WhiteDragon93
08.11.12
✎
08:52
|
(33) а если еще и про константы забыл, все...смерть тебе обеспечена.
|
|||
36
Wobland
08.11.12
✎
08:53
|
мягкая типизация - зло ;)
|
|||
37
WhiteDragon93
08.11.12
✎
08:59
|
(36) а в моем случае обязательно использовать Пока Следующий()?
А то все это в цикле получается. |
|||
38
Wobland
08.11.12
✎
09:05
|
(37) если уверен, что одна строка в результате, достаточно сделать Если Выборка.Следующий(). или выгружать в ТЗ и делать по аналогии с объектным подходом. там я в ТЗ как раз выгружал
|
|||
39
Wobland
08.11.12
✎
09:06
|
(38) *не более одной строки, конечно
|
|||
40
WhiteDragon93
08.11.12
✎
09:13
|
(38)Да в том-то и дело, что сказали с запросом делать, контекст не трогать
|
|||
41
Wobland
08.11.12
✎
09:15
|
(40) какой контекст? ну и делай запросом, контекст не трогай
|
|||
42
WhiteDragon93
08.11.12
✎
09:17
|
(41) Просто выгрузить запрос в ТаблицуЗначений и потом из нее выборку делать?
|
|||
43
Wobland
08.11.12
✎
09:18
|
(42) вариант 1: Просто выгрузить результат запроса в ТаблицуЗначений и потом из нее выборку сделать
вариант 2: сделать Выбрать() и попросить Следующий() |
|||
44
WhiteDragon93
08.11.12
✎
09:32
|
Измените, пожалуйста, что не так сделал. Все, мозг полностью вырубился. Только, если можно, на моем же примитивном уровне.
Процедура ТоварыПриАктивизацииСтроки(Элемент) ТекСтрока = Элемент.ТекущаяСтрока; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Ссылка |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки"; Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Остатки = Выборка.Получить().КоличествоОстаток; ЭлементыФормы.НадписьОстаток.Заголовок= "Остаток:" + Остатки; КонецЕсли; КонецПроцедуры |
|||
45
Wobland
08.11.12
✎
09:34
|
(44) а что ты получил этим запросом?
|
|||
46
MrStomak
08.11.12
✎
09:50
|
(43) 1. Параметр номенклатура в твоём запросе не участвует, в результате запроса столько строк, сколько в остатках номенклатур.
2. Разыменование "Номенклатура.Ссылка" ведёт к неявному соединению с таблицей номенклатуры, что замедляет запрос. |
|||
47
WhiteDragon93
08.11.12
✎
16:59
|
Прошу прощения, уснул. Сейчас попробую разобраться.
Скажите, почему может не запускаться консоль запросов? Хотел поучиться их делать, а никак. |
|||
48
Wobland
08.11.12
✎
17:05
|
(47) из-за ошибки в 43й строке может не запускаться
|
|||
49
Wobland
08.11.12
✎
17:05
|
(47) лучше готовую возьми
|
|||
50
WhiteDragon93
08.11.12
✎
17:10
|
Да я и так скачал. Просто не запускается. Ничего не происходит.
|
|||
51
Wobland
08.11.12
✎
17:11
|
(50) телепатирую. у твоей консоли нет формы для того режима, в котором запускаешь предприятие
|
|||
52
WhiteDragon93
08.11.12
✎
17:18
|
(50)У меня не запускается в режиме управляемого приложения. Ошибка выползает про какую-то переменную вроде, не вдавался, т.к. она не моя.
|
|||
53
Wobland
08.11.12
✎
17:21
|
(52) тогда в 58й строке ошибка
|
|||
54
WhiteDragon93
08.11.12
✎
17:24
|
Wobland, у меня к Вам личная просьба. Не могли бы Вы наваять верный запрос. Хотелось бы сделать задание и потом уже капитально садиться за изучение языка запросов, а то франч ругаться будет. И все я никак не допру, какой параметр нужно номенклатуре передать. Создать отбор и передать его?
|
|||
55
Wobland
08.11.12
✎
17:25
|
(54) запрос я тебе уже наваял
|
|||
56
Wobland
08.11.12
✎
17:31
|
Процедура ТоварыПриАктивизацииСтроки(Элемент)
ТекСтрока=Элемент.ТекущаяСтрока; //Отбор=Новый Структура("Склад, Номенклатура, ХарактеристикаНоменклатуры, СерияНоменклатуры, Качество", // Склад, ТекСтрока.Номенклатура, ТекСтрока.ХарактеристикаНоменклатуры, ТекСтрока.СерияНоменклатуры, ТекСтрока.Качество); //Остатки=РегистрыНакопления.ТоварыНаСкладах.Остатки(Дата, Отбор); Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &Период, | Качество = &Качество | И Номенклатура = &Номенклатура | И СерияНоменклатуры = &СерияНоменклатуры | И Склад = &Склад | И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры) КАК ТоварыНаСкладахОстатки"; Запрос.УстановитьПараметр("Период", Дата); Запрос.УстановитьПараметр("Качество", ТекСтрока.Качество); Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура); Запрос.УстановитьПараметр("СерияНоменклатуры", ТекСтрока.СерияНоменклатуры); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", ТекСтрока.ХарактеристикаНоменклатуры); Остатки=Запрос.Выполнить().Выгрузить(); ЭлементыФормы.НадписьОстатокТовара.Заголовок="на складе: "+?(Остатки.Количество(), Остатки[0].Количество, 0); //ЭлементыФормы.НадписьОстатокТовара.Заголовок="на складе: "+?(РегистрыНакопления.ТоварыНаСкладах.Остатки(Дата, Новый Структура("Склад, Номенклатура, ХарактеристикаНоменклатуры, СерияНоменклатуры, Качество", Склад, Элемент.ТекущаяСтрока.Номенклатура, Элемент.ТекущаяСтрока.ХарактеристикаНоменклатуры, Элемент.ТекущаяСтрока.СерияНоменклатуры, Элемент.ТекущаяСтрока.Качество)).Количество(), РегистрыНакопления.ТоварыНаСкладах.Остатки(Дата, Новый Структура("Склад, Номенклатура, ХарактеристикаНоменклатуры, СерияНоменклатуры, Качество", Склад, Элемент.ТекущаяСтрока.Номенклатура, Элемент.ТекущаяСтрока.ХарактеристикаНоменклатуры, Элемент.ТекущаяСтрока.СерияНоменклатуры, Элемент.ТекущаяСтрока.Качество))[0].Количество, 0); КонецПроцедуры |
|||
57
Wobland
08.11.12
✎
17:31
|
(56) чорт! какуля из одной строки всё-таки вырвалась из меня ;)
|
|||
58
WhiteDragon93
08.11.12
✎
17:36
|
Вот теперь доперло, спасибо :) у меня как-то туго с параметрами получается.
|
|||
59
WhiteDragon93
08.11.12
✎
17:43
|
И, если можно, скажите, где можно про вывод посмотреть?
ЭлементыФормы.НадписьОстатокТовара.Заголовок="на складе: "+?(Остатки.Количество(), Остатки[0].Количество, 0); Не могу никак понять эту запись. |
|||
60
Wobland
08.11.12
✎
17:43
|
(59) именно этого я от тебя добивался в прошлой ветке
|
|||
61
Wobland
08.11.12
✎
17:45
|
начни с этого: http://screencast.com/t/hhzshifd6mNS
|
|||
62
WhiteDragon93
08.11.12
✎
17:50
|
(61)Спасибо, теперь понял. Единственное, не очень вот это: Остатки[0].Количество, для чего [0] - обнуление?
|
|||
63
Wobland
08.11.12
✎
17:50
|
(62) первая строка
|
|||
64
WhiteDragon93
08.11.12
✎
17:56
|
(63) А, все, индекс, понял.
|
|||
65
WhiteDragon93
08.11.12
✎
18:09
|
Достал уже я. Мне нужно окрасить текст НадписьОстатокТовара в синий. Надпись находится в подвале. Все равно использовать, как Вы написали св-во ТЧ ПриПолученииДанных ?
|
|||
66
Wobland
08.11.12
✎
18:16
|
(65) покрась визуально на форме в пофигураторе
|
|||
67
Wobland
08.11.12
✎
18:17
|
(66) вот сам не мог дойти до этого, попробовать и .. сдержать себя? или каждый чих благословлять придётся?
|
|||
68
WhiteDragon93
08.11.12
✎
18:21
|
(67) не попробовав сам - не стал бы писать.
|
|||
69
Wobland
08.11.12
✎
18:29
|
(68) это радует, но это вовсе не очевидно. поздравлять?
|
|||
70
WhiteDragon93
08.11.12
✎
18:38
|
(69) Можно поздравить, допер :)
ЦветТекста = ЦветаСтиля.ТекстИнформационнойНадписи; ЭлементыФормы.ИнфНадписьОстаток.ЦветТекста = ЦветТекста; Просто сначала ума на первую строку не хватило. |
|||
71
Wobland
08.11.12
✎
18:41
|
(70) не буду поздравлять, плохо допёр. без кода, в визуальном режиме проще ж
|
|||
72
WhiteDragon93
08.11.12
✎
18:43
|
(71) А где это? Я так и не нашел. В свойствах надписи нет.
|
|||
73
Wobland
08.11.12
✎
18:49
|
(72) это полное безобразие! возьми мои свойства: http://screencast.com/t/ilymtHgCWx
|
|||
74
WhiteDragon93
08.11.12
✎
18:53
|
(73) У меня только "Основные" и "События"
|
|||
75
Wobland
08.11.12
✎
18:57
|
||||
76
WhiteDragon93
08.11.12
✎
19:00
|
(75) Тьфу ты... Забыл я про "Показать только важные" Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |