|
Остатки номенклатуры по одному из складов | ☑ | ||
---|---|---|---|---|
0
GruNow
22.11.11
✎
13:50
|
День добрый, мне вот вчера тут помогли добрые люди, научили как делать колонку с нужными данными. И вот новая сложность. Решил сделать колонку остатки в АРМПродавца. Там одна уже есть, но у нас 2 склада, желательно видеть сразу оба, вот я решил добавить постоянный показ одного из складов.
Вот код: [CODE] Если ЭлементыФормы.СписокНоменклатура.Колонки.ОстатокКутузов.Видимость тогда Запрос=Новый запрос; запрос.Текст ="ВЫБРАТЬ | ОстаткиТоваровКомпании.Номенклатура, | ОстаткиТоваровКомпании.Количество |ИЗ | РегистрНакопления.ОстаткиТоваровКомпании.Количество(&Период,Номенклатура В (&Номенклатура) И Склад = &Склад) |КАК ОстаткиТоваровКомпании" ; Запрос.УстановитьПараметр("Период", КонецДня(ТекущаяДата())); //Дата Запрос.УстановитьПараметр("Склад", Справочники.СкладыКомпании.НайтиПоКоду("ЦБ000002")); //Справочник ссылка: Склады (места хранения) Запрос.УстановитьПараметр("Номенклатура",ДанныеСтроки.Ссылка.Наименование); Выборка=Запрос.Выполнить().Выбрать(); ОформлениеСтроки.Ячейки.ОстатокКутузов.ОтображатьТекст=Истина; Пока Выборка.Следующий() Цикл ОформлениеСтроки.ячейки.ОстатокКутузов.текст = Выборка.Количество(); конеццикла; КонецЕсли; [/CODE] Вешаю это дела на СписокНоменклатураПриВыводеСтроки. Но вот 1с выдает ошибку [CODE] {Обработка.АРМПродавец.Форма.ИнтерфейсПродавец(2283)}: Ошибка при вызове метода контекста (Выполнить) Выборка=Запрос.Выполнить().Выбрать(); по причине: по причине: {(5, 2)}: Таблица не найдена "РегистрНакопления.ОстаткиТоваровКомпании.Количество" <<?>>РегистрНакопления.ОстаткиТоваровКомпании.Количество(&Период, Номенклатура В (&Номенклатура) И Склад = &Склад) [/CODE] Я в конфигураторе зашел в "Регистры Накопления"->ОстаткиТоваровКомпании. Есть реквизит "количество", в чем дело может быть? |
|||
1
Beduin
22.11.11
✎
13:52
|
Количество это што за таблица?
|
|||
2
Amra
22.11.11
✎
13:52
|
(0) Зачем было врать при трудоустройстве что знаешь 1С?
|
|||
3
ptiz
22.11.11
✎
13:56
|
Таблица не найдена "РегистрНакопления.ОстаткиТоваровКомпании.Количество" - что еще непонятно?
|
|||
4
Дукат
22.11.11
✎
13:56
|
я одно не пойму: как это так конструктор его сделал так: запрос. или руками поправляли еще?
|
|||
5
GruNow
22.11.11
✎
14:10
|
1. 1с я не знаю, а изучаю, причем только начал, Вот только-только. И на работе я сказал что 1с никогда даже не слышал, так что без клеветы :)
2. Все писал руками, я конструктором не умею пока пользоваться, вернее будет сказать не писал, а склеивал из разных найденных кусков. 3. А откуда то брать то? регистрНакопления.ОстаткиТоваровКомпании? Так про эту таблицу 1с говорит что нельзя ее брать, вот я и задал вопрос: после слов /"ИЗ/" в запросе что писать? Ведь количество, это часть таблицы /"регистрНакопления.ОстаткиТоваровКомпании/"? |
|||
6
Ткачев
22.11.11
✎
14:11
|
Если ЭлементыФормы.СписокНоменклатура.Колонки.ОстатокКутузов.Видимость тогда
Запрос=Новый запрос; запрос.Текст ="ВЫБРАТЬ | ОстаткиТоваровКомпании.Номенклатура, | ОстаткиТоваровКомпании.Количество |ИЗ | РегистрНакопления.ОстаткиТоваровКомпании(&Период,Номенклатура В (&Номенклатура) И Склад = &Склад) |КАК ОстаткиТоваровКомпании" ; Запрос.УстановитьПараметр("Период", КонецДня(ТекущаяДата())); //Дата Запрос.УстановитьПараметр("Склад", Справочники.СкладыКомпании.НайтиПоКоду("ЦБ000002")); //Справочник ссылка: Склады (места хранения) Запрос.УстановитьПараметр("Номенклатура",ДанныеСтроки.Ссылка.Наименование); Выборка=Запрос.Выполнить().Выбрать(); ОформлениеСтроки.Ячейки.ОстатокКутузов.ОтображатьТекст=Истина; Пока Выборка.Следующий() Цикл ОформлениеСтроки.ячейки.ОстатокКутузов.текст = Выборка.Количество; конеццикла; КонецЕсли; |
|||
7
Поручик
22.11.11
✎
14:12
|
(5) Купи книжки и учи матчасть
|
|||
8
Amra
22.11.11
✎
14:14
|
(6) Садись, два. Отчет выдаст пустой результат
|
|||
9
Beduin
22.11.11
✎
14:20
|
(8) Садись три. Отчет выдаст ошибку.
|
|||
10
Reset
22.11.11
✎
14:23
|
(9) Какую? :)
|
|||
11
Beduin
22.11.11
✎
14:25
|
(10) В запросе поле не найдено.
|
|||
12
Reset
22.11.11
✎
14:28
|
(11) Разглядел, сразу не заметил)
|
|||
13
Reset
22.11.11
✎
14:29
|
чтото типа РегистрНакопления.ОстаткиТоваровКомпании.Остатки(...
|
|||
14
Amra
22.11.11
✎
14:36
|
(12) Аналогично, точнее даже не глядел, сразу глянул на установку параметров)
|
|||
15
GruNow
22.11.11
✎
14:44
|
Я пробовал РегистрНакопления.ОстаткиТоваровКомпании.Остатки, пробовал РегистрНакопления.ОстаткиТоваровКомпании, пробовал РегистрНакопления.ОстаткиТоваровКомпании.Количество.
Все нерабочее, а вот Вашу небольшую дискуссию, господа гугу, я понять смог только поверхностно, разглядев в ней справедливое замечание о недостаточном объеме моих знаний, но, если бы я мог решить проблему самостоятельно, никого бы не тревожил. Подскажите книгу хорошую, актуальную, ну или там справочник на худой конец. Понимаю что не всем хочется тратить свое время на чужие проблемы, так поделитесь секретом где да чего читать. ПС РегистрНакопления.ОстаткиТоваровКомпании.Остатки, скорее всего брать это, но что тогда с необнаруженным полем? |
|||
16
Дукат
22.11.11
✎
14:51
|
(15) да эту
|
|||
17
GruNow
22.11.11
✎
14:54
|
[CODE]Если ЭлементыФормы.СписокНоменклатура.Колонки.ОстатокКутузов.Видимость тогда
Запрос=Новый запрос; запрос.Текст =/"ВЫБРАТЬ | ОстаткиТоваровКомпании.Номенклатура, | ОстаткиТоваровКомпании.количествоОстаток |ИЗ | РегистрНакопления.ОстаткиТоваровКомпании.остатки( |
|||
18
0xFFFFFF
22.11.11
✎
15:00
|
(0) "Колонки.ОстатокКутузов" шо шо?
|
|||
19
0xFFFFFF
22.11.11
✎
15:00
|
Справочники.СкладыКомпании.НайтиПоКоду("ЦБ000002"))
кхм. Низзя так писать. |
|||
20
GruNow
22.11.11
✎
15:06
|
(19)
Ну, тут все просто, колонка по складу Кутузова всегда должна быть отдельной, независимой, вот я ее и назвал ОстатокКутузов, можете предложить альтернативу) Соответственно и склад к ней привязал конкретный, еешный, если сделал неправильно, поправьте. |
|||
21
Reset
22.11.11
✎
15:07
|
// должно быть инициализировано СкладСсылка ссылкой на твой склад Кутузов.
Остатки=РегистрыНакопления.ОстаткиТоваровКомпании.Остатки(,Новый Структура("Склад,Номенклатура",СкладСсылка,ДанныеСтроки.Ссылка))); Если Остатки.Количество()>0 тогда ОформлениеСтроки.Ячейки.ОстатокКутузов.УстановитьТекст(Остатки[0].Количество); КонецЕсли; На самом деле, способ плохой по производительности, для данной цели нужно использовать событие ПриПолученииДанных, а не ПриВыводеСтроки, и тогда уже без запроса не обойтись. |
|||
22
hhhh
22.11.11
✎
15:17
|
(20) а если Кутузов проворуется и уволится? Новую программу разрабатывать тогда?
|
|||
23
GruNow
22.11.11
✎
15:28
|
(22)
Кутузов - личность мифическая, он не может уволиться, так как он есть склад :) Ну а если серьезно, то это просто название склада, не имеющее к человеку отношение. (21) Вот этот пример мне менее понятен. Вставил код, СкладСсылка назначил ссылку на склад, но выдает ошибку теперь [CODE]Неопознанный оператор Остатки = РегистрыНакопления.ОстаткиТоваровКомпании.Остатки(,Новый Структура(/"Склад,Номенклатура/",СкладСсылка,ДанныеСтроки.Ссылка))<<?>>);[/CODE] Вообще есть желание сделать с помощью запроса. Вопрос, а если нету процедуры ПриПолученииДанных на моей форме (СписокНоменклатура в данном случае), я могу сам безболезненно просто дописать ее в модуль? |
|||
24
Reset
22.11.11
✎
15:30
|
(23) ну скобка закрывающая лишняя, ема.
|
|||
25
Reset
22.11.11
✎
15:32
|
(23) Можешь дописать, только в свойствах форму ее укажи. Проще на самом деле сразу из свойств ее создать
|
|||
26
Reset
22.11.11
✎
15:32
|
свойствах табличного поля*
|
|||
27
Ткачев
22.11.11
✎
15:33
|
(24)Ну да, я тоже Остатки пропустил и наверно Ссылку в параметрах, ема...
|
|||
28
Reset
22.11.11
✎
15:35
|
(27) Не понял.
|
|||
29
hhhh
22.11.11
✎
15:44
|
(23) ну придет там новый директор или зам директора или главный бухгалтер и скажет: что за склад такой ненормальный. Назовите склад по человечески. И твоя программа рухнет.
|
|||
30
Ткачев
22.11.11
✎
15:48
|
(28)Не обращайте внимания, я тоже еще учусь.
|
|||
31
GruNow
22.11.11
✎
16:04
|
(24)
Скобку поставил, но теперь ругается на недопустимы параметр:/"Недопустимое значение параметра 2/". /"Новый Структура(/"Склад,Номенклатура/",СкладСсылка,ДанныеСтроки.Ссылка)/" этот параметр не того вида, а какого должен быть?К /"Склад/" присваем ссылку на склад, /"номенклатура/" - ДанныеСтроки.Ссылка, это понятно, но почему перед параметром стоит запятая? Значит он должен идти вторым параметром? Первый пустой? И как мне значение параметра сделать допустимым? Может неправильную ссылку на склад дал?[CODE]СкладСсылка = Справочники.СкладыКомпании.НайтиПоКоду(/"ЦБ000002/");[/CODE] (30) Вот вот) Мало того что не сделать как надо из-за нехватки знаний, так еще и выбор теперь нелегкий, как сделать ПриПолученииДанных, или ПриВыводкСтроки, учитывая что ни так, ни так, пока не получается :) |
|||
32
Reset
22.11.11
✎
16:42
|
(31) Ну, я же тебе не ясновидящий, откуда мне знать, что у тебя за регистр и как называются измерения. У тебя в (0) используется "Склад", а в реальности, подозреваю, "СкладКомпании".
Я не могу всего телепатировать. |
|||
33
Reset
22.11.11
✎
16:43
|
(31) Первый параметр метода Остатки() - это период. Можешь туда указать свой. При неуказанном возвращаются самые последние.
|
|||
34
GruNow
22.11.11
✎
17:04
|
(32)
Да, это была моя ошибка, я указывал /"Склад/" вместо /"СкладКомпании/". Но сейчас то складКомпании, а все равно недопустимое значение. Ну, как я тебя понял, ошибка может быть только в параметре? Попутно пробую сделать через ПриПолученииДанных. Создал в свойстве поля ПриИзменении событие СписокНоменклатураПриПолученииДанных. Зашел в эту процедуру. Так как нужны все данные сразу, если я правильно понял, нужно использовать массив из номенклатуры. Нарыл вобщем код, но пока не работает, надо переделать под себя. [CODE]Запрос = Новый Запрос; Запрос.Текст = /" |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура как Номенклатура, | Сумма(ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)) КАК КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | |
|||
35
Reset
22.11.11
✎
17:09
|
(34) "Создал в свойстве поля ПриИзменении событие СписокНоменклатураПриПолученииДанных"
/cry Надо в событии ПриПолученииДанных _ТабличногоПоля_. |
|||
36
Reset
22.11.11
✎
17:11
|
Забей пока на ПриПолученииДанных имхо. Если ты по 1 номенклатуре не можешь остаток получить, с массивом будет только хуже
|
|||
37
GruNow
22.11.11
✎
17:26
|
Reset, да, согласен, попробую сначала разобраться и заставить работать хотя бы эти 3 строчки
[CODE] Остатки=РегистрыНакопления.ОстаткиТоваровКомпании.Остатки(,Новый Структура(/"Склад,Номенклатура/",СкладСсылка,ДанныеСтроки.Ссылка))); Если Остатки.Количество()>0 тогда ОформлениеСтроки.Ячейки.ОстатокКутузов.УстановитьТекст(Остатки[0].Количество); КонецЕсли;[/CODE] Вот потом и дальше можно будет думать про то что постигать дальше :) В любом случае, большое спасибо ВСЕМ за внимание и помощь. |
|||
38
Buster007
22.11.11
✎
17:31
|
книжки не предлагать?
|
|||
39
GruNow
22.11.11
✎
17:50
|
(38)Предлагать, еще как!
|
|||
40
Reset
22.11.11
✎
18:06
|
Может так понятней будет:
Это точно то же самое, что и выше, только размазано на несколько операторов. |
|||
41
GruNow
23.11.11
✎
10:32
|
(40)Спасибо за разъяснения, так понятнее.
Сделал через Остатки=РегистрыНакопления... и т.д. |
|||
42
tdm
23.11.11
✎
10:56
|
(41) лучше все таки через запрос если добъете тему),
на будущее задел - универсальнее и быстрее |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |