Имя: Пароль:
1C
1С v8
Как программно модифицировать текст запроса?
0 echo77
 
04.04.14
10:08
Документ ОтражениеЗарплатыВРеглУчете

Запрос.Текст =
    "ВЫБРАТЬ
    |    ВзносыДоходыПоВР.Сотрудник,
    |    ВзносыДоходыПоВР.ФизЛицо,
    |    ВзносыДоходыПоВР.ВидРасчета,
    |    БУДоходыПоВР.ОблагаетсяЕНВД,
    |    ВзносыДоходыПоВР.ОблагаетсяПоДополнительномуТарифу,
    |    ВзносыДоходыПоВР.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам,
    |    ВзносыДоходыПоВР.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией,
    |    ВзносыДоходыПоВР.ПериодРегистрации,
    |    ВзносыДоходыПоВР.ПериодДействия,
    |    ВзносыДоходыПоВР.Результат,
    |    БУДоходыПоВР.СчетДт,
    |    БУДоходыПоВР.СубконтоДт1,
    |    БУДоходыПоВР.СубконтоДт2,
    |    БУДоходыПоВР.СубконтоДт3,
    |    БУДоходыПоВР.СчетДтНУ,
    |    БУДоходыПоВР.СубконтоДтНУ1,
    |    БУДоходыПоВР.СубконтоДтНУ2,
    |    БУДоходыПоВР.СубконтоДтНУ3,
    |    БУДоходыПоВР.СпособРаспределенияЗатрат,
    |    БУДоходыПоВР.ОтражениеВУСН,
    |    БУДоходыПоВР.Результат КАК РезультатБУ,
    |    БУДоходыПоВР.ПодразделениеДт,
    |    БУДоходыПоВР.ПодразделениеКт,
    |    БУДоходыПоВР.ПодменятьСчетДтНаРБП,
    |    ВзносыДоходыПоВР.ВходитВБазуПФР,
    |    ВзносыДоходыПоВР.ВходитВБазуФСС,
    |    ВзносыДоходыПоВР.ВходитВБазуФОМС,
    |    БУДоходыПоВР.ЭтоСчет84,
    |    БУДоходыПоВР.ЭтоСчет69,
    |    БУДоходыПоВР.ЭтоОтпуск
    |ПОМЕСТИТЬ ВТ_ВзносыДоходыБУДоходы
    |ИЗ
    |    ВТ_ВзносыДоходыПоВР КАК ВзносыДоходыПоВР
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_БУДоходыПоВР КАК БУДоходыПоВР
    |        ПО ВзносыДоходыПоВР.Сотрудник = БУДоходыПоВР.Сотрудник
    |            И ВзносыДоходыПоВР.ВидРасчета = БУДоходыПоВР.ВидРасчета
    |            И ВзносыДоходыПоВР.ПериодРегистрации = БУДоходыПоВР.ПериодРегистрации
    |            И ВзносыДоходыПоВР.ПериодДействия = БУДоходыПоВР.ПериодДействия
    |            И ВзносыДоходыПоВР.ОблагаетсяЕНВД = БУДоходыПоВР.ОблагаетсяЕНВД
    |            И ВзносыДоходыПоВР.ОблагаетсяПоДополнительномуТарифу = БУДоходыПоВР.ОблагаетсяПоДополнительномуТарифу
    |            И ВзносыДоходыПоВР.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам = БУДоходыПоВР.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам
    |            И ВзносыДоходыПоВР.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией = БУДоходыПоВР.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    БУДоходыСводПоВР.Сотрудник КАК Сотрудник,
    |    БУДоходыСводПоВР.ФизЛицо,
    |    БУДоходыСводПоВР.ВидРасчета КАК ВидРасчета,
    |    БУДоходыСводПоВР.ПериодРегистрации КАК ПериодРегистрации,
    |    БУДоходыСводПоВР.ПериодДействия КАК ПериодДействия,
    |    СУММА(БУДоходыСводПоВР.Результат) КАК Результат,
    |    БУДоходыСводПоВР.ОблагаетсяЕНВД КАК ОблагаетсяЕНВД,
    |    БУДоходыСводПоВР.ОблагаетсяПоДополнительномуТарифу,
    |    БУДоходыСводПоВР.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам,
    |    БУДоходыСводПоВР.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией
    |ПОМЕСТИТЬ ВТ_БУДоходыСводПоВР
    |ИЗ
    |    ВТ_БУДоходыПоВР КАК БУДоходыСводПоВР
    |
    |СГРУППИРОВАТЬ ПО
    |    БУДоходыСводПоВР.Сотрудник,
    |    БУДоходыСводПоВР.ФизЛицо,
    |    БУДоходыСводПоВР.ВидРасчета,
    |    БУДоходыСводПоВР.ОблагаетсяЕНВД,
    |    БУДоходыСводПоВР.ПериодРегистрации,
    |    БУДоходыСводПоВР.ПериодДействия,
    |    БУДоходыСводПоВР.ОблагаетсяПоДополнительномуТарифу,
    |    БУДоходыСводПоВР.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам,
    |    БУДоходыСводПоВР.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    ПериодРегистрации,
    |    ПериодДействия,
    |    Сотрудник,
    |    ВидРасчета,
    |    ОблагаетсяЕНВД
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    БУДоходыСводПоВР.ФизЛицо,
    |    ВзносыДоходыБУДоходы.СчетДт,
    |    ВзносыДоходыБУДоходы.СубконтоДт1,
    |    ВзносыДоходыБУДоходы.СубконтоДт2,
    |    ВзносыДоходыБУДоходы.СубконтоДт3,
    |    ВзносыДоходыБУДоходы.СчетДтНУ,
    |    ВзносыДоходыБУДоходы.СубконтоДтНУ1,
    |    ВзносыДоходыБУДоходы.СубконтоДтНУ2,
    |    ВзносыДоходыБУДоходы.СубконтоДтНУ3,
    |    ВзносыДоходыБУДоходы.СпособРаспределенияЗатрат,
    |    ВзносыДоходыБУДоходы.ОтражениеВУСН,
    |    ВзносыДоходыБУДоходы.ПодразделениеДт,
    |    ВзносыДоходыБУДоходы.ПодразделениеКт,
    |    ВзносыДоходыБУДоходы.ПодменятьСчетДтНаРБП,
    |    ВЫБОР
    |        КОГДА ВзносыДоходыБУДоходы.ОблагаетсяЕНВД
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуПФР)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаПФР,
    |    ВЫБОР
    |        КОГДА (НЕ ВзносыДоходыБУДоходы.ОблагаетсяЕНВД)
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуПФР)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаПФР_ЕНВД,
    |    ВЫБОР
    |        КОГДА ВзносыДоходыБУДоходы.ОблагаетсяЕНВД
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуФСС)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаФСС,
    |    ВЫБОР
    |        КОГДА (НЕ ВзносыДоходыБУДоходы.ОблагаетсяЕНВД)
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуФСС)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаФСС_ЕНВД,
    |    ВЫБОР
    |        КОГДА ВзносыДоходыБУДоходы.ОблагаетсяЕНВД
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуФОМС)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаФОМС,
    |    ВЫБОР
    |        КОГДА (НЕ ВзносыДоходыБУДоходы.ОблагаетсяЕНВД)
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуФОМС)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаФОМС_ЕНВД,
    |    ВЫБОР
    |        КОГДА (НЕ ВзносыДоходыБУДоходы.ОблагаетсяПоДополнительномуТарифу)
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуПФР)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаДопТариф,
    |    ВЫБОР
    |        КОГДА (НЕ ВзносыДоходыБУДоходы.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам)
    |                ИЛИ (НЕ ВзносыДоходыБУДоходы.ВходитВБазуПФР)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаДопТарифШахтеры,
    |    ВЫБОР
    |        КОГДА ВзносыДоходыБУДоходы.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией = ЗНАЧЕНИЕ(Перечисление.ВидыРаботСДосрочнойПенсией.ПодземныеИВредныеРаботы)
    |                И ВзносыДоходыБУДоходы.ВходитВБазуПФР
    |                И БУДоходыСводПоВР.Результат <> 0
    |            ТОГДА ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК БазаДопТарифПодземныеИВредныеРаботы,
    |    ВЫБОР
    |        КОГДА ВзносыДоходыБУДоходы.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией = ЗНАЧЕНИЕ(Перечисление.ВидыРаботСДосрочнойПенсией.ТяжелыеИПрочиеРаботы)
    |                И ВзносыДоходыБУДоходы.ВходитВБазуПФР
    |                И БУДоходыСводПоВР.Результат <> 0
    |            ТОГДА ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК БазаДопТарифТяжелыеИПрочиеРаботы,
    |    ВЫБОР
    |        КОГДА (НЕ ВзносыДоходыБУДоходы.ВходитВБазуФСС)
    |                ИЛИ БУДоходыСводПоВР.Результат = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВзносыДоходыБУДоходы.Результат * ВзносыДоходыБУДоходы.РезультатБУ / БУДоходыСводПоВР.Результат
    |    КОНЕЦ КАК БазаФСС_НС,
    |    ВзносыДоходыБУДоходы.ПериодРегистрации,
    |    ВзносыДоходыБУДоходы.ПериодДействия,
    |    ВзносыДоходыБУДоходы.ОблагаетсяЕНВД,
    |    ВзносыДоходыБУДоходы.ЭтоСчет84,
    |    ВзносыДоходыБУДоходы.ЭтоСчет69,
    |    ВзносыДоходыБУДоходы.ЭтоОтпуск
    |ПОМЕСТИТЬ ВТ_Коэффициенты
    |ИЗ
    |    ВТ_ВзносыДоходыБУДоходы КАК ВзносыДоходыБУДоходы
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_БУДоходыСводПоВР КАК БУДоходыСводПоВР
    |        ПО ВзносыДоходыБУДоходы.Сотрудник = БУДоходыСводПоВР.Сотрудник
    |            И ВзносыДоходыБУДоходы.ПериодРегистрации = БУДоходыСводПоВР.ПериодРегистрации
    |            И ВзносыДоходыБУДоходы.ПериодДействия = БУДоходыСводПоВР.ПериодДействия
    |            И ВзносыДоходыБУДоходы.ОблагаетсяЕНВД = БУДоходыСводПоВР.ОблагаетсяЕНВД
    |            И ВзносыДоходыБУДоходы.ВидРасчета = БУДоходыСводПоВР.ВидРасчета
    |            И ВзносыДоходыБУДоходы.ОблагаетсяПоДополнительномуТарифу = БУДоходыСводПоВР.ОблагаетсяПоДополнительномуТарифу
    |            И ВзносыДоходыБУДоходы.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам = БУДоходыСводПоВР.ОблагаетсяВзносамиНаДоплатуКПенсииШахтерам
    |            И ВзносыДоходыБУДоходы.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией = БУДоходыСводПоВР.ОблагаетсяВзносамиЗаЗанятыхНаРаботахСДосрочнойПенсией";

В последней выборке, которая помещается в ВТ_Коэффициенты хочу добавить поле
БУДоходыСводПоВР.Сотрудник

Вот таким кодом:
Запрос.Текст = СтрЗаменить(Запрос.Текст,
    "|ВЫБРАТЬ
    |    БУДоходыСводПоВР.ФизЛицо,
    |    ВзносыДоходыБУДоходы.СчетДт,",
    "|ВЫБРАТЬ
    |    БУДоходыСводПоВР.Сотрудник,
    |    БУДоходыСводПоВР.ФизЛицо,
    |    ВзносыДоходыБУДоходы.СчетДт");

Не находит текст "|ВЫБРАТЬ
    |    БУДоходыСводПоВР.ФизЛицо,
    |    ВзносыДоходыБУДоходы.СчетДт,"
1 Ненавижу 1С
 
гуру
04.04.14
10:09
а так?

"ВЫБРАТЬ
    |    БУДоходыСводПоВР.ФизЛицо,
    |    ВзносыДоходыБУДоходы.СчетДт,"
2 echo77
 
04.04.14
10:10
сейчас попробую
3 echo77
 
04.04.14
10:14
(1) Да, получилось. Спасибо!
4 echo77
 
04.04.14
10:22
А как лучше изменять текст запроса, чтобы при обновлении не было ошибок при внесении изменений
5 PR
 
04.04.14
10:23
6 echo77
 
04.04.14
10:26
т.е. предлагаете переходить на 8.3 и использовать объектную модель запроса?
7 PR
 
04.04.14
10:26
(6) Нет. Этого пока нет. Будет скоро :))