1с 77 упорядочить по
Добрый день,есть запрос созданный 1С 7.7 попросили немного изменить его таким образом чтобы сортировка шла по дате создания документа.Цель запроса вывести все накладные клиента за определенную дату,например с 01.06.12 по 20.06.12 ///////////////////////////////////////////// правильно ли написан запрос?
типа вот так Контрагент = Документ.Реализация.Контрагент; Группировка ТекДок упорядочить по ТекДок.ДатаДок;
Группировка НомерНакл Упорядочить по Документ.РасходнаяНакладная.ДатаДок; т.е предлагаете сделать так? НомерНакл небходим для группировки и вывода номеров накладных в строке результата запроса
потому что (по моему) "Группировка НомерНакл Упорядочить по ДатаДок;" группировать по одному полю, а упорядочивать по другому не получится. может я ошибаюсь)))
Я сегодня (22.07.12) создал документ от 30.05.12. Т.е. дата создания 22.07.12 А вот дата документа 30.05.12
задача стоит такая что номера накладных должны выводиться по дате . Т.е если за период времени клиенту выписали 5 накладных то они должны отобразиться все начиная от меньшей даты к большей.Изначально я сделал группировку по НомерНакл /////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// Но бухгалтера сказали что накладные отображаются по возрастанию номера накладной.Я поменял на Группировка ДатаДок,опять пришли и сказали что отображаются только последние накладные а не все за период скажем 5 дней.Теперь как сделать так чтобы сортировать накладные по дате документа.
Нет не путаю. У тебя буха разносят выписку день в день или будут сегодня создавать выписку за вчера, т.е. проводить ее 21.06 ?
Бухи клиентам делают выписку по накладным и клиентам удобнее смотреть накладные по дате документа, а не возрастанию накладных
а где в 7ке дата создания и дата документа, и разве они отличаются? я почему то всегда думал что есть ДатаДок единственная и неповтр.
> отображаются только последние накладные а не все за период скажем 5 дней а это как от группировок зависит?
я про ДатаДок и говорю, документ например был создан 15.06.12-это и есть его дата создания.Я имел ввиду что сортировать по ДатаДок что показать накладные за весь выбранный период.Кстати код из работает, спасибо,сейчас посмотрю
В явном вие его нет. В неявном, например в журнале регистрации. Плюс ID документа тоже возрастает по мере создания. ак что сортировка по ID и будет сортировкой по дате создания Нет 15.06.12 это дата докуменента, ну никак не дата создания. Тем более завтра баба Маша поняла что ошиблась и исправила дату на 20.06.12. И что по твоему дата создания поменялась?
а где ты в нашел ИД? да ТС просто под датой создания понимает, если не ошибаюсь дату которая в Шапке дока стоит)) т.е. дата документа
Не могу найти, как получить детальные записи по регистру при составлении запроса на 7.7. То есть, если мне нужна группировка по какому-либо полю, а затем я хочу получить и вывести детальные записи из регистра - то какую конструкцию запроса надо использовать?
Текст запроса примерно такой:
(4) Группировка "Документ", пожалуй, не подходит, поскольку в регистр пишутся записи не аналогичные строке документа.
(3) "Тупо обход группировок" - это как на 7.7?
Вот на восьмерке есть конструкция "Детальные записи", а в 7.7 не могу найти аналог.
(10) Группировка "Документ" ведь судя по ЖКК даёт группировку по документу? А у меня в документе, допустим, 7 строк, а движений по регистру - 21.
"детальные записи из регистра" - это записи, не просуммированные по какой-либо "группировке" или как?
.
в регистре следующие записи:
Документ1 заказчик1 подрядчик1 100
напиши - что в отчете хочешь увидеть?
(9) Возможно, я неправильный подход изначально выбрал. Сейчас попытаюсь объяснить, что хочу получить на выходе.
(12) какое отношение строки в ДОКУМЕНТНЕ имеют отношение к документу, который зафиксирован в регистре? - НИКАКОГО! (в твоем случае)
(9), (13) В отчете хочу увидеть примерно следующее:
Строка1ГруппировкаЗаказчик (с итогами по группировке): заказчик1 1400
(18) Документ -> Регистр -> Отчет (так на курсах объясняли).
Объясняй по человечески: есть док-ты, в них есть то-то и то-то, в отчете хочу увидеть то-то и то-то. А еще лучше - картинку нарисовать. В цвете - вообще круто.
(18) ответ неверный.
суммы нижних иерархий не дают сумму верхних уровней.
(19) у него в голове пока табун блондинок носится. ждем пока симогут хотя бы пипидастрами потрясти и какое-то осмысленное движение выдать.. ;-)
(20) Это часть отчета, в котором для быстроты посчитал только группировку по заказчику1, по заказчику2 и их детальные записи.
(20) Сорри, облажался, цифры в глаза набились.
делай как намного выше написал:
(15) Вроде не подходит, поскольку у меня одна строка документа может делать 2-3-4 движения по регистру.
(34) зачем?
чем эти две записи отличаются?
По какому признаку ты ИХ МОЖЕШЬ РАЗДЕЛИТЬ?
Уговорили, пойду попробую поиграться с группировками по документу и НомерСтроки. Хотя нутро протестует, ибо в ЖКК читаю, что эти группировки относятся к документу и строкам документа.
(36) НомерСтроки - если запрос к документам (а не к регистру) или к регистру, в котором привязаны номера строк.
.
(37) эти 100 рублей и 200 рублей - ОДИНАКОВЫЕ - их не различишь к чему они относятся. и 100 руб и 200 руб относятмя к "заказчик1, подрядчик1". если пользователю важно занть что 200 рублей - то он захочет увидеть за что эти 200 рублей - то есть третий член кортежа, например "статья работ". если это неважно (статья работ) - то и неважно разделение на 100 и 200.
Ибо
"заказчик1, подрядчик1" 300
и если у тебя нет "статьи работа" (третьего уточняющего измерения - ты не сможешь сделать вывод что к чему относится. и какие цифры правильные. а какие нет.
такое деление с подробностями что 300 состоит из 100+200 могу представить только если надо оценить некую "емкость" - то есть сумма получена крупными подрядами, или мелкими. но сомневаюсь, что именно это нужно в данном случае. ибо тогда уже надо быбло бы считать распределение пордряодов по величинам сумм, а не их тупой перечень выводить.
чОрным запросом движения детально не получить.
либо прямым запросом.
либо перебором движений документа.
давайте лучше поговорим о том, являются ли несколько движений документа по регистру цепочкой движений или нет?
)
Возвращаясь к написанному.
В общем, почему надо получать движения регистра: на самом деле показателей (измерений и реквизитов) в записи регистра много, и показывать кучу группировок в отчете становится - не очень информативно и наглядно. Нужно 3-4 группировки, а дальше нужно показывать уже просто список движений, без дополнительных группировок. Это во-первых.
Во-вторых, как я сталкивался, запрос в 7.7 поддерживает только 7-8 уровней группировок, а дальше уже идёт ограничение на уровне платформы, поэтому физически не смогу показать 9 и более группировок.
Пробовал группировки "Документ" - выдает только уровень документа. Группировка "НомерСтроки" выдет строки документа (а нужны движения регистра).
Или для начала тупо сделай три группировки как выше
В обходе группировок для самой нижней группировки документа считывай движения документа и выводи в отчет
Работы на 10 минут для тестового варианта, а ты уже день мусолишь
Тем более что я скайп онлайн да нще и безвазмезна
(56) не соглашусь
Ибо видя две совершенно одинаковые записи только в одной 100 а в другой 200 любой вменяемый пользователь если ему нужна такая информация с делением на 100 и 200 - сразу же захочет увидеть почему здесь 109 а злесь 200
Тем не менее вариант решения есть я выше написал
Изготовить его - дело 10 минут
(55) Это у вас день, я вопросом занялся под конец рабочего дня, потом поездки, купания детей и т.п.. Сейчас вот только затестил отчет с новыми методами группировок.
(58) Там разница не только в 100 или 200, но ещё и по адресам, инженерам и куче всего. Но по адресам и инженерам группировки не нужны, нужен просто список движений, где адрес или инженер - не группирующая строка, а просто колонка.
(55) "делай тупую выборку движений документа и показывай ". Ну вот вопрос у меня в этом и был - есть ли типовой механизм как в восьмерочном запросе или нужно по мере получения выборки в запросе обращаться к промежуточным результатам запроса (например, документу) и уже делать выборку дополнительную.
А так - три группировки с консолидацией цифр на первых двух уровнях, а на третьем - выбором тупо движений документа
(69) угу спсб
За туеву хучу лет никогда не сталкивался с необходимостью вывода большого еоличества группировок, ибо нах никому это не надо.
И у тебя получается что регистр с несколькими измерениями и туевой зучей справочных реквизитов для движений.
(71) Нужен очень и очень детализированный отчет. Контора бюджетная, поэтому нужно отображать все нюансы в отчете. На разговор о целесообразности этого, думаю, не стоит тратить времени))
(74) Ещё нет) В выборке движений тоже ведь надо будет отбирать движения по условиям. В одном документе могут быть несколько показателей, которые сидят в табличной части, и по которым идет группировка.
Пипец
В среднем для анализа используются три группировке, все остальное расшифровками. Что бы отследить вручную восемь уровней это да!
Обзови в запросе группировки как реквизиты документа
А при выборке движений документа циклом прокрути значения фильтра по атрибутам регистра и все
(76) бюджет.
Бюджету очень важно
Что десять силикатных кирпичей положил кирпичник юсуф с окладом 10 тыс, а другие десять силикатных кирпичей положил кирпичник Махмуд с окладом 10 тыс
(79) если в регистре строка документа привязана - то поможет
Но если у автора на строку документа генерятся несколько ОДНОРОДНЫХ записей (я это с трудом представляю) - то не поможет даже привязка строки в документе
Хотя например можно посмотреть можно ли в привязку номера строки в регистр засунуть произвольное число
(81) На одну строку документа генерятся записи с разными инженерами. На один документ проставляется несколько инженеров и суммы в табличной части делятся поровну на количество инженеров. Поэтому 1 строка документа = несколько записей регистра с практически одинаковыми суммами, но с разными инженерами.
(81) Предлагаете в методе Привязыватьстроку(НомерСтроки) ставить не номер строки документа, а свой номер?
(84) угу, простой счетчик от 1 до N - по количеству записываемых движений. Тогда делаешь запрос где в переменных описываешь все нужные тебе уникальные переменные и делаешь группировку Заказчик-подрядчик-Документ-Строка
Подобная "разработка" использовалась для анализа/сравнения порядка индексов таблиц БД в различных СУБД: "родные" DBF, MS SQL, CodeBase 6.5, Advantage 7.x/8.x/9.x. Тогда было выяснено, что в этих СУБД разный порядок сортировки индекса.
Особенности сортировки в "1С:Предприятие 7.7".
Подобная "разработка" использовалась для анализа/сравнения порядка индексов таблиц БД в различных СУБД: "родные" DBF , MS SQL, CodeBase 6.5 , Advantage 7.x/8.x/9.x. Тогда б ыло выяснено, что в этих СУБД разный порядок сортировки индекса.
Повторно обратиться к данной "проблеме" меня побудил планируемый переход с Windows МЕ/ 2000/ XP на Windows 7 (локализация Eng и Rus есть во всех вариантах Windows -а).Т.е. для выяснения - достаточно ли только отключить проверку кодовой страницы ( файлом OrdNoChk.prm) при совместной работе этих ОС-ов с общей базой данных.
Конфигурация и внешняя обработка показывает порядок сортировки для:
1) Массива символов.
2) Индекса таблицы БД.
3) Таблицы значений.
4) Списка значений.
В результирующем отчете выделяются цветом символы не совпадающие с элементом массива в результате сравнения с применением функции ВРег(), т.к. в "движке" 1С для построения индекса таблицы, для символьных полей, используется функция UPPER().
1) Развернуть архив.
2) Подцепить каталог в окне запуска 1С.
3) Войти в 1С монопольно.
Внешняя обработка и "документация" расположены в подкаталоге ExtForms.Файл "Символы.mxl" создан ( локально) в DBF -ной версии "1С : Предприятие 7.7" (версия 7.70.25) под управлением "Windows XP Professional x64 Edition SP2 " (Eng) и полностью совпал с файлами (и базой данных) созданными в " Windows 2000 Advanced Server SP4+Update Rollup 1"(Eng) и "Windows ME"( Rus) .
Что можно выяснить данной "разработкой"?
После выполнения настроек (по рекомендациям разработчиков 1С) развертываем данную "разработку" под управлением различных ОС-в. Сохраняем отчеты в файлы. Сравниваем файлы из под различных ОС-ов. Если файлы полностью совпали, то можем "спать спокойно". И, соблюдая ограничения и рекомендации от разработчиков 1С, эксплуатируем систему в рамках уже существующих проблем расхождения порядка сортировки. Т.е. системе не стало сильно хуже. Это не означает, что не появятся другие проблемы. Но это хоть какая-то гарантия, что система, на первый взгляд, работоспособна.
Если файлы не совпали, то проводим сравнения (глазами и руками) строк таблицы отчета. Возможны следующие (приблизительно) варианты при расхождении значений в строках:
1) "Массив" - нарушения в логике проблемных алгоритмов (написанных на встроенном языке платформы) и в логике системных (внутренних) алгоритмов платформы.
2) "Индексы" - порча индексов и, как следствие, порча базы данных.
3) "Таблица" и/или "Список" - нарушение в логике проблемных алгоритмов (написанных на встроенном языке платформы).
Обновление от 20.06.2011:
Добавлено создание файлов *. dat в подкаталоге ExtForms, что позволяет сравнить идентичность порядка сортировки отдельно для "Массива, Индекса, Таблицы, Списка" программным способом, а не "глазами и руками".
Загрузка. Пожалуйста,
подождите.
Репутация: нет
Всего: 1
У меня есть запрос 1С, как мне упорядочить его по возрастанию/убыванию дат (ДатаИзменения)?
Где изменить запрос?
Код |
ЗапросТекст = "// |ЭлементИстории = Справочник.ЛогДокументов.ТекущийЭлемент; |Группировка ЭлементИстории Упорядочить по ЭлементИстории.ДатаИзменения Возр; |Условие(ЭлементИстории.Док = Док); |Условие(ЭлементИстории.ДатаИзменения >= ДатаНачало); |Условие(ЭлементИстории.ДатаИзменения |
Репутация: 8
Всего: 9
А почему бы просто не скинуть результаты запроса в таблицу значения и там не отсортировать, так на мой взляд будет проще и быстрее сделать.
Репутация: 15
Всего: 24
Цитата(sergey_85 @ 25.8.2009, 08:21 ) |
У меня есть запрос 1С, как мне упорядочить его по возрастанию/убыванию дат (ДатаИзменения)? |
Запрещается!
Пробуйте искать сами или обращайтесь в приват к участникам форума.
Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.
Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п. )
2. Давать ссылки на взломанные продукты
- Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
- Название темы должно отражать её суть
- Действия модераторов можно обсудить здесь
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема » |
[ Время генерации скрипта: 0.0971 ] [ Использовано запросов: 20 ] [ GZIP включён ]
Войдите как ученик, чтобы получить доступ к материалам школы
Язык запросов 1С 8.3 для начинающих программистов: упорядочивание
Автор уроков и преподаватель школы: Владимир Милькин
Упорядочивание в запросах
Давайте напишем запрос, который получает из таблицы Справочник.Еда код и название еды:
Как всегда, выполните этот запрос у себя на компьютере.
С большой долей вероятности у вас получится следующий результат:
Возможно вы удивитесь, но при таком написании запроса никто не гарантирует нам именно такого порядка выдачи записей в таблице. В случае использования клиент-серверного режима работы на различных СУБД результат мог бы быть и такой:
И . ну в общем вы поняли, что если мы не указываем порядок сортировки (упорядочивания) результата запроса, то этот самый порядок может быть абсолютно любым.
Секция УПОРЯДОЧИТЬ ПО
Поля по которым требуется упорядочить запрос перечисляются в секции УПОРЯДОЧИТЬ ПО через запятую:
Следом за именем поля упорядочивания может идти одно из двух ключевых слов:
- ВОЗР- упорядочивание по возрастанию.
- УБЫВ - упорядочивание по убыванию.
Если не указывать ни одно из этих слов, считается, что сортировка идёт по возрастанию.
Вооружившись знаниями, давайте упорядочим результат нашего запроса по убыванию поля Код:
По возрастанию поля Наименование (алфавитный порядок):
А теперь упорядочим следующую таблицу
так, чтобы сначала шла сортировка по полю Вкус по возрастанию, а затем (среди строчек с одинаковым значением поля Вкус) шла сортировка по полю Цвет по убыванию:
Отдельно обращаю ваше внимание на то, что мы указали сортировку не по самим полям Вкус и Цвет, а по их строковому реквизиту Наименование. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Это связано с тем, что сортировка возможна лишь по полям имеющим один из типов: Строка, Число, Дата.
А поля Вкус и Цвет являются ссылками на элементы справочников Вкус и Цвет, сортировать по которым не имеет смысла (в этом случае сортировка будет вестись по внутреннему идентификатору ссылки). Зато можно сделать сортировку по одному из реквизитов этих элементов. Наиболее подходящим в нашем случае будет строковый реквизит Наименование.
Возможность автоупорядочивания
Ключевое слово АВТОУПОРЯДОЧИВАНИЕ позволяет включить режим автоматического формирования полей для упорядочивания результатов запроса.
Мы сейчас познакомимся с этой возможностью подробно, но сразу хочется оговориться, что фирма "1С" в своих методических рекомендациях не советует использовать её без необходимости (о причинах этого мы поговорим ниже).
Прежде всего, ключевое слово АВТОУПОРЯДОЧИВАНИЕ может быть расположено в запросе сразу за или вместо секции УПОРЯДОЧИТЬ ПО:
Автоупорядочивание работает по следующим принципам:
Тогда ссылка на каждую таблицу в этой секции будут заменена полями, по которым по умолчанию сортируется эта таблица.
Для таблиц справочников полями сортировки по умолчанию являются код и наименование, выбор из которых осуществляется в соответствии с настройками справочника в конфигураторе:
Для таблиц документов полем сортировки по умолчанию является дата документа.
Так как поле сортировки ЛюбимыйЦвет имеет тип Справочник.Цвета, в настройках которого основным представлением выбрано поле Наименование, то этот запрос эквивалентен:
- отсутствует секция УПОРЯДОЧИТЬ ПО
- но есть секция ИТОГИ ПО (её мы будем проходить позже)
В этом случае результат запроса будет упорядочен по полям итогов (в той же последовательности).
Если среди этих полей есть ссылки на таблицы, то они также будут заменены полями, по которым сортируются эти таблицы по умолчанию.
- отсутствует секция УПОРЯДОЧИТЬ ПО
- отсутствует секция ИТОГИ ПО
- но есть секция СГРУППИРОВАТЬ ПО (группировку мы проходили здесь)
В этом случае результат запроса будет упорядочен по полям группировки (в той же последовательности).
Если среди этих полей есть ссылки на таблицы, то они также будут заменены полями, по которым сортируются эти таблицы по умолчанию.
Так как поле группировки Город имеет тип Справочник.Города, в настройках которого основным представлением выбрано поле Наименование, то этот запрос эквивалентен:
Наконец, если в запросе:
- отсутствует секция УПОРЯДОЧИТЬ ПО
- отсутствует секция ИТОГИ ПО
- отсутствует секция СГРУППИРОВАТЬ ПО
В этом случае результат запроса будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
Так как данные выбираются из справочника Еда, в настройках которого основным представлением выбрано поле Наименование, то этот запрос будет эквивалентен:
Почему использование автоупорядочивания нежелательно
- для универсальных запросов, когда разработчик не может предвидеть из каких таблиц будут запрашиваться данные
- для случаев, когда получаемый порядок записей не важен, но при этом он должен быть одинаковым в независимости от применяемой СУБД
Во всех остальных случаях использовать возможность автоупорядочивания нежелательно, так как поля, которые являются полями сортировки сегодня, могут перестать быть такими завтра.
Например, сегодня мы можем написать код, чувствительный к тому, чтобы результаты запроса из справочника Еда были отсортированы по полю Наименование.
А завтра фирма "1С" (или другой разработчик) изменят настройки базы в конфигураторе так, что полем сортировки по умолчанию для справочника Еда станет, к примеру, поле Код. И, если мы использовали автоупорядочивание в запросе, то наш отчет сломается, ведь порядок сортировки уже будет другим. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Поэтому всегда старайтесь указывать конкретные поля и конкретный порядок сортировки по ним в секции УПОРЯДОЧИТЬ ПО, такой запрос уже не сломать просто так:
Читайте также:
- Создание chm файлов из word документов
- Как найти скрытые программы на windows 7
- В программе 1с бухгалтерия формат сохранения регистров бухгалтерского учета в электронном виде
- По колонке н з можно указать чтобы при определенных статусах сделка не загружалась в 1с
- Средства диагностики visual studio 2019 как включить