Эти данные заполнены автоматически 1с

Обновлено: 07.07.2024


Флаг «Автозаполнение» добавляет все выбранные поля последнего пакета запроса, а также поля измерений виртуальных таблиц из всех пакетов запроса. Всегда создает параметры периода в СКД для всех виртуальных таблиц(Обороты и ОстаткиИОбороты - &НачалоПериода, &КонецПериода, Остатки, СрезПервый, СрезПоследних - &Период). Другими словами эта настройка облегчает процесс составления схемы.


В чем подвох?

Иногда возникает ситуация, при которой автозаполнение устанавливает параметры и приводит к наложению отборов в тех местах, где это не требуется.

Пример 1

Создадим схему, выбирающую объединением двух запросов обороты за текущий и за прошлый период:

«Автозаполнение» создаст параметры &НачалоПериода, &КонецПериода для виртуальной таблицы ДвиженияДенежныхСредств.Обороты


Настройка схемы будет выглядеть следующим образом:


Но в результате выполнения схемы получим результат, в котором обороты что за текущий период, что за предыдущий показывают одно и тоже:


Разобраться в причинах не составит особого труда, если взглянуть на запрос, который был сформирован компоновщиком макета СКД — одни и те же параметры были подставлены в оба запроса объединения:

Решить можно двумя способами:

  • Не использовать параметры с именами &НачалоПериода, &КонецПериода
  • Отключить «Автозаполнение» и прописать все поля и параметры вручную

В случае с отключенным флагом «Автозаполнение» запрос в СКД будет выглядеть следующим образом:

Пример 2

Нам нужно получить обороты по определенным счетам и остатки по всем счетам. Создаем набор данных запрос с флагом «Автозаполнение»:

Получаем результат, в котором общий остаток на самом деле является остатком по счетам, указанным в отборе:


Что подтверждает запрос из компоновщика макета:

Решить данный кейс можно двумя способами:

  • В расширении языка запросов для поля Счет указать поле отбора, например СчетОтбор (пример описан в публикации)
  • Отключить флаг «Автозаполнение» и расставить поля отборов вручную.

Без использования «Автозаполнения» запрос в наборе данных будет выглядеть следующим образом:


В платформе 8.3.13 были проведены следующие доработки поведения СКД:

При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор обязательно добавляется во все части объединения, если отбор удалось поместить хотя бы в одну часть объединения. При этом, в тех частях объединения, в которых отбор применить не удается из-за отсутствия в них полей, использующихся в отборе, в добавляемые условия вместо отсутствующего поля проставляется выражение NULL.
В режиме совместимости с версией 8.3.12 поведение не изменилось.

Таким образом, если мы создаем объединение запросов по двум регистрам, в одном из которых нет определенных полей

. и накладываем отбор по такому полю (СтатьяДвиженияДенежныхСредств), то компоновщик макета нам добавит условие Null = &П4, которые мы ну никак не ожидали

При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор обязательно добавляется во все части объединения, если у набора данных включено автоматическое заполнение доступных полей или поле, к которому применяется отбор, получается через точку от поля, доступного для отбора.
Кроме того, если группа элементов отбора содержала поле, которое было недоступно в одном из объединений, и другое поле, которое было доступно и при этом в другой части объединения все поля были доступными, то такой отбор будет применен и в той части, в которой он был недоступен, с заменой недоступных полей на NULL.
Если в отчете или динамическом списке используется запрос, содержащий объединения и нужно, чтобы отбор на некоторое поле помещался только в определенные части объединения, то рекомендуется отключить для набора данных автоматическое заполнение доступных полей и добавить требуемое поле только в нужные части объединения.
В режиме совместимости с версией 8.3.13 поведение не изменилось.

И действительно, если отключить «Автозаполнение» и расставить поля отборов вручную, то компоновщик макета строит следующий запрос:

Возможности автозаполнения шаблонов можно посмотреть в поучительном ВИДЕО .

Там описаны основы для подготовки автозаполнения, которые будут использоваться в данной статье. Здесь же будут рассмотрены некоторые немаловажные моменты.

Предупреждение : в описании статьи дан обзор минимального создаваемого набора, нужного для осуществления автозаполнения. Сделано это для того, чтобы почти ничего не умеющий человек смог быстро создать набор для тестирования автозаполнения. Тем, кто с этим всем уже знаком - советую просто пробежаться глазами и дойти до нужного момента.

1. Итак, для начала создадим новый Файл. Это будет файл формата MS Word. В редакторе MS Word создадим новое "поле", заполним поля, как на скриншоте.

//infostart.ru/upload/iblock/556/1.jpg

Загрузим файл в систему. Для этого переходим на вкладку "Документы и файлы", ссылка "Файлы". Создаём Файл в режиме "Из файла на диске". Выбираем нужный файл, делаем описание и вот, он загружен в систему.

2. Создадим новый вид документа, для этого заходим в подсистему "Нормативно-справочная информация", нажимаем ссылку "Виды документов". Создаём новый вид документа, открываем "Набор дополнительных свойств документов данного вида".

//infostart.ru/upload/iblock/28b/2.jpg

Создаём новый дополнительный реквизит.

//infostart.ru/upload/iblock/07b/2.jpg

//infostart.ru/upload/iblock/fab/1.jpg

Создаём новый Внутренний документ. Для этого переходим в подсистему "Документы и файлы", и там создаём новый документ. Ставим вид документа равным "ТестовыйВидДок", который был создан ранее. Также должен появиться созданный нами доп.реквизит.

//infostart.ru/upload/iblock/33c/8.jpg

Заполним значение доп.реквизита.

//infostart.ru/upload/iblock/af0/9.jpg

Записываем и закрываем внутренний документ.

Далее нужно создать правило автозаполнения. Для этого переходим в подсистему "Нормативно-справочная информация", открываем "Правила автозаполнения шаблонов файлов" и создаём новое правило.

//infostart.ru/upload/iblock/c0b/7.jpg

На скриншоте выше показан пример, когда "поле" в документе MS Word будет заполняться из стандартного реквизита. Т.е. наше поле в текстовом документе будет заменено на значение "ТестовыйВидДок", но нам нужно значение "16047", которое мы прописали в поле карточки внутреннего документа, в дополнительном реквизите. Для этого необходимо написать определенный код, ради которого и писалась эта статья. Пример:

//infostart.ru/upload/iblock/d8f/11.jpg

Внимание: для быстрого тестирования на форме имеется кнопка "Проверить правило", нажимая на которую можно выбрать нужный документ, и посмотреть, каким образом будет заполняться шаблон файла данными из этого документа.

Для указания другого доп.реквизита необходимо в данной строчке просто поменять значение "ТестовыйДопРеквизит" на другое название другого доп.реквизита.

Помимо данного кода в данном поле можно использовать различные вариации другого кода, например:

  • РезультатОбработки = АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла.Ссылка,"Страна, город") + " " + АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла.Ссылка,"Организация")

т.е. можно соединять несколько доп.реквизитов в одну строку, например.

  • РезультатОбработки = (НачалоДня(Файл.ВладелецФайла.ДатаОкончанияДействия) - НачалоДня(Файл.ВладелецФайла.ДатаНачалаДействия)) / 86400 + 1;
в данном случае реально брать данные из простых реквизитов на форме и преобразовывать их.
  • ФИО = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла.Ссылка,"Утвердил");
  • НайденныйПользователь = Справочники.Пользователи.НайтиПоНаименованию(ФИО);
  • СведенияПользователя = РегистрыСведений.СведенияОПользователях.Получить(Новый Структура("Пользователь", НайденныйПользователь));
  • РезультатОбработки = СведенияПользователя.Должность;
Вывод: автозаполнение - штука весьма полезная, и, как видно, можно получить практически любые данные с помощью практически любых методов.

3. Ещё один момент, кому-нибудь когда-нибудь пригодится. Допустим, необходимо на каждой странице шаблона в колонтитуле выводить некую информацию (неважно, откуда она берется - из дополнительного или же из обычного реквизита). Пример следующий: нужно на каждой странице автоматически выводить дату и пользователя, ну или что-то одно. В MS Word в колонтитулах можно написать некую строку, однако преобразовать её к "полю" нельзя (оно неактивно, видно на скриншоте).

//infostart.ru/upload/iblock/da4/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80.JPG

Поэтому в данном случае правильно использовать замену строки. Выбираем какую-нибудь неповторимую строку (чтобы случайно не заменить нужную строку в самом документе), например "П12@3a" и вставляем её в колонтитул шаблона документа.

А дальше - кто-то уже догадался. Я сразу не заметил, всё пытался как-нибудь "докопаться" до этого "поля" в MS Word. Итак, делаем, как на скриншоте:

//infostart.ru/upload/iblock/0f9/12.jpg

Спасибо тем, кто прочитал даже до этого момента, первая статья, не судите строго, сам всё знаю =)

Анна Викулина

1С:Документооборот

Внедрение современной ЕСМ-системы. Фиксированный бюджет

Внедрение СЭД и ЭДО

Быстрый, выгодный и безопасный обмен любыми видами документов, создание электронного архива

Современные ECM-системы (системы управления электронным документооборотом) поддерживают различные механизмы автоматизации большого числа ручных операций, что позволяет минимизировать человеческий фактор и значительно сократить количество ошибок, влияющих на скорость и качество принятия управленческих решений.

Один из таких механизмов, более всего востребованный в системах управления корпоративным контентом – автоматическое заполнение шаблонов файлов.

Что позволяет реализовать этот механизм и для чего он необходим в корпоративных СЭД?

Автоматическое заполнение шаблонов файлов (автозаполнение файлов) – это перенос текущих значений реквизитов из карточки документа в ранее определенные места в шаблоне прикрепленного файла.

Возьмем для примера шаблон бланка исходящего письма. Это очень актуально в условиях учета нескольких организаций в системе, а также при наличии большого числа контрагентов и их контактных лиц, а также жестких требований при оформлении официальных исходящих документов, особенно для переписки с государственными учреждениями и органами исполнительной власти.

Другим очень важным применением автозаполнения является механизм типовых договоров. Для использования типовых договоров, с одной стороны, необходимо наличие строго определенных условий и требований, а с другой – типовые договоры обеспечивают неизменность предопределенного и уже согласованного шаблона договора, что значительно сокращает сроки согласования таких документов, количество ошибок и непременный человеческий фактор, при этом повышая качество управленческих решений.

Настройка автозаполнения типового шаблона договора в 1С:Документооборот

Рассмотрим самый простой пример настройки и реализации автозаполнения шаблонов в документообороте. Предварительно в настройках программы включим функциональную опцию «Использовать автозаполнение шаблонов файлов» в подразделе «Настройка программы-Настройка работы с файлами».

В уже созданном шаблоне типового договора нужно перейти на вкладку «Файлы».

На данной вкладке находятся шаблоны файлов, которые автоматически добавляются в документ при его формировании из данного шаблона документа. Необходимо отметить, что у каждого вида документа может быть несколько шаблонов документов (например, каждый из шаблонов с определенным шаблоном файла), и в каждом шаблоне документа может быть несколько шаблонов файлов. В случае с договорами это может быть, например, шаблон самого договора, спецификация к нему, протокол разногласий и т.д. При этом для каждого шаблона файла существует индивидуальная настройка автозаполнения. При переходе по ссылке «Открыть в Настройке автозаполнения» открывается форма настроек.

Для корректной настройки механизма автозаполнения необходимо знать, что типовое реквизитное автозаполнение, т.е. обращение к реквизитам через точку, работает только для файлов формата *.doc. Это формат Word, используемый более ранними версиями MS Office. Основной минус при использовании данного формата файлов для автозаполнения заключается в том, что в веб-клиенте такое автозаполнение не работает.

Анна Викулина

Гарантируем стабильный обмен без ошибок между программами 1С. Гарантии фиксируем в договоре.

Одним из самых популярных форматов данных, используемых практически в любой компании, является XML (расширяемый язык разметки). Разработчики 1С создали специальный объект XDTO для удобства своих клиентов и простого взаимодействия с файлами XML, поэтому программисту 1С важно работать с этими объектами платформы, так как обмен данными через XML встречается постоянно.

Преимущества механизма XDTO

Этот функционал создавался как удобный инструмент обмена данными между конфигурациями и другими приложениями. Также этот механизм используют для работы с web-сервисами и для обработки произвольных данных. Большое преимущество XDTO перед другими способами – в нем есть возможность обращаться к файлу XML, как к объекту 1С. То есть все реквизиты можно будет получить, описывая структуру через точку, не задумываясь о скобках, тегах и атрибутах.

Взаимодействие с файлами XML происходит по заранее установленным правилам, описанным в объекте структуры конфигурации – XDTO – пакеты в 1С 8.3. Суть этих элементов структуры в том, что они представляют собой схемы, по которым будут распознаваться данные из XML-файлов. В типовых конфигурациях уже присутствуют подобные объекты, но при работе с конкретными файлами понадобятся другие схемы.

Существует два способа добавить XDTO-пакет в конфигурацию:

    Собственноручно создать. Этот вариант подойдет при самостоятельной работе с XML определенного формата. Зная, какие данные будут подаваться на вход для импорта с использованием XDTO, можно заранее создать в конфигурации нужный объект. Этот вариант хорош, если обмен данными налажен и никаких изменений не планируется;

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

Но на самом деле в последнем случае нам необязательно создавать XDTO-пакеты в конфигурации 1С 8.3. Существует возможность только использовать XSD-схему, присланную нам из отдельного файла, не внося изменения в структуру базы 1С. Для этого нужно воспользоваться кодом, объясняющим платформе 1С, какой тип объекта с какими параметрами будет загружаться.

Это происходит следующими командами:

Экспорт и импорт файла

После того как мы разобрались с принципами использования пакетов XDTO, нужно посмотреть на механику работы с файлами XML. Лучше всего это будет видно на простом примере, чтобы понять основы. Добавим новый элемент в раздел XDTO-пакетов и настроим его следующим образом:

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

  1. Определение схемы будущей XML;
  2. Заполнение свойств номенклатуры;
  3. Создание нового XML файла.

Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.

Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.

Лучше все-таки не рассчитывать на понятливость платформы 1С, а использовать точную схему XML. Многие специалисты используют сторонний софт для их создания, но для этого необходим достаточно большой опыт и уровень подготовки. Работа с пакетами XDTO требует внимания и соблюдения точного соответствия файлов заданной схеме, чтобы минимизировать возможные ошибки.

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

  • Ошибки в обновлении платформы или конфигурации;
  • Обмен между базами разных версий;
  • Недочеты в алгоритме приема данных;
  • Проблемы с временной памятью конкретного компьютера.

Более сложная для анализа проблема, если при обмене информацией 1С выдает ошибку о несоответствии типов XDTO. В этом случае придется проверять все данные, находить ошибки и их причины. В некоторых случаях ошибки могут быть в коде, иногда – в данных информационной базы. Чтобы это понять, необходимо иметь доступ к базам причастным к обмену и четко понимать всю суть происходящего экспорта и импорта.

На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.

Читайте также: