На практике часто встречал ситуацию, когда надо получить данные (показатели) из регистра накопления "Остатки и обороты" с разворотам по периодом. В основном по месяцам. И должны выходить и те месяца, в которых движений по этому регистру не было. Путем проб, ошибок и поиска в интернете такой запрос получить удалось.
При создании внешних печатных форм часто приходится модифицировать типовой запрос, который собирается по частям. Такие запросы сложно редактировать. Но есть один способ, которым я пользуюсь.
Представляю Вашему вниманию алгоритм перебора вариантов «наполняемости ранца» с помощью запросов. При определенных условиях он работает быстрее чем обычный рекурсивный перебор.
Вариант получения запросом структуры иерархического справочника в виде плоской таблицы с динамическим количеством колонок по фактическому максимальному уровню иерархии элементов/групп справочника.
В программе "Зарплата и кадры бюджетного учреждения" источники финансирования распределяются с начала года периода регистрации, если больничный считается в январе месяце, то скорее всего он будет весь из бюджета или основной статьи финансирования. Следующие изменения позволяют брать для распределения предыдущие два года.
На примере нестандартной задачи, связанной со структурой данных, продемонстрированы возможности подсистемы для выполнения «прямых» запросов к базе 1С клиент-серверной версии.
Был отчет, в котором к неким датам прибавлялось 15 дней функцией ДобавитьКДате(). Но вот понадобилось добавлять к дате не все дни, а только рабочие. Сделал запрос, может быть кому понадобится
К сожалению, возможности запросов 1С в отношении строковых переменных крайне малы. Практически они исчерпываются одной функцией и одним оператором. Тем не менее, постоянно всплывают темы в духе «а как мне сделать это прямо в запросе?». Конечно, большинство задач решаются в СКД, оставшаяся часть решается пост-обработкой результата, но чисто в качестве разминки для ума, кое-что в запросе сделать можно.
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для кого-то могут быть полезны.
Иногда возникает необходимость рассчитать страховые взносы с отрицательной базы, но типовая зарплата сделать этого не позволяет. Предлагаю пример изменения запросов на релизе ЗКБУ 1.0.47.2 и всё будет считаться. Проверено на больших бюджетных организациях.
Для разворачивания остатков/приходов/расходов на каждую дату месяца, в запросе, требуется как минимум список дат месяца по которому будут развернуты данные
Нередко пользователь хочет иметь возможность указать какой-то параметр при запросе к OLAP. Сам OLAP ничего про параметры не знает. Однако есть способ, как это реализовать.
Имея некоторый опыт разработки, не раз приходилось видеть, насколько нерационально и громоздко порой строятся запросы начинающими разработчиками к информационным базам 1С. Существует достаточно простой и удобный механизм временных таблиц, при использовании которого можно разбить большой и плохо читаемый запрос на несколько небольших. Можно так же по некоторому алгоритму сформировать таблицу значений, поместить ее во временную таблицу и выполнить по ней запрос.
В данной публикации на примере процедуры проведения документа Реализация, не вникая в детали алгоритма проведения, описываются некоторые приемы использования временных таблиц в запросах к информационной базе на платформе 8.2. Автор публикации не претендует на полноту освещения вопроса или методическую безупречность.
Для ускорения работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое, нужно уменьшить количество выполнений запроса.
Для того чтоб запрос не выполнялся каждый раз при переходах по списку можно использовать Соответствие, которое будет выполнять роль временного хранилища результатов запросов.
Иногда бывает нужно получать в запросе все подразделения с учётом иерархии, если на входе даны только подразделения верхнего уровня. Ниже приведён простой пример, как решить эту задачу. Решение задачи не накладывает ограничений на уровень вложенности подразделений.
Когда мой запрос стал таким сложным, что превысил пределы моего понимания, я решил использовать пакетные запросы.
Но столкнулся с фактом, что ничего о них не знаю. Оказалось, все очень просто. Через 5 минут вы будете уметь пользоваться пакетными запросами. Начинайте читать.
Неоднократно сталкивался с необходимостью написания запроса для получения остатков по периоду накопления на каждый день. Поскольку рабочий инструмент - консоль запросов, то хотелось получить результат без использования СКД (да и разбираться с ней начал существенно позже). Идея, вероятно, слегка извращенная, но работающая. Альтернативные более быстрые варианты принимаются)
Столкнувшись с проблемой загрузки из OpenOffice не сразу понимаешь как и что загружать.
Давайте разберемся.
Доработав запрос под себя можно грузить абсолютно все.(По моему не сложно.)
Всем, кто начинает работать с 8.2 после 8.1, не сразу становится понятным, зачем было настолько усложнять работу программистам.
На сервере мы можем выполнить запрос, на управляемую форму бросить таблицу значений, но вот передать результат запроса прямо в таблицу возможности нет. Я решил слегка упростить данный момент для разработки. Вот что у меня получилось.
Часто в отчетах требуется получить дату через N банковских дней,
данный запрос на выходе дает таблицу:
Дата | Дата_Через_N_Банковских дней.
Параметр (&КоличествоБанковскиДней*1.5 + 20)
не случаен 20 - максимальное количество не банковских дней подряд (примерно)
1,5 - отношение количества банковских дней к календарным дням,
чем он меньше тем быстрее выполняется запрос, но если он слишком мал, не все даты могут попасть в
результат, поэтому взял с запасом.
Статья призвана показать пример как реализовать ФИФО в запросе на произвольном примере для начинающих программистов.
Пример использования ФИФО в запросе.
Допустим есть поступление денежных средств на 100 рублей.
Сколько реализаций товаров оплачено, какую часть последнего документа оплатили?
Результат таблица
Реализация СуммаДокумента Оплата
1 10 10
2 50 50
3 50 40
Запрос проверяет счета учета номенклатуры в документах (например реализации товаров услуг) за период...
Суть такая же как и в стандартном механизме получения счетов учета, проверка 5-ти вложенностей номенклатуры, + склад + вид склада + организация. по таким же приоритетам. повторяет функцию получения счетов учета, но только одним запросом.
пользуйтесь...перенос строк не работает при копипасте в HyperText Transfer Protocol
Первая статья из цикла статей "Прямые запросы:...". Рассказывается о применении класса ПрямойЗапрос и компоненты 1С++ для ускорения функции глВернутьЦену() в типовой конфигурации Торговля и склад. Платформа 7.7.
Данная часть статья является чисто теоретическим отступлением, объясняющим механизм, который будет использован в дальнейшем. В статье объясняется, как получить значения «нарастающего итога» для N различных таблиц в рамках одного запроса.
Зачастую возникают задачи по поиску и замене ссылок в базе. Конечно же все пользуется не заменимым инструментом - обработкой "Поиск и замена значений".
Но, также, довольно часто, объем заменяемых данных велик и обработкой проблематично пользоваться вручную.
Часто в типовых конфигурациях приходится сталкиваться с запросами на пару тысяч строк, да еще и на СКД. Зачастую в конструкторе запроса очень сложно понять откуда и как берутся итоговые цифры, хочется «пробежаться отладчиком» по запросу и посмотреть все этапы расчета.
В данной статье один из способов такой отладки запроса.
Чтобы узнать какие движения сделал документ по конкретному регистру, в моем случае это регистр "ОстаткиПоСчетам" (оборотный), была написана следующая функция в глобальном модуле. Работает только для SQL версии и установленной внешнй компонентой 1С++!
При ситуации, когда необходимо проверить, есть ли у документа подчиненный документ, конкретного вида или нет, если есть, вывести на экран, в этой ситуации будет полезна следующая функция глобального модуля. Работает только в SQL версии и при установленной внешней компоненте 1С++ !