Эти данные заполнены автоматически 1с
Флаг «Автозаполнение» добавляет все выбранные поля последнего пакета запроса, а также поля измерений виртуальных таблиц из всех пакетов запроса. Всегда создает параметры периода в СКД для всех виртуальных таблиц(Обороты и ОстаткиИОбороты - &НачалоПериода, &КонецПериода, Остатки, СрезПервый, СрезПоследних - &Период). Другими словами эта настройка облегчает процесс составления схемы.
В чем подвох?
Иногда возникает ситуация, при которой автозаполнение устанавливает параметры и приводит к наложению отборов в тех местах, где это не требуется.
Пример 1
Создадим схему, выбирающую объединением двух запросов обороты за текущий и за прошлый период:
«Автозаполнение» создаст параметры &НачалоПериода, &КонецПериода для виртуальной таблицы ДвиженияДенежныхСредств.Обороты
Настройка схемы будет выглядеть следующим образом:
Но в результате выполнения схемы получим результат, в котором обороты что за текущий период, что за предыдущий показывают одно и тоже:
Разобраться в причинах не составит особого труда, если взглянуть на запрос, который был сформирован компоновщиком макета СКД — одни и те же параметры были подставлены в оба запроса объединения:
Решить можно двумя способами:
- Не использовать параметры с именами &НачалоПериода, &КонецПериода
- Отключить «Автозаполнение» и прописать все поля и параметры вручную
В случае с отключенным флагом «Автозаполнение» запрос в СКД будет выглядеть следующим образом:
Пример 2
Нам нужно получить обороты по определенным счетам и остатки по всем счетам. Создаем набор данных запрос с флагом «Автозаполнение»:
Получаем результат, в котором общий остаток на самом деле является остатком по счетам, указанным в отборе:
Что подтверждает запрос из компоновщика макета:
Решить данный кейс можно двумя способами:
- В расширении языка запросов для поля Счет указать поле отбора, например СчетОтбор (пример описан в публикации)
- Отключить флаг «Автозаполнение» и расставить поля отборов вручную.
Без использования «Автозаполнения» запрос в наборе данных будет выглядеть следующим образом:
В платформе 8.3.13 были проведены следующие доработки поведения СКД:
При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор обязательно добавляется во все части объединения, если отбор удалось поместить хотя бы в одну часть объединения. При этом, в тех частях объединения, в которых отбор применить не удается из-за отсутствия в них полей, использующихся в отборе, в добавляемые условия вместо отсутствующего поля проставляется выражение NULL.
В режиме совместимости с версией 8.3.12 поведение не изменилось.
Таким образом, если мы создаем объединение запросов по двум регистрам, в одном из которых нет определенных полей
. и накладываем отбор по такому полю (СтатьяДвиженияДенежныхСредств), то компоновщик макета нам добавит условие Null = &П4, которые мы ну никак не ожидали
При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор обязательно добавляется во все части объединения, если у набора данных включено автоматическое заполнение доступных полей или поле, к которому применяется отбор, получается через точку от поля, доступного для отбора.
Кроме того, если группа элементов отбора содержала поле, которое было недоступно в одном из объединений, и другое поле, которое было доступно и при этом в другой части объединения все поля были доступными, то такой отбор будет применен и в той части, в которой он был недоступен, с заменой недоступных полей на NULL.
Если в отчете или динамическом списке используется запрос, содержащий объединения и нужно, чтобы отбор на некоторое поле помещался только в определенные части объединения, то рекомендуется отключить для набора данных автоматическое заполнение доступных полей и добавить требуемое поле только в нужные части объединения.
В режиме совместимости с версией 8.3.13 поведение не изменилось.
И действительно, если отключить «Автозаполнение» и расставить поля отборов вручную, то компоновщик макета строит следующий запрос:
Возможности автозаполнения шаблонов можно посмотреть в поучительном ВИДЕО .
Там описаны основы для подготовки автозаполнения, которые будут использоваться в данной статье. Здесь же будут рассмотрены некоторые немаловажные моменты.
Предупреждение : в описании статьи дан обзор минимального создаваемого набора, нужного для осуществления автозаполнения. Сделано это для того, чтобы почти ничего не умеющий человек смог быстро создать набор для тестирования автозаполнения. Тем, кто с этим всем уже знаком - советую просто пробежаться глазами и дойти до нужного момента.
1. Итак, для начала создадим новый Файл. Это будет файл формата MS Word. В редакторе MS Word создадим новое "поле", заполним поля, как на скриншоте.
Загрузим файл в систему. Для этого переходим на вкладку "Документы и файлы", ссылка "Файлы". Создаём Файл в режиме "Из файла на диске". Выбираем нужный файл, делаем описание и вот, он загружен в систему.
2. Создадим новый вид документа, для этого заходим в подсистему "Нормативно-справочная информация", нажимаем ссылку "Виды документов". Создаём новый вид документа, открываем "Набор дополнительных свойств документов данного вида".
Создаём новый дополнительный реквизит.
Создаём новый Внутренний документ. Для этого переходим в подсистему "Документы и файлы", и там создаём новый документ. Ставим вид документа равным "ТестовыйВидДок", который был создан ранее. Также должен появиться созданный нами доп.реквизит.
Заполним значение доп.реквизита.
Записываем и закрываем внутренний документ.
Далее нужно создать правило автозаполнения. Для этого переходим в подсистему "Нормативно-справочная информация", открываем "Правила автозаполнения шаблонов файлов" и создаём новое правило.
На скриншоте выше показан пример, когда "поле" в документе MS Word будет заполняться из стандартного реквизита. Т.е. наше поле в текстовом документе будет заменено на значение "ТестовыйВидДок", но нам нужно значение "16047", которое мы прописали в поле карточки внутреннего документа, в дополнительном реквизите. Для этого необходимо написать определенный код, ради которого и писалась эта статья. Пример:
Внимание: для быстрого тестирования на форме имеется кнопка "Проверить правило", нажимая на которую можно выбрать нужный документ, и посмотреть, каким образом будет заполняться шаблон файла данными из этого документа.
Для указания другого доп.реквизита необходимо в данной строчке просто поменять значение "ТестовыйДопРеквизит" на другое название другого доп.реквизита.
Помимо данного кода в данном поле можно использовать различные вариации другого кода, например:
- РезультатОбработки = АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла.Ссылка,"Страна, город") + " " + АвтозаполнениеШаблоновФайловСервер.ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла.Ссылка,"Организация")
т.е. можно соединять несколько доп.реквизитов в одну строку, например.
- РезультатОбработки = (НачалоДня(Файл.ВладелецФайла.ДатаОкончанияДействия) - НачалоДня(Файл.ВладелецФайла.ДатаНачалаДействия)) / 86400 + 1;
- ФИО = ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла.Ссылка,"Утвердил");
- НайденныйПользователь = Справочники.Пользователи.НайтиПоНаименованию(ФИО);
- СведенияПользователя = РегистрыСведений.СведенияОПользователях.Получить(Новый Структура("Пользователь", НайденныйПользователь));
- РезультатОбработки = СведенияПользователя.Должность;
3. Ещё один момент, кому-нибудь когда-нибудь пригодится. Допустим, необходимо на каждой странице шаблона в колонтитуле выводить некую информацию (неважно, откуда она берется - из дополнительного или же из обычного реквизита). Пример следующий: нужно на каждой странице автоматически выводить дату и пользователя, ну или что-то одно. В MS Word в колонтитулах можно написать некую строку, однако преобразовать её к "полю" нельзя (оно неактивно, видно на скриншоте).
Поэтому в данном случае правильно использовать замену строки. Выбираем какую-нибудь неповторимую строку (чтобы случайно не заменить нужную строку в самом документе), например "П12@3a" и вставляем её в колонтитул шаблона документа.
А дальше - кто-то уже догадался. Я сразу не заметил, всё пытался как-нибудь "докопаться" до этого "поля" в MS Word. Итак, делаем, как на скриншоте:
Спасибо тем, кто прочитал даже до этого момента, первая статья, не судите строго, сам всё знаю =)
Внедрение современной ЕСМ-системы. Фиксированный бюджет
Быстрый, выгодный и безопасный обмен любыми видами документов, создание электронного архива
Современные 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-пакетов и настроим его следующим образом:
- Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
- Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.
Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:
- Определение схемы будущей XML;
- Заполнение свойств номенклатуры;
- Создание нового XML файла.
Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.
Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.
Лучше все-таки не рассчитывать на понятливость платформы 1С, а использовать точную схему XML. Многие специалисты используют сторонний софт для их создания, но для этого необходим достаточно большой опыт и уровень подготовки. Работа с пакетами XDTO требует внимания и соблюдения точного соответствия файлов заданной схеме, чтобы минимизировать возможные ошибки.
Исправление ошибок
Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.
Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:
- Ошибки в обновлении платформы или конфигурации;
- Обмен между базами разных версий;
- Недочеты в алгоритме приема данных;
- Проблемы с временной памятью конкретного компьютера.
Более сложная для анализа проблема, если при обмене информацией 1С выдает ошибку о несоответствии типов XDTO. В этом случае придется проверять все данные, находить ошибки и их причины. В некоторых случаях ошибки могут быть в коде, иногда – в данных информационной базы. Чтобы это понять, необходимо иметь доступ к базам причастным к обмену и четко понимать всю суть происходящего экспорта и импорта.
На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.
Читайте также: