Имя: Пароль:
1C
1C 7.7
v7: Запретить проводить возврат
0 tixis
 
14.02.13
11:12
Уважаемые форумчане, помогите решить такой вопрос:
Сначала сама суть: делают реализацию, потом возможно делают возврат, но операторы могут забыть про возврат который они сделали(на структуру подчиненности не смотрят) и могут сделать повторный возврат того же товара.
Сама задача запретить проводить возврат если такой товар был уже возвращен в полном количестве, т.е в накладной же может быть 5,10,15 позиций товара, так вот если товар уже возвращен в полном объеме запретить проводить. Пока дошел до этого а дальше что то не пойму как строки перебирать и сравнивать в обоих документах и сравнивать количество. вот набросок кода в обработке проведения:
ДокП = СоздатьОбъект("Документ");
   Если ДокОснование.Выбран() = 1 Тогда
        Если ДокОснование.Вид()="Реализация" Тогда
           Если ДокОснование.ВыбратьПодчиненныеДокументы(ДокОснование.ДатаДок,ТекущаяДата(),ДокОснование.)=1 Тогда
                Пока ДокОснование.ПолучитьДокумент() =1 Цикл
                     Если ДокП.Вид() = "ВозвратОтПокупателя" Тогда
                         Если Выбран() = 1 Тогда
                                 Если ДокП.ТекущийДокумент() = ТекущийДокумент() ТОгда
                                     Продолжить;
                                 КонецЕсли;
                         КонецЕсли;
                         Если ДокП.ВыбратьСтроки() =1 Тогда
                             Пока ДокП.ПолучитьСтроку()=1 Цикл
                                 
                             
                             КонецЦикла;
                         КонецЕсли;
                     КонецЕсли;
                КонецЦикла;
           КонецЕсли;
        КонецЕсли;
   КонецЕсли;
1 Godofsin
 
14.02.13
11:13
огого!!!
2 viktor_vv
 
14.02.13
11:15
Ты бы сначала собрал все прошлые возвраты в ТЗ в нее же догрузил содержание расходной и сравнивай.
3 Kreont
 
14.02.13
11:15
Собрать все по возвратах, загрузить в ВТ, и сравнить с таб.частью тоже в ВТ по товарам
4 tixis
 
14.02.13
11:21
Как всю табличную часть из документа загнать в ТЗ?
5 tixis
 
14.02.13
11:22
последний вопрос снимается :)
6 tixis
 
14.02.13
11:24
теперь вопрос как сравнивать ТЗ и ТЧ? извините за ламрские вопросы, я только учусь
7 viktor_vv
 
14.02.13
11:28
В ТЗ колонки Номенклатура, количествоВозврат, КоличествоВРасходной.
Собираешь из возвратов с заполнением Номенклатура, КоличествоВовзрат.
Добавляешь из ТЧ с заполнением Номенклатура, КоличествоВРасходной.
Потом сворачиваешь по Номенклатура с суммированием колонок КоличествоВозврат и КоличествоВРасходной и сравниваешь при обходе ТЗ.
8 viktor_vv
 
14.02.13
11:30
Можно через одну колонку количество с разными знаками, но тогда при заполнении из возвратов фильтровать сразу по номенклатуре в расходной.
9 tixis
 
14.02.13
11:34
(7) Что то не совсем понял я в ТЗ выгрузил все табличные части из всех возвратов(их же могло быть несколько, ну сверну я по номенклатуре с суммированием по количеству, а как сравнить всю эту ТЗ с ТЧ? что то не догоняю
10 viktor_vv
 
14.02.13
11:41
(7) Добавляешь из ТЧ с заполнением Номенклатура, КоличествоВРасходной.

И после этого

Сворачиваешь по Номенклатура с суммированием колонок КоличествоВозврат и КоличествоВРасходной
11 Kreont
 
14.02.13
11:41
МенеджерВТ = Новый МенеджерВременныхТаблиц;
одна тз из РН (ее там часть), колонки "СсылкаТовар,Кво":
Запрос=Новый Запрос("Выбрать * ПОМЕСТИТЬ ТЧ_РН Из &Таб КАК Т1");
Запрос.МенеджерВременныхТаблиц=МенеджерВТ;
Запрос.УстановитьПараметр("Таб",ТЧ_РН_изДокРН);
Запрос.Выполнить();
другая тз сводная по всем возвратам (из запроса, колонки аналогично "СсылкаТовар,Кво"):
Запрос=Новый Запрос("Выбрать * ПОМЕСТИТЬ ТЧ_Возвраты Из &Таб КАК Т2");
Запрос.МенеджерВременныхТаблиц=МенеджерВТ;
Запрос.УстановитьПараметр("Таб",ТЧ_Возвраты_изЗапроса);
Запрос.Выполнить();

Запрос=Новый Запрос("ВЫБРАТЬ *
|ИЗ ТЧ_Возвраты ЛЕВОЕ СОЕДИНЕНИЕ ТЧ_РН
|ПО ТЧ_Возвраты.СсылкаТовар = ТЧ_РН.СсылкаТовар");

Запрос.МенеджерВременныхТаблиц=МенеджерВТ;
РезульатСравнения=Запрос.Выполнить().Выбрать();

// обычный перебор для каждого ...

// Потом можно и дополнить еще сразу условием сравнения по Кво, что б выбрать только то где Кво из ТЧ_Возвраты > Кво из ТЗ_РН, но сначала так пробуй, что б видеть всю картину
И в результате уже будешь иметь красивый результат что где недостает, по каждой строке.
12 viktor_vv
 
14.02.13
11:43
(11) Эх, работало бы это еще в семерке штатно :).
13 Kreont
 
14.02.13
11:44
(12) дааа, а я на тему и не смотрел что 7-ка :)
ТС забуть, или переходи на 8-ку :)))
14 Случайный прохожий
 
14.02.13
11:44
(9) ТЧ тоже в другую ТЗ кидаешь, сворачиваешь (на случай если товары в ТС дублируются). Затем можно эти две ТЗ отсортировать и сравнить построчно :)
(11) Тоже хотел через запросы предложить, но постеснялся))) Вдруг человек не осилит :)