![]() |
![]() |
![]() |
|
v7: Отобрать строки тз по счетам | ☑ | ||
---|---|---|---|---|
0
famnam
13.05.13
✎
09:32
|
Здравствуйте! С 7 опыта почти нет, но вот надо переноску написать. нужно в таблице значений оставить только строки со счетам 26 и 91, с учетом иерархии конечно. как правильно написать условие?
//выгрузим табчасть в тз и оставим только строки со счетами 26 и 91 Счет26 = СоздатьОбъект("Счет.Основной"); Счет26.НайтиПоКоду("26"); Счет91 = СоздатьОбъект("Счет.Основной"); Счет91.НайтиПоКоду("91"); ТабличнаяЧасть = СоздатьОбъект("ТаблицаЗначений"); Источник.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть); ТабличнаяЧасть.ВыбратьСтроки(); Пока ТабличнаяЧасть.ПолучитьСтроку()=1 Цикл Пока (ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет26)=0) или (ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет91)=0) и (ТабличнаяЧасть.НомерСтроки<>0) Цикл ТабличнаяЧасть.УдалитьСтроку(); КонецЦикла; КонецЦикла; условие ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет26) не срабатывает |
|||
1
Ёпрст
гуру
13.05.13
✎
09:38
|
(0)
Счет91 = СчетПоКоду("91"); Счет26 = СчетПоКоду("26"); //ну или в твоём коде: Счет91 = СоздатьОбъект("Счет.Основной"); Счет91.НайтиПоКоду("91"); Счет91 = Счет91.ТекущийСчет(); Для к = -ТабличнаяЧасть.КоличествоСтрок() по -1 Цикл ТабличнаяЧасть.ПолучитьСтрокуПоНомеру(-к); Если(ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет26)=0) или (ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет91)=0) и (ТабличнаяЧасть.НомерСтроки<>0) Цикл ТабличнаяЧасть.УдалитьСтроку(-к); КонецЕсли; КонецЦикла; |
|||
2
Ёпрст
гуру
13.05.13
✎
09:39
|
Если(ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет26)=0) или (ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет91)=0) Тогда
ТабличнаяЧасть.УдалитьСтроку(-к); КонецЕсли; |
|||
3
famnam
13.05.13
✎
09:51
|
(1) Вау! Спасибо! очень выручили.
только вопрос по ПринадлежитГруппе. След.выражение не срабатывает для строк с КоррСчет = 26 счету. Получается можно только для аналитических счетов использовать? Если(ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет26)=1) Тогда Сообщить("26"); КонецЕсли; |
|||
4
Ёпрст
гуру
13.05.13
✎
09:53
|
(3) для любых счетов.. ты оставь в коде только это:
Счет91 = СчетПоКоду("91"); Счет26 = СчетПоКоду("26"); |
|||
5
Chum
13.05.13
✎
09:54
|
Добавь условие:
и (какой-тосчет = счет26) |
|||
6
Ёпрст
гуру
13.05.13
✎
09:55
|
Или через текущийсчет надо делать .. не помню, в общем, пробуй сам
|
|||
7
Ёпрст
гуру
13.05.13
✎
09:56
|
А ну да, у тебя ошибка в коде:
Если(ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет26)=0) !!!!!И!!!!!!!(ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(счет91)=0) Тогда ТабличнаяЧасть.УдалитьСтроку(-к); КонецЕсли; |
|||
8
famnam
13.05.13
✎
10:36
|
всем спасибо!
вот результат: Счет91 = СчетПоКоду("91"); Счет26 = СчетПоКоду("26"); ТабличнаяЧасть = СоздатьОбъект("ТаблицаЗначений"); ВыбАвансОтчет.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть); Для к = -ТабличнаяЧасть.КоличествоСтрок() по -1 Цикл ТабличнаяЧасть.ПолучитьСтрокуПоНомеру(-к); Если (ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(Счет26)=1) или (ТабличнаяЧасть.КоррСчет.ПринадлежитГруппе(Счет91)=1) или (ТабличнаяЧасть.КоррСчет = Счет26) или (ТабличнаяЧасть.КоррСчет = Счет91) Тогда ТабличнаяЧасть.УдалитьСтроку(-к); КонецЕсли; КонецЦикла; |
|||
9
Ёпрст
гуру
13.05.13
✎
10:42
|
(8)
так ты из ТЗ убираешь все строки, если счет принадлежит 26 или 91, а тебе надо их оставить.. |
|||
10
famnam
13.05.13
✎
10:45
|
ах да! спасибо)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |