Имя: Пароль:
1C
1С v8
Запрос с параметрами, в зависимости от выполненных условий
,
0 Ly_Alena
 
09.09.15
06:35
Доброе утро! Есть регламентное задание, каждый день выполняется пересчет трудозатрат, если хоть одно значение, по которому считаются трудозатраты было изменено за этот день.
Регистры по которым проверяются данные измененные за день 5, а запрос по которому считается и записывается одинаковый. Отличия только в параметрах. Теперь вопрос - как можно разделить этот запрос чтобы можно было поставить условия если изменения в первом регистре, то использовать эти параметры, если во втором то другие?
1 Ly_Alena
 
09.09.15
06:36
Запрос по которому считаются "одинаковый для всех" я имела ввиду
2 Маратыч
 
09.09.15
06:37
ЯННП. Код-то хоть покажите.
3 Брегорьян
 
09.09.15
06:37
Если ИзмененияВРегистре(НомерРегистра)=1 Тогда
Запрос.УстановитьПараметр("Параметр", Параметр1);
ИначеЕсли ИзмененияВРегистре(НомерРегистра)=2 Тогда
Запрос.УстановитьПараметр("Параметр", Параметр2);
...
4 Ly_Alena
 
09.09.15
06:40
(3) если б так просто - я бы не спрашивала
как быть с параметрами которые в условии запроса прописываются?
|ГДЕ
            |    БезИтогов.Параметр1 = &Параметр1
            |    И БезИтогов.Параметр2= &Параметр2
5 Брегорьян
 
09.09.15
06:41
(4) а что не так?
6 Маратыч
 
09.09.15
06:42
(4) Дык их все равно через УстановитьПараметр запихивать надо, какая разница? Выкладывайте уже кусок кода целиком.
7 Ly_Alena
 
09.09.15
06:44
(2) код могу выложить примерно, те места которые меня интересуют. Код рабочий с одним регистром.
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Тариф.Период,
        |    Тариф.ТехнологическаяОперация,
        |    Тариф.Должность,
        |    Тариф.Действующая
        |ИЗ
        |    РегистрСведений.Тариф КАК Тариф
        |ГДЕ
        |    Тариф.Период >= &НачалоДня
        |    И Тариф.Период <= &КонецДня
        |    И Тариф.Действующая = ИСТИНА";

    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекущаяДата()));    
    Результат = Запрос.Выполнить();
    //Сообщить (НачалоДня);
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Запрос = Новый Запрос;    
        Запрос.Текст =
            "ВЫБРАТЬ...
идет запрос на расчет трудозатрат.
...
|ГДЕ
            |    БезИтогов.ТехнологическаяОперация = &ТехнологическаяОперация
            |    И БезИтогов.ДолжностьРаботника = &Должность
            |
            |СГРУППИРОВАТЬ ПО
            |    БезИтогов.Продукция,
            |    БезИтогов.Подразделение";

Запрос.УстановитьПараметр("ТехнологическаяОперация", ВыборкаДетальныеЗаписи.ТехнологическаяОперация);
        Запрос.УстановитьПараметр("Должность", ВыборкаДетальныеЗаписи.Должность);        
        
        Результат=Запрос.Выполнить().Выгрузить();
8 Ly_Alena
 
09.09.15
06:45
(5) что в самом запросе надо прописать в зависимости от измененного регистра условия.
параметры после запроса не проблема прописать.
9 Маратыч
 
09.09.15
06:48
Тэк-с, тут, судя по тому, что я вижу, нужно капитально рефакторить код. Ибо запрос в цикле.
10 Маратыч
 
09.09.15
06:50
Правильно будет создать пакет запросов в этом случае.
11 Ly_Alena
 
09.09.15
06:51
(9) да в цикле. Мне нужно что-то типа склеивания кода запроса. Есть что-то такое? Один кусок до параметров - потом условие по параметрам и второй кусок. Как это осуществить - не могу найти где такое делалось и как это называется чтобы искать в интернете.
12 Брегорьян
 
09.09.15
06:52
динамическое собирание текста запроса?
13 Ly_Alena
 
09.09.15
06:53
(12) да!
14 Брегорьян
 
09.09.15
06:53
или функция ТекстЗапросаДляРегистра(ВотЭтого)
15 Брегорьян
 
09.09.15
06:54
+(14) если ВотЭтого=20 Тогда Возврат "выбрать 40";
иначеесли ВотЭтого=50 Тогда Возврат "выбрать 25";
16 ИС-2
 
naïve
09.09.15
06:55
(12) либо использование конструкции "выбор когда"
17 Брегорьян
 
09.09.15
06:56
(16) прямо в секции ИЗ ;)
18 Ly_Alena
 
09.09.15
06:57
По названию "Динамическое собирание текста запроса" нашла кое-что инетересное:
"При ковырянии последнего релиза типовой бухгалтерии, нашел интересное решение такого вопроса. Меня самого интересовало как можно динамически формировать текст запроса, при этом не теряя возможности пользоваться конструктором, и вот нашел способ и прозрел, насколько все просто.
А метод состоит в следующем. Пишем текст запроса со всеми условиями (т.е. в вашем случае пишите в конце условие ГДЕ .....), потом делаем следующее:
Если НЕ <нужен склад> Тогда
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"где ........","");
КонецЕсли;
И у вас остается возможность пользоваться конструктором!"
19 Ly_Alena
 
09.09.15
06:58
(16) выбор когда во втором запросе? не понимаю как это можно использовать...
20 Брегорьян
 
09.09.15
06:59
(18) посмотри в 15. букв больше, но читать и править проще
21 Ly_Alena
 
09.09.15
07:00
(15) (20) совсем не поняла условия и где их прописать...
Возврат "выбрать 40"; - это параметры?
22 Ly_Alena
 
09.09.15
07:02
как это пишется? Основной запрос в ковычки помещается а потом условия "Где" - как к ниму прицепить - плюсиком?
23 Брегорьян
 
09.09.15
07:02
(21) это тексты запросов
24 PuhUfa
 
09.09.15
07:05
(22) какие параметры запроса у тебя динамически меняются?
25 Ly_Alena
 
09.09.15
07:07
только
|ГДЕ
            |    БезИтогов.ТехнологическаяОперация = &ТехнологическаяОперация
            |    И БезИтогов.ДолжностьРаботника = &Должность

Может быть 1 параметр, может быть два или три
26 Ly_Alena
 
09.09.15
07:08
Хотела спросить, а если в запросе прописать условия на все параметры. а ниже запроса прописать что-то такое

Запрос.УстановитьПараметр("ТехнологическаяОперация", ?(ВыборкаДетальныеЗаписи.ТехнологическаяОперация+"",Неопределено,ВыборкаДетальныеЗаписи.ТехнологическаяОперация));

на каждый параметр, с условиями конечно по регистрам
27 Ly_Alena
 
09.09.15
07:09
Запрос.УстановитьПараметр("ТехнологическаяОперация", ?(ВыборкаДетальныеЗаписи.ТехнологическаяОперация="",Неопределено,ВыборкаДетальныеЗаписи.ТехнологическаяОперация));
28 Ly_Alena
 
09.09.15
07:09
Опечаталась с плюсом
29 Брегорьян
 
09.09.15
07:10
(26) где &ТехнологическаяОперация=Неопределено или Таблица.ТехнологическаяОперация=&ТехнологическаяОперация
30 Ly_Alena
 
09.09.15
07:10
или не равно пустые кавычки а что-то типа null или еще что-нибудь в этом роде... не трогая запрос
31 PuhUfa
 
09.09.15
07:11
(25)
ТекстЗапроса = "Мой текст запроса до ГДЕ"
Если Где1 тогда
ТекстЗапроса = ТекстЗапроса + "
|ГДЕ
            |    БезИтогов.ТехнологическаяОперация = &ТехнологическаяОперация
ИначеЕсли Где2 тогда
ТекстЗапроса = ТекстЗаапроса + "
|ГДЕ
            |    БезИтогов.ТехнологическаяОперация = &ТехнологическаяОперация
            |    И БезИтогов.ДолжностьРаботника = &Должность
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Результат = запрос.выпольнить()
32 Ly_Alena
 
09.09.15
07:12
(31) ух-ты! сейчас попробую
33 Брегорьян
 
09.09.15
07:15
(32) ты в (18) нашла почти то же
34 Ly_Alena
 
09.09.15
07:30
(31) а как написать если не нужен не один параметр?
35 Ly_Alena
 
09.09.15
07:30
пустые кавычки?
36 Брегорьян
 
09.09.15
07:30
(34) "не нужен ни один параметр"
37 Ly_Alena
 
09.09.15
07:57
(36) пардоньте, опечаталась
38 patria0muerte
 
09.09.15
08:04
В тексте запроса напиши:

|ГДЕ &ПараметрыЗапроса

И потом в зависимости от этого формируй строку с тем условием которое необходимо и делай:

СтрЗаменить (Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия)

Если параметры не нужны вовсе, то делай:

СтрЗаменить (Запрос.Текст, "&ПараметрыЗапроса", "ИСТИНА")
39 patria0muerte
 
09.09.15
08:05
(38) В этом случае и конструктор запроса никуда не денется, и параметры сможешь рисовать какие надо в зависимости от условий
40 Ly_Alena
 
09.09.15
08:11
(39) запуталась. СтрЗаменить пишу после запроса перед параметрами?
41 Брегорьян
 
09.09.15
08:12
(40) до Выполнить()
42 Ly_Alena
 
09.09.15
08:23
Решила попробовать на двух регистрах сначала. И сразу возникло несколько вопросов:
1. Параметры "Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекущаяДата()));" куда девать и можно ли их присобачить вместе с текстом запроса?
2. (38) текст условия прописывать если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Должность) или как?

Запрос = Новый Запрос;
    ТекстЗапросаЭлектроэнергия =
        "ВЫБРАТЬ
        |    Электроэнергия.Период
        |ИЗ
        |    РегистрСведений.ТарифыНаЭлектроэнергию.СрезПоследних(, ) КАК Электроэнергия
        |ГДЕ
        |    Электроэнергия.Период >= &НачалоДня
        |    И Электроэнергия.Период <= &КонецДня";

ТекстЗапросаТарифы =
            "ВЫБРАТЬ
            |    Тарифы.Период,
            |    Тарифы.ТехнологическаяОперация,
            |    Тарифы.Должность,
            |    Тарифы.Действующая
            |ИЗ
            |    РегистрСведений.Тарифы КАК Тарифы
            |ГДЕ
            |    Тарифы.Период >= &НачалоДня
            |    И Тарифы.Период <= &КонецДня
            |    И Тарифы.Действующая = ИСТИНА";

Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекущаяДата()));

Запрос.Текст = ТекстЗапросаЭлектроэнергия;
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Если ВыборкаДетальныеЗаписи.Количество()=0 Тогда
        Запрос.Текст = ТекстЗапросаТарифы;
        Результат = Запрос.Выполнить();
        ВыборкаДетальныеЗаписи = Результат.Выбрать();
        Если ВыборкаДетальныеЗаписи.Количество()=0 Тогда
            
        Иначе
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Запрос = Новый Запрос;    
        Запрос.Текст =...
|ГДЕ
            |    &ПараметрыЗапроса
            |
            |СГРУППИРОВАТЬ ПО
            |    БезИтогов.Продукция,
            |    БезИтогов.Подразделение";

Запрос.УстановитьПараметр("ТехнологическаяОперация", ВыборкаДетальныеЗаписи.ТехнологическаяОперация);
        Запрос.УстановитьПараметр("Должность", ВыборкаДетальныеЗаписи.Должность);
        Запрос.УстановитьПараметр("Подразделение", ВыборкаДетальныеЗаписи.Подразделение);
        
        Результат=Запрос.Выполнить().Выгрузить();
        
        Если Результат.Количество() > 0 Тогда
            Для Каждого Стр из Результат Цикл
...
43 patria0muerte
 
09.09.15
08:45
Давай разберемся. Ты пишешь:

Запрос по которому считаются "одинаковый для всех"

но тут же у тебя в ТекстЗапросаЭлектроэнергия и ТекстЗапросаТарифы совсем разные запросы. Что то тут не вяжется.

То, что я предлагаю в общем случае выглядит так:

Запрос = Новый Запрос;
Запрос.Текст = "
///Здесь твой "одинаковый для всех, текст запроса"
| ГДЕ &ПараметрыЗапроса
/// Здесь далее все твои группировки, итоги и прочее
";

Если Условие1 Тогда
            ТекстУсловия = ///Тут пишешь свои условия вида: "БезИтогов.Параметр1 = &Параметр1 И БезИтогов.Параметр2 = &Параметр2"
            СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);
            Запрос.УстановитьПараметр("Параметр1", ЗначениеПараметра1);
            Запрос.УстановитьПараметр("Параметр2", ЗначениеПараметра2);
Если Условие2 Тогда
//Аналогично предыдущему
Иначе
            СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", "ИСТИНА");
КонецЕсли;

Впринципе и все...

Если по условиям разные разные то тут можно также поступить, т.е. в секции ИЗ прописать:
            |ИЗ
            |    &ИмяТаблици КАК Тарифы
А далее:
СтрЗаменить(Запрос.Текст, "&ИмяТаблицы", "РегистрСведений.ТарифыНаЭлектроэнергию.СрезПоследних(, )") // к примеру
44 patria0muerte
 
09.09.15
08:46
(43) *Если по условиям разные регистры
45 patria0muerte
 
09.09.15
08:48
А вообще в (42) какая-то дичь.

Может стоит подробно описать чего хочешь в итоге получить и показать структуру того, с чем работаем.
46 Ly_Alena
 
09.09.15
08:53
(43) (45) я с самого начала описывала. Есть 5 регистров, которые каждый день проверяют на изменения. Если изменения были - то пересчитываются трудозатраты по той продукции, где участвует та или иная технологическая операция (если качается регистра тарифы), если регистр изменен другой, то допустим продукция у которой коэффициент отпускных изменился.

Поэтому сначала идут запросы по этим регистрам с проверкой менялось ли сегодня что-то. Если менялось то пересчитываем трудозатраты по определенной продукции.
47 Ly_Alena
 
09.09.15
08:55
Поэтому я и подумала что ТекстУсловия = Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ТехнологическаяОперация) Тогда...

Может быть 0, 1, 2 или 3 параметра.
48 Ly_Alena
 
09.09.15
08:59
Не понятно как можно несколько условий в этой конструкции поместить...
СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);
49 Ly_Alena
 
09.09.15
08:59
Т.е. и технологическую операцию и должность например
50 Брегорьян
 
09.09.15
08:59
(48) ТекстУсловия="ой сколько тут несколько условий в этой конструкции собралось..."
51 ДенисЧ
 
09.09.15
09:00
(48)
текстУсловия = "
|ГДЕ Номенклатура = &ном
|И Склад = &склад
|И Автор.Наименование ПОДОБНО ""%ламер%""
|";
52 Ly_Alena
 
09.09.15
10:44
(51) Особенно Ваш пример очень доходчивый... Почти забыла что этот форум только для супер профессионалов :)
53 Fragster
 
гуру
09.09.15
10:49
Надо использовать построитель запроса, добавить поля в условия на вкладке "построитель", и дальше устанавливать отбор по нужным полям.
54 Ly_Alena
 
09.09.15
11:08
(53) построителем никогда не пользовалась...
55 Брегорьян
 
09.09.15
11:14
(54) держу пари, бывали времена, когда ты и запросами не пользовалась
56 Ly_Alena
 
09.09.15
11:47
Запрос = Новый Запрос;
    ТекстЗапросаЭлектроэнергия =
"ВЫБРАТЬ
        |    Электроэнергия.Период
        |ИЗ
        |    РегистрСведений.Электроэнергия.СрезПоследних(, ) КАК Электроэнергия
        |ГДЕ
        |    Электроэнергия.Период >= &НачалоДня
        |    И Электроэнергия.Период <= &КонецДня";

ТекстЗапросаТарифы =
            "ВЫБРАТЬ
            |    Тарифы.Период,
            |    Тарифы.ТехнологическаяОперация,
            |    Тарифы.Должность,
            |    Тарифы.Действующая
            |ИЗ
            |    РегистрСведений.Тарифы КАК Тарифы
            |ГДЕ
            |    Тарифы.Период >= &НачалоДня
            |    И Тарифы.Период <= &КонецДня
            |    И Тарифы.Действующая = ИСТИНА";

Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекущаяДата()));

    Запрос.Текст = ТекстЗапросаЭлектроэнергия;
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Если ВыборкаДетальныеЗаписи.Количество()>0 Тогда
        ТекстУсловия = "ИСТИНА"

        ИначеЕсли ВыборкаДетальныеЗаписи.Количество()>0 Тогда
            
        ТекстУсловия = "
        |ГДЕ
        |    БезИтогов.ТехнологическаяОперация = &ТехнологическаяОперация
        |    И БезИтогов.ДолжностьРаботника = &Должность";
    КонецЕсли;    
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Запрос = Новый Запрос;    
        Запрос.Текст =
            "ВЫБРАТЬ
....
|ГДЕ
|    &ПараметрыЗапроса
|
|СГРУППИРОВАТЬ ПО
|    БезИтогов.Продукция,
|    БезИтогов.Подразделение";

Запрос.УстановитьПараметр("ТехнологическаяОперация", ВыборкаДетальныеЗаписи.ТехнологическаяОперация);
        Запрос.УстановитьПараметр("Должность", ВыборкаДетальныеЗаписи.Должность);        
        
        СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);

        Результат=Запрос.Выполнить().Выгрузить();
        
        Если Результат.Количество() > 0 Тогда
...

Выдает ошибку:
строенная функция может быть использована только в выражении. (СтрЗаменить)

Что я делаю не так?
57 Брегорьян
 
09.09.15
11:48
не пользуешься тем, что тебе возвращает СтрЗаменить
58 Ly_Alena
 
09.09.15
11:54
(57) я не там пользуюсь СтрЗаменить или не так пользуюсь? Что значит не пользуюсь? Перед "Результат=Запрос.Выполнить().Выгрузить();" стоит же
59 Брегорьян
 
09.09.15
11:58
(58) СтрЗаменить тебе пытается вернуть в никуда результат своей работы сильно и обижается
60 ЧеловекДуши
 
09.09.15
12:01
(8) А нафига он в цикле?
Я сперва подумал, мож человек на каждую дату. А нет тупо делает то, что можно и в одном цикле :)
61 ЧеловекДуши
 
09.09.15
12:02
(56) Бред № 2... переписывай, но уже близка к решению :)
62 ЧеловекДуши
 
09.09.15
12:04
+(56) Попробуй написать все одним запросом :)

Универсальная консоль отчетов
http://catalog.mista.ru/public/16782/files/

Вот обработка, тебе поможет написать нормальный, один запрос. При этом еще и оптимизировать.
63 Ly_Alena
 
09.09.15
12:14
(60) в цикле он для того чтобы, пересчитать на все (например) технологические операции - тарифы на которые изменились, или на все должности которые изменились
64 Ly_Alena
 
10.09.15
08:28
{ОбщийМодуль.МодульРегламентныхЗаданий.Модуль(774)}: Ошибка при вызове метода контекста (Выполнить)
по причине:

по причине:
{(75, 2)}: Не задано значение параметра "ПараметрыЗапроса"
<<?>>&ПараметрыЗапроса
65 Ly_Alena
 
10.09.15
08:28
|ГДЕ
            |    &ПараметрыЗапроса
            |
            |СГРУППИРОВАТЬ ПО
            |    БезИтогов.Продукция,
            |    БезИтогов.Подразделение";
                
        Результат = СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);    
        Результат=Запрос.Выполнить().Выгрузить();
66 Ly_Alena
 
10.09.15
08:29
ТекстУсловия = "
        |ГДЕ ТехнологическаяОперация = &ТехнологическаяОперация
        |";
67 Ly_Alena
 
10.09.15
08:29
Задолбала уже эта ошибка! Помогите пожалуйста, что не так?
68 Trotter
 
10.09.15
08:35
Делай запрос с начало для определения изменений, проверила, если поменялись, вызываешь другую функцию с другим запросом.
Зачем лепить всё в одно ?
69 Ly_Alena
 
10.09.15
08:40
я так и сделала. сейчас все выложу
70 Ly_Alena
 
10.09.15
08:43
Процедура ЗаписьВРегистрТрудозатрат() Экспорт
    ///РазмерТарифныхСтавок//////////////////////////////////////////////////////////////////////////
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Мощность.Период,
        |    Мощность.ТехнологическаяОперация
        |ИЗ
        |    РегистрСведений.Мощность КАК Мощность
        |ГДЕ
        |    Мощность.Период >= &НачалоДня
        |    И Мощность.Период <= &КонецДня";

    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекущаяДата()));
    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ТекстУсловия = "
        |ГДЕ ТехнологическаяОперация = &ТехнологическаяОперация
        |";
        ТехнологическаяОперация = ВыборкаДетальныеЗаписи.ТехнологическаяОперация;
        РасчетТрудозатратИЭлектроэнергии(ТехнологическаяОперация,ТекстУсловия);
    КонецЦикла;
КонецПроцедуры


Процедура РасчетТрудозатратИЭлектроэнергии(ТехнологическаяОперация,ТекстУсловия)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
...
|ГДЕ
|    &ПараметрыЗапроса
|
|СГРУППИРОВАТЬ ПО
|    БезИтогов.Продукция,
|    БезИтогов.Подразделение";
                
Результат = СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);
        Запрос.УстановитьПараметр("ТехнологическаяОперация", ТехнологическаяОперация);
71 Брегорьян
 
10.09.15
08:44
>Результат = СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);
это очень хорошо. а где ты пользуешься этим результатом?
72 Ly_Alena
 
10.09.15
08:45
(71)
Результат = СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);
        Запрос.УстановитьПараметр("ТехнологическаяОперация", ТехнологическаяОперация);
Результат=Запрос.Выполнить().Выгрузить();
73 Ly_Alena
 
10.09.15
08:46
(71) Если Результат.Количество() > 0 Тогда
    Для Каждого Стр из Результат Цикл
74 Ly_Alena
 
10.09.15
08:57
По ходу дела либо все совсем просто, либо глушняк... (
75 Брегорьян
 
10.09.15
09:13
(73) я про тот результат, который стрзаменить
76 Ly_Alena
 
10.09.15
09:23
(75) а я разве про другой?
77 Брегорьян
 
10.09.15
09:35
(76) а ты показываешь про Выполнить(). причём с неизменным текстом запроса
78 Ly_Alena
 
10.09.15
09:37
Я так поняла:
Результат = СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);
в запросе меняет
|ГДЕ
|    &ПараметрыЗапроса

далее выполняет запрос - разве нет?
79 ДенисЧ
 
10.09.15
09:38
(78) Запросу новый текст кто будет устанавливать?
Лично Борис Георгиевич?
80 Ly_Alena
 
10.09.15
09:40
Процедура ЗаписьВРегистрТрудозатрат() Экспорт
    ///РазмерТарифныхСтавок//////////////////////////////////////////////////////////////////////////

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Мощность.Период,
        |    Мощность.ТехнологическаяОперация
        |ИЗ
        |    РегистрСведений.Мощность КАК Мощность
        |ГДЕ
        |    Мощность.Период >= &НачалоДня
        |    И Мощность.Период <= &КонецДня";

    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекущаяДата()));
    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ТекстУсловия = "БезИтогов.ТехнологическаяОперация = &ТехнологическаяОперация";
        ТехнологическаяОперация = ВыборкаДетальныеЗаписи.ТехнологическаяОперация;
        РасчетТрудозатратИЭлектроэнергии(ТехнологическаяОперация,ТекстУсловия);
    КонецЦикла;
КонецПроцедуры
81 Ly_Alena
 
10.09.15
09:41
Результат = СтрЗаменить("|ГДЕ
            |    &ПараметрыЗапроса", "&ПараметрыЗапроса", ТекстУсловия);
82 Ly_Alena
 
10.09.15
09:41
Так тоже пробовала
83 ДенисЧ
 
10.09.15
09:41
84 Ly_Alena
 
10.09.15
09:42
Результат = СтрЗаменить("&ПараметрыЗапроса", "&ПараметрыЗапроса", ТекстУсловия); и так
85 Ly_Alena
 
10.09.15
09:46
Запрос.Текст = СтрЗаменить???
86 ДенисЧ
 
10.09.15
09:49
(85) Бинго!
87 Ly_Alena
 
10.09.15
11:28
ТекстУсловия = "БезИтогов.ТехнологическаяОперация = &ТехнологическаяОперация";

Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);
Запрос.УстановитьПараметр("ТехнологическаяОперация", ТехнологическаяОперация);
Результат=Запрос.Выполнить().Выгрузить();

Вообще задание перестало запускаться...
88 Брегорьян
 
10.09.15
11:33
(87) а что с ним?
89 Ly_Alena
 
10.09.15
11:34
(88) исправила:
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ПараметрыЗапроса", ТекстУсловия);

Регламентное не выполняется - по журналу смотрю.
90 Брегорьян
 
10.09.15
11:35
(89) думаешь, старт регзадания как-то связан с этой правкой?
91 GANR
 
10.09.15
11:50
(0) Для регистрации изменений можно воспользоваться объектом метаданных под названием ПЛАНЫ ОБМЕНА.
92 Ly_Alena
 
10.09.15
12:06
До этого приходилось постоянно ставить и снимать галочку - предопределнное, переставлять время. Было видно в журнале ошибку. а теперь с галочкой как не балуешься - мое задание не запускается (
93 Брегорьян
 
10.09.15
12:06
(92) ты свой код сначала отладь, потом задание воюй
94 Ly_Alena
 
10.09.15
12:09
А как я его отлажу, если проверить не могу?
95 Брегорьян
 
10.09.15
12:11
(94) пошагово
96 Ly_Alena
 
10.09.15
12:16
(95) пошагово код работает - поставила на закрытие окошка изменения. все пересчитало... а вот регламентное теперь не запускается...
97 Брегорьян
 
10.09.15
12:18
о, поздравляю. консоль заданий в руки. можешь расставить ЗаписиЖурналаРегистрации в своей .. этой..
98 Ly_Alena
 
10.09.15
12:20
(97) спасибо
99 Ly_Alena
 
10.09.15
12:24
Нашла ошибку с помощью консоли! Спасибо всем большое! Тема закрыта.
100 Брегорьян
 
10.09.15
12:24
а сто