Номер по порядку в отчете 1с
Добрый день. Подскажите, пожалуйста, как в программе 1С Бухгалтерия 3.0 оформить в хронологическом порядке нумерацию авансовых отчетов? Перебивать вручную за весь год очень не хочется, в ЗУП 3.1 также нарушена нумерация (хронология) приказов в командировку. Может, есть какая-то обработка, которая позволит \»навести красоту\» в авансовых отчетах и приказах в командировку.
Добрый день, Екатерина!
В Бухгалтерия 3.0 восстановить правильную нумерацию, если она нарушена, можно автоматически для кассовых документов и СФ в обработке Экспресс-проверка (раздел Отчеты — Анализ учета).
Для остальных документов перенумерация не выполняется штатными методами.
Но можно попробовать перенумеровать через обработку Групповое изменение реквизитов (раздел Администрирование — Обслуживание — Корректировка данных).
Сейчас покажу пример, посмотрите, возможно, вам подойдет.
Открываете обработку Групповое изменение реквизитов, указываете документ «Авансовый отчет» и заполняете все как на рисунке.
Алгоритм интуитивно понятен. Отбираются данные с начала 2019 года, вам год нужно заменить на свой — его меняете в первой строчке.
Обратите внимание на 6-ю строчку: «0000-» это префикс, если у вас другой, то указываете свой.
Нажимаете кнопку «Выполнить». Программа уточнит, что не отобраны авансовые отчеты — выполнять для всех, да. можно согласиться, можно выбрать только один (любой!) документ, программа все равно работает по другому алгоритму — выборка в самой обработке не играет роли.
По заданному алгоритму программа перенумерует документы.
Вот результат.
Сделайте сначала на копии базы, чтобы убедиться в результате.
Если все получится — повторите действия в рабочей базе.
Чтобы удобно было вставить код в обработку высылаю текстом для 2021 года:
PS: только кавычки подправьте после вставки, здесь свой редактор — искажает, должны быть как на скрине.
Удачи, Екатерина! 🙂
Ирина, здравствуйте. В предложенном вами алгоритме действий у меня не получается вывести в реквизитах «Номер» (файл во вложении). Подскажите, пожалуйста, как вывести данный реквизит?
Добрый день, Екатерина.
Вы не задали сам алгоритм. Я вам его переслала. Настройте, как вам надо по датам и префиксу или используйте мой за 2021 год (при условии, что у вас номера без префиксов)
Поле алгоритма должно быть заполнено. У вас оно пустое.
Заполняется вручную.
* никаих полей вручную выбирать не нужно. Все реквизиты определяются программно из кода алгоритма.
Заполняете вручную, чтобы было как на скрине.
Я для удобства вам выслала код, который можно скопировать по CTRL+C и вставить в поле алгоритма по CTRL+V (Но подправьте кавычки, если будете вставлять из буффера текст: здесь иначе отображаются редактором. Все есть на скринах, как должно выглядеть)
Делайте первоначально на копии базы.
Ирина, здравствуйте. У меня номера с префиксом, я в алгоритме задала вместо номер 1 — номер РТБП-000001. Выходит ошибка (файл во вложении). Алгоритм и какая ошибка я вам сбросила, подскажите, пожалуйста, что неверно.
Ирина, здравствуйте. У меня номера с префиксом, я в алгоритме задала вместо номер 1 — номер РТБП-000001. Выходит ошибка (файл во вложении).Предыдущий вариант ошибки в 7-ой строке я исправила. Сейчас ошибка в строке 3, с префиксом. Алгоритм и какая ошибка я вам сбросила, подскажите, пожалуйста, что неверно, как правильно отразить номер с префиксом?
Добрый день, поле номера не нужно менять, установите как было:
Номер =1;
Префикс меняется в 6й строчке, где Док.Номер = «0000-» + …
Вот вместо «0000-» задайте «РТБП-»
Ирина, здравствуйте. Поменяла, но снова получается ошибка…
Доброе утро, прикрепите в формате рисунка (не файлом Ворд) само поле настройки в обработке группового изменения реквизитов, чтобы был полностью виден алгоритм и настройки.
Я не вижу, что вы делаете, скорее всего что-то ввели неправильно
Сравните с моим скрином.
Обратите внимание на точки с запятой в конце строчек и кавычки, как я писала. Это очень важно.
По сути это мини обработка на языке программирования 1С. От того насколько корректно вы все ввели зависит и понимание программой действий для выполнения.
Обращаю ваше внимание, что выполнить алгоритм предварительно нужно в КОПИИ базы: действия изменения программой данных необратимы.
Если все устроит, повторите уже в рабочей.
После тестирования в копии.
Перерыл весь Инфостарт, но так и не нашел готового решения по иерархической нумерации в отчете на СКД. Делюсь своим вариантом решения.
1. Добавляем в отчет вычисляемое выражение
2. Добавляем макет поля на закладке макеты
3. На закладке Настройки для всех! группировок указываем в выбранных полях наше новое поле
Далее в модуле отчета, после вывода, пишем постобработку. Для обработки желательно знать первую строку отчета, чтобы не лопатить шапку.
Поиск колонки с номерами
Собственно проставление номеров
У меня этот код вынесен в отдельную функцию
Надеюсь, что мой лайфхак будет полезен для всех любителей СКД. Если у вас есть свой вариант, то делитесь им и я с удовольствием размещу ссылки на этой странице.
Специальные предложения
Не поверите, но отчет на СКД тоже можно скомпоновать в модуле :). От этого отчет не перестает быть отчетом, выполненным на СКД.
Пока никто не предложил другого решения, то это единственный способ.
(23) Есть еще вариант - сделать таблицу и скормить ее СКД. И программисты из 1С часто пользуются этим способом при построении сложных отчетов, которые внутри СКД не построить.
Огромный плюс СКД в том, что не надо рисовать макеты, формы. И самый большой плюс, что пользователь может перестраивать внешний вид отчета, группировки под себя. Особенно продвинутые пользователи.
Моя статья именно для таких отчетов.
А делать отчеты без СКД мы умеем еще со времен 7.7 ))
Спасибо за открытый код решения!
На производительность в больших отчетах насколько влияет- не измеряли?
И при чем тут СКД, когда табличный документ скомпонован, данные выведены и сгруппированы там?
Вот если в схеме аналогичное действие сделать - тогда да, можно смело написать что это СКД.
(8) Иерархическая нумерация в СКД является частным случаем "Иерархическая нумерация в Windows". Поэтому мое название точнее и больше подходит к теме статьи.
(7), (8), (9) Не заметили, в основе постобработки лежат поля, определенные в схеме СКД, добавлен свой макет?
(10) Кстати, да. Обычный отчет этим кодом не пронумеруешь. Его надо дополнять, чтобы узнать уровень группировки.
ИМХО, было бы интереснее разработать алгоритм нумерации выходного табличного документа.. Вставить колонку перед телом отчета, и пронумеровать ее сообразно иерархии, после вывода. А СКД вообще не трогать.
Написание кода в СКД, мне кажется, не есть гуд. Нечистая работа, как говорил Остап Бендер. Цимес СКД как раз в том что вы мышкой отчет делаете. А если код писать - так это и клюшки-стайл ничем не плох, с Вывести () и Присоединить ().
(18)Про это писал рустиг в (23) но полностью самостоятельно писать вывод отчета, тоска смертная: вывод заголовков настройка оформления, сбор итогов и пр. всегда даю это на откуп СКД. Ничего плохого нет в постобработке, но да просто заголовок некорректный СКД тут как бы уже не при делах. Можно было бы написать "Нумерация в табличном документе сформированном средствами СКД" это было бы честнее.
(25) Нумерация в табличном документе сформированном средствами СКД - программистское название. Но в целом согласен, что по названию ждали большего.
Фигня. Ибо пост-обработка. На ИС были в разы более красивые решения. Не понимаю, откуда столько плюсов, сиречь восторгов.
Нумерация строк в запросе
В тестовой конфигурации в журнале документов необходимо реализовать нумерацию строк в динамическом списке. В журнал входит три документа: "Заявка", "Приходный ордер" и "Расходный ордер". Первоначально форма списка журнала документов выглядит следующим образом:
В принципе, задача легко бы решалась, если список документов мы бы получали в отчете. Но тут дела обстоят иначе.
В отчетах - не проблема!
Создав отчет на системе компоновки данных с получением списка документов, задача решалась бы очень просто. В поля отчета нужно было бы всего-навсего добавить специальное поле "Номер по порядку".
В результате пользователь увидит подобный результат формирования отчета:
Но как быть, если нумерацию нужно получить непосредственно в запросе? Например, это может понадобиться для получения порядкового номера записи в динамическом списке.
Нумерация в запросе
Изменим запрос динамического списка журнала документов следующим образом:
При открытии динамического списка в режиме 1С:Предприятия получаем следующий результат:
Примечание: в примере показан лишь принцип нумерации строк непосредственно в запросе. Если Вы обратили внимание, то на скриншоте выше документы в списке, отсортированные по порядковому номеру строки, "идут" в порядке типов (сначала приходные ордера, затем расходные и т.д.). Это происходит, потому что, используя ссылку для соединения, мы не можем гарантировать, что GUID'ы ссылок будут уникальными. Также нельзя сравнивать ссылки разных типов документов - это приведет к некорректному результату. Можно использовать момент времени или другие поля, определяющие конкретное положение документа с общем списке журнала.
Конечно, используя подобный подход мы усложнили бы запрос к базе данных, плюс ко всему, некоторые возможности динамического списка, важные для работы пользователей, стали бы не доступными (динамическое считывание данных, основная таблица и т.д.), но пример был создан лишь для демонстрации возможности нумерации строк в запросах. Используя этот принцип для решения других задач, например для печатных форм, подобных проблем не возникнет.
Нужно понимать, что использование повторного обращения к таблице документа или журнала документов может отрицательно повлиять на производительность. Оптимальным было бы создание временной таблицы всех выбираемых документов, а затем уже работать с ней. Опять же, все зависит от конкретной задачи!
СКД пронумеровать группировку
Необходимо в настройках добавить системное поле «Номер по порядку» и для групп тоже (см. пример на картинке). И так нужно выполнить для каждой группировки которую необходимо нумеровать.
СКД свернуть
Как в СКД вывести отчет свернутым по уровням.
Процедура ПриКомпоновкеРезультата ( ДокументРезультат , ДанныеРасшифровки , СтандартнаяОбработка ) // СВЕРНУТАЯ ГРУППИРОВКА СТРОК
Макет = КомпоновщикМакет . Выполнить ( СхемаКомпоновкиДанных , КомпоновщикНастроек . ПолучитьНастройки ( ) , ДанныеРасшифровки ) ;
Если у Вас появились вопросы по статье или остались нерешенные проблемы обсудить их Вы можете на Форуме 1С Вопросы и ответы
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Заходите в «Одноклассники»!
Регистрируйтесь в «Вконтакте»!
Темы форума
1С на Линукс. advanter, 17.11
Аренда сервера.. за границей. advanter, 03.10
удаление чека. zvar, 11.09
1c 8.3 бухучет 8.2 сотрудники. zvar, 11.09
Корректировка расходной накладной. zvar, 11.09
Декретные. skameykin22, 30.07
обмен данными. taba88, 12.06
Списання малоцінки. advanter, 12.06
Допоможіть новачку. ). advanter, 12.06
Ошибка потока 1с 8.2 Предприятие после обновления SOS. advanter, 07.06
Изменить название основания на печатной форме. advanter, 16.05
Движение денежных средств за период по ответственным. advanter, 25.04
Рубрики
Это интересно:
Ответы на вопросы:
Полное или частичное копирование материалов сайта разрешается при наличии в тексте прямой индексируемой ссылки на сайт
Все документы в решениях 1С имеют обязательные реквизиты – это номер, дата и время, отвечающие за внутреннюю упорядоченность и логику работы системы. При этом порядок нумеровки в системе задается автоматом, но он сбиться, например, из-за вмешательства пользователей, которые могут поменять номера и просто «руками». Если стороннего воздействия не было, уникальность номеров контролируется с помощью Нумератора документов, т.е. создание документа с одинаковым номером невозможно: при сохранении в журнале программа задает документу номер, следующий по порядку.
Рассмотрим, как работает Нумератор в качестве объекта метаданных, который задает порядок нумеровки документов, на примере программы «1С:Бухгалтерия предприятия 3.0».
Откроем любой документ в режиме «Конфигуратор» и на закладке «Нумерация» посмотрим предустановленные разработчиком настройки для этого раздела. В свойствах установлена галочка для автонумерации, проверки уникальности, контроля длины номера и задана периодичность.
Рис.1 Рассмотрим, как работает Нумератор
Рассмотрим эти установки подробнее.
- Автонумерация. Установка данной галочки приведет к тому, что непосредственно при создании документ будет пронумерован следующим по порядку номером. Он будет уникален в периоде, который указан в поле «Периодичность». При наступлении нового периода, нумеровка документов начинается заново.
- Длина номера. Данный показатель определяет максимальное количество символов длины номера.
- Контроль уникальности. Установленная галочка контроля говорит о том, что при сохранении документа программа проверит его номер на уникальность. Контроль производится в пределах периода, заданного в поле «Периодичность».
- Периодичность. В этом поле задается период, в пределах которого проверяется уникальность номера документа. Чаще период задается год. Но разработчиком может быть задана периодичность квартал, месяц, день. Установка периода, например, в месяц приведет к тому, что по истечению месяца нумерация документов опять начнется с начала, то есть с номера 1.
- Тип. Данная настройка определяет, в каком виде будет сформирован номер, то есть задан как число или как строка. Например, если номер должен включать кроме цифрового значения еще буквы или разделяющие символы, то используется тип «Строка».
Исходя из данных настроек, при сохранении документа ему автоматически будет присвоен номер, состоящий из 11 символов с периодом проверки в пределах года. С наступлением нового периода (нового года), документы будут нумероваться заново.
Основная функция нумератора документов 1С – сквозное нумерование документации разного типа
С помощью объекта «Нумератор» есть возможность назначить сквозную нумеровку для документации сразу нескольких типов. Этот объект метаданных находится внутри дерева «Документы-Нумераторы».
Рис.2 Сквозное нумерование документации разного типа
Открыв двойным щелчком «Нумератор», мы можем посмотреть его характеристики, заданные в панели свойств. Они аналогичны тем, которые мы рассматривали в свойствах нумерации документов.
Рис.3 Сквозное нумерование документации разного типа
Можно создать свой нумератор (кнопка «Добавить» или Ins) и задать его свойства.
Рис.4 Создать свой нумератор
Рис.5 Задать свойства нумератора
Создав свой нумератор, мы можем его указать в настройках документа. Для тех документов, где он указан в качестве нумератора, будут использоваться его свойства нумерации и нумерация для этих документов будет сквозная.
Рис.6 Указать нумератор в настройках документа
Выбрав наш нумератор, мы видим, что настройки нумерации в свойствах документа не активны.
Рис.7 Настройки нумерации в свойствах документа не активны
Таким образом, создав и задав нумератор документов в свойствах документа, мы можем при необходимости разделить порядок нумерации различных групп документов, объединить разные виды документов одной нумераций.
Читайте также: