|
v7: Возврат товара | ☑ | ||
---|---|---|---|---|
0
Nutsa12
31.10.12
✎
14:45
|
Здравствуйте. Помогите пожалуйста создать запрос в документе возврат товара. В регистре есть измерения: фирма, товар, контрагент. Ресурсы: ОстатокТовара, ЦенаТовара.
Сейчас у меня так: Процедура ОбработкаПроведения() Перем Запрос, ТекстЗапроса,НомСтр,ВыбТовар,ВыбКол; СЗВозврат = СоздатьОбъект("СписокЗначений"); ВыгрузитьТабличнуюЧасть(СЗВозврат, "Товар"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаДок по ДатаДок; |Фирма = Регистр.ОстатокТовара.Фирма; |Товар = Регистр.ОстатокТовара.Товар; |Контрагент = Регистр.ОстатокТовара.Контрагент; |ОстатокТовара = Регистр.ОстатокТовара.ОстатокТовара; |ЦенаТовара = Регистр.ОстатокТовара.ЦенаТовара; |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара); |Группировка Контрагент Без Групп; |Группировка Товар без групп; |Условие(Товар в СЗВозврат); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТЗВозврат = СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(ТЗВозврат); ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл НомСтр = 0; Если ТЗВозврат.НайтиЗначение(Товар,НомСтр, "Товар") =1 Тогда ТЗВозврат.ПолучитьСтрокуПоНомеру(НомСтр); ВыбКол=ТЗВозврат.ОстатокТовараКонОст; Если ВыбКол <= Количество Тогда Сообщить(Шаблон("Контрагент [Контрагент] покупал [ВыбКол], а возвращает [Количество]")); СтатусВозврата(0); КонецЕсли; КонецЕсли; КонецЦикла; ВыбратьСтроки(); Пока ПолучитьСтроку()>0 Цикл Если Количество > 0 Тогда Регистр.ОстатокТовара.Контрагент = Контрагент; Регистр.ОстатокТовара.Товар = Товар; Регистр.ОстатокТовара.ОстатокТовара = Количество; Регистр.ОстатокТовара.ЦенаТовара = ЦенаТовара; Регистр.ОстатокТовара.ДвижениеПриходВыполнить(); КонецЕсли; КонецЦикла; КонецПроцедуры И при выводе сообщения выводится общий остаток товара. Как сделать чтобы на одного клиента. Я такая понимаю надо группировку добавить? |
|||
1
Ёпрст
31.10.12
✎
14:47
|
(0) надо весь код выкинуть в топку
|
|||
2
1Сергей
31.10.12
✎
14:50
|
ЦенаТовара в регистре остатков? Это в какой конфе?
|
|||
3
Ёпрст
31.10.12
✎
14:50
|
впрочем, как и забавный регистр с забавными измерениями..тоже в топку.
И.. если че, остаток, это не "клиентос покупал" |
|||
4
Попытка1С
31.10.12
✎
14:52
|
Без фотки не взлетит.
|
|||
5
Nutsa12
31.10.12
✎
15:30
|
фотка уже была
|
|||
6
Nutsa12
31.10.12
✎
15:31
|
помогите нормальный код написать, пожалуйста
|
|||
7
Ёпрст
31.10.12
✎
15:33
|
(6) Тебе не код надо нормальный писать, а разобраться сперва со структурой хранения данных.
У тебя нелепый регистр с нелепыми измерениями. |
|||
8
Voronve
31.10.12
✎
15:35
|
(5) Мы не видели "Фотка уже была"
|
|||
9
Nutsa12
31.10.12
✎
15:55
|
(7) вот я и пытаюсь разобраться...
Это задача примитивная, учебная |
|||
10
Nutsa12
31.10.12
✎
15:56
|
Давайте забудем про код. и начнем с начала :) С чего начать?
|
|||
11
Ёпрст
31.10.12
✎
15:57
|
(10) открыть типовой ТиС и посмотреть там, хотя бы структуру регистров.
|
|||
12
Ёпрст
31.10.12
✎
16:00
|
||||
13
Nutsa12
31.10.12
✎
16:01
|
(12) под рукой ничего нет. но я немного понимаю как работать с регистрами
|
|||
14
Ёпрст
31.10.12
✎
16:03
|
||||
15
Ёпрст
31.10.12
✎
16:04
|
||||
16
Ёпрст
31.10.12
✎
16:05
|
||||
17
Nutsa12
31.10.12
✎
16:08
|
спасибо буду разбираться!!!!
|
|||
18
Nutsa12
01.11.12
✎
06:47
|
снова прошу помощи...
|
|||
19
Гефест
01.11.12
✎
06:55
|
плохо просишь, ни фотки, ни вопроса
|
|||
20
Nutsa12
01.11.12
✎
06:57
|
Как сделать чтобы по каждому контрагенту была отдельная сумма по каждому товару?
|
|||
21
Nutsa12
01.11.12
✎
06:57
|
в первой моей теме уже было фото
|
|||
22
Гефест
01.11.12
✎
07:00
|
(20) Даже не знаю, с чего начинать рассказывать
(21) Ссылка уже не работает |
|||
23
Nutsa12
01.11.12
✎
07:11
|
(22) плохо( Я на работе, фото тут нет
|
|||
24
Nutsa12
01.11.12
✎
07:13
|
начнем с проведения расходной наклодной.Запись в регистр такая:
ВыбратьСтроки(); Пока ПолучитьСтроку()>0 Цикл Регистр.ОстатокТовара.Товар = Товар; Регистр.ОстатокТовара.Контрагент = Контрагент; Регистр.ОстатокТовара.ЦенаТовара = ЦенаТовара; Регистр.ОстатокТовара.КолТовара = Количество; Регистр.ОстатокТовара.ДвижениеВыполнить(); КонецЦикла; |
|||
25
Гефест
01.11.12
✎
07:23
|
(24) Кошмар. Выбрось этот регистр в топку
|
|||
26
Nutsa12
01.11.12
✎
07:28
|
(25) почему?
|
|||
27
ЧеловекДуши
01.11.12
✎
07:30
|
(24)Опиши народу структуру регистра...
Если у вас там в качестве измерения Цена, то без фото не взлетит, т.е. ты попала и проблема тут не в коде, а в (7) - попытайся вдуматься в слова Ёпрст4 |
|||
28
ЧеловекДуши
01.11.12
✎
07:33
|
(26)Потому, что:
1. Цена всегда разная 2. У нас мало данных, что бы тебе подсказать, а телепат утром отдыхает 3. Без фото у тебя не взлетит 4. По остаткам без даты, ты все ровно не сможешь определить, какой товар был продан покупателю, а какой нет 5. При таком регистре, у вас должен быть еще один документ, который должен закрывать сей регистр в 0 "Ноль", т.е. списывать остатки по уже не возвратным позициям. 6.... и т.д. и т.п. - Где фото? |
|||
29
ЧеловекДуши
01.11.12
✎
07:36
|
+ Хотя судя по команде "ДвижениеВыполнить", это еще и оборотный регистр :DDDDD
А какие к черту остатки по оборотному регистру? |
|||
30
ЧеловекДуши
01.11.12
✎
07:36
|
+ Увольняйся, 1С, не твой конек :)
|
|||
31
Nutsa12
01.11.12
✎
07:36
|
Регистр остатков: ОстаткиТовара
Измерения: Контрагент, товар Ресурсы: ЦенаТовара, КолТовара |
|||
32
Nutsa12
01.11.12
✎
07:37
|
я только учусь и пытаюсь разобраться
|
|||
33
ЧеловекДуши
01.11.12
✎
07:38
|
(31)Ты уверена, что остатков?
И как ты собираешься по остатку отделить возврат от не возврата? |
|||
34
ЧеловекДуши
01.11.12
✎
07:40
|
+ Еще на последок:
Конструкция типа "Запрос = СоздатьОбъект("Запрос");" В модуле проведения не всегда отрабатывает и вообще для быстроты проведения не рекомендуется в модель проведения помещать долгоиграющие запросы. Транзакция, однако. |
|||
35
Nutsa12
01.11.12
✎
07:43
|
Есть документ: ВозвратТовара.
В нем реквизит шапки: Контрагент Реквизит табличной части: Товар, Количество, ЦенаТовара Вводятся данные. Если контрагент возвращает количество больше чем было в расходной накладной и по другой цене, выдать сообщение об этом |
|||
36
ЧеловекДуши
01.11.12
✎
07:43
|
+ Ну и вообще последнее.
Так то, при продаже, происходит полное списание остатка со склада в ноль. Т.е. в большинстве случаев вообще нет и не должно быть остатка при заведении возврата. Это в типовой ТиС-е. Так что, если нужно вернуть товар, то просто делай приход, без проверки остатков. |
|||
37
ЧеловекДуши
01.11.12
✎
07:44
|
+(35)Это у вас ваше ноу-хау? Или все же у вас ТиС типовой?
|
|||
38
ЧеловекДуши
01.11.12
✎
07:44
|
+ Я про регистр
|
|||
39
ЧеловекДуши
01.11.12
✎
07:48
|
+ Так то если добавить некий регистр с измерениями:
1. Контрагент 2. Товар 3. Дата продажи (типо горантийное) 4. //Ресурсы 1. Сумма за товар, С НДС, что бы не замарачиваться. 2. Количество проданного в базовой единице измерения //Это для того что бы получить после цену То тогда у вас должен быть автомат, или документ, который по истечению срока будет списывать остаток с этого регистра, по истечению возвратного момента. И тем самым у вас будет механизм проверки, а покупал ли этот товар покупатель или нет, и по какой цене :) |
|||
40
Nutsa12
01.11.12
✎
07:53
|
Это просто учебная задача.
Вы как-то все усложняете :) По сути надо записать данные в регистр, о том кто, что, сколько и по какой цене покупал. А потом при возврате проверить есть ли такое |
|||
41
ЧеловекДуши
01.11.12
✎
07:54
|
(40)Я работаю, мне некогда играться :)
|
|||
42
ЧеловекДуши
01.11.12
✎
07:55
|
+(40)Какой вопрос, такие и ответы, вам туда (15) и по ссылкам.
|
|||
43
KRV
01.11.12
✎
08:01
|
(40) и кто тебе в этом мешает?
|
|||
44
Bahon
01.11.12
✎
11:31
|
Если Выбклиент.Выбран()=1 Тогда
ТекстЗапроса=ТекстЗапроса+" |Условие(Клиент=Выбклиент) |
|||
45
Nutsa12
01.11.12
✎
12:00
|
(44) Спасиибо!
Но с задачей я уже справилась по другому |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |