Синтаксическая ошибка в запросе |
Я |
01.03.15 — 10:40
Добрый день
1С 8.0.18.2. самописная конфа.
При сформировании отчета валовая прибыль выдает ошибку:
{Форма.Форма(107)}: Ошибка при вызове метода контекста (Выполнить): {(29, 8)}: Синтаксическая ошибка «КАК»
КОНЕЦ <<?>>КАК Рентабельность
РезультатЗапроса = Запрос.Выполнить();
Не понимаю, как исправить. Помогите, пожалуйста
Часть текста запроса:
Запрос = Новый Запрос(«ВЫБРАТЬ
| ДвиженияПоПартиям.Период,
| ДвиженияПоПартиям.Регистратор,
| ДвиженияПоПартиям.КодОперации,
| ДвиженияПоПартиям.Номенклатура КАК Номенклатура,
| ДвиженияПоПартиям.Склад КАК Склад,
| ДвиженияПоПартиям.Партия КАК Партия,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -1*0 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Количество КАК Количество,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего*0 ИНАЧЕ
| ДвиженияПоПартиям.СуммаПрод КОНЕЦ КАК Выручка,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -1 ИНАЧЕ 0 КОНЕЦ * ДвиженияПоПартиям.Количество КАК КоличествоВозврат,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего ИНАЧЕ
| 0 КОНЕЦ КАК ВыручкаВозврат,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -1 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Сумма КАК Себестоимость,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма КОНЕЦ КАК ВаловаяПрибыль,
| ВЫБОР
| КОГДА ЕСТЬNULL(ДвиженияПоПартиям.Сумма, 0) = 0
| ТОГДА 0
| ИНАЧЕ
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100
| КОНЕЦ КАК Наценка,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100
| КОНЕЦ КАК Рентабельность
|ИЗ
| РегистрНакопления.ДвиженияПоПартиям КАК ДвиженияПоПартиям
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КассовыйЧек.Покупки КАК Чеки
| ПО Чеки.Ссылка = ДвиженияПоПартиям.Регистратор
| И Чеки.НомерСтроки = ДвиженияПоПартиям.НомерСтроки
|ГДЕ
| ДвиженияПоПартиям.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И ДвиженияПоПартиям.Регистратор ССЫЛКА Документ.КассовыйЧек» +
?(МассивНоменклатуры.Количество() > 0, » И ДвиженияПоПартиям.Номенклатура В ИЕРАРХИИ(&МассивНоменклатуры)», «») +
?(СкладЗаполнен = Истина, » И ДвиженияПоПартиям.Склад В ИЕРАРХИИ(&Склад)», «») +
?(ПартияЗаполнен = Истина, » И ДвиженияПоПартиям.Партия В ИЕРАРХИИ(&Партия)», «») + »
|ИТОГИ
| СУММА(КоличествоВозврат),
| СУММА(ВыручкаВозврат),
| СУММА(Количество),
| СУММА(Выручка),
| СУММА(Себестоимость),
| СУММА(ВаловаяПрибыль),
| СУММА(Наценка),
| СУММА(Рентабельность)
|ПО
| ОБЩИЕ,
| Номенклатура ИЕРАРХИЯ»);
Запрос.УстановитьПараметр(«КВ», Перечисления.КодыОпераций.ВозвратОтПокупателя);
Запрос.УстановитьПараметр(«НачалоПериода», НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр(«КонецПериода», КонецДня(КонецПериода));
Запрос.УстановитьПараметр(«МассивНоменклатуры», МассивНоменклатуры);
Запрос.УстановитьПараметр(«Склад», Склад);
Запрос.УстановитьПараметр(«Партия», Партия);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
ОбработкаПрерыванияПользователя();
Макет = ПолучитьМакет(«МакетВариант1»);
1 — 01.03.15 — 10:41
Запрос = Новый Запрос(«ВЫБРАТЬ
| ДвиженияПоПартиям.Период,
| ДвиженияПоПартиям.Регистратор,
| ДвиженияПоПартиям.КодОперации,
| ДвиженияПоПартиям.Номенклатура КАК Номенклатура,
| ДвиженияПоПартиям.Склад КАК Склад,
| ДвиженияПоПартиям.Партия КАК Партия,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -1*0 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Количество КАК Количество,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего*0 ИНАЧЕ
| ДвиженияПоПартиям.СуммаПрод КОНЕЦ КАК Выручка,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -1 ИНАЧЕ 0 КОНЕЦ * ДвиженияПоПартиям.Количество КАК КоличествоВозврат,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего ИНАЧЕ
| 0 КОНЕЦ КАК ВыручкаВозврат,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -1 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Сумма КАК Себестоимость,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма КОНЕЦ КАК ВаловаяПрибыль,
| ВЫБОР
| КОГДА ЕСТЬNULL(ДвиженияПоПартиям.Сумма, 0) = 0
| ТОГДА 0
| ИНАЧЕ
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100
| КОНЕЦ КАК Наценка,
| ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100
| КОНЕЦ КАК Рентабельность
|ИЗ
| РегистрНакопления.ДвиженияПоПартиям КАК ДвиженияПоПартиям
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КассовыйЧек.Покупки КАК Чеки
| ПО Чеки.Ссылка = ДвиженияПоПартиям.Регистратор
| И Чеки.НомерСтроки = ДвиженияПоПартиям.НомерСтроки
|ГДЕ
| ДвиженияПоПартиям.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И ДвиженияПоПартиям.Регистратор ССЫЛКА Документ.КассовыйЧек» +
?(МассивНоменклатуры.Количество() > 0, » И ДвиженияПоПартиям.Номенклатура В ИЕРАРХИИ(&МассивНоменклатуры)», «») +
?(СкладЗаполнен = Истина, » И ДвиженияПоПартиям.Склад В ИЕРАРХИИ(&Склад)», «») +
?(ПартияЗаполнен = Истина, » И ДвиженияПоПартиям.Партия В ИЕРАРХИИ(&Партия)», «») + »
|ИТОГИ
| СУММА(КоличествоВозврат),
| СУММА(ВыручкаВозврат),
| СУММА(Количество),
| СУММА(Выручка),
| СУММА(Себестоимость),
| СУММА(ВаловаяПрибыль),
| СУММА(Наценка),
| СУММА(Рентабельность)
|ПО
| ОБЩИЕ,
| Номенклатура ИЕРАРХИЯ»);
Запрос.УстановитьПараметр(«КВ», Перечисления.КодыОпераций.ВозвратОтПокупателя);
Запрос.УстановитьПараметр(«НачалоПериода», НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр(«КонецПериода», КонецДня(КонецПериода));
Запрос.УстановитьПараметр(«МассивНоменклатуры», МассивНоменклатуры);
Запрос.УстановитьПараметр(«Склад», Склад);
Запрос.УстановитьПараметр(«Партия», Партия);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
ОбработкаПрерыванияПользователя();
Макет = ПолучитьМакет(«МакетВариант1»);
2 — 01.03.15 — 10:46
(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1
тут ошибка
3 — 01.03.15 — 10:49
КОНЕЦ разделить на Сумму и умножить на 100 КОНЦОВ
=)
4 — 01.03.15 — 10:55
два раза КОНЕЦ впендюрил, элементарно же.
5 — 01.03.15 — 11:15
в общем, так и не получилось. изначально было в отчете наценка в виде
….
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100
| КОНЕЦ КАК Наценка,
по аналогии хотел добавить в текст запроса рентабельность (в макет добавил)
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100
| КОНЕЦ КАК Рентабельность
выдал ошибку (0).
Думаю (2) прав. чем заменить это выражение, не знаю.
6 — 01.03.15 — 11:17
второй конец убери. А то как-то неприлично получается…
7 — 01.03.15 — 11:17
-(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма). внезапно, правда?
8 — 01.03.15 — 11:29
предлагаемые варианты (6) и (7) попробовал. та же синтаксическая ошибка. не понимание — это ужас.
9 — 01.03.15 — 11:31
{Форма.Форма(107)}: Ошибка при вызове метода контекста (Выполнить): {(27, 2)}: Синтаксическая ошибка «ВЫБОР»
<<?>>ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
РезультатЗапроса = Запрос.Выполнить();
10 — 01.03.15 — 11:33
(9) выборы и концы пересчитал?
11 — 01.03.15 — 11:33
варианты
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100
| КОНЕЦ КАК Рентабельность
или
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) / ДвиженияПоПартиям.СуммаПрод * 100
| КОНЕЦ КАК Рентабельность
или же
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА
| -(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100
| КАК Рентабельность
или же еще в разных вариациях
12 — 01.03.15 — 11:35
я вижу ошибку в поле, которое заканчивается на 26й строке
13 — 01.03.15 — 11:37
т.е. в этой строке:
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА ?
14 — 01.03.15 — 11:38
(9) имеется ввиду это?
|ИТОГИ
| СУММА(КоличествоВозврат),
| СУММА(ВыручкаВозврат),
| СУММА(Количество),
| СУММА(Выручка),
| СУММА(Себестоимость),
| СУММА(ВаловаяПрибыль),
| СУММА(Наценка),
| СУММА(Рентабельность)
15 — 01.03.15 — 11:40
Лишний конец уравновешивается выбором! =)
ВЫБОР КОГДА ЕСТЬNULL(ДвиженияПоПартиям.Сумма, 0) = 0 ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100 КОНЕЦ КАК Наценка, ВЫБОР КОГДА ЕСТЬNULL(ДвиженияПоПартиям.СуммаПрод, 0) = 0 ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100 КОНЕЦ КАК Рентабельность
16 — 01.03.15 — 11:40
(13) сам считай свои строки
17 — 01.03.15 — 11:49
(15) умница, спасибо. по крайней мере пока ошибок нет. проверю правильно ли считает. Думаю, все будет правильно. т.к. формула правильная. Нужно было аналогии чуть сверху начинать.
pnamik
18 — 01.03.15 — 11:57
(16), (6), (4), (2) также спасибо за участие в обсуждении
Синтаксическая ошибка ВЫБРАТЬ при выполнении запроса
Синтаксическая ошибка «ВЫБРАТЬ»<?> ВЫБРАТЬ возникает в 1С, когда в тексте запроса идут его блоки в подряд без разделения между собой.

Рис.1 Скриншот ошибки «Выбрать»
Например, в случаях:
- объединения запросов, когда подзапросы должны отделяться служебными словами «ОБЪЕДИНИТЬ» или «ОБЪЕДИНИТЬ ВСЕ«
- два запроса идущие в подряд для последующей выборки методом ВыбратьПакет(): требуется их разделение » ; «
- последующая выборка из временной таблицы: также необходимо разделение » ; «
- неверный синтаксис во вложенном запросе в конструкции ГДЕ Значение В (Выбрать ссылка из Справочники.ПримерСправочника): доступно только сравнение » В ()«, а не «=«, «>» и прочее
Замечу, что такая ошибка возникает при ручной правке текста, поскольку при формировании конструктором запроса, он вставляет разделители самостоятельно:

Цифры в начале ошибки (на рисунке — 386,1) — это номер строки в запросе. При большом тексте такая информация поможет быстрее локализовать ошибку.
Поведение системы
Выполнение запроса прерывается, но система продолжает работать
Реклама — искусство превращения полуправды в полную ложь.
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Ivan_Ivanov
Дата регистрации: 06.06.2007
Сообщений: 168
«Текст запроса:<br> Запрос.Текст = <br> «ВЫБРАТЬ<br> | СведенияОДоходах.ФизЛицо,<br> | МЕСЯЦ(СведенияОДоходах.Период) КАК Месяц,<br> | СведенияОДоходах.ОблагаетсяЕНВД,<br> | СведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,<br> | СведенияОДоходах.ВидДохода,<br> | СведенияОДоходах.Результат — СведенияОДоходах.Скидка КАК ОблагаемыйДоход<br> |ПОМЕСТИТЬ ВТДанныеДокумента<br> |ИЗ<br> | &ДанныеОДоходах КАК СведенияОДоходах»;<br> Запрос.УстановитьПараметр(«ДанныеОДоходах», ДанныеОДоходах);<br> Запрос.Выполнить();<br> <br> // ФизлицаДляРасчета<br> //<br> Если ОрганичениеНаСотрудников = Неопределено Тогда<br> <br> Запрос.Текст = <br> «ВЫБРАТЬ РАЗЛИЧНЫЕ<br> | СведенияОДоходах.ФизЛицо КАК ФизЛицо<br> |ПОМЕСТИТЬ ВТСписокСотрудников<br> |ИЗ<br> | РегистрНакопления.СтраховыеВзносыСведенияОДоходах КАК СведенияОДоходах<br> |ГДЕ<br> | НАЧАЛОПЕРИОДА(СведенияОДоходах.Период, МЕСЯЦ) = &парамПериодРегистрации<br> | И СведенияОДоходах.ОбособленноеПодразделение = &парамОбособленноеПодразделение<br> |<br> |ОБЪЕДИНИТЬ<br> |<br> |ВЫБРАТЬ РАЗЛИЧНЫЕ<br> | СведенияОДоходах.ФизЛицо<br> |ИЗ<br> | ВТДанныеДокумента КАК СведенияОДоходах<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | ФизЛицо»;<br> Запрос.Выполнить();<br> <br> Иначе<br> Запрос.Текст = <br> «ВЫБРАТЬ РАЗЛИЧНЫЕ<br> | ТаблицаСотрудников.ФизЛицо КАК ФизЛицо<br> |ПОМЕСТИТЬ ВТСписокСотрудников<br> |ИЗ<br> | &парамТаблицаСотрудников КАК ТаблицаСотрудников<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | ФизЛицо»;<br> Запрос.УстановитьПараметр(«парамТаблицаСотрудников», ОрганичениеНаСотрудников);<br> Запрос.Выполнить();<br> КонецЕсли;<br> <br> // Периоды<br> // Таблица список периодов<br> // Поля:<br> // Период<br> // Описание:<br> // список периодов — первые даты месяцев с начала года по «текущий» для запроса период<br> //<br> <br> // конец месяца налогового периода<br> КонецМесяца = КонецМесяца(НачалоГода(ПериодРегистрации));<br> // первый месяц<br> ПериодыТекст = «ВЫБРАТЬ ДАТАВРЕМЯ(» + Формат(КонецМесяца,»ДФ=гггг,М,д,Ч,м,с») + «) КАК Период ПОМЕСТИТЬ ВТПериоды»;<br> // прибавим остальные месяцы<br> Для Сч = 2 По Месяц(ПериодРегистрации) Цикл<br> КонецМесяца = КонецМесяца(КонецМесяца+1);<br> ПериодыТекст = ПериодыТекст +» ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(» + Формат(КонецМесяца,»ДФ=гггг,М,д,Ч,м,с») + «)»;<br> КонецЦикла;<br> Запрос.Текст = ПериодыТекст;<br> Запрос.Выполнить();<br><br> Запрос.Текст = <br> «ВЫБРАТЬ<br> | МЕСЯЦ(Периоды.Период) КАК Месяц,<br> | ЕСТЬNULL(УчетнаяПолитикаНалоговыйУчет.ВидТарифаСтраховыхВзносов, ЗНАЧЕНИЕ(Перечисление.ТарифыСтраховыхВзносов.ОбщийНалоговыйРежим)) КАК ВидТарифаСтраховыхВзносов<br> |ПОМЕСТИТЬ ВТИспользуемыеТарифы<br> |ИЗ<br> | (ВЫБРАТЬ<br> | Периоды.Период КАК Период,<br> | МАКСИМУМ(УчетнаяПолитикаНалоговыйУчет.Период) КАК ПериодРегистра<br> | ИЗ<br> | ВТПериоды КАК Периоды<br> | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаНалоговыйУчет КАК УчетнаяПолитикаНалоговыйУчет<br> | ПО Периоды.Период >= УчетнаяПолитикаНалоговыйУчет.Период<br> | И (УчетнаяПолитикаНалоговыйУчет.Организация = &парамГоловнаяОрганизация)<br> | <br> | СГРУППИРОВАТЬ ПО<br> | Периоды.Период) КАК Периоды<br> | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаНалоговыйУчет КАК УчетнаяПолитикаНалоговыйУчет<br> | ПО Периоды.ПериодРегистра = УчетнаяПолитикаНалоговыйУчет.Период<br> | И (УчетнаяПолитикаНалоговыйУчет.Организация = &парамГоловнаяОрганизация)<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | Месяц<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | ТарифСтраховыхВзносовСрезПоследних.ВидТарифа КАК ВидТарифа,<br> | ТарифСтраховыхВзносовСрезПоследних.ПФР,<br> | ТарифСтраховыхВзносовСрезПоследних.ПФРНакопительная,<br> | ТарифСтраховыхВзносовСрезПоследних.ФСС,<br> | ТарифСтраховыхВзносовСрезПоследних.ФФОМС,<br> | ТарифСтраховыхВзносовСрезПоследних.ТФОМС<br> |ПОМЕСТИТЬ ВТТарифы<br> |ИЗ<br> | РегистрСведений.ТарифСтраховыхВзносов.СрезПоследних(&парамКонецГода, ) КАК ТарифСтраховыхВзносовСрезПоследних<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | ВидТарифа<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | МЕСЯЦ(Периоды.Период) КАК Месяц,<br> | ГражданствоФизЛиц.ФизЛицо КАК Физлицо,<br> | ЕСТЬNULL(ГражданствоФизЛиц.НеИмеетПравоНаПенсию, ЛОЖЬ) КАК НеИмеетПравоНаПенсию,<br> | ЕСТЬNULL(ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование, ЛОЖЬ) КАК НеИмеетПравоНаМедицинскоеСтрахование<br> |ПОМЕСТИТЬ ВТДанныеОПравеНаПенсию<br> |ИЗ<br> | (ВЫБРАТЬ<br> | Периоды.Период КАК Период,<br> | ГражданствоФизЛиц.ФизЛицо КАК Физлицо,<br> | МАКСИМУМ(ГражданствоФизЛиц.Период) КАК ПериодРегистра<br> | ИЗ<br> | ВТПериоды КАК Периоды<br> | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц<br> | ПО Периоды.Период >= ГражданствоФизЛиц.Период<br> | ГДЕ<br> | ГражданствоФизЛиц.ФизЛицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТСписокСотрудников КАК СписокСотрудников)<br> | <br> | СГРУППИРОВАТЬ ПО<br> | ГражданствоФизЛиц.ФизЛицо,<br> | Периоды.Период) КАК Периоды<br> | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц<br> | ПО Периоды.ПериодРегистра = ГражданствоФизЛиц.Период<br> | И Периоды.Физлицо = ГражданствоФизЛиц.ФизЛицо<br> | И (ГражданствоФизЛиц.НеИмеетПравоНаПенсию<br> | ИЛИ ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование)<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | Физлицо,<br> | Месяц<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо,<br> | СведенияОбИнвалидностиФизлиц.Период КАК Период,<br> | СведенияОбИнвалидностиФизлиц.Инвалидность<br> |ПОМЕСТИТЬ ВТ_СведенияОбИнвалидности<br> |ИЗ<br> | РегистрСведений.СведенияОбИнвалидностиФизлиц КАК СведенияОбИнвалидностиФизлиц<br> |ГДЕ<br> | СведенияОбИнвалидностиФизлиц.Физлицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТСписокСотрудников КАК СписокСотрудников)<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | Физлицо,<br> | Период<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | МЕСЯЦ(Периоды.Период) КАК Месяц,<br> | СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо<br> |ПОМЕСТИТЬ ВТДанныеОбИнвалидности<br> |ИЗ<br> | (ВЫБРАТЬ<br> | Периоды.Период КАК Период,<br> | СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо,<br> | МАКСИМУМ(СведенияОбИнвалидностиФизлиц.Период) КАК ПериодРегистра<br> | ИЗ<br> | ВТПериоды КАК Периоды<br> | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СведенияОбИнвалидности КАК СведенияОбИнвалидностиФизлиц<br> | ПО Периоды.Период >= СведенияОбИнвалидностиФизлиц.Период<br> | <br> | СГРУППИРОВАТЬ ПО<br> | СведенияОбИнвалидностиФизлиц.Физлицо,<br> | Периоды.Период) КАК Периоды<br> | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СведенияОбИнвалидности КАК СведенияОбИнвалидностиФизлиц<br> | ПО (СведенияОбИнвалидностиФизлиц.Период = Периоды.ПериодРегистра)<br> | И Периоды.Физлицо = СведенияОбИнвалидностиФизлиц.Физлицо<br> | И (СведенияОбИнвалидностиФизлиц.Инвалидность)<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | Физлицо,<br> | Месяц<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | СведенияОДоходах.ФизЛицо КАК ФизЛицо,<br> | МЕСЯЦ(СведенияОДоходах.Период) КАК Месяц,<br> | СведенияОДоходах.ОблагаетсяЕНВД,<br> | СведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,<br> | СведенияОДоходах.ВидДохода.ВходитВБазуПФР КАК ВходитВБазуПФР,<br> | СведенияОДоходах.ВидДохода.ВходитВБазуФСС КАК ВходитВБазуФСС,<br> | СведенияОДоходах.ВидДохода.ВходитВБазуФОМС КАК ВходитВБазуФОМС,<br> //мов++<br> | СведенияОДоходах.ВидДохода.ВходитВПАВ КАК ВходитВПАВ,<br> | СведенияОДоходах.ВидДохода.Внебюджет КАК Внебюджет,<br> | СведенияОДоходах.ВидДохода.ВходитВДГПХ КАК ВходитВДГПХ,<br> | СведенияОДоходах.РезультатОборот — СведенияОДоходах.СкидкаОборот КАК ОблагаемыйДоход<br> //| СведенияОДоходах.РезультатОборотПАВ — СведенияОДоходах.СкидкаОборот КАК ОблагаемыйДоходПАВ<br> |ПОМЕСТИТЬ ВТДоходыПоФизлицамМесяцам<br> |ИЗ<br> | РегистрНакопления.СтраховыеВзносыСведенияОДоходах.Обороты(<br> | &парамНачалоГода,<br> | &парамКонецМесяцаПериодаРегистрации,<br> | Месяц,<br> | Организация = &парамГоловнаяОрганизация<br> | И Физлицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТСписокСотрудников КАК СписокСотрудников)) КАК СведенияОДоходах<br> |<br> |ОБЪЕДИНИТЬ ВСЕ<br> |<br> |ВЫБРАТЬ<br> | СтраховыеВзносыСведенияОДоходах.ФизЛицо,<br> | МЕСЯЦ(СтраховыеВзносыСведенияОДоходах.Период),<br> | СтраховыеВзносыСведенияОДоходах.ОблагаетсяЕНВД,<br> | СтраховыеВзносыСведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуПФР,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФСС,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФОМС,<br> //мов++<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВПАВ,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВДГПХ,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.Внебюджет,<br><br><br><br> | -СтраховыеВзносыСведенияОДоходах.Результат + СтраховыеВзносыСведенияОДоходах.Скидка<br> |ИЗ<br> | РегистрНакопления.СтраховыеВзносыСведенияОДоходах КАК СтраховыеВзносыСведенияОДоходах<br> |ГДЕ<br> | СтраховыеВзносыСведенияОДоходах.Регистратор = &Регистратор<br> | И СтраховыеВзносыСведенияОДоходах.Организация = &парамГоловнаяОрганизация<br> | И СтраховыеВзносыСведенияОДоходах.ФизЛицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТСписокСотрудников КАК СписокСотрудников)<br> |<br> |ОБЪЕДИНИТЬ ВСЕ<br> |<br> |ВЫБРАТЬ<br> | СтраховыеВзносыСведенияОДоходах.ФизЛицо,<br> | СтраховыеВзносыСведенияОДоходах.Месяц,<br> | СтраховыеВзносыСведенияОДоходах.ОблагаетсяЕНВД,<br> | СтраховыеВзносыСведенияОДоходах.ОблагаетсяПоДополнительномуТарифу,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуПФР,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФСС,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВБазуФОМС,<br> //мов++<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВПАВ,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.ВходитВДГПХ,<br> | СтраховыеВзносыСведенияОДоходах.ВидДохода.Внебюджет,<br><br><br> //| СтраховыеВзносыСведенияОДоходах.ОблагаемыйДоходПАВ,<br><br> | СтраховыеВзносыСведенияОДоходах.ОблагаемыйДоход<br> |ИЗ<br> | ВТДанныеДокумента КАК СтраховыеВзносыСведенияОДоходах<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | ФизЛицо,<br> | Месяц<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | СведенияОДоходах.ФизЛицо КАК ФизЛицо<br> |ПОМЕСТИТЬ ВТФизлицаБезОблагаемойБазы<br> |ИЗ<br> | ВТДоходыПоФизлицамМесяцам КАК СведенияОДоходах<br> |<br> |СГРУППИРОВАТЬ ПО<br> | СведенияОДоходах.ФизЛицо<br> |<br> |ИМЕЮЩИЕ<br> | СУММА(ВЫБОР<br> | КОГДА СведенияОДоходах.ВходитВБазуПФР<br> //мов<br> | ИЛИ СведенияОДоходах.ВходитВБазуФОМС ИЛИ СведенияОДоходах.ВходитВПАВ ИЛИ СведенияОДоходах.ВходитВДГПХ ИЛИ СведенияОДоходах.Внебюжет<br> | ТОГДА СведенияОДоходах.ОблагаемыйДоход<br> | ИНАЧЕ 0<br> | КОНЕЦ) < 0<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | ФизЛицо<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | РанееИсчисленныеВзносы.ФизЛицо КАК ФизЛицо,<br> | МЕСЯЦ(РанееИсчисленныеВзносы.Период) КАК Месяц,<br> | РанееИсчисленныеВзносы.ФССОборот,<br> | РанееИсчисленныеВзносы.ФФОМСОборот,<br> | РанееИсчисленныеВзносы.ТФОМСОборот,<br> | РанееИсчисленныеВзносы.ПФРНакопительнаяОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяОборот,<br> | РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДОборот,<br> | РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуОборот,<br> //мов++<br> | РанееИсчисленныеВзносы.ФССПАВОборот,<br> | РанееИсчисленныеВзносы.ФФОМСПАВОборот,<br> | РанееИсчисленныеВзносы.ТФОМСПАВОборот,<br> | РанееИсчисленныеВзносы.ПФРНакопительнаяПАВОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяПАВОборот,<br> | РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДПАВОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДПАВОборот,<br> | РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуПАВОборот,<br> <br> | РанееИсчисленныеВзносы.ПФРНакопительнаяДГПХОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяДГПХОборот,<br> | РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДДГПХОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДДГПХОборот,<br> | РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуДГПХОборот,<br> <br> | РанееИсчисленныеВзносы.ФССВнебюджетВОборот,<br> | РанееИсчисленныеВзносы.ФФОМСВнебюджетОборот,<br> | РанееИсчисленныеВзносы.ТФОМСВнебюджетОборот,<br> | РанееИсчисленныеВзносы.ПФРНакопительнаяВнебюджетОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяВнебюджетОборот,<br> | РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДВнебюджетОборот,<br> | РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДВнебюджетОборот,<br> | РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуВнебюджетОборот<br><br><br>//мов—<br> |ПОМЕСТИТЬ ВТРанееИсчисленныеВзносыПоМесяцам<br> |ИЗ<br> | РегистрНакопления.СтраховыеВзносыИсчисленные.Обороты(<br> | &парамНачалоГода,<br> | &парамКонецМесяцаПериодаРегистрации,<br> | Месяц,<br> | Организация = &парамГоловнаяОрганизация<br> | И (НЕ ФизЛицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТФизлицаБезОблагаемойБазы КАК СписокСотрудников))<br> | И ФизЛицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТСписокСотрудников КАК СписокСотрудников)) КАК РанееИсчисленныеВзносы<br> |<br> |ОБЪЕДИНИТЬ ВСЕ<br> |<br> |ВЫБРАТЬ<br> | СтраховыеВзносыИсчисленные.ФизЛицо,<br> | МЕСЯЦ(СтраховыеВзносыИсчисленные.Период),<br> | -СтраховыеВзносыИсчисленные.ФСС,<br> | -СтраховыеВзносыИсчисленные.ФФОМС,<br> | -СтраховыеВзносыИсчисленные.ТФОМС,<br> | -СтраховыеВзносыИсчисленные.ПФРНакопительная,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховая,<br> | -СтраховыеВзносыИсчисленные.ПФРНакопительнаяЕНВД,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховаяЕНВД,<br> | -СтраховыеВзносыИсчисленные.ПФРПоДополнительномуТарифу,<br> //мов++<br> | -СтраховыеВзносыИсчисленные.ФССПАВ,<br> | -СтраховыеВзносыИсчисленные.ФФОМСПАВ,<br> | -СтраховыеВзносыИсчисленные.ТФОМСПАВ,<br> | -СтраховыеВзносыИсчисленные.ПФРНакопительнаяПАВ,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховаяПАВ,<br> | -СтраховыеВзносыИсчисленные.ПФРНакопительнаяЕНВДПАВ,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховаяЕНВДПАВ,<br> | -СтраховыеВзносыИсчисленные.ПФРПоДополнительномуТарифуПАВ,<br> <br> | -СтраховыеВзносыИсчисленные.ПФРНакопительнаяДГПХ,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховаяДГПХ,<br> | -СтраховыеВзносыИсчисленные.ПФРНакопительнаяЕНВДДГПХ,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховаяЕНВДДГПХ,<br> | -СтраховыеВзносыИсчисленные.ПФРПоДополнительномуТарифуДГПХ,<br> <br> | -СтраховыеВзносыИсчисленные.ФССВнебюджет,<br> | -СтраховыеВзносыИсчисленные.ФФОМСВнебюджет,<br> | -СтраховыеВзносыИсчисленные.ТФОМСВнебюджет,<br> | -СтраховыеВзносыИсчисленные.ПФРНакопительнаяВнебюджет,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховаяВнебюджет,<br> | -СтраховыеВзносыИсчисленные.ПФРНакопительнаяЕНВДВнебюджет,<br> | -СтраховыеВзносыИсчисленные.ПФРСтраховаяЕНВДВнебюджет,<br> | -СтраховыеВзносыИсчисленные.ПФРПоДополнительномуТарифуВнебюджет<br><br><br>//мов—<br> |ИЗ<br> | РегистрНакопления.СтраховыеВзносыИсчисленные КАК СтраховыеВзносыИсчисленные<br> |ГДЕ<br> | СтраховыеВзносыИсчисленные.Регистратор = &Регистратор<br> | И СтраховыеВзносыИсчисленные.Организация = &парамГоловнаяОрганизация<br> | И (НЕ СтраховыеВзносыИсчисленные.ФизЛицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТФизлицаБезОблагаемойБазы КАК СписокСотрудников))<br> | И СтраховыеВзносыИсчисленные.ФизЛицо В<br> | (ВЫБРАТЬ<br> | СписокСотрудников.ФизЛицо<br> | ИЗ<br> | ВТСписокСотрудников КАК СписокСотрудников)<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | Месяц,<br> | ФизЛицо<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | РанееИсчисленныеВзносы.ФизЛицо КАК ФизЛицо,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФССОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФССОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФФОМСОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФФОМСОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ТФОМСОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ТФОМСОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФССОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФССОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФФОМСОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФФОМСОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ТФОМСОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ТФОМСОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяОборот + РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяОборот + РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяЕНВДОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяЕНВДОборот,<br> | СУММА(РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуОборот) КАК ПФРПоДополнительномуТарифуОборот,<br> //мов++<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФССПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФССПАВОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФФОМСПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФФОМСПАВОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ТФОМСПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ТФОМСПАВОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФССПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФССПАВОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ФФОМСПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ФФОМСПАВОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ТФОМСПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ТФОМСПАВОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяПАВОборот + РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяПАВОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяПАВОборот + РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяПАВОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяПАВОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяПАВОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяЕНВДПАВОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДПАВОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяЕНВДПАВОборот,<br> | СУММА(РанееИсчисленныеВзносы.ПФРПоДополнительномуТарифуПАВОборот) КАК ПФРПоДополнительномуТарифуПАВОборот,<br> <br> ///////////////////////////////<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяДГПХОборот + РанееИсчисленныеВзносы.ПФРНакопительнаяЕНВДДГПХОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяДГПХОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ НЕ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяДГПХОборот + РанееИсчисленныеВзносы.ПФРСтраховаяЕНВДДГПХОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяДГПХОборотИнвалида,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРНакопительнаяДГПХОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРНакопительнаяДГПХОборот,<br> | СУММА(ВЫБОР<br> | КОГДА Инвалид.Физлицо ЕСТЬ NULL <br> | ТОГДА РанееИсчисленныеВзносы.ПФРСтраховаяДГПХОборот<br> | ИНАЧЕ 0<br> | КОНЕЦ) КАК ПФРСтраховаяДГПХОборот, <br>ну и т.д.<br>где на этом куске при заполнении документа расчет страховых взносов 1с выдает сообщение<br>{Документ.РасчетСтраховыхВзносов(3767)}: Ошибка при вызове метода контекста (Выполнить): {(948, 2)}: Синтаксическая ошибка «СУММА(ВЫБОР»<br><<?>>СУММА(ВЫБОР<br> Возврат Запрос.Выполнить().Выгрузить();<br>Знаю, что где-то по хду дела не хватает запятой. Просто уже не вижу, где именно. Народ, посмотрите, пожалуйста свежим взглядом.»
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
Скопируйте запрос в текстовый документ перейдите на 948 строку и посмотрите что там рядом.<br>Еще можно запрос засунуть в консоль запросов и вызвать конструктор — он тоже покажет в какой строке ошибка.
Ivan_Ivanov
Дата регистрации: 06.06.2007
Сообщений: 168
Блин, точно. Спасибо большое за чистку мозгов
. Еще кучу ошибок таким образом исправила
Показывать по
10
20
40
сообщений
What are the syntax errors?
PHP belongs to the C-style and imperative programming languages. It has rigid grammar rules, which it cannot recover from when encountering misplaced symbols or identifiers. It can’t guess your coding intentions.

Most important tips
There are a few basic precautions you can always take:
-
Use proper code indentation, or adopt any lofty coding style.
Readability prevents irregularities. -
Use an IDE or editor for PHP with syntax highlighting.
Which also help with parentheses/bracket balancing.
-
Read the language reference and examples in the manual.
Twice, to become somewhat proficient.
How to interpret parser errors
A typical syntax error message reads:
Parse error: syntax error, unexpected T_STRING, expecting ‘
;‘ in file.php on line 217
Which lists the possible location of a syntax mistake. See the mentioned file name and line number.
A moniker such as T_STRING explains which symbol the parser/tokenizer couldn’t process finally. This isn’t necessarily the cause of the syntax mistake, however.
It’s important to look into previous code lines as well. Often syntax errors are just mishaps that happened earlier. The error line number is just where the parser conclusively gave up to process it all.
Solving syntax errors
There are many approaches to narrow down and fix syntax hiccups.
-
Open the mentioned source file. Look at the mentioned code line.
-
For runaway strings and misplaced operators, this is usually where you find the culprit.
-
Read the line left to right and imagine what each symbol does.
-
-
More regularly you need to look at preceding lines as well.
-
In particular, missing
;semicolons are missing at the previous line ends/statement. (At least from the stylistic viewpoint. ) -
If
{code blocks}are incorrectly closed or nested, you may need to investigate even further up the source code. Use proper code indentation to simplify that.
-
-
Look at the syntax colorization!
-
Strings and variables and constants should all have different colors.
-
Operators
+-*/.should be tinted distinct as well. Else they might be in the wrong context. -
If you see string colorization extend too far or too short, then you have found an unescaped or missing closing
"or'string marker. -
Having two same-colored punctuation characters next to each other can also mean trouble. Usually, operators are lone if it’s not
++,--, or parentheses following an operator. Two strings/identifiers directly following each other are incorrect in most contexts.
-
-
Whitespace is your friend.
Follow any coding style. -
Break up long lines temporarily.
-
You can freely add newlines between operators or constants and strings. The parser will then concretize the line number for parsing errors. Instead of looking at the very lengthy code, you can isolate the missing or misplaced syntax symbol.
-
Split up complex
ifstatements into distinct or nestedifconditions. -
Instead of lengthy math formulas or logic chains, use temporary variables to simplify the code. (More readable = fewer errors.)
-
Add newlines between:
- The code you can easily identify as correct,
- The parts you’re unsure about,
- And the lines which the parser complains about.
Partitioning up long code blocks really helps to locate the origin of syntax errors.
-
-
Comment out offending code.
-
If you can’t isolate the problem source, start to comment out (and thus temporarily remove) blocks of code.
-
As soon as you got rid of the parsing error, you have found the problem source. Look more closely there.
-
Sometimes you want to temporarily remove complete function/method blocks. (In case of unmatched curly braces and wrongly indented code.)
-
When you can’t resolve the syntax issue, try to rewrite the commented out sections from scratch.
-
-
As a newcomer, avoid some of the confusing syntax constructs.
-
The ternary
? :condition operator can compact code and is useful indeed. But it doesn’t aid readability in all cases. Prefer plainifstatements while unversed. -
PHP’s alternative syntax (
if:/elseif:/endif;) is common for templates, but arguably less easy to follow than normal{code}blocks.
-
-
The most prevalent newcomer mistakes are:
-
Missing semicolons
;for terminating statements/lines. -
Mismatched string quotes for
"or'and unescaped quotes within. -
Forgotten operators, in particular for the string
.concatenation. -
Unbalanced
(parentheses). Count them in the reported line. Are there an equal number of them?
-
-
Don’t forget that solving one syntax problem can uncover the next.
-
If you make one issue go away, but other crops up in some code below, you’re mostly on the right path.
-
If after editing a new syntax error crops up in the same line, then your attempted change was possibly a failure. (Not always though.)
-
-
Restore a backup of previously working code, if you can’t fix it.
- Adopt a source code versioning system. You can always view a
diffof the broken and last working version. Which might be enlightening as to what the syntax problem is.
- Adopt a source code versioning system. You can always view a
-
Invisible stray Unicode characters: In some cases, you need to use a hexeditor or different editor/viewer on your source. Some problems cannot be found just from looking at your code.
-
Try
grep --color -P -n "[x80-xFF]" file.phpas the first measure to find non-ASCII symbols. -
In particular BOMs, zero-width spaces, or non-breaking spaces, and smart quotes regularly can find their way into the source code.
-
-
Take care of which type of linebreaks are saved in files.
-
PHP just honors n newlines, not r carriage returns.
-
Which is occasionally an issue for MacOS users (even on OS X for misconfigured editors).
-
It often only surfaces as an issue when single-line
//or#comments are used. Multiline/*...*/comments do seldom disturb the parser when linebreaks get ignored.
-
-
If your syntax error does not transmit over the web:
It happens that you have a syntax error on your machine. But posting the very same file online does not exhibit it anymore. Which can only mean one of two things:-
You are looking at the wrong file!
-
Or your code contained invisible stray Unicode (see above).
You can easily find out: Just copy your code back from the web form into your text editor.
-
-
Check your PHP version. Not all syntax constructs are available on every server.
-
php -vfor the command line interpreter -
<?php phpinfo();for the one invoked through the webserver.
Those aren’t necessarily the same. In particular when working with frameworks, you will them to match up.
-
-
Don’t use PHP’s reserved keywords as identifiers for functions/methods, classes or constants.
-
Trial-and-error is your last resort.
If all else fails, you can always google your error message. Syntax symbols aren’t as easy to search for (Stack Overflow itself is indexed by SymbolHound though). Therefore it may take looking through a few more pages before you find something relevant.
Further guides:
- PHP Debugging Basics by David Sklar
- Fixing PHP Errors by Jason McCreary
- PHP Errors – 10 Common Mistakes by Mario Lurig
- Common PHP Errors and Solutions
- How to Troubleshoot and Fix your WordPress Website
- A Guide To PHP Error Messages For Designers — Smashing Magazine
White screen of death
If your website is just blank, then typically a syntax error is the cause.
Enable their display with:
error_reporting = E_ALLdisplay_errors = 1
In your php.ini generally, or via .htaccess for mod_php,
or even .user.ini with FastCGI setups.
Enabling it within the broken script is too late because PHP can’t even interpret/run the first line. A quick workaround is crafting a wrapper script, say test.php:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include("./broken-script.php");
Then invoke the failing code by accessing this wrapper script.
It also helps to enable PHP’s error_log and look into your webserver’s error.log when a script crashes with HTTP 500 responses.
What are the syntax errors?
PHP belongs to the C-style and imperative programming languages. It has rigid grammar rules, which it cannot recover from when encountering misplaced symbols or identifiers. It can’t guess your coding intentions.

Most important tips
There are a few basic precautions you can always take:
-
Use proper code indentation, or adopt any lofty coding style.
Readability prevents irregularities. -
Use an IDE or editor for PHP with syntax highlighting.
Which also help with parentheses/bracket balancing.
-
Read the language reference and examples in the manual.
Twice, to become somewhat proficient.
How to interpret parser errors
A typical syntax error message reads:
Parse error: syntax error, unexpected T_STRING, expecting ‘
;‘ in file.php on line 217
Which lists the possible location of a syntax mistake. See the mentioned file name and line number.
A moniker such as T_STRING explains which symbol the parser/tokenizer couldn’t process finally. This isn’t necessarily the cause of the syntax mistake, however.
It’s important to look into previous code lines as well. Often syntax errors are just mishaps that happened earlier. The error line number is just where the parser conclusively gave up to process it all.
Solving syntax errors
There are many approaches to narrow down and fix syntax hiccups.
-
Open the mentioned source file. Look at the mentioned code line.
-
For runaway strings and misplaced operators, this is usually where you find the culprit.
-
Read the line left to right and imagine what each symbol does.
-
-
More regularly you need to look at preceding lines as well.
-
In particular, missing
;semicolons are missing at the previous line ends/statement. (At least from the stylistic viewpoint. ) -
If
{code blocks}are incorrectly closed or nested, you may need to investigate even further up the source code. Use proper code indentation to simplify that.
-
-
Look at the syntax colorization!
-
Strings and variables and constants should all have different colors.
-
Operators
+-*/.should be tinted distinct as well. Else they might be in the wrong context. -
If you see string colorization extend too far or too short, then you have found an unescaped or missing closing
"or'string marker. -
Having two same-colored punctuation characters next to each other can also mean trouble. Usually, operators are lone if it’s not
++,--, or parentheses following an operator. Two strings/identifiers directly following each other are incorrect in most contexts.
-
-
Whitespace is your friend.
Follow any coding style. -
Break up long lines temporarily.
-
You can freely add newlines between operators or constants and strings. The parser will then concretize the line number for parsing errors. Instead of looking at the very lengthy code, you can isolate the missing or misplaced syntax symbol.
-
Split up complex
ifstatements into distinct or nestedifconditions. -
Instead of lengthy math formulas or logic chains, use temporary variables to simplify the code. (More readable = fewer errors.)
-
Add newlines between:
- The code you can easily identify as correct,
- The parts you’re unsure about,
- And the lines which the parser complains about.
Partitioning up long code blocks really helps to locate the origin of syntax errors.
-
-
Comment out offending code.
-
If you can’t isolate the problem source, start to comment out (and thus temporarily remove) blocks of code.
-
As soon as you got rid of the parsing error, you have found the problem source. Look more closely there.
-
Sometimes you want to temporarily remove complete function/method blocks. (In case of unmatched curly braces and wrongly indented code.)
-
When you can’t resolve the syntax issue, try to rewrite the commented out sections from scratch.
-
-
As a newcomer, avoid some of the confusing syntax constructs.
-
The ternary
? :condition operator can compact code and is useful indeed. But it doesn’t aid readability in all cases. Prefer plainifstatements while unversed. -
PHP’s alternative syntax (
if:/elseif:/endif;) is common for templates, but arguably less easy to follow than normal{code}blocks.
-
-
The most prevalent newcomer mistakes are:
-
Missing semicolons
;for terminating statements/lines. -
Mismatched string quotes for
"or'and unescaped quotes within. -
Forgotten operators, in particular for the string
.concatenation. -
Unbalanced
(parentheses). Count them in the reported line. Are there an equal number of them?
-
-
Don’t forget that solving one syntax problem can uncover the next.
-
If you make one issue go away, but other crops up in some code below, you’re mostly on the right path.
-
If after editing a new syntax error crops up in the same line, then your attempted change was possibly a failure. (Not always though.)
-
-
Restore a backup of previously working code, if you can’t fix it.
- Adopt a source code versioning system. You can always view a
diffof the broken and last working version. Which might be enlightening as to what the syntax problem is.
- Adopt a source code versioning system. You can always view a
-
Invisible stray Unicode characters: In some cases, you need to use a hexeditor or different editor/viewer on your source. Some problems cannot be found just from looking at your code.
-
Try
grep --color -P -n "[x80-xFF]" file.phpas the first measure to find non-ASCII symbols. -
In particular BOMs, zero-width spaces, or non-breaking spaces, and smart quotes regularly can find their way into the source code.
-
-
Take care of which type of linebreaks are saved in files.
-
PHP just honors n newlines, not r carriage returns.
-
Which is occasionally an issue for MacOS users (even on OS X for misconfigured editors).
-
It often only surfaces as an issue when single-line
//or#comments are used. Multiline/*...*/comments do seldom disturb the parser when linebreaks get ignored.
-
-
If your syntax error does not transmit over the web:
It happens that you have a syntax error on your machine. But posting the very same file online does not exhibit it anymore. Which can only mean one of two things:-
You are looking at the wrong file!
-
Or your code contained invisible stray Unicode (see above).
You can easily find out: Just copy your code back from the web form into your text editor.
-
-
Check your PHP version. Not all syntax constructs are available on every server.
-
php -vfor the command line interpreter -
<?php phpinfo();for the one invoked through the webserver.
Those aren’t necessarily the same. In particular when working with frameworks, you will them to match up.
-
-
Don’t use PHP’s reserved keywords as identifiers for functions/methods, classes or constants.
-
Trial-and-error is your last resort.
If all else fails, you can always google your error message. Syntax symbols aren’t as easy to search for (Stack Overflow itself is indexed by SymbolHound though). Therefore it may take looking through a few more pages before you find something relevant.
Further guides:
- PHP Debugging Basics by David Sklar
- Fixing PHP Errors by Jason McCreary
- PHP Errors – 10 Common Mistakes by Mario Lurig
- Common PHP Errors and Solutions
- How to Troubleshoot and Fix your WordPress Website
- A Guide To PHP Error Messages For Designers — Smashing Magazine
White screen of death
If your website is just blank, then typically a syntax error is the cause.
Enable their display with:
error_reporting = E_ALLdisplay_errors = 1
In your php.ini generally, or via .htaccess for mod_php,
or even .user.ini with FastCGI setups.
Enabling it within the broken script is too late because PHP can’t even interpret/run the first line. A quick workaround is crafting a wrapper script, say test.php:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include("./broken-script.php");
Then invoke the failing code by accessing this wrapper script.
It also helps to enable PHP’s error_log and look into your webserver’s error.log when a script crashes with HTTP 500 responses.