|
как обнулить текущие остатки в регистре накопления | ☑ | ||
---|---|---|---|---|
0
fdgd98
04.03.15
✎
08:21
|
есть документ, при проведении которого делается приход номенклатуры в регистр накопления, но мне надо сделать так чтобы при проведении документа если уже такая номенклатура встречается, то ее текущие остатки убрать или удалить обнулить и записать новые остатки(т.е. новое количество). каким образом это сделать?
|
|||
1
Molinor
04.03.15
✎
08:24
|
Движениями.
|
|||
2
fdgd98
04.03.15
✎
08:25
|
(1) по подробнее можешь?
|
|||
3
el7cartel
04.03.15
✎
08:30
|
(2) ну а чео сложного-то? напиши проверку, если остаток есть, то сделай движение по формуле (- текущий остаток + новый остаток), и получишь то что хочешь видеть! вариантов множество, это как один из
|
|||
4
BuHu
04.03.15
✎
08:30
|
(0) сделайте инвентаризацию со списанием недостачи и оприходыванием излишков .
|
|||
5
fdgd98
04.03.15
✎
08:33
|
щас попробуем
|
|||
6
fdgd98
04.03.15
✎
11:32
|
помогите разобраться с ситуацией сделал запрос но похоже что он работает не верно..допустим есть 2 записи в регистре:
1)телевизор самсунг - 20 шт - 03.03.2015 15:00 2)телевизор самсунг - 10 шт - 04.03.2015 08:00 мой запрос вытаскивает сначала первую запись т.е. 20 шт а потом вторую запись где 10 шт. Мне получается надо обнулить и первую и вторую строку? Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ЭлементарнаяЕдиницаНаСкладОстатки.КоличествоОстаток КАК Остаток, | ЭлементарнаяЕдиницаНаСкладОстатки.Наименование КАК Наименование, | ЭлементарнаяЕдиницаНаСкладОстатки.ЕдИзмерения КАК ЕдИзмерения, | ЭлементарнаяЕдиницаНаСкладОстатки.СпециальноеНаименование КАК СпециальноеНаименование, | ЭлементарнаяЕдиницаНаСкладОстатки.Склады |ИЗ | РегистрНакопления.ЭлементарнаяЕдиницаНаСклад.Остатки КАК ЭлементарнаяЕдиницаНаСкладОстатки |ГДЕ | ЭлементарнаяЕдиницаНаСкладОстатки.Наименование = &Наименование"; Запрос.УстановитьПараметр("Наименование", ТекСтрокаПриходная.Наименование); ЗапросРезультат = Запрос.Выполнить().Выбрать(); Если ЗапросРезультат.Количество()>0 тогда Пока ЗапросРезультат.Следующий() цикл Остаток = ЗапросРезультат.Остаток; Наименование = ЗапросРезультат.Наименование; ЕдИзмерения = ЗапросРезультат.ЕдИзмерения; СпецНаименование = ЗапросРезультат.СпециальноеНаименование; если Остаток> 0 или Остаток<0 тогда Движение = Движения.ЭлементарнаяЕдиницаНаСклад.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Склады = Склады; Движение.Наименование = ТекСтрокаПриходная.Наименование; Движение.СпециальноеНаименование = результат.СпециальноеНаименование; Движение.ЕдИзмерения = ТекСтрокаПриходная.ЕдиницаИзмерения; Движение.Количество = 0; конецесли; конеццикла; |
|||
7
fdgd98
04.03.15
✎
11:33
|
проблема в том что я знаю период только одной записи, а как узнать период второй записи т.к. запрос не выводит по найденным строкам периоды
|
|||
8
ДенисЧ
04.03.15
✎
11:34
|
ммм.... А зачем обнулять строки? Две строки складываются и получается итог -сумма. Её и списываем
|
|||
9
palpetrovich
04.03.15
✎
11:36
|
(7) тебе остатки списать или строки из регистра накопления?
|
|||
10
fdgd98
04.03.15
✎
11:37
|
(8) можно подробнее, запрос возвращает 2 строки как раз таки, я то думал что вернет одну строку и покажет суммированный остаток.
|
|||
11
fdgd98
04.03.15
✎
11:37
|
(9) остатки списать т.е. чтоб остатки = 0
|
|||
12
fdgd98
04.03.15
✎
11:51
|
ап
|
|||
13
Бубка Гоп
04.03.15
✎
12:03
|
(12) ну во первых, в запросе искать по наименованию не комильфо, во вторых таблице остатков попробуйте скормить дату, на которую собственно берется остаток
|
|||
14
Бубка Гоп
04.03.15
✎
12:07
|
ну и логически - если количество > 0, делайте расход, если < 0, делайте приход.
|
|||
15
Бубка Гоп
04.03.15
✎
12:09
|
ну и откройте для себя ЗаполнитьЗначенияСвойств(), придется меньше кода писать
|
|||
16
palpetrovich
04.03.15
✎
12:24
|
(11) остатки списать - смотри (4). Только так
|
|||
17
bodri
04.03.15
✎
12:39
|
РегистрНакопления.ЭлементарнаяЕдиницаНаСклад.Остатки(&ДатаОстатков, Номенклатура = &Номенклатура)
может для начала дату остатков указать и все таки номенклатуру а не наименование номенклатуры |
|||
18
fdgd98
04.03.15
✎
13:19
|
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ | ЭлементарнаяЕдиницаНаСкладОстатки.Склады, | ЭлементарнаяЕдиницаНаСкладОстатки.Наименование, | ЭлементарнаяЕдиницаНаСкладОстатки.ЕдИзмерения, | ЭлементарнаяЕдиницаНаСкладОстатки.СпециальноеНаименование, | ЭлементарнаяЕдиницаНаСкладОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ЭлементарнаяЕдиницаНаСклад.Остатки(&ДатаОстатков, Наименование = &Наименование) КАК ЭлементарнаяЕдиницаНаСкладОстатки"; сделал вот так запрос, запрос возвращает 2 строки..первая строка: Остаток - 20шт вторая строка 10 шт |
|||
19
bodri
04.03.15
✎
13:29
|
Наименование - это справочник или строка?
|
|||
20
bodri
04.03.15
✎
13:34
|
Может ещё склад добавить?
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ЭлементарнаяЕдиницаНаСкладОстатки.Склады, | ЭлементарнаяЕдиницаНаСкладОстатки.Наименование, | ЭлементарнаяЕдиницаНаСкладОстатки.ЕдИзмерения, | ЭлементарнаяЕдиницаНаСкладОстатки.СпециальноеНаименование, | ЭлементарнаяЕдиницаНаСкладОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ЭлементарнаяЕдиницаНаСклад.Остатки(&ДатаОстатков, Наименование = &Наименование и Склады = &Склад) КАК ЭлементарнаяЕдиницаНаСкладОстатки"; |
|||
21
fdgd98
04.03.15
✎
13:35
|
(19) справочник
|
|||
22
fdgd98
04.03.15
✎
13:35
|
(20) нет
|
|||
23
bodri
04.03.15
✎
13:39
|
(22) тогда и будет 2 строки если 2 склада, а если 3 склада - 3 строки и т.д.
|
|||
24
palpetrovich
04.03.15
✎
13:47
|
(22) если отстаки на разных складах, ОбщийОстаток тебе не поможет, все-равно списывать надо со складов где товар числится
ну,а если надо увидеть ОбщийОстаток, то добавь в свой запрос ИТОГИ по ЭлементарнаяЕдиницаНаСкладОстатки.Наименование зы: кто интересно так Измерение обозвал... :) |
|||
25
fdgd98
04.03.15
✎
14:09
|
блин
|
|||
26
fdgd98
04.03.15
✎
14:10
|
сделал щас так...если по этой номенлкатуре остаток >0 или то делаем расход
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ЭлементарнаяЕдиницаНаСкладОстатки.Склады, | ЭлементарнаяЕдиницаНаСкладОстатки.Наименование, | ЭлементарнаяЕдиницаНаСкладОстатки.ЕдИзмерения, | ЭлементарнаяЕдиницаНаСкладОстатки.СпециальноеНаименование, | СУММА(ЭлементарнаяЕдиницаНаСкладОстатки.КоличествоОстаток) КАК КоличествоОстаток |ИЗ | РегистрНакопления.ЭлементарнаяЕдиницаНаСклад.Остатки(&ДатаОстатков, Наименование = &Наименование) КАК ЭлементарнаяЕдиницаНаСкладОстатки | |СГРУППИРОВАТЬ ПО | ЭлементарнаяЕдиницаНаСкладОстатки.Наименование, | ЭлементарнаяЕдиницаНаСкладОстатки.Склады, | ЭлементарнаяЕдиницаНаСкладОстатки.ЕдИзмерения, | ЭлементарнаяЕдиницаНаСкладОстатки.СпециальноеНаименование"; Запрос.УстановитьПараметр("Наименование", ТекСтрокаПриходная.Наименование); Запрос.УстановитьПараметр("ДатаОстатков", ТекущаяДата()); ЗапросРезультат = Запрос.Выполнить().Выбрать(); Если ЗапросРезультат.Количество()>0 тогда Пока ЗапросРезультат.Следующий() цикл Остаток = ЗапросРезультат.КоличествоОстаток; Наименование = ЗапросРезультат.Наименование; ЕдИзмерения = ЗапросРезультат.ЕдИзмерения; СпецНаименование = ЗапросРезультат.СпециальноеНаименование; если Остаток> 0 или Остаток<0 тогда Движение = Движения.ЭлементарнаяЕдиницаНаСклад.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склады = Склады; Движение.Наименование = ТекСтрокаПриходная.Наименование; Движение.СпециальноеНаименование = результат.СпециальноеНаименование; Движение.ЕдИзмерения = ТекСтрокаПриходная.ЕдиницаИзмерения; Движение.Количество = Остаток; конецесли; конеццикла; |
|||
27
fdgd98
04.03.15
✎
14:15
|
и вообщем получается так:
вчера осталось допустим телевизоров самсунг 10 шт. а сегодня привезли такие же телевизоры самсунг 5 шт . в моем случае получиться что будет -5 телевизоров а надо чтобы эти вчерашние 10 телевизоров превратились в 0 . и соотвественно получиться 5 телевизоров. как это организовать? |
|||
28
fdgd98
04.03.15
✎
14:20
|
удалять записи из регитстра чтоли?
|
|||
29
bodri
04.03.15
✎
14:25
|
(28) не, что-то здесь не так...
|
|||
30
fdgd98
04.03.15
✎
14:26
|
(29) заказчик так требует))))
|
|||
31
bodri
04.03.15
✎
14:44
|
(26) для красоты
если Остаток> 0 или Остаток<0 тогда можно заменить Если Остаток <> 0 тогда или Если Не Остаток = 0 тогда //*** Может группировку убрать или обход по группировкам сделать |
|||
32
bodri
04.03.15
✎
14:46
|
+(31) просто при группировке может получится такая табличка:
телевизор Самсунг - 10 телевизор Самсунг - 10 в итоге цикл 2 раза его обрабатывает, ну и соответственно 2 раза списывает. от туда -5 телеков |
|||
33
fdgd98
04.03.15
✎
15:13
|
(32) а как тогда быть без группировки? подскажите пожалуйста
|
|||
34
fdgd98
04.03.15
✎
15:24
|
(32) вернее тогда как получить сумму по количеству не используя группировки
|
|||
35
fdgd98
04.03.15
✎
15:31
|
ап
|
|||
36
GROOVY
04.03.15
✎
15:35
|
(35) http://1c.chistov.pro/2014/01/2009-youtube.html
Мое мнение: вся тема неправильная. Куда девать прошлые 10. Не путаете ли Вы остатки с движениями? |
|||
37
bodri
05.03.15
✎
06:54
|
Можно попробовать так:
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ЭлементарнаяЕдиницаНаСкладОстатки.Склады КАК Склады, | ЭлементарнаяЕдиницаНаСкладОстатки.Наименование КАК Наименование, | ЭлементарнаяЕдиницаНаСкладОстатки.ЕдИзмерения, | ЭлементарнаяЕдиницаНаСкладОстатки.СпециальноеНаименование, | СУММА(ЭлементарнаяЕдиницаНаСкладОстатки.КоличествоОстаток) КАК КоличествоОстаток |ИЗ | РегистрНакопления.ЭлементарнаяЕдиницаНаСклад.Остатки(&ДатаОстатков, Наименование = &Наименование) КАК ЭлементарнаяЕдиницаНаСкладОстатки | |ИТОГИ | СУММА(КоличествоОстаток) |ПО | Наименование" Запрос.УстановитьПараметр("Наименование", ТекСтрокаПриходная.Наименование); Запрос.УстановитьПараметр("ДатаОстатков", ТекущаяДата()); ЗапросРезультат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Если ЗапросРезультат.Количество()>0 тогда Пока ЗапросРезультат.Следующий() цикл Остаток = ЗапросРезультат.КоличествоОстаток; Наименование = ЗапросРезультат.Наименование; ЕдИзмерения = ЗапросРезультат.ЕдИзмерения; СпецНаименование = ЗапросРезультат.СпециальноеНаименование; если Не Остаток = 0 тогда Движение = Движения.ЭлементарнаяЕдиницаНаСклад.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склады = Склады; Движение.Наименование = ТекСтрокаПриходная.Наименование; Движение.СпециальноеНаименование = результат.СпециальноеНаименование; Движение.ЕдИзмерения = ТекСтрокаПриходная.ЕдиницаИзмерения; Движение.Количество = Остаток; конецесли; конеццикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |