1с скд операция не разрешена в предложении упорядочить представление
При работе с запросами нередко возникает ситуация, когда результат запроса необходимо упорядочить по представлению некоторого ссылочного поля. Например, необходимо упорядочить список номенклатуры по представлению. Заметим, что упорядочивание непосредственно по полю Представление приведет к не вполне ожидаемому результату - результат будет упорядочен в порядке возрастания ссылок объектов. Данный эффект проявляется из-за того, что поле Представление является виртуальным и на уровне базы данных состоит из нескольких полей, из которых уже в момент получения значения поля получается строка - представление. При упорядочивании же по этому полю произойдет последовательное упорядочивание по реальным полям, из которого оно состоит, в результате чего упорядочивание произойдет не по строковому представлению, а по внутренней ссылке поля.
Пример неправильного упорядочивания:
Код 1C v 8.х
На самом деле, упорядочивание по представлению является довольно сомнительной операцией с точки зрения полезности результата. Для примера достаточно посмотреть на представления документов - эти строки содержат в себе даты, а упорядочивание дат как строк не даст осмысленного результата. Для того чтобы обеспечить упорядочивание, которое будет отвечать ожиданиям пользователей, следует использовать упорядочивание непосредственно по ссылочному полю и дополнительно указать в запросе ключевое слово АВТОУПОРЯДОЧИВАНИЕ. В таком случае запрос получит для каждого ссылочного поля реальные поля, по которым его необходимо упорядочить (для документа это будет дата и номер, для справочника - основное представление) и произведет упорядочивание по ним.
Пример правильного упорядочивания:
Код 1C v 8.х
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 3
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Посмотреть все результаты поиска похожих
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Система компоновки данных может доставить достаточно мороки не только новичкам, но и опытным разработчикам. Стоит внести, казалось бы, незначительную правку, и начинает стрелять в самых неожиданных местах. Но давайте уже переходить к делу и рассмотрим маленькую ошибку выполнения встроенной функции СКД, которую я обнаружил на днях в работе стандартного бухгалтерского отчета "Карточка счета".
В "1С:Бухгалтерии 8" одного из клиентов обнаружил невозможность сформировать стандартный отчет "Карточка счета" по некоторым счетам (чуть позже похожее поведение нашел еще в "Карточке субконто" и в "Отчете по проводкам"). Из-за данной периодически возникающей ошибки бухгалтера для работы стали использовать другую версию этого отчета из более ранних редакций конфигурации (когда еще до появления СКД применяли объект "Построитель отчета"). А вообще, если не считать эту тянувшуюся несколько лет ошибку, то в целом в работе системы их больше ничего не беспокоило.
В конфигурации была включена возможность внесения изменений и моими предшественниками были выполнены некоторые доработки под процессы компании. Но, к моему удивлению, конкретно бухгалтерская отчетность не модифицировалась. Что это - "особенные" настройки? Или результат "кривого" ручного обновления? Неужели ошибка типового функционала, которую за много лет никто не обнаружил?
Поиск причины ошибки
Отчет не сформирован!
Неверные параметры "+"
Вторая гипотеза: вывод отчета формируется программно, а на выводе конкретной строки почему-то вывод сбоит (как вариант, возможно при ручном обновлении были обновили функции из общих модулей, а про их вызов из модулей отчетов забыли). Поиском по верхней части текста ошибки обнаружил место фактического формирования табличного документа штатными механизмами платформы. Ошибка генерировалась уже через несколько секунд после начала выполнения следующей строки кода:
Именно во время выполнения обвернутого в попытку встроенного метода платформы и генерировалось исключение про неверный параметр плюса, который далее перехватывался в блоке обработки исключения и показывался пользователю. Следовательно теперь в поисках причины заинтересовавшей меня ошибки нужно идти в описание схемы компоновки.
Третье подозрение: возможно в схеме есть вызовы общих модулей либо для получения значения параметров отчета, либо для расчета вычисляемых полей, либо для формирования представления. И снова нет - ни единого вызова внешних функций, в которых могла возникнуть ошибка. Следовательно дальнейшие поиски ограничены исключительно схемой.
Вариант с ошибкой в запросе был маловероятным. Но я на всякий случай скопировал запрос в консоль запросов, повторил значения параметров и получил все данные периода. Включая те строки, с которыми система компоновки почему-то не смогла справится. Их анализ чуть позже подсказал причину проблемы и ее решение. Итак, поскольку с источником данных для запроса все было в порядке, то ошибку следует искать при пост-обработке в процессе вывода в макет.
Четвертой догадкой стала: проблема с формулами вычисляемых полей. В данном разделе были описано одиннадцать расчетных полей, в трех из которых содержались операции по конкатенации строк с помощью оператора "+". Это были формирование представления документа, а так же описания аналитик по Дебету и Кредиту. Выглядят они во всех типовых (и отраслевых) конфигурациях следующим образом:
Ошибка при исполнении запроса набора данных
по причине:
<(40, 4)>: Ошибка обработки представления "РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер ""1"")"
>РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних(&П3, ) КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
(1) anterehin, в конструкторе заходи в запрос, там таблицы с твоим регистром и вот там есть кнопка с этим параметром!
(2) Xershi, Если выделить регистр Сведений РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних и нажать в конструкторе Параметры виртуальной таблицы , то там как и ожидалось стоит параметр КонецПериода
(3) anterehin, так в запросе у вас так и написано, а текст ошибки с кодом не соотносится.
Пересохрани отчет, почисти кэш и проверь!
(6) anterehin, когда определяешь структуру вывода данных, там есть поле авто, попробуй указать только конкретные поля!
(7) Xershi, Авто убранно так как структура вывода нарисована с группами. но опять же какое отношение это имеет к параметрам?( Ушёл травиться никотином.. полтора часа сижу и не въеду
(9) anterehin, создай новый отчет с нуля с таким же запросом и проверь может глюк в настройках все-таки.
(10) Xershi, хм. закинул. не стал делать стандартный период.. не страл делать структуру вывода с группами, просто накидал поля.. работает.. сейчас буду затачивать как нужно и смотреть. вылезит ли и если да то на каком месте
(11) anterehin, СКД такая фишка, что кажется должно все пахать, а оно берет данные которые не учел. Поэтому если четко не знаешь что и откуда, метод тыка выручит))
закинул. не стал делать стандартный период.. не страл делать структуру вывода с группами, просто накидал поля.. работает.. сейчас буду затачивать как нужно и смотреть. вылезит ли и если
аналогичное со стандартным периодом вылезло. До определенного момента причем работало, но после усложнения запроса стал вываливаться в ошибку представления. (добавил ЕЩЕ одну временную таблицу). Не знаю.. может в том, что в одних таблицах период начало и конец, а в новой - регистр остатки срез последних.
В общем други давайте думать вместе. После того как создал новый отчет и вставил в него работающий запрос с вынесением в структуру данных полей всё заработало. Но. в СКД упорно появляется параметр "Период" и тянется он из регистра сведений
РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних. И начинается следующее..вешаю на "Период" стандартный период и параметры НачалоПериода и КонецПериода, после этого начинает появляться вышеописанная ошибка. В параметрах СКД создаю параметр "ПериодОтчета" делаю стандартным периодом и соответственно привязываю НачалоПериода и КонецПериода. Но возникает одно большое НО. Регистр сведений никак не хочет видить параметр КонецПериода который у него указан в виртуальной таблице и запрашивает свой. Если указываю стандартный период равный месяцу, а параметр "Период" = КонецПериода то всё работает. Но спрашивается зачем мне его указывать явно((. В чем трабла?
в параметрах СКД у параметра в выражение написал "&ПериодОтчета.ДатаОкончания" и поставил ограничение на параметр.
Но не понятно почему всё же не видит параметр из виртуальной таблицы
(14) Dmitry_Shelchkov, Переименовать в запросе?
Переименовал , теперь в СКД 3 параметра: НачалоОтчета,КонецОтчета, ПериодОтчета))
В общем как показал гуглёжь мои метод один из правильных.
НачалоПериода и КонецПериода появляются при использование оборотных регистров
Период при использование регистра остатков.
В параметрах Период ограничивается и в выражение приравнивается либо к НачалоПериода либо КонецПериода в зависимости от того какой срез нужен
Переименовать в запросе.
В оборотном регистре, если явно не указан параметр, то появляются скдэшные "НачалоПериода" и "КонецПериода", поэтому нежелательно использовать параметры с таким именем в запросах - могут конфликтовать. В итоге в параметрах должны появиться и наши параметры и эти, добавляем стандартный период, на все параметры вешаем Период.ДатаОкончания и Период.ДатаНачала и все работает))
Долгая медитация и расследования привели к следующему результату.
Если коротко: Параметры для СКД устанавливать на вкладке "компоновка данных" в конструкторе запроса.
И длинно:
В конструкторе запроса на вкладке "таблицы и поля" параметру виртуальной таблицы *СрезПоследних "Период" задаем имя "&Период1". Имеются другие виртуальные таблицы с параметрами "НачалоПериода" и "КонецПериода". СКД создает параметры: "НачалоПериода" тип "дата", "КонецПериода" тип "дата" и "Период1" тип "дата" Параметр "Период" тип "СтандартныйПериод" создадим для удобства повесив Период.ДатаОкончания и Период.ДатаНачала на соответствующие параметры. При выполнении выдает ошибку примерно следующего толка: "Ошибка обработки представления "РегистрСведений.*.СрезПоследних:Несоответствие типов (Параметр номер ""1"")"ЛЕВОЕ СОЕДИНЕНИЕ >РегистрСведений.*.СрезПоследних(&П3, )"
Что за параметр П3 (пэ три)?! И именно в этот момент стоить обратить внимание вкладку "компоновка данных" в конструкторе запроса. И на ней мы обнаружим, что у параметров виртуальной таблицы нет установленных нами значений! Задаём имя параметру "период" - "&ПериодКД". Теперь на вкладке "Параметры" в СКД появится параметр ПериодКД (с типом "дата") и повесив на него Период.ДатаОкончания убедимся что все работает.
В тексте запроса это выглядит так: . РегистрСведений.*.СрезПоследних(&Период1 , ) КАК .
Anatolia; Enot; user688921_moldpavel; MarMargo; EpiSH; DIOmisus; thornhiven; Veric; Iva_Irina_Iva; shevchen88; zaycevav1977; ejijoka; user_pdd; mnitsi; &rew; user1402183; Tutr; Julia7150; kulak1974; criptid; serverstar; link_l; maksimus753; user712426; sizeoff; _Dmitry_; Invodev; TManukovskaya; NittenRenegade; Maruska77; vikochkagridina; merabn; Den_D; user785234; Andrekaa; vtolstenev; salikoff; akalugin; user1040665; jimli; BurlakovIvan; Mahon83; blackjack666; Draconus; user659124_s.kostina; aupovy; Salavat; Pigzilla; user1058210; newborn; fixin; nixen88; MaxxiMiliSan; Xel'naga; WasiliyMay; Slypower; ivanek; Jackch; Mehozavr; Andy_NTG; alenka1c; Meson; V_Izzy; dvadva; simy4; Somaha; Sergey_Borisovi4; delsoft; SmArtist; smokevg; AleksKol; Vida; user1044069; lsnr; spenser123; user811769; YellowAndBlue; compaud; V_Ladeska; k992007; ilya4; Inzoo; Georot; mlv84; cobern; Ovkay; terran_1C; user1003854; tarassov; корум; Gadzhalik; VasilyErmak; MulderCelica; _Farsh_; Ctrl P; levante90; mkosirev; BladeWorld; AnyaIT; Amfick; Bovori; DarkUser; vist666; Dicc; scanner1980; oleg55555; GOshaSaveiko; pihy; АнатолийАндреевич; alalsl; bluntschi; Misanets; suepifanov; Elena_Q; Georgik; bobah_; Lunulariss; + 117 – Ответить
При работе с запросами нередко возникает ситуация, когда результат запроса необходимо упорядочить по представлению некоторого ссылочного поля. Например, необходимо упорядочить список номенклатуры по представлению. Заметим, что упорядочивание непосредственно по полю Представление приведет к не вполне ожидаемому результату - результат будет упорядочен в порядке возрастания ссылок объектов. Данный эффект проявляется из-за того, что поле Представление является виртуальным и на уровне базы данных состоит из нескольких полей, из которых уже в момент получения значения поля получается строка - представление. При упорядочивании же по этому полю произойдет последовательное упорядочивание по реальным полям, из которого оно состоит, в результате чего упорядочивание произойдет не по строковому представлению, а по внутренней ссылке поля.
Пример неправильного упорядочивания:
Код 1C v 8.х
На самом деле, упорядочивание по представлению является довольно сомнительной операцией с точки зрения полезности результата. Для примера достаточно посмотреть на представления документов - эти строки содержат в себе даты, а упорядочивание дат как строк не даст осмысленного результата. Для того чтобы обеспечить упорядочивание, которое будет отвечать ожиданиям пользователей, следует использовать упорядочивание непосредственно по ссылочному полю и дополнительно указать в запросе ключевое слово АВТОУПОРЯДОЧИВАНИЕ. В таком случае запрос получит для каждого ссылочного поля реальные поля, по которым его необходимо упорядочить (для документа это будет дата и номер, для справочника - основное представление) и произведет упорядочивание по ним.
Пример правильного упорядочивания:
Код 1C v 8.х
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 3
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 0
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Веб браузер в 1С используя поле HTML документа 3
Настраивал клиенту CRM, он захотел - чтобы панель управления сайтом была в 1С. Хочет - делаем: Обработка Веб браузер проста, состоит из поля HTML документа и 20 строчек кода: Код команд: НаКлиенте Процедура Команда1(Команда) Объект.HTML = Посмотреть все результаты поиска похожих
Еще в этой же категории
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Что такое менеджер временных таблиц и как с ним работать? 11
В 1С есть такая замечательная вещь, как МенеджерВременныхТаблиц . Этот объект позволяет передавать временные таблицы из одного запроса в другой. То есть, мы можем создать временную таблицу в запросе, прерваться, выполнить какой-нибудь код, и продо Объектная модель схемы запроса 5
Периодически во встроенном языке возникает необходимость изменения текста запроса в зависимости от разных алгоритмических условий. Раньше подобная задача решалась путем непосредственного формирования нужного текста запроса в виде строки. А это не вс Как в запросе объединить несколько значений в один столбец отобрав по условию? 1
Бывают ситуации, особенно когда формируешь отчеты по проводкам, где надо вывести отчет по одному типу значений и эти значения могут быть в разных колонках регистра. В примере ниже, необходимо собрать отчет в разбивке по Номенклатурным группам. Про Курс по разработке и оптимизации запросов в 1С (Часть 1) 0
Часть 1. Основные конструкции языка запросов и их назначение • Назначение языка запросов • Структура запроса • Основные секции запроса и их назначение • Группировка результатов запроса • Фильтрация результатов запроса • Объединения и соединени Посмотреть все в категории Запросы
При работе с запросами нередко возникает ситуация, когда результат запроса необходимо упорядочить по представлению некоторого ссылочного поля. Например, необходимо упорядочить список номенклатуры по представлению. Заметим, что упорядочивание непосредственно по полю Представление приведет к не вполне ожидаемому результату - результат будет упорядочен в порядке возрастания ссылок объектов. Данный эффект проявляется из-за того, что поле Представление является виртуальным и на уровне базы данных состоит из нескольких полей, из которых уже в момент получения значения поля получается строка - представление. При упорядочивании же по этому полю произойдет последовательное упорядочивание по реальным полям, из которого оно состоит, в результате чего упорядочивание произойдет не по строковому представлению, а по внутренней ссылке поля.
Пример неправильного упорядочивания:
Код 1C v 8.х
На самом деле, упорядочивание по представлению является довольно сомнительной операцией с точки зрения полезности результата. Для примера достаточно посмотреть на представления документов - эти строки содержат в себе даты, а упорядочивание дат как строк не даст осмысленного результата. Для того чтобы обеспечить упорядочивание, которое будет отвечать ожиданиям пользователей, следует использовать упорядочивание непосредственно по ссылочному полю и дополнительно указать в запросе ключевое слово АВТОУПОРЯДОЧИВАНИЕ. В таком случае запрос получит для каждого ссылочного поля реальные поля, по которым его необходимо упорядочить (для документа это будет дата и номер, для справочника - основное представление) и произведет упорядочивание по ним.
Пример правильного упорядочивания:
Код 1C v 8.х
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 3
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Посмотреть все результаты поиска похожих
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Читайте также: