1С:Предпоиятие 8.1 - в реестре документов при выборе даты ошибка

Новая тема
Показывать по 10 20 40 сообщений
"{Отчет.РеестрДокументов.Форма.ФормаЗаполнения(769)}: Ошибка при вызове метода контекста (Выполнить): {(28, 2)}: Ожидается выражение ")"
<>ГДЕ
Запрос.Выполнить();


Если не выбирать дату - формирует отчет. Если назначить какую-нибудь дату - ошибка
Куда я только не ставила эту скобку :( бесполезно. Что я делаю не так?



Процедура ФормированиеЗапросаДобавитьДокумент(Запрос, МетаданныеДокумента, ВидДокумента, МассивСвойств, ФлагЕстьУсловия)

Если НЕ ВРЕГ(ВидДокумента) =ВРЕГ("ЗаказПокупателя") Тогда

  Запрос.Текст = Запрос.Текст + "
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |      Док.Ссылка,
   |      Док.Дата,
   |      Док.Номер,
   |      """"" + МетаданныеДокумента.Представление() + """"" КАК ВидДокумента,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("ВидОперации", МетаданныеДокумента), "Док.ВидОперации", "NULL") + " КАК ВидОперации,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Организация", МетаданныеДокумента), "Док.Организация", "NULL") + " КАК Организация,
   |      ";
   Если ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОрдер", МетаданныеДокумента) Тогда
         ИмяРеквизитаСклад = "СкладОрдер";
   Иначе
         ИмяРеквизитаСклад = "Склад";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Контрагент", МетаданныеДокумента), "Док.Контрагент", "NULL") + " КАК Контрагент,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента(ИмяРеквизитаСклад, МетаданныеДокумента), "Док."+ИмяРеквизитаСклад, "NULL") + " КАК Склад,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("СуммаДокумента", МетаданныеДокумента), "Док.СуммаДокумента", "NULL") + " КАК СуммаДокумента,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("ВалютаДокумента", МетаданныеДокумента), "Док.ВалютаДокумента", "NULL") + " КАК ВалютаДокумента,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Ответственный", МетаданныеДокумента), "Док.Ответственный", "NULL") + " КАК Ответственный ,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Количество", МетаданныеДокумента), "Док.Количество", "NULL") + " КАК Количество
|";
             Запрос.Текст = Запрос.Текст + " ИЗ
   |      Документ." + ВидДокумента + " КАК Док
   |";

Иначе
   
Запрос.Текст = Запрос.Текст + "
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |      Док.Ссылка,
   |      Док.Дата,
   |      Док.Номер,
  |      """"" + МетаданныеДокумента.Представление() + """"" КАК ВидДокумента,
  |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("ВидОперации", МетаданныеДокумента), "Док.ВидОперации", "NULL") + " КАК ВидОперации,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Организация", МетаданныеДокумента), "Док.Организация", "NULL") + " КАК Организация,
   |      ";
   Если ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОрдер", МетаданныеДокумента) Тогда
         ИмяРеквизитаСклад = "СкладОрдер";
   Иначе
         ИмяРеквизитаСклад = "Склад";
   КонецЕсли;
   Запрос.Текст = Запрос.Текст + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Контрагент", МетаданныеДокумента), "Док.Контрагент", "NULL") + " КАК Контрагент,
     |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента(ИмяРеквизитаСклад, МетаданныеДокумента), "Док."+ИмяРеквизитаСклад, "NULL") + " КАК Склад,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("СуммаДокумента", МетаданныеДокумента), "Док.СуммаДокумента", "NULL") + " КАК СуммаДокумента,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("ВалютаДокумента", МетаданныеДокумента), "Док.ВалютаДокумента", "NULL") + " КАК ВалютаДокумента,
   |      " + ?(ОбщегоНазначения.ЕстьРеквизитДокумента("Ответственный", МетаданныеДокумента), "Док.Ответственный", "NULL") + " КАК Ответственный ,
   |Сумма (ТабЧасть.Количество)  Как Количество
   |";
Запрос.Текст = Запрос.Текст + "  ИЗ
   |      Документ." + ВидДокумента + " КАК Док
   |";

Запрос.Текст = Запрос.Текст + "  соединение
| Документ.ЗаказПокупателя.Товары как ТабЧасть
| По Док.Ссылка = ТабЧасть.Ссылка
| сгруппировать по
|Док.Ссылка,Док.Номер,Док.Дата, Док.СуммаДокумента,Док.Организация,Док.Контрагент
|";

 КонецЕсли;
 
   
ФлагЕстьУсловия = Ложь;

Если МассивСвойств.Количество() > 0 Тогда
ДобавитьФильтрыПоСвойствам(Запрос, МассивСвойств);
КонецЕсли;

ЕстьФильтры  = ДобавитьФильтрыПоДокументу(Запрос, ВидДокумента, МассивСвойств, ФлагЕстьУсловия);

Если Не ДатаНач = '00010101000000' Тогда
Запрос.Текст = Запрос.Текст + ?(ЕстьФильтры, " И ", " ГДЕ ") + "
|Док.Дата >= &ДатаНач
| ";
ЕстьФильтры = Истина;
КонецЕсли;
Если Не ДатаКон = '00010101000000' Тогда
Запрос.Текст = Запрос.Текст + ?(ЕстьФильтры, " И ", " ГДЕ ") + "
|Док.Дата <= &ДатаКон
| ";
ЕстьФильтры = Истина;
КонецЕсли;


КонецПроцедуры // ФормированиеЗапросаДобавитьДокумент()

// Проверить, нужно ли исключить документ в тексте запроса
//
// Параметры
//  МетаданныеДокумента
//
// Возвращаемое значение:
//   Булево   – Истина - документ нужно исключить, Ложь - нет
//
Функция ИсключитьДокумент(МетаданныеДокумента)
Для Каждого СтрокаОтбораДляПеребора Из Отбор Цикл

Если НЕ СтрокаОтбораДляПеребора.Использование Тогда
Продолжить;
КонецЕсли;

Если НЕ СтрокаОтбораДляПеребора.ИмяОтбора = "ДокументОтчета"
И Не СтрокаОтбораДляПеребора.ИмяОтбора = "Проведен"
И Не СтрокаОтбораДляПеребора.ИмяОтбора = "ПометкаУдаления"
И НЕ СтрокаОтбораДляПеребора.ИмяОтбора = "Категория"
И Найти(СтрокаОтбораДляПеребора.ПредставлениеОтбора, "(свойство документов)") = 0 Тогда
Если СтрокаОтбораДляПеребора.ИмяОтбора = "Склад" Тогда
Если ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОрдер", МетаданныеДокумента) Тогда
ИмяРеквизита = "СкладОрдер";
Иначе
ИмяРеквизита = "Склад";
КонецЕсли;
Иначе
ИмяРеквизита = СтрокаОтбораДляПеребора.ИмяОтбора;
КонецЕсли;
Если НЕ ОбщегоНазначения.ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Возврат Ложь;
КонецФункции // ИсключитьДокумент()

// Добавляет в запрос необходимые виды документов
//
// Параметры:
//  Запрос - запрос в который добавляется указанный вид документа
//  МассивВидовДокументов - массив содержащий виды документов (строкой) которые надо добавить в запрос
//  МассивСвойств - массив свойств документов по которым надо установить фильтр
//  СтрКатегорий - строка таблицы фильтров в которой указаны фильтры по категории документов
//
Функция ДобавитьДокументВЗапрос(масЗапросов, МассивВидовДокументов, МассивСвойств, СтрокаОтбора)
Перем ЕстьФильтры;
Перем ФлагЕстьУсловия;

ФлагЕстьКатегории = Не СтрокаОтбора = Неопределено;

текНомерТаблицы = 0;
текЗапрос       = Неопределено;
максТаблиц      = 1;

К1 = -1;
ДобавлятьОкончаниеТекстаЗапроса = Ложь;

Для Каждого ВидДокумента Из МассивВидовДокументов Цикл
//Здесь мы должны понять, не установлен ли фильтр по какому-либо реквизиту, которого нет у документа
//указанного вида. Если установлен, то мы просто не включаем документ в запрос, исключая его из отчета


МетаданныеДокумента = Метаданные.Документы[ВидДокумента];

Если ИсключитьДокумент(МетаданныеДокумента) Тогда
Продолжить;
КонецЕсли;

Если текНомерТаблицы = 0 Тогда
текЗапрос = Новый Запрос;
масЗапросов.Добавить(текЗапрос);
ФормированиеЗапросаНачало(текЗапрос);
ДобавлятьОкончаниеТекстаЗапроса = Истина;
Иначе
текЗапрос.Текст = текЗапрос.Текст + "
|ОБЪЕДИНИТЬ ВСЕ";
КонецЕсли;
текНомерТаблицы = текНомерТаблицы + 1;

ФормированиеЗапросаДобавитьДокумент(текЗапрос, МетаданныеДокумента, ВидДокумента, МассивСвойств, ФлагЕстьУсловия);

Если текНомерТаблицы = максТаблиц Тогда
текНомерТаблицы = 0;
ФормированиеЗапросаОкончание(текЗапрос, ФлагЕстьКатегории, СтрокаОтбора);
ДобавлятьОкончаниеТекстаЗапроса = Ложь;
КонецЕсли;
КонецЦикла;


Если текЗапрос = Неопределено Тогда
Возврат Ложь;
КонецЕсли;

Если ДобавлятьОкончаниеТекстаЗапроса Тогда
ФормированиеЗапросаОкончание(текЗапрос, ФлагЕстьКатегории, СтрокаОтбора);
КонецЕсли;

Возврат Истина;

КонецФункции // ДобавитьДокументВЗапрос()

// Обработка выбранных документов
//
// Параметры:
// Нет.
//
Процедура ВидОбработкиДокументы() Экспорт
Перем МассивСвойств;
Перем МассивВидовДокументов;
Перем Индекс;
Перем СтрФильтров;
Перем СтрКатегорий;

МассивСвойств = Новый Массив;
СтрКатегорий = Неопределено;

Для Каждого К Из Отбор Цикл

Если НЕ К.Использование Тогда
Продолжить;
КонецЕсли;

СтрФильтров = мТаблицаФильтры.Найти(К.ИмяОтбора, "ИмяПоля");

// На случай если не выбран фильтр
Если СтрФильтров = Неопределено Тогда
Продолжить;
КонецЕсли;

Если Не СтрФильтров.Свойство = Неопределено Тогда
МассивСвойств.Добавить(К);
КонецЕсли;
Если К.ИмяОтбора = "Категория" Тогда
СтрКатегорий = К;
КонецЕсли;

// Проверим на заполненность отбора по виду документа
Если К.ИмяОтбора = "ДокументОтчета" Тогда
Если ТипЗнч(К.ЗначениеОтбора) = Тип("СписокЗначений")
И К.ЗначениеОтбора.Количество()=0 Тогда
Предупреждение("Надо обязательно указать значение отбора для отбора по виду документа!", 60);
Возврат;
Иначе
Если НЕ ЗначениеЗаполнено(К.ЗначениеОтбора) Тогда
Предупреждение("Надо обязательно указать значение отбора для отбора по виду документа!", 60);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецЦикла;

МассивВидовДокументов = Новый Массив;

Индекс = 0;
СтрокаОтбора = Отбор.Найти("ДокументОтчета", "ИмяОтбора");

Если СтрокаОтбора = Неопределено Тогда
Для Каждого К Из мСписокВидовДокументов Цикл
МассивВидовДокументов.Добавить(К.Значение);
КонецЦикла;
Иначе
Если СтрокаОтбора.Использование Тогда
Если СтрокаОтбора.ВидСравнения = ВидСравнения.НеРавно
ИЛИ СтрокаОтбора.ВидСравнения = ВидСравнения.НеВСписке Тогда

СписокИсключений = Новый СписокЗначений;
Если ТипЗнч(СтрокаОтбора.ЗначениеОтбора) <> Тип("СписокЗначений") Тогда
СписокИсключений.Добавить(СтрокаОтбора.ЗначениеОтбора);
Иначе
Для Каждого К Из СтрокаОтбора.ЗначениеОтбора Цикл
СписокИсключений.Добавить(К.Значение);
КонецЦикла;
КонецЕсли;
Для Каждого К Из мСписокВидовДокументов Цикл
Если СписокИсключений.НайтиПоЗначению(К.Значение) = Неопределено Тогда
МассивВидовДокументов.Добавить(К.Значение);
КонецЕсли;
КонецЦикла;
Иначе
Если ТипЗнч(СтрокаОтбора.ЗначениеОтбора) <> Тип("СписокЗначений") Тогда
МассивВидовДокументов.Добавить(СтрокаОтбора.ЗначениеОтбора);
Иначе
Для Каждого К Из СтрокаОтбора.ЗначениеОтбора Цикл
МассивВидовДокументов.Добавить(К.Значение);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Иначе
Для Каждого К Из мСписокВидовДокументов Цикл
МассивВидовДокументов.Добавить(К.Значение);
КонецЦикла;
КонецЕсли;
КонецЕсли;

масЗапросов = Новый Массив;
Если НЕ ДобавитьДокументВЗапрос(масЗапросов, МассивВидовДокументов, МассивСвойств, СтрКатегорий) Тогда
Предупреждение("Установлены фильтры по реквизитам, которых нет в выбранных видах документов!
|Отчет не может быть сформирован.");
возврат;
КонецЕсли;

Колво = масЗапросов.Количество();

Если Колво = 1 Тогда
// РЕЗУЛЬТАТ ПОЛУЧАЕТСЯ ОДНИМ ЗАПРОСОМ
Запрос = масЗапросов.Получить(0);
Запрос.Текст = СтрЗаменить(Запрос.Текст, Символы.ПС + "#ПоместитьВоВременнуюТаблицу#", """");

Иначе
// НУЖНО ДЕЛАТЬ НЕСКОЛЬКО ЗАПРОСОВ
масИменТаблиц = Новый Массив;
Менеджер = Новый МенеджерВременныхТаблиц;

Для Сч=1 По Колво Цикл
Запрос = масЗапросов.Получить(Сч-1);

ИмяТаблицы = "ВременнаяТаблица" + Формат(Сч, "ЧГ=0");

ТекстЗапроса = Запрос.Текст;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Символы.ПС + "#ПоместитьВоВременнуюТаблицу#", Символы.ПС + "Поместить " + ИмяТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Символы.ПС + "УПОРЯДОЧИТЬ ПО Дата, Ссылка", Символы.ПС + "ИНДЕКСИРОВАТЬ ПО Дата, Ссылка");
Запрос.Текст = ТекстЗапроса;

масИменТаблиц.Добавить(ИмяТаблицы);
Запрос.МенеджерВременныхТаблиц = Менеджер;
Запрос.Выполнить();
КонецЦикла;

ТекстЗапроса = "ВЫБРАТЬ
| ОтобранныеДокументы.*
|ИЗ (";

Сч = 0;
Для Каждого ИмяТаблицы Из масИменТаблиц Цикл
ТекстЗапроса = ТекстЗапроса + ?(Сч=0, """", "
|ОБЪЕДИНИТЬ ВСЕ") + "
|ВЫБРАТЬ " + ИмяТаблицы + ".* ИЗ " + ИмяТаблицы;
Сч = Сч + 1;
КонецЦикла;

ТекстЗапроса = ТекстЗапроса + ") КАК ОтобранныеДокументы
|УПОРЯДОЧИТЬ ПО Дата, Ссылка";

Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.МенеджерВременныхТаблиц = Менеджер;

КонецЕсли;

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
ПечатьРеестра(Выборка);
КонецПроцедуры // ВидОбработкиДокументы()
"
Конфигурация и ее номер? Платформа и ее номер?
1С:Предприятие 8.1 (8.1.14.69)
Конфигурация "Управление торговлей", редакция 10.3 (10.3.8.9)
"ЕстьФильтры  = ДобавитьФильтрыПоДокументу(Запрос, ВидДокумента, МассивСвойств, ФлагЕстьУсловия);

Что за функция? Что она возвращает в вашем случае?
Подозреваю, что при проверке на дату ставится первое условие сословом И, а не ГДЕ."
1. Постарайтесь не обновлять конфигурации с обновлений, которые еще не вышли на ИТС.

2. Если нововведения или исправления ошибок жизненно необходимы вашей программе, то перед обновлением постарайтесь выждать некоторое количество дней, чтобы народ "отловил" большинство ошибок обновления и обязательно ознакомьтесь со всеми зафиксированными ошибками (в вышеуказанной конфигурации они просто "убийственны").

3. Делайте тестовое обновление на копии базы с максимальной проверкой функционала, который в основном используется в вашем управленческом учете.
У меня, кстати, ошибка не воспроизвелась... Укажите с какими настройками запускаете.
Какие настройки вы имеете ввиду?
1. Обновляем с сайта users.v8.1c.ru
2. Нововведения действительно жизненнонеобходимы нашей программе.
  А вот где можно увидеть "отловленные" ошибки обновления?
  (в вышеуказанной конфигурации они просто "убийственны")- обновим на следующее обновление
3. Ну сдесь все как вы говорите: делаем тестовое обновление на копии базы с максимальной проверкой функционала
1. Если не секрет, то какие именно из четырех новшеств так уж вам необходимы? :)
2. Список зарегистрированных ошибок расположен на той же странице, с которой скачиваете дистрибутив обновления (внизу).
3. Имелись ввиду настройки отчета "Реестр документов". Я пробовал выводить список всех документов за месяц, пробовал выводить с ограничением по виду "Заказ покупателя" и во всех случаях ошибка не возникала.
Какой у вас номер конфигурации и номер платформы?
Читают тему
(гостей: 1)

Быстрый переход