|
v7: вопрос по методу СводныйОстаток | ☑ | ||
---|---|---|---|---|
0
lucifer
01.02.12
✎
17:29
|
регс = СоздатьОбъект("регистр.склады");
регс.СводныйОстаток(скл.текущийэлемент(),дог.наименование,,,,,сотрудник,"кол"); мне нужно получить остаток по ресурсу кол только по измерением склад - скл.текущийэлемент() наименование - дог.наименование сотрудник - сотрудник код что выше возвращает 0, хотя если посмотреть сальдо через отчет (там запрос формируется) то в разрезе этих измерений кол = 14 Попробовал так: регс.Остаток(скл.текущийэлемент(),дог.наименование,,,,,сотрудник,"кол"); выводит остаток, но странно как-то выводит 13 вместо 14. просто если смотреть отчет то 13 лежат в разрезе из. склад - значение наименование - значение сотрудник - значение поставщик - пустой а 1 лежит склад - значение наименование - значение сотрудник - значение поставщик - значение получается что регс.Остаток() вернул остаток где поставщик пусто, хотя я вообще пропустил это измерение, по идеи он должен был вообще его не учитывать. И кстати чем Остаток от СводныйОстаток отличается ? |
|||
42
Ёпрст
02.02.12
✎
10:35
|
(40) правильно выставить параметры, если нужен остаток не на ТА - рассчитать регистр
|
|||
43
Ёпрст
02.02.12
✎
10:35
|
на нужную дату
|
|||
44
lucifer
02.02.12
✎
10:45
|
"рассчитать регистр"
это операции -> управление бух. итогами? "если нужен остаток не на ТА" я вот не понимаю, пусть даже остаток на ТА, но у меня ТА стоит 29.02.2012 почему остаток 0, он должен быть как на тек. дату |
|||
45
Ёпрст
02.02.12
✎
10:47
|
(44)
>>>"рассчитать регистр" >>>>это операции -> управление бух. итогами? нет, это рассчитатьрегистрыНА/По+ВременныйРасчет(1) |
|||
46
Ёпрст
02.02.12
✎
10:48
|
(44)
для начала, проверить типы измерений, что ты в метод подсовываешь. |
|||
47
lucifer
02.02.12
✎
10:48
|
(45) аааа.. спасибо, счас попробую
|
|||
48
lucifer
02.02.12
✎
10:49
|
(46) типы вчера еще, проверел, перепроверил, такие же как в конфигураторе
|
|||
49
Ёпрст
02.02.12
✎
10:57
|
(48) возможно, заместо ссылки на объект ты передаешь переменную стипом туда.
|
|||
50
lucifer
02.02.12
✎
10:58
|
да е мое, Поле агрегатного объекта не обнаружено (РассчитатьРегистрыПо)
|
|||
51
lucifer
02.02.12
✎
10:59
|
что ему надо (((
|
|||
52
lucifer
02.02.12
✎
10:59
|
(51) коду в смысле
|
|||
53
Эльниньо
02.02.12
✎
11:05
|
(50) Код выкладывай.
|
|||
54
lucifer
02.02.12
✎
11:08
|
рег = СоздатьОбъект("регистр.склады");
|
|||
55
lucifer
02.02.12
✎
11:08
|
ой
|
|||
56
lucifer
02.02.12
✎
11:09
|
рег = СоздатьОбъект("регистр.склады");
рег.ВременныйРасчет(1); рег.РассчитатьРегистрыПо(ТекущаяДата(),); КолО = рег.СводныйОстаток(скл.текущийэлемент(),дог.наименование,,,,,сотрудник,"кол"); |
|||
57
lucifer
02.02.12
✎
11:17
|
главное когда пишу рег.РассчитатьРеги.. 1с мне выводит этот метод, а во время работы программы ругается
|
|||
58
Эльниньо
02.02.12
✎
11:37
|
(56)
рег = СоздатьОбъект("регистр.склады"); рег.ВременныйРасчет(1); РассчитатьРегистрыНа(ТекущаяДата(),); КолО = рег.СводныйОстаток(скл.текущийэлемент(),дог.наименование,,,,,сотрудник,"кол"); Есть 2-й вариант. Попробуй этот для начала. |
|||
59
lucifer
02.02.12
✎
12:47
|
Ёпрст4, был прав, отчасти.
плюнул я на СводныйОстаток, решил через запрос сделать и фиг. Долбался я с ним, даже голова разболелась, потом попробовал так вместо дог.наименование и скл (скл раньше брался так Если пер.ЗначениеНаДату(ТекущаяДата()).код=3 Тогда скл.найтипокоду(9); иначе скл.найтипокоду(глсклад); КонецЕсли; ) изменил на Если пер.ЗначениеНаДату(ТекущаяДата()).код=3 Тогда скл.найтипокоду(9); иначе скл.найтипокоду(глсклад); КонецЕсли; скл=скл.ТекущийЭлемент(); товр=дог.наименование.ТекущийЭлемент(); м потом товр и скл подставил в запрос и все заработало, но только через запрос, а СводныйОстаток() так и не работал. Отсюда вопрос чем дог.наименование отличается от дог.наименование.ТекущийЭлемент() в последнем ссылка передается а в первом сам объект? и почему не работает если сразу в запрос написать дог.наименование.ТекущийЭлемент(), именно надо присвоит значение переменной и уже переменную в запрос вставлять. Когда это все сработало, товар добавился в заявку (это все я делаю что бы проверить есть ли у сотрудника необходимое кол-во товара когда он создает заявку на отгрузку этого товара) ну так вот, когда товар добавился в заявку, я сохранил ее, и решил попробовать опять СводныйОстаток, убрал комментарии и на мое удивление СводныйОстаток вернул правильное значение, я на радостях закоментил код с запросом оставил с СводныйОстаток, попробовал еще, и опять сработало, потом я удалил добавленые строки с дока, пробую, фиг. Почему-то СводныйОстаток работает только тогда когда в документ добавлена строка, короче оставил вариант с запросом. |
|||
60
1Сергей
02.02.12
✎
12:54
|
Про полный ПЭ говорили уже?
|
|||
61
lucifer
02.02.12
✎
12:56
|
на вопросы кто-нить ответит? или стебаться будете дальше?
|
|||
62
1Сергей
02.02.12
✎
12:57
|
(61) как мы могли протелепатить про твой "пер"?
Ты можешь более внятно объяснить что откуда берётся? |
|||
63
Voronve
02.02.12
✎
12:58
|
(0) Структуру регистра "Склады" в студию
|
|||
64
1Сергей
02.02.12
✎
13:00
|
(63)+1
Поставщик - какой по счёт реквизит? |
|||
65
1Сергей
02.02.12
✎
13:00
|
*по счёту
|
|||
66
lucifer
02.02.12
✎
13:10
|
(63)http://s018.radikal.ru/i518/1202/69/c0324793c6c2.jpg
(64) не понял вопрос |
|||
67
Эльниньо
02.02.12
✎
13:13
|
(66) Стопудово не закрывается.
|
|||
68
Voronve
02.02.12
✎
13:16
|
(66) Судя по картинке, твое
регс = СоздатьОбъект("регистр.склады"); регс.СводныйОстаток(скл.текущийэлемент(),дог.наименование,,,,,сотрудник,"кол"); работать и не должно, попробуй так регс = СоздатьОбъект("регистр.склады"); регс.СводныйОстаток(<Элемент справочника "Склады">,<Элемент справочника "Товары">,,,,,<Элемент справочника "Сотрудники">,"кол"); Должен выдать остаток на ТА. Да кстати регистр остатков ? или оборотный ? |
|||
69
Mikeware
02.02.12
✎
13:18
|
А что вообще хранит столь оригинальный регистр?
|
|||
70
Эльниньо
02.02.12
✎
13:23
|
(68) Ты ветку читал?
Читать надо, дабы не выглядеть... |
|||
71
lucifer
02.02.12
✎
13:24
|
(67) нет
(69) остатки товаров (68) "регс.СводныйОстаток(<Элемент справочника "Склады">,<Элемент справочника "Товары">,,,,,<Элемент справочника "Сотрудники">,"кол"); " так у меня так и есть |
|||
72
lucifer
02.02.12
✎
13:25
|
я все таки надеюсь увидеть ответ на вопрос
"вопрос чем дог.наименование отличается от дог.наименование.ТекущийЭлемент() в последнем ссылка передается а в первом сам объект? " |
|||
73
Ёпрст
02.02.12
✎
13:29
|
(66) весьма забавная структура..
То что он не закрывается, это очевидно |
|||
74
Ёпрст
02.02.12
✎
13:30
|
(69) ФСЁ!
:) |
|||
75
Mikeware
02.02.12
✎
13:31
|
(73) Думаешь, оно знает, что такое "закрывается"? и почему он должен закрываться? :-)))
|
|||
76
Ёпрст
02.02.12
✎
13:32
|
(71)
скл - это что ? дог - это что ? Это реквизиты документа ? Или это переменные ? Если реквизиты дока, ТО КАКИЕ ? Шапки ? Табличной части ? Общие реквизиты? Запрос этот где пишешь ? |
|||
77
lucifer
02.02.12
✎
13:35
|
(75) оно знает.
(76) скл = СоздатьОбъект("Справочник.Склады"); скл.найтипокоду(глсклад); |
|||
78
lucifer
02.02.12
✎
13:36
|
дог = СоздатьОбъект("Документ.Счет");
дог.найтидокумент(табл.получитьзначение(номстр,1)); |
|||
79
Ёпрст
02.02.12
✎
13:38
|
(77) :)
ну вот, уже ошибка нумер раз. нужно передавать не переменную скл, а скл.ТекущийЭлемент() И это, глсклад - это строка ? Че за переменная? Или это реквизит документа ? |
|||
80
Ёпрст
02.02.12
✎
13:39
|
(78) ошибка нумер 2
нужно передавать табл.получитьзначение(номстр,1) без всяких поисков |
|||
81
lucifer
02.02.12
✎
13:40
|
(79) вы наверное не все читаете
"чем дог.наименование отличается от дог.наименование.ТекущийЭлемент() в последнем ссылка передается а в первом сам объект? и почему не работает если сразу в запрос написать дог.наименование.ТекущийЭлемент(), именно надо присвоит значение переменной и уже переменную в запрос вставлять. " |
|||
82
Ёпрст
02.02.12
✎
13:41
|
Наименование - это ты так имя реквизиту задал ?
Весьма оригинально |
|||
83
Ёпрст
02.02.12
✎
13:41
|
>>>"чем дог.наименование отличается от дог.наименование.ТекущийЭлемент
в твоём случае ничем |
|||
84
lucifer
02.02.12
✎
13:42
|
(79)"нужно передавать не переменную скл, а скл.ТекущийЭлемент() "
да пробовал, и так пробовал скл=скл.ТекущийЭлемент(); |
|||
85
lucifer
02.02.12
✎
13:42
|
"в твоём случае ничем"
но почему-то заработало только когда я изменил на Если пер.ЗначениеНаДату(ТекущаяДата()).код=3 Тогда скл.найтипокоду(9); иначе скл.найтипокоду(глсклад); КонецЕсли; скл=скл.ТекущийЭлемент(); товр=дог.наименование.ТекущийЭлемент(); |
|||
86
Ёпрст
02.02.12
✎
13:44
|
И это, ты хочешь сказать, что реквизит документа Счет с идентификатором Наименование у тебя имеет тип Справочник.Товары ?
И еще и поди это Реквизит ТАБЛИЧНОЙ части ? :)) |
|||
87
lucifer
02.02.12
✎
13:46
|
(80) зачем мне передавать счет, мне товар надо, поэтому я нахожу счет выбираю строки и в цикле по строкам проверяю нал. товара для каждой позиции
"что реквизит документа Счет с идентификатором Наименование у тебя имеет тип Справочник.Товары" именно да эта табличная часть, но я ж циклом по ней прохожусь |
|||
88
Ёпрст
02.02.12
✎
13:48
|
(87) И в каком месте цикл по строкам счета у тебя ?
Нам отсюда не видно - больше кода |
|||
89
lucifer
02.02.12
✎
13:51
|
(88)ок
|
|||
90
lucifer
02.02.12
✎
13:55
|
дог.найтидокумент(табл.получитьзначение(номстр,1));
рег = СоздатьОбъект("регистр.склады"); скл = СоздатьОбъект("Справочник.Склады"); пер = СоздатьОбъект("Периодический"); зпр = СоздатьОбъект("Запрос"); дог.выбратьстроки(); Пока Дог.Получитьстроку() = 1 Цикл Если дог.Вид()=глсчет Тогда пер.ИспользоватьОбъект("производитель",наименование); Если пер.ЗначениеНаДату(ТекущаяДата()).код=3 Тогда скл.найтипокоду(9); иначе скл.найтипокоду(глсклад); КонецЕсли; скл=скл.ТекущийЭлемент(); товр=дог.наименование.ТекущийЭлемент(); КолО = рег.СводныйОстаток(скл,товр,,,,,сотрудник,"кол"); //сотрудник - это реквизит в заявки (тек. док.) Если (КолО<дог.Кол)и(число(дог.наименование.родитель.код)<>9) Тогда // 9 - код группы уплотнители Сообщить("Не хватает товара "+дог.наименование+" ("+Строка(дог.наименование.код)+") |на складе "+Строка(скл)+" |у сотрудника "+Строка(сотрудник)); СтатусВозврата(0); Возврат; КонецЕсли; конецесли; конеццикла; |
|||
91
Ёпрст
02.02.12
✎
14:08
|
(90) тихий ужас
|
|||
92
Ёпрст
02.02.12
✎
14:09
|
пер.ИспользоватьОбъект("производитель",наименование);
наименование - это что ? |
|||
93
Ёпрст
02.02.12
✎
14:11
|
ну и далее,
Сообщить(скл.Выбран()); Сообщить(дог.наименование.Выбран()); Сообщить(сотрудник.Выбран()) |
|||
94
lucifer
02.02.12
✎
14:19
|
(92) это реквизит табл. части дог, тип справочник товары
сообщить все 3 вывели 1 |
|||
95
Ёпрст
02.02.12
✎
14:23
|
>>>это реквизит табл. части дог ????
Это как ? |
|||
96
lucifer
02.02.12
✎
14:36
|
||||
97
Ёпрст
02.02.12
✎
14:55
|
И ? какое отношеие ЭТо имеет к
пер.ИспользоватьОбъект("производитель",наименование); Наименование - ЭТО что здесь ? ТЫ этот есь код ГДЕ пишешь ? М модуле формы докумета ? В отчет ? Еще гдее ? |
|||
98
Jaffar
02.02.12
✎
14:57
|
(97) кажется в модуле формы документа - при подборе товара...
|
|||
99
Mikeware
02.02.12
✎
14:58
|
(97) Ты чо, нипанимаешь?
этот код он пишет В ФОРУМЕ!!! |
|||
100
Ёпрст
02.02.12
✎
15:00
|
сотко!
(99) хрен знает, я вообще не догоняю, как ТАК можно кодить |
|||
101
Ёпрст
02.02.12
✎
15:00
|
ведь кто-то же потом будет всё переделывать
|
|||
102
Mikeware
02.02.12
✎
15:04
|
(100) Причем больше года...
|
|||
103
lucifer
02.02.12
✎
15:10
|
(97) в модуле формы документа заявка, в ней нажимается кнопка выбрать счет,
идет выборка счетов по покупателю что указан в счете и еще по кой каким значениям, те счета что находятся выводятся в ТЗ сотрудник выбирает счет из ТЗ и уже в этом счете проходимся циклом по табличной части. Наименование это реквизит табличной части счета которого выбрал сотрудник из ТЗ имеет тип справочник.товары (я хз как еще понятней объяснить) в этом условии я проверяю если код у производителя в тек. товаре (производитель периодический) = 3 то это 1 склад, иначе другой. Вы не на том внимание заостряете, я еще вчера первым делом проверил склад правильный выбирается или нет, правильный! (100) "ведь кто-то же потом будет всё переделывать" этот кто-то Я. Не я строил архитектуру конфигурации, это все писалось до меня. |
|||
104
lucifer
02.02.12
✎
15:10
|
(103)
"по покупателю что указан в счете " не в счете а в заявке |
|||
105
Ёпрст
02.02.12
✎
15:13
|
(103) т.е Наименование - это реквизит заявки ? И реквизит чего Это ? Шапки ? Табличной части документа ? Какого он типа ?
|
|||
106
Mikeware
02.02.12
✎
15:14
|
(105) табчасть, Справочник.Товары :-)))
|
|||
107
Ёпрст
02.02.12
✎
15:15
|
(106) не-не-не.. так слишком очевидно!
|
|||
108
Voronve
02.02.12
✎
15:16
|
(0) Может специалиста пригласить ?
|
|||
109
lucifer
02.02.12
✎
15:19
|
тааак да я не прав, надо так
пер.ИспользоватьОбъект("производитель",дог.наименование); но это лиж имело б разницу если у нас склад был бы 9 (код) а это редко бывает, восновном глсклад и даже если условие всегда переходило на иначе, в данном случаи роли не играет, склад был правильный |
|||
110
lucifer
02.02.12
✎
15:21
|
исправил, та же байда, что подтверждает мои слова (109)
|
|||
111
Эльниньо
02.02.12
✎
15:27
|
"это лиж" - вообще в мемориз.
Или это олбанский? |
|||
112
lucifer
02.02.12
✎
15:28
|
(111) ну если нечего сказать по сабжу, что писать-то ?
|
|||
113
Эльниньо
02.02.12
✎
15:29
|
(112) Просто пытаюсь понять "это лиж имело 6 разницу"
|
|||
114
Jaffar
02.02.12
✎
15:33
|
(113) телепатирую: в переводе на русский, видимо, означает "имело бы разницу лишь в случае ..."
ЗЫ: "в данном случаи" - не на много лучше... |
|||
115
Ёпрст
02.02.12
✎
15:37
|
Так..
Что сообщает это: Сообщить(скл.найтипокоду(глсклад)); |
|||
116
lucifer
02.02.12
✎
15:40
|
(115) сообщает 1
|
|||
117
Ёпрст
02.02.12
✎
15:47
|
Сообщить(дог.наименование.Вид()) ?
|
|||
118
Ёпрст
02.02.12
✎
15:48
|
И это, что сейчас "не работает"?
|
|||
119
lucifer
02.02.12
✎
15:50
|
(117) Товары
(118) нет |
|||
120
viktor_vv
02.02.12
✎
15:56
|
Командир : Приборы ?
Штурман : 60. Командир : Что 60 ? Штурман : А что приборы ? :) |
|||
121
Ёпрст
02.02.12
✎
16:03
|
(119) ок
Если смотреть тут Рег = создатьОбъект("Регистры"); РегОст = Рег.Склады; ТЗ=СоздатьОбъект("ТаблицаЗначений"); РегОст.ВыгрузиьтИтоги(ТЗ); ТЗ.ВыбратьСтроку() есть останки нужные по твоим измерениям? |
|||
122
lucifer
02.02.12
✎
16:25
|
(121) Поле агрегатного объекта не обнаружено (ВыгрузиьтИтоги)
|
|||
123
Ёпрст
02.02.12
✎
16:26
|
(122) ВыгрузитьИтоги
|
|||
124
lucifer
02.02.12
✎
16:36
|
(121) да есть
|
|||
125
Ёпрст
02.02.12
✎
16:38
|
теперь сверни эту ТЗ по нужным измерениям (те которые склад тоар сотрудник).. есть то, что ты туда пихаешь в метод сводный остаток ?
И количество остатка совпадает ? |
|||
126
lucifer
02.02.12
✎
16:40
|
что интересно, у меня в коде сначала выполняется запрос (через запрос работает), проверяется что бы товара было достаточно если да строка добавляется, после запроса я вывожу
КолО = рег.СводныйОстаток(скл,товр,,,,,сотрудник,"кол"); Сообщить(КолО); просто для наглядности. когда первый раз я выбираю счет в ТЗ выполняется запрос, Сообщить(КолО); возвращает 0 товар добавляется (т.к. запрос работает нормально и через запрос кол-во правильное можно получить) и запускаю эту процедуру повторно (позиция уже добавлена в заявку) со второго раза Сообщить(КолО); возвращает правильное значение, почему так не пойму. Могу видео даже отснять для наглядности. |
|||
127
Ёпрст
02.02.12
✎
16:43
|
(126) не надо видео, нужно просто задавать правильные Имена переменным, отличными от идентификаторов Этого документа
|
|||
128
lucifer
02.02.12
✎
16:49
|
я сделал так (вместо сворачивания)
Пока тз.ПолучитьСтроку()=1 Цикл Если ПустаяСтрока(тз.товар)=1 Тогда Продолжить; КонецЕсли; Сообщить(строка(тз.товар)+" ("+строка(тз.товар.код)+") "+строка(тз.сотрудник)+" "+строка(тз.склад)+" "+Строка(тз.кол)); КонецЦикла; и поиском по коду товара нашел нужный, да все как в отчете, остаток верный |
|||
129
Ёпрст
02.02.12
✎
16:51
|
(128) прям так и руками посчитал все строки с совпадающим набором измерений в окошке сообщения ?
|
|||
130
lucifer
02.02.12
✎
16:55
|
а там по нужному сотруднику значение рябом, в одной строке 1 в др. 13
получается правильно, у него сальдо 14 |
|||
131
lucifer
02.02.12
✎
16:55
|
*рядом
|
|||
132
Ёпрст
02.02.12
✎
17:04
|
(130) значит, в метод сводный Остаток ты кидешь "не те же самые значения"
|
|||
133
lucifer
02.02.12
✎
17:09
|
да те же.
вот почему тогда это: КолО = рег.СводныйОстаток(скл,товр,,,,,сотрудник,"кол"); Сообщить(КолО); Сообщить(рег.Остаток(скл,товр,,,,,сотрудник,"кол")); выводит КолО - 0 рег.Остаток() - 13 ну почему 13 объяснимо, потому что 1 штука лежит еще по 3-му измерению, а у 13 3-е изм. пустое. Но выводит же. |
|||
134
Ёпрст
02.02.12
✎
17:11
|
а так что кажет ?
Сообщить(рег.СводныйОстаток(скл,товр,,,,,сотрудник,"кол")); |
|||
135
lucifer
02.02.12
✎
17:13
|
о епт... работает
|
|||
136
lucifer
02.02.12
✎
17:13
|
вот дурак, надо было сразу так проверить
|
|||
137
Ёпрст
02.02.12
✎
17:16
|
(135) :)
тепереча смотри, что за реквизит формы у тебя с идентификатором КолО |
|||
138
Jaffar
02.02.12
✎
17:18
|
(137) контрагент. или валюта например :-)
|
|||
139
Ёпрст
02.02.12
✎
17:19
|
(138) не.. это слишком просто
:) |
|||
140
lucifer
02.02.12
✎
17:21
|
да мля дурак, из-за невнимательности и вас мучал столько времени
|
|||
141
Эльниньо
02.02.12
✎
17:25
|
(140) Ну раз осознал, покаялся - нещитово.
Тока больше так не делай. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |