Имя: Пароль:
1C
1C 7.7
v7: Фильтр в запросе
0 Новичёк123123
 
27.07.11
12:41
Добрый день) Нужна подсказка) Задача такая нужно что бы в отчет выводились табличные части документов у которых в номере 4-ая буква "а" (Напиример:симА-0888). Сделал сначала простым перебором документов- получилось

   Таб=СоздатьОбъект("Таблица");
   НайденныйДок=СоздатьОбъект ("Документ.Счет");
   НайденныйДок.ВыбратьДокументы(ДатаНач,ДатаКон);
   Таб.ВывестиСекцию ("Заголовок");  
   
       Пока НайденныйДок.ПолучитьДокумент()=1 Цикл  
           ТекДок=НайденныйДок.ТекущийДокумент();
           Префикс=Сред(ТекДок.НомерДок,4,1);
           Если Префикс="А" Тогда
               ТекДок.ВыбратьСтроки();
               Пока ТекДок.ПолучитьСтроку()=1 Цикл
                   Товар=ТекДок.Товар;
                   Количество=ТекДок.Количество;
                   Таб.ВывестиСекцию("Счет");
                   Таб.ВывестиСекцию("Товар");
               КонецЦикла;
           КонецЕсли;
       КонецЦикла;
   ИначеЕсли фл_ВывПоТов=1 Тогда
       
   КонецЕсли;
   Таб.Показать("О ля ля");

но потом додумался что лучше попробовать через запрос, но в упор не могу понять как поставить в него это условие и как сделать так что бы выводился счет потом все товары которые в нём есть, и так все счета.Пробовал так

   Запрос=СоздатьОбъект("Запрос");
       ТекстЗапроса ="
       |Период с Дата1 по Дата2;
       |Товар       = Регистр.РезервыТоваров.Товар;
       |Количество  = Регистр.РезервыТоваров.РезервТовара;
       |Счет         = Регистр.РезервыТоваров.ПоСчету;           //в регистре иммется ссылка на счет
       |Группировка Счет;
       |Функция КоличествоКонОст=КонОст(Количество);
       |";
                     
       Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
              Возврат
       КонецЕсли;
       Таб=СоздатьОбъект ("Таблица");
       Таб.ИсходнаяТаблица("АкционныеСчета");
       Таб.ВывестиСекцию ("Заголовок");
       Пока Запрос.Группировка("Счет")=1 Цикл
           Таб.ВывестиСекцию ("Счет");
           Таб.ВывестиСекцию ("Товар");
       КонецЦикла;  
       Таб.Показать("Остатки материалов");

Условие нужно ставить в самом запросе или после него можно, если в запросе то пробовал так: условие (сред(Счет.НомерДок,4,1)="а" но там из за кавычек сразу проблемы шли.
1 ДенисЧ
 
27.07.11
12:42
условие (сред(Счет.НомерДок,4,1)=""а""
2 zak555
 
27.07.11
12:42
расскажи конечный итог, что нужно :?
3 miki
 
27.07.11
12:43
добавь ковычек, как вариант.
Или сделай "а" - переменной.
Скорость вряд ли будет выше перебора
4 Джинн
 
27.07.11
12:43
Задача бредовая с момента постановки.

Технически см. функции работы со строками.
5 Новичёк123123
 
27.07.11
12:48
Что нужно: у нас есть акционный счет фактура(у него уникальный номер, 4-ая буква всегда А)  который резервирует акционные товары на складе. Нужно сделать так что бы данные именно по этим счетам фактурам заносились в отчет и выводились по счетам фактурам(то есть счет все товары которые там есть, и так все счета)
6 miki
 
27.07.11
12:50
лучше бы признак какой к СФ прикрутили (реквизит, а не букву в номер), имхо.
7 Генератор
 
27.07.11
12:51
даже 2 варианта вроде:

ПОДСТРОКА(ПОле,4,1)="а"

ПОле ПОДОБНО "___а%"
8 Генератор
 
27.07.11
12:52
(7) блин это для 8
9 Новичёк123123
 
27.07.11
12:56
(6)ну нужно было выделить счет фактуру так что бы он в списке выделялся(
10 Новичёк123123
 
27.07.11
13:24
Денис Ч спасибо) взлетело)
Программист всегда исправляет последнюю ошибку.