Имя: Пароль:
1C
1C 7.7
v7: Ссылка на счет в запросе
0 YurAnt
 
29.10.13
09:39
Доброго времени уток, господа - форумчане. Вопрос следующий:
Как в v7.7: БУ 4.5 в запросе получить ссылку на счет...
подобно тому как это делает "СчетПоКоду()". Просто перебирать выборку из Выписок на предмет Док.КоррСчет = СчетПоКоду("62.1") и делать это в цикле совсем не комильфо...

Вот думаю подобные проверки впилить в запрос условием, подскажите как сие реализовывается ?
С  ув. Yurant
1 YurAnt
 
29.10.13
09:41
можно конечно передавать счет в запрос параметром...
но оно ж какбе константа, если так можно выразиться
2 zak555
 
29.10.13
09:41
зачем тебе выборка из документов, если нужно в бух 4.5 использовать бухЗапрос к проводкам ?
3 пипец
 
29.10.13
09:42
точно так же - найти покоду
4 пипец
 
29.10.13
09:42
+ через создать объект - и будет тебе ссылка ;))
5 YurAnt
 
29.10.13
09:44
(2) ну видимо... потому что я еще не разобрался в принципиальной разнице м/у Запросом и БухЗапросом... ибо 1 неделю как на 7ке :)
но суть в том что мне нужно выбирать список документов. Выписок. С условием отбора по коррсчету.

(4) эм... создать объект в запросе? О_о я правильно вас понимаю ? речь то о том как это в запросе сделать
6 zak555
 
29.10.13
09:45
(5) делай бухЗапрос
7 пипец
 
29.10.13
09:48
(5) в запросе переменная , перед этип определение оной или вообще внешняя функция
ЗЫ и чо действительно ,бух запрос чем не устраивает ?
8 YurAnt
 
29.10.13
09:57
мб просто интерфейс не знаком (по-русски как это сделать), но вот сейчас на закладке "Ограничений получения итогов по коррсчетам и т.п." не понимаю как это можно впилить.

Если Док.Приход<>0 Тогда
        Если(Док.Коррсчет<>СчетПоКоду("62.1"))
       и (Док.Коррсчет<>СчетПоКоду("62.2"))
    Тогда    
        Продолжить;
    КонецЕсли;    
Иначе        
    Если(Док.Коррсчет<>СчетПоКоду("60.1"))
    Тогда    
        Продолжить;
    КонецЕсли;    
КонецЕсли;

Т.е. я не могу тупо выбрать "тот, тот, и вон тот счет пожалуйста в выборку мне"

а нечто типа Условия: ((Док.Приход<>0 И ок.Коррсчет<>СчетПоКоду("62.1") И Док.Коррсчет<>СчетПоКоду("62.2")) ИЛИ (Док.Приход=0 И Док.Коррсчет<>СчетПоКоду("60.1")))
это уже вполне реально...
вот и заморочился как передать вот это самое СчетПоКоду
9 YurAnt
 
29.10.13
09:59
хтоя мб конечно это всё лишь извращения валенка на которого свалилась семерка (а он привык к Контрл+Пробелам И Удобным КонструкторамЗапроса) :)
10 1dvd
 
29.10.13
10:01
(8) Если ты восьмерошник, то пойми, что в 7.7 в запросе нет Установить("Параметр", параметр). Запрос в 7.7 все параметры берет тупо из контекста.

Счет621 = СчетПоКоду("62.1");

ТекстЗапроса = "
    ...
    ...
    Условие(Док.КоррСчет = Счет621);
    ..."
11 YurAnt
 
29.10.13
10:02
(10) благодарю :)
12 Тьма
 
29.10.13
10:05
(9)В 7.7 есть конструктор запросов. Пошарься по менюшкам в Конфигураторе.
13 zak555
 
29.10.13
10:05
(8) ты лучше напиши, что надо получить
14 пипец
 
29.10.13
10:11
чойта низя счет тот тот и вон тот - счета в список значений и впирйот
15 YurAnt
 
29.10.13
14:42
Вот на такое ругаицца...
говорит ((Приход=0 И (КоррСчет=Счет621 ИЛИ КоррСчет=Счет622)) ИЛИ (Приход<>0 И КоррСчет=Счет601))
неправильное использование арифметич-й или стр опер-и.

//Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ВыпискиВКнигу)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ТекущийДокумент = Документ.Выписка.ТекущийДокумент;
    |ДатаДок = Документ.Выписка.ДатаДок;
    |ВремяДок = Документ.Выписка.ВремяДок;
    |НомерДок = Документ.Выписка.НомерДок;
    |НазначениеПлатежа = Документ.Выписка.НазначениеПлатежа;
    |Приход = Документ.Выписка.Приход;
    |Расход = Документ.Выписка.Расход;
    |КоррСчет = Документ.Выписка.КоррСчет;
    |Субконто1 = Документ.Выписка.Субконто1;
    |Субконто2 = Документ.Выписка.Субконто2;
    |Субконто3 = Документ.Выписка.Субконто3;
    |ДокументПоставки = Документ.Выписка.ДокументПоставки;
    |НомерДокВходящий = Документ.Выписка.НомерДокВходящий;
    |ДатаДокВходящий = Документ.Выписка.ДатаДокВходящий;
    |Условие((Приход=0 И (КоррСчет=Счет621 ИЛИ КоррСчет=Счет622)) ИЛИ (Приход<>0 И КоррСчет=Счет601));
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
        КонецЕсли;
16 YurAnt
 
29.10.13
14:49
есть подозрение уж не в строках ли дело ?
а то мб мало того что надо выбрать док так и строки перебрать както-надобно?
ибо в выписке лишь Валюта и БанковскийСчет в шапке... остальное в ТЧ
17 Хряк
 
29.10.13
14:51
скобок маловато
18 YurAnt
 
29.10.13
14:56
Условие((Приход=0 И (КоррСчет=Счет621 ИЛИ КоррСчет <<?>> =Счет622)) ИЛИ (Приход<>0 И КоррСчет=Счет601));

на после коррсчета ругаецц...
(17) а оп поводу скобок, ну хз, разбил на логические блоки
http://savepic.su/3647174.png
в 8ке вроде бы обилие скобок не вызывало краша логики...
19 YurAnt
 
29.10.13
15:04
(13) zak555, а получить я пытаюсь вот что...
имеется хаос и вакханалия в виде перебора в цикле документов по условиям (причем 2 штуки).
я хочу засунуть весь этот ужас в запросы с условиями, ибо сейчас тут 2 дока... если бухам потребуется добавить либо еще 1 либо тупо возрастет кол-во документов... обработка повесится.
Первый перебор...
20 YurAnt
 
29.10.13
15:06
ТаблУчета = СоздатьОбъект("ТаблицаЗначений");
21 YurAnt
 
29.10.13
15:06
да что за бред... не выкладывается код целиком((
сек... щас найду способ
22 zak555
 
29.10.13
15:07
код запроса покажи
23 YurAnt
 
29.10.13
15:13
24 YurAnt
 
29.10.13
15:14
это то что хочу оптимизировать. Код запроса см в(15)
25 YurAnt
 
29.10.13
15:17
хочу попытаться разбить на 2 запроса с условиями...(упихать в 1 запрос чувствую будет туговато на 7ке ибо будет каша) а в 2, ну собственно над этим и корпею
26 zak555
 
29.10.13
15:19
СЗ_корсчетов = создатьОбъект("СписокЗначений");
СЗ_корсчетов.ДобавитьЗначение(Счет621);
СЗ_корсчетов.ДобавитьЗначение(Счет622);
СЗ_корсчетов.ДобавитьЗначение(Счет601);

БИ.ИспользоватьКорСубконто();
БИ.ИспользоватьКорСубконто();
БИ.ИспользоватьКорСубконто();
БИ.ВыполнитьЗапрос(ВыбНачПериода , ВыбКонПериода, СчетБанка, СЗ_корсчетов,,2,"Проводка");
27 Cthulhu
 
29.10.13
15:30
(26): не надо фильтр по счетам давать в виде СЗ.
лучше - в вите строки из кодов счетов, разделенных запятыми.
28 YurAnt
 
29.10.13
15:32
(26),(27) благодарю, теперь дабы сие переварить курю что есть Конструктор_бух_зап-в и в чем его отличия от КЗ
29 пипец
 
29.10.13
15:49
хе а еще можно бухзапросом по проводкам / операциям с получением документа
30 ДенисЧ
 
29.10.13
15:50
(27) расстрелять.
31 1dvd
 
29.10.13
15:51
(30) почему?
32 zak555
 
29.10.13
15:55
(27) почему ?
33 vladko
 
29.10.13
15:57
в 8ке бы так сработало:
(Приход=0 И (КоррСчет=Счет621 ИЛИ КоррСчет=Счет622)) ИЛИ (Приход<>0 И КоррСчет=Счет601)
а в 7ке надо
((Приход=0) И ((КоррСчет=Счет621) ИЛИ (КоррСчет=Счет622))) ИЛИ ((Приход<>0) И (КоррСчет=Счет601))
34 ДенисЧ
 
29.10.13
16:29
(31) по определению.
35 Cthulhu
 
29.10.13
17:24
(30): убей себя, пионэр. проверено на практике.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн