|
v7: ТИС Выбор подчиненных документов | ☑ | ||
---|---|---|---|---|
0
Кирр
09.11.11
✎
16:32
|
Есть документ заявки.
На основании заявки есть реализация и ПКО. В Структуре подчиненности все документы есть. Код: Если Найти(Строка(ТекущийДокумент),"Заявка покупателя") = 1 Тогда Если ТекущийДокумент.ВидОперации=Перечисление.ВидыОперацийЗаявок.НаПоставку Тогда ДокПодч = СоздатьОбъект("Документ"); Если ДокПодч.ВыбратьПодчиненныеДокументы(ТекущийДокумент.ДатаДок-1,КонГода(ТекущаяДата()),ТекущийДокумент)=0 Тогда Иначе ... КонецЕсли; КонецЕсли; Отладчиком смотрю ДокПодч.КоличествоСтрок()=1!!! А в структуре подчиненности документов 2. Почему не выбирается второй документ? |
|||
1
1Сергей
09.11.11
✎
16:33
|
строк одна, а документов два. Что не понятного?
|
|||
2
Ёпрст
09.11.11
✎
16:34
|
П...ц
Какое отношение количество строк в подчиненном документе имеет к количеству документов в выборке ?? С абрикоса упал ?! |
|||
3
1Сергей
09.11.11
✎
16:34
|
ПолучитьДокумент где? цикл где?
|
|||
4
Кирр
09.11.11
✎
16:35
|
+(0) Выбирается только Реализация. Другие документы НЕ ВЫБИРАЮТСЯ (Хоть ПКО, хоть "Строка выписки банка")
|
|||
5
Sh1ko
09.11.11
✎
16:36
|
кидай весь код, поржом хоть
|
|||
6
1Сергей
09.11.11
✎
16:36
|
посмотрел темы - вроде, не восьмерошник
|
|||
7
Ёпрст
09.11.11
✎
16:37
|
(4) за 4 лет так и не освоил методы работы с документами ?
ДокПодч.ВыбратьПодчиненныеДокументы(... Пока ДокПодч.ПолучитьДокумент()=1 цикл Сообщить(ДокПодч); |
|||
8
Кирр
09.11.11
✎
16:37
|
(1) Как тогда выбрать все документы по одному?
(3) Цикл идет после: Иначе Пока ДокПодч.ПолучитьДокумент()=1 Цикл ... КонецЦикла; КонецЕсли; |
|||
9
1Сергей
09.11.11
✎
16:38
|
(8) ну, и, чего тебе ещё надо?
|
|||
10
Sh1ko
09.11.11
✎
16:38
|
Найти(Строка(ТекущийДокумент),"Заявка покупателя") = 1
чем .вид() не устроил? |
|||
11
Кирр
09.11.11
✎
16:40
|
(7) Нужно сравнить суммы реализованных товаров по документу "Реализация" и полученных денег по документам прихода "ПКО" и "Строка выписки банка".
|
|||
12
Cthulhu
09.11.11
✎
16:40
|
а-хри-неть.
|
|||
13
Cthulhu
09.11.11
✎
16:41
|
(11): сравнивай.
|
|||
14
1Сергей
09.11.11
✎
16:42
|
Пока ДокПодч.ПолучитьДокумент()=1 Цикл
Если ДокПодч.Вид()="ПКО" Тогда //* сравнивай всё что нужно ИначеЕсли ДокПодч.Вид()="СтрокаВыпискиБанка" тогда //* сравнивай всё что нужно КонецЕсли; КонецЦикла; |
|||
15
Кирр
09.11.11
✎
16:43
|
(8)Второго документа НЕТ!
(13)Что с чем? Если док реализации есть, а доков прихода не наблюдается? |
|||
16
filh
09.11.11
✎
16:43
|
(8) врешь, если бы было, вопроса небыло бы!
|
|||
17
Кирр
09.11.11
✎
16:44
|
(14) Так и сделано.Только сначала
Если ДокПодч.вид()="Реализация" Тогда |
|||
18
1Сергей
09.11.11
✎
16:45
|
(17) код в студийуууууу
|
|||
19
Cthulhu
09.11.11
✎
16:48
|
(15): по Заявке есть подчиненные Реализации и оплаты (ПКО и строки банк.выписки)?..
Значит выборка по подчиненным, в одну переменную (или ТЗ если надо подробно) собирай суммы подчиненных заявке реализаций, в другую переменную (или ТЗ если надо подробно) собирай суммы подчиненных заявке оплат. Блин, я даже опасаюсь предположить - какой альтернативности нужно иметь одаренность чтобы этого не сообразить и не настолько уметь пользоваться логикой, прстите. |
|||
20
Sh1ko
09.11.11
✎
16:48
|
Давай уже, народ заждался!
|
|||
21
Sh1ko
09.11.11
✎
16:48
|
Код!
|
|||
22
1Сергей
09.11.11
✎
16:49
|
(19) просто, он не программист, имхо
|
|||
23
filh
09.11.11
✎
16:52
|
(22) просто у него не было Пока ДокПодч.ПолучитьДокумент()=1 Цикл
|
|||
24
Кирр
09.11.11
✎
16:53
|
Функция Н()
Ном = 0;СуммаПриход=0;РеалЕсть=0; Если Найти(Строка(ТекущийДокумент),"Заявка покупателя") = 1 Тогда Если ТекущийДокумент.ВидОперации=Перечисление.ВидыОперацийЗаявок.НаПоставку Тогда ДокПодч = СоздатьОбъект("Документ"); Отгрузка=ТекущийДокумент.ОтгрузкаПроизведена; ДокПодч.ВыбратьПодчиненныеДокументы(ТекущийДокумент.ДатаДок-1,КонГода(ТекущаяДата()),ТекущийДокумент)=0 Тогда Ном=1 Иначе Пока ДокПодч.ПолучитьДокумент()=1 Цикл Если ДокПодч.Вид() = "Реализация" Тогда Ном = 5; ТекРеал = ДокПодч.ТекущийДокумент(); Если ТекРеал.ПометкаУдаления() = 1 Тогда Ном=1; Продолжить; Иначе РеалЕсть=1; ДокПодч2 = СоздатьОбъект("Документ"); Если ДокПодч2.ВыбратьПодчиненныеДокументы(ТекРеал.ДатаДок-1,КонГода(ТекущаяДата()),ТекРеал.ТекущийДокумент())=0 Тогда Если Отгрузка=1 Тогда Ном=6 Иначе Ном = 3; КонецЕсли; Иначе Пока ДокПодч2.ПолучитьДокумент()=1 Цикл Если (ДокПодч2.Вид()="СтрокаВыпискиПриход")ИЛИ(ДокПодч2.Вид() = "ПКО") Тогда ТекДок=ДокПодч2.ТекущийДокумент(); Если ТекДок.ПометкаУдаления() = 1 Тогда Продолжить; Иначе СуммаПриход=СуммаПриход+ТекДок.Сумма; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; Прервать; ИначеЕсли (ДокПодч.Вид()="СтрокаВыпискиПриход")ИЛИ(ДокПодч.Вид() = "ПКО") Тогда ТекДок=ДокПодч.ТекущийДокумент(); //Если документ Прихода денег помечен на удаление Если ТекДок.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; КонецЦикла; Если ((СуммаПриход<>0) И (РеалЕсть=1)) Тогда Если СуммаПриход=ДокПодч.ДокОснование.СуммаВзаиморасчетов Тогда Если Отгрузка=1 Тогда Ном=0 Иначе Ном=13; КонецЕсли; ИначеЕсли СуммаПриход<ДокПодч.ДокОснование.СуммаВзаиморасчетов Тогда Если Отгрузка=1 Тогда Ном=4 Иначе Ном=11; КонецЕсли; Иначе Если Отгрузка=1 Тогда Ном=18 Иначе Ном=17 КонецЕсли; КонецЕсли; ИначеЕсли ((СуммаПриход<>0) и (РеалЕсть=0)) Тогда Если СуммаПриход=ДокПодч.СуммаВзаиморасчетов Тогда Ном=9; ИначеЕсли СуммаПриход<ДокПодч.СуммаВзаиморасчетов Тогда Ном=8; Иначе Ном=19; КонецЕсли; КонецЕсли КонецЕсли; КонецЕсли; КонецЕсли; Возврат Ном; КонецФункции |
|||
25
filh
09.11.11
✎
16:54
|
а что есть ТекущийДокумент?
|
|||
26
Sh1ko
09.11.11
✎
16:55
|
(25) в журнале.
|
|||
27
Кирр
09.11.11
✎
16:55
|
(25) ТекущийДокумент в табличной части журнала документов
|
|||
28
Кирр
09.11.11
✎
17:00
|
(15) Смотри код!
(19) Смотрите? (26) Ржешь или задумался? (7) Ты хоть умное что-нибудь скажи! |
|||
29
Sh1ko
09.11.11
✎
17:00
|
(28) ржу и думаю-)
|
|||
30
Sh1ko
09.11.11
✎
17:03
|
ИначеЕсли (ДокПодч.Вид()="СтрокаВыпискиПриход")ИЛИ(ДокПодч.Вид() = "ПКО") Тогда
ТекДок=ДокПодч.ТекущийДокумент(); //Если документ Прихода денег помечен на удаление Если ТекДок.ПометкаУдаления() = 1 Тогда Продолжить; Тут не хватает чего-то |
|||
31
Кирр
09.11.11
✎
17:06
|
Да удалил вместе с коментами
Иначе СуммаПриход=СуммаПриход+ТекДок.Сумма; КонецЕсли; |
|||
32
Кирр
09.11.11
✎
17:08
|
+(31) Но в строку ИначеЕсли в отладчике пошагово даже не попадает, так как не находит документов
|
|||
33
Sh1ko
09.11.11
✎
17:09
|
когда делаешь ВыбратьПодчиненныеДокументы() не указывай даты
|
|||
34
filh
09.11.11
✎
17:10
|
сделай макетную часть:
ДокПодч.ВыбратьПодчиненныеДокументы(... Пока ДокПодч.ПолучитьДокумент()=1 Цикл Сообщить(ДокПодч); КонецЦикла |
|||
35
Mikeware
09.11.11
✎
17:10
|
(29) Тут не ржать, тут плакать впору...
(33) с датами быстрее |
|||
36
Sh1ko
09.11.11
✎
17:11
|
От отладчик в табло забей - текущийдокумент, ДокПодч.текущийдокумент(), ДокПодч2.текущийдокумент(), текдок
и пройдись с самого начала |
|||
37
Sh1ko
09.11.11
✎
17:11
|
(35) да, но есть шанс что в выборку не все документы попадут. всякое бывает
|
|||
38
Sh1ko
09.11.11
✎
17:13
|
Да и если речь об документе реализация, то и правда покажет только 1-ый, у тебя там прервать
|
|||
39
Sh1ko
09.11.11
✎
17:15
|
вернее выборка прервется после первого же найденого док-та Реализация в подченных текущему
|
|||
40
Sh1ko
09.11.11
✎
17:18
|
И еще. В (0) ты пишешь что "На основании заявки есть реализация и ПКО. " , но судя по коду ПКО выписывается на основании реализации, а не заявки.
|
|||
41
viktor_vv
09.11.11
✎
17:18
|
Так если у тебя в структуре подчиненности эти доки есть (это ты имеешь ввиду отчет наверное), то скорее всего они подчинены ненапрямую заявке. Что показывает правой кнопкой по заявке "Подчиненные документы" ?
|
|||
42
Sh1ko
09.11.11
✎
17:19
|
(41) судя по коду, структура такая - заявка->реализация->оплаты
|
|||
43
Sh1ko
09.11.11
✎
17:21
|
хотя не, оба варианта в коде есть. Т.е ПКО может быть как на основании реализации так и на основании заявки? И реализация всегда на основании заявки?
|
|||
44
Sh1ko
09.11.11
✎
17:22
|
Автор застрял в отладчике-) Жми F8-)
|
|||
45
Кирр
09.11.11
✎
17:30
|
С датами, без дат - одинаково.
Могу даты пустыми оставить - результат одинаковый |
|||
46
Mikeware
09.11.11
✎
17:31
|
(45) может, программиста позовешь?
|
|||
47
Sh1ko
09.11.11
✎
17:33
|
(45)прервать убери
|
|||
48
Кирр
09.11.11
✎
17:34
|
(38) Может здесь ты прав. Прервать тут стоит убрать.
Но даже если доки созданы на основании реализации, и их больше одного, видит только первый. |
|||
49
Sh1ko
09.11.11
✎
17:35
|
(48) если ты об этом "Отладчиком смотрю ДокПодч.КоличествоСтрок()=1!!!"
то.... это кол-во строк в документе, а не кол-во документов в выборке. |
|||
50
filh
09.11.11
✎
17:37
|
(48) >>Но даже если доки созданы на основании реализации
Эти не попадут в выборку |
|||
51
Кирр
09.11.11
✎
17:39
|
(49) Это уже понятно. Убрал прервать. Теперь видит доки подчиненные Заявке. Осталось разобраться с подчинением Реализации
|
|||
52
filh
09.11.11
✎
17:46
|
посмотри Обработку ДеревоДокументов
Там поймешь, как все доки увидеть. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |