|
v7: ТиС изменить документ при обходе группировки запроса. Ошибка Не выбран документ | ☑ | ||
---|---|---|---|---|
0
raykom
30.10.14
✎
09:32
|
Обхожу группировку, надо внести комментарий и записать, или пометить документ на удаление.
Получаю ошибку - Не выбран документ! Если Запрос. Док.Вид() = ВыбНеДок.Вид() Тогда ДокРаботаем = Запрос.Док; ДокРаботаем.Комментарий = "ххх"; ДокРаботаем.Записать(); //Сообщить(Запрос.Док); КонецЕсли; То не так ? |
|||
1
DGorgoN
30.10.14
✎
09:34
|
ДокРаботаем = Запрос.Док.ПолучитьОбъект();
|
|||
2
vicof
30.10.14
✎
09:34
|
ПолучитьОбъект() уже было?
|
|||
3
DGorgoN
30.10.14
✎
09:34
|
А 7-ка, тогда
ДокРаботаем = СоздатьОбъект("Документ"); ДокРаботаем.Найти(Запрос.Док); |
|||
5
DGorgoN
30.10.14
✎
09:35
|
ДокРаботаем = СоздатьОбъект("Документ"); - вынести в начало цикла только вынеси
|
|||
6
DGorgoN
30.10.14
✎
09:36
|
Хотя конечно стаж 9 лет 5 месяцев 8 дней впечатляет )
|
|||
7
raykom
30.10.14
✎
09:36
|
От я ... дворник. Мутное подозрение то было, что то ли найти, то ли получить надо, прежде чем чето делать ...
Попробую. Пока спасибо. |
|||
8
raykom
30.10.14
✎
09:37
|
(6)Дак жизненный опыт - не количество лет, а количество событий за количество лет )))
|
|||
9
raykom
30.10.14
✎
09:46
|
Усе пучком. Благодарю за помощь.
Правда пришлось интеллект наморщить, потому как не ДокРаботаем.Найти(Запрос.Док); а ДокРаботаем.НайтиДокумент(Запрос.Док); Утираю пот, от усилий ... |
|||
10
DGorgoN
30.10.14
✎
09:46
|
(9) Ну надо ж что-то напрячь то.
|
|||
11
Looser-1c
30.10.14
✎
09:47
|
(9) А на свежем воздухе пота не было бы.... ))))
|
|||
12
Ёпрст
30.10.14
✎
09:47
|
условие на вид документа нужно было в сам запрос воткнуть
|
|||
13
raykom
30.10.14
✎
10:02
|
(10)Ну ... Напрягаем, чем бог не ? обидел ))
(11)Ты это про метлу ? :D (12)А есть, а затупил, чего то. Еще по условию сравнивать начал ) Говорят же - не воздух пора. Нормально все. Еще раз спасибо. |
|||
14
raykom
30.10.14
✎
10:14
|
Ээээ, а можно еще вапроц ?
Я перебираю строки табличной части документа и по условию надо удалять некоторую строку, Что там с позиционированием ? Надо кудато двигать там минус один или плюс один ? |
|||
15
Looser-1c
30.10.14
✎
10:16
|
(14) Выгржай в тз, там удаляй, потом загружай ))
|
|||
16
raykom
30.10.14
✎
10:18
|
Пляя ... а просто чикнуть не ? И потом, какая разница, где с позиционированием морочится в ТЧ Документа или в ТЗ ?
|
|||
17
aka AMIGO
30.10.14
✎
10:23
|
(16) не надо.. делай, как в (15) советовал
пустяк написать код-то.. |
|||
18
raykom
30.10.14
✎
10:28
|
Так чем отличается удаление из ТЧ Документа от удаления из ТЗ ?
Если я не правильно делаю, так я и в ТЗ не правильно удалю ... |
|||
19
aka AMIGO
30.10.14
✎
10:28
|
(18) с тз проще работать
|
|||
20
raykom
30.10.14
✎
10:30
|
Ну ладно, но удалять то как ?
Типаэ ВыбратьСтроки() Пока ВыбратьСтроки() =1 Цикл Если Док.Номенклатура = УдалНоменклатура Тогда Док.Номенклатура.УдалитьСтроку; Так чтоли ? И в ТЗ так же |
|||
21
DGorgoN
30.10.14
✎
10:33
|
(20) Перебирай в цикле:
Для к=1 по ТабЧасть.КоличествоСтрок() Цикл |
|||
22
raykom
30.10.14
✎
10:34
|
Щас.
|
|||
24
aka AMIGO
30.10.14
✎
10:40
|
вообще-то я-б сделал так:
ТЗ = СоздатьОбъект("ТаблицаЗначений"); Док.ВыгрузитьтабличнуюЧасть(ТЗ); Стр=0; Если ТЗ.Найти(Номенклатура, Стр, "Номенклатура")>0 Тогда ТЗ.УдалитьСтроку(Стр); Док.УдалитьСтроки(); Док.ЗагрузитьТабличнуюЧасть(ТЗ); КонецЕсли; но код этот никому-бы не показывал :) |
|||
25
aka AMIGO
30.10.14
✎
10:43
|
+24 ""но код этот никому-бы не показывал"" - истина, т.к. ошибка
Если ТЗ.НайтиЗначение(Номенклатура, Стр, "Номенклатура")>0 Тогда |
|||
26
raykom
30.10.14
✎
10:49
|
(21)Не удаляить ничего
ДокРаботаем = СоздатьОбъект("Документ."+Запрос. Док.Вид()); ДокРаботаем.НайтиДокумент(Запрос.Док); Для к=1 по ДокРаботаем.КоличествоСтрок() Цикл Если к = УдалНом Тогда ДокРаботаем.УдалитьСтроку(); КонецЕсли; ДокРаботаем.Записать(); КонецЦикла; |
|||
27
КонецЦикла
30.10.14
✎
11:01
|
Можно упростить
ДокРаботаем = СоздатьОбъект("Документ"); // и так хорошо ДокРаботаем.НайтиДокумент(Запрос.Док); Если ДокРаботаем.Выбран() = 1 Тогда ДокРаботаем.УдалитьСтроки(); //читаем блиать СП ДокРаботаем.Записать(); КонецЕсли; |
|||
28
raykom
30.10.14
✎
11:03
|
(27)Чето мне кажется не СП читать надо будет, а пачку беломора ... И скать работу с лопатой на севере )))
|
|||
29
aka AMIGO
30.10.14
✎
11:15
|
(26) //Для к=1 по Док.КоличествоСтрок() Цикл
ДокРаботаем.ВыбратьСтроки(); Пока ДокРаботаем.ПолучитьСтроку()=1 Цикл |
|||
30
aka AMIGO
30.10.14
✎
11:23
|
ДокРаботаем = СоздатьОбъект("Документ."+Запрос. Док.Вид());
ДокРаботаем.НайтиДокумент(Запрос.Док); //Для к=1 по ДокРаботаем.КоличествоСтрок() Цикл ДокРаботаем.ВыбратьСтроки(); Пока ДокРаботаем.ПолучитьСтроку()=1 Цикл Если к = УдалНом Тогда ДокРаботаем.УдалитьСтроку(); ДокРаботаем.Записать(); Прервать; //если номеклатура не дублируется в разных строках КонецЕсли; |
|||
31
aka AMIGO
30.10.14
✎
11:23
|
КонецЦикла; :)
|
|||
32
DGorgoN
30.10.14
✎
11:27
|
щас насоветуйте - он же сделает. Может сразу sudo mkfs.ntfs /dev/sdX на диске где база?
|
|||
33
raykom
30.10.14
✎
11:29
|
Да парни, у меня и так в голове каша, вы еще тут суицид подкидываете ...
Дайте нормальный код. Вообще ни что не понимаю, как будто курил канаплю какую то ... Не, спать таки надо по ночам. |
|||
34
raykom
30.10.14
✎
11:30
|
(31)Можно аминь, в принципе )
но в (30) то ничего страшного, оно просто работать ни буит ) |
|||
35
raykom
30.10.14
✎
11:31
|
Я не соображу, как к то получать значение нужное ...
|
|||
36
aka AMIGO
30.10.14
✎
11:34
|
(34) тогда возвращаемся к (24) точна буить!
|
|||
37
aka AMIGO
30.10.14
✎
11:37
|
(35) это у тебя внешняя обработка?
И что значит "значение нужное"? нужную позицию в ТЧ с удаляемой номенклатурой? или самоё номенклатуру, чтоб её сравнивать со значением в ТЧ? |
|||
38
raykom
30.10.14
✎
11:39
|
(36)Дак я уже ... Походу он обратно пустую ТЗ грузит.
Но копия тоесть базы ))) Так тчо для полного эффекта надо реально (32) (37)Да. Внешняя. |
|||
39
raykom
30.10.14
✎
11:41
|
Почему вот этот порошек ни чего не удаляет ??
ДокРаботаем.ВыбратьСтроки(); Пока ДокРаботаем.ПолучитьСтроку()=1 Цикл Если ДокРаботаем.Номенклатура = УдалНом Тогда ДокРаботаем.УдалитьСтроку(); //Прервать; //если номеклатура не дублируется в разных строках // А ЕСЛИ ДУБЛИРУЕТСЯ ? КонецЕсли; КонецЦикла; ДокРаботаем.Записать(); |
|||
40
raykom
30.10.14
✎
11:43
|
(37)Ну к это же тупо индекс строки
в ТЧ документа то как значение получить номенклатуры ... |
|||
41
raykom
30.10.14
✎
11:52
|
Патамушта парни ... Открою секрет.
Я просто сравнение не по той номенклатуре делал ... Жесть. Втыкаю в стол брови ... |
|||
42
raykom
30.10.14
✎
11:58
|
Теперь стало што то удалять но какое то деление на ноль выскакивает.
Гдето видно усе в ТЧ удалилось ... |
|||
43
raykom
30.10.14
✎
12:19
|
Тыкните пальцем мне в пост, который есть пральное решение. А то перестану подметать, пойду в дипутаты. Я вам там наворочу ...
|
|||
44
aka AMIGO
30.10.14
✎
12:19
|
(42) увы, могу только отладчик посоветовать..
|
|||
45
raykom
30.10.14
✎
12:19
|
(44)Дак я и сам могу себе его посоветовать ))
|
|||
47
raykom
30.10.14
✎
12:25
|
Отладчик говорит что ошибка и все, ну в каком документе еще.
Это первый документ с такой позицией. |
|||
48
raykom
30.10.14
✎
12:33
|
Отправил ... Вот жпо то. Дожил. Ведь заморочка то на пустом месте. Просто дворницкая смекалка затупилас. двадцатый час идет как за компом ...
|
|||
49
aka AMIGO
30.10.14
✎
12:40
|
(48) не переживай так.. попытаюсь найти.
|
|||
50
raykom
30.10.14
✎
12:42
|
Да не то што бы ... Просто тупой коматоз. И кофе кончилось.
Сижу, как тот воробей красноглазый обкуреный на плече у орла ... Старый онекдод. |
|||
51
raykom
30.10.14
✎
13:02
|
Емае ...
Как вот тут до Номенклатуры то добраться ??! Для сч = - ДокРаботаем.КоличествоСтрок() По -1 Цикл ТекСтрока = ДокРаботаем.ПолучитьСтрокуПоНомеру(Сч); Сообщить(ТекСтрока.Номенклатура); |
|||
52
raykom
30.10.14
✎
13:05
|
Почему оно мне говорит, что нет такого агрегатного объекта ???
|
|||
53
Ёпрст
30.10.14
✎
13:08
|
п...ц
|
|||
54
Rokford
30.10.14
✎
13:08
|
Всегда пользую этот код. Не подводит.
//"Правильное" удаление строк из ТЗ Для Индекс = -ТЗ.КоличествоСтрок() По -1 Цикл ТЗ.ПолучитьСтрокуПоНомеру(-Индекс); Если <ПроверкаУсловий> Тогда ТЗ.УдалитьСтроку(); КонецЕсли; КонецЦикла; |
|||
55
Ёпрст
30.10.14
✎
13:08
|
Для сч = - ДокРаботаем.КоличествоСтрок() По -1 Цикл
ДокРаботаем.ПолучитьСтрокуПоНомеру(-Сч); Сообщить(ДокРаботаем.Номенклатура); |
|||
56
raykom
30.10.14
✎
13:10
|
(53)Дак да .. Огромный ...
|
|||
57
raykom
30.10.14
✎
13:14
|
Блт ... Опять ошибка
ЦенаРеал = Док.Цена*Коэф/Док.Коэффициент; {C:\ОБМЕНЫ\ОБРАБОТКИ\ОТЧЕТ ПО ПРОДАЖАМ.ERT(881)}: Деление на 0 |
|||
58
Ёпрст
30.10.14
✎
13:15
|
(57) страсти какие.
Дарю: ЦенаРеал = ?(,,) |
|||
59
raykom
30.10.14
✎
13:20
|
(58)Дак нафига оно уже, если просто строка удаляется ??
И потом уже отчет не формируется. Где то строка остается с номенклатурой но без количества и цены ... Хо за хня ... |
|||
60
Ёпрст
30.10.14
✎
13:22
|
больше кода
|
|||
61
Ёпрст
30.10.14
✎
13:23
|
и это, докумет то перепроводишь потом хоть, опосля его правки ?
|
|||
62
raykom
30.10.14
✎
13:24
|
Записываю
|
|||
63
Ёпрст
30.10.14
✎
13:25
|
(62) круто, проводить не пробовал ?
:))) твой отчет по продажам данные тащит с регистров, а они то не изменились |
|||
64
raykom
30.10.14
✎
13:25
|
Ну да ... Тогда ГП ПЦ.
|
|||
65
raykom
30.10.14
✎
13:26
|
Понял как надоть.
|
|||
66
aka AMIGO
30.10.14
✎
14:28
|
Отправил. Смотри замечания в письме.
ЗЫ. что смог сообразить - то и сделал. ЗЫЫ. блин.. заметил после того, как отправил! измени код блочка на такой: Пока ДокРаботаем.ПолучитьСтроку()=1 Цикл Если ДокРаботаем.Номенклатура = УдалНом Тогда Сообщить(ДокРаботаем.Номенклатура); ДокРаботаем.УдалитьСтроку(); //Прервать; //если номеклатура не дублируется в разных строках // А ЕСЛИ ДУБЛИРУЕТСЯ ? КонецЕсли; КонецЦикла; ДокРаботаем.Записать(); Иначе сообщает о номенклатуре оставшейся, а не об удаленной |
|||
67
aka AMIGO
30.10.14
✎
14:30
|
+66 и проверь работу при установке твоих дополнительных маркеров
|
|||
68
aka AMIGO
30.10.14
✎
14:41
|
Кстати, такое сообщение об авосте?
ЦенаРеал = Док.Цена*Коэф/Док.Коэффициент; {D:\1C\TMP\EXTFORMS\ОТЧЕТ ПО ПРОДАЖАМ.ERT(881)}: Деление на 0 Если фирма не использует Коэффициенты, можно переделать операторы, примерно так: ЦенаРеал = Док.Цена; //*Коэф/Док.Коэффициент; |
|||
69
raykom
30.10.14
✎
18:44
|
(68)Да это от того, что я в алгоритме удаления строки испоьзовал записать, а не провести.
В регистре то ничего не менялось. А строка отсутствовала в натуре. После проведения все норм. Но ГП слетает. Все сделал, короче. Тебе отдельное спасибо. За отклик и вообще. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |