![]() |
![]() |
![]() |
|
v7: Условие при выборе документа | ☑ | ||
---|---|---|---|---|
0
msk-07
12.02.13
✎
00:23
|
Доброй всем ночи, мне необходимо отобрать все документы перемещение ТМЦ у которых склад получатель совпадает со складом который я выбираю в обработке. Делаю так
Если (Док.Вид() <>"ПеремещениеТМЦ") И (Склад <> СкладПеремещение) Тогда По ни чего не выходит, упорно выбираются все документы с выбранным складом в обработке, хотя чего проще поставить условие, но не как не пойму как это сделать Делала так Если (Док.Вид() <>"ПеремещениеТМЦ") И (Док.Склад.Получить() <> "СкладПолучатель") Тоже не получается, может кто подскажет? |
|||
1
msk-07
12.02.13
✎
00:23
|
опечатался( */делал
|
|||
2
Aleksey
12.02.13
✎
00:24
|
это что за бред? Склад <> СкладПеремещение)
|
|||
3
msk-07
12.02.13
✎
00:24
|
Хорошо, а как правильно?
|
|||
4
Aleksey
12.02.13
✎
00:25
|
Зачем на вид проверять, почему нельзя сразу выбирать определенного вида документы?
|
|||
5
msk-07
12.02.13
✎
00:25
|
СкладПеремещение это реквизит из документа перемещения
|
|||
6
Aleksey
12.02.13
✎
00:25
|
(5) Ну так и проверяй
ВыбСклад и Док.Склад |
|||
7
Aleksey
12.02.13
✎
00:26
|
* ВыбСклад и Док.СкладПеремещение
|
|||
8
msk-07
12.02.13
✎
00:26
|
ну проверка, для того чтобы точно документ предрешения туда попадал
|
|||
9
msk-07
12.02.13
✎
00:26
|
прости, не сосем понял (7)
|
|||
10
Aleksey
12.02.13
✎
00:27
|
(8) Т.е.
Док=СоздатьОбъект("Документ.ПеремещениеТМЦ") уже не кошерно и надо все доки шерстит? |
|||
11
msk-07
12.02.13
✎
00:27
|
СписДок.УдалитьВсе();
Док=СоздатьОбъект("Документ"); Док.ВыбратьПоЗначению(НачДат,КонДат,"Склад",ВыбКонтрагент); //заменить на запрос ТекПоз=0; Пока Док.ПолучитьДокумент()=1 Цикл Если Док.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; Если (Док.Вид() <>"ПеремещениеТМЦ") И (Склад <> СкладПеремещение) Тогда Продолжить; КонецЕсли; |
|||
12
Aleksey
12.02.13
✎
00:28
|
(9) Я тоже не совсем понял твой замысел. такое ощущения что выдранно из контекста, т.е. на входе какой то запрос или выборка
|
|||
13
BlackSeaCat
12.02.13
✎
00:28
|
(9) Думаешь, тебя можно понять по ОДНОЙ строчке кода?
|
|||
14
Aleksey
12.02.13
✎
00:28
|
Док.ВыбратьПоЗначению(НачДат,КонДат,"Склад",ВыбКонтрагент); - это очепятка? или у тебя ВыбКонтрагент = справочник.склады?
|
|||
15
msk-07
12.02.13
✎
00:29
|
неопечатка, это идентификатор, так обозвали =(
|
|||
16
msk-07
12.02.13
✎
00:30
|
ВыбКонтрагент = справочник.склады?
|
|||
17
msk-07
12.02.13
✎
00:30
|
угу
|
|||
18
Aleksey
12.02.13
✎
00:30
|
Док=СоздатьОбъект("Документ.ПеремещениеТМЦ");
Док.УстановитьФильтр(1,0); Док.ВыбратьДокументы(); Пока Док.ПолучитьДокумент()=1 Цикл Если (ВыбКонтрагент <> Док.СкладПеремещение) Тогда Продолжить; КонецЕсли; |
|||
19
BlackSeaCat
12.02.13
✎
00:31
|
(11) Ага, уже лучше.
Во-первых, см. (10) Во-вторых, если интересно, в чем твоя ошибка, то правильно вот так: Если (Док.Вид() <>"ПеремещениеТМЦ") ИЛИ (Склад <> СкладПеремещение) Тогда Продолжить; КонецЕсли; Хотя и так коряво, поэтому (10) и Если Склад <> СкладПеремещение Тогда Продолжить; КонецЕсли; |
|||
20
Aleksey
12.02.13
✎
00:32
|
Не склад а выбКонтрагент (у нас же так реквизит называется)
и не СкладПеремещение, а Док.СкладПеремещение - это же реквизит документы |
|||
21
msk-07
12.02.13
✎
00:33
|
Скажите а что нужно делать чтобы так программировать хорошо?
|
|||
22
BlackSeaCat
12.02.13
✎
00:34
|
(31) Сначала думать, потом - кодить.
|
|||
23
msk-07
12.02.13
✎
00:39
|
Но теперь опять ошибка
сли (ВыбКонтрагент <> Док.СкладПеремещение) Тогда Поле агрегатного объекта не обнаружено (СкладПеремещение) |
|||
24
Aleksey
12.02.13
✎
00:45
|
(23) Правильно, ты не поменял
Док=СоздатьОбъект("Документ"); на Док=СоздатьОбъект("Документ.ПеремещениеТМЦ"); |
|||
25
msk-07
12.02.13
✎
00:49
|
Подправил((
У меня сейчас так Док=СоздатьОбъект("Документ.ПеремещениеТМЦ"); // Док.УстановитьФильтр(1,0); Док.ВыбратьПоЗначению(НачДат,КонДат,,); Док.ВыбратьДокументы(); Пока Док.ПолучитьДокумент()=1 Цикл Если (ВыбКонтрагент <> Док.СкладПолучатель) Тогда Продолжить; КонецЕсли; СписДок.ДобавитьЗначение(Док.ТекущийДокумент()); ТекПоз= ТекПоз+1; СписДок.Пометка(ТекПоз,1); КонецЦикла; |
|||
26
msk-07
12.02.13
✎
00:50
|
ну просто в обработке отбирается еще отрезок времени
|
|||
27
Aleksey
12.02.13
✎
01:40
|
Док.ВыбратьПоЗначению(НачДат,КонДат,,); удали
Док.ВыбратьДокументы(НачДат,КонДат); - вот так надо |
|||
28
Aleksey
12.02.13
✎
01:41
|
Док.УстановитьФильтр(1,0); - зря удалил. это фильтр отбирать проведенные и не помеченные на удаления. сейчас к тебе всё подряд будет валиться, ну или добавь
Если Док.Проведен()=0 Тогда Продолжить; КонецЕсли; |
|||
29
Злопчинский
12.02.13
✎
04:06
|
(28) правильнее конечно фильтр наложить, но если некритично - я предпочитаю юзать проверку ввиду ея большей читабельности
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |