Как связать документ и справочник в 1с
Язык 1С сильно «завязан» на работу с данными. Действительно, основная задача — обработка данных, полученных из базы данных запросом или другими способами.
В других языках с данными, полученными из базы данных обычно работают «как с таблицей». В 1С такое тоже возможно – выполнить запрос, получить «в ответ» таблицу и работать с ней.
Однако более распространенный способ, одна из «фишек 1С» — это работа с данными как с объектами 1С. Например объект 1С Справочник.ИмяСправочника позволяет работать с конкретным справочником, при этом объект 1С имеет свойства (поля с данными) и стандартные методы.
Работа с объектом 1С ведется тогда, когда требуется создать объект 1С или изменить существующий. В остальных случаях (например поиск объекта 1С, использование его в другом объекте 1С) – используется ссылка 1С на объект 1С.
Создание объектов 1С
Объект 1С можно создать с помощью оператора Новый, при этом вызывается конструктор данного типа, если у типа несколько конструкторов – он выбирается по указанным параметрам:
Переменная1 = Новый СписокЗначений();
Менеджеры для получения объектов 1С из базы данных
Если требуется создать объект 1С, связанный с данными в базе данных (то есть фактически получить его из базы данных), вместо использования оператора Новый, используются менеджеры.
Почти для каждого вида метаданных (отображенного в дереве метаданных в окне конфигурации, см. выше) доступен одноименный менеджер, который позволяет получить значение из базы данных по признаку или создать новое для записи в базу данных.
Например:
Переменная1 = Справочники.ИмяСправочника.СоздатьЭлемент();
Переменная1 = Справочники.ИмяСправочника.НайтиПоНаименованию("Наименование");
Ссылки 1С и объекты 1С
Работа с объектами 1С, связанными с данными в базе данных может вестись двумя способами – с помощи «ссылки 1С на данные» и объекта 1С.
Ссылка 1С – это данные, доступные только для чтения. Объект 1С – это данные, доступные для чтения, изменения и записи. Работа со ссылкой 1С производится гораздо быстрее, чем с объектом 1С.
Ссылка 1С на данные получается с помощью функций вида:
СправочникСсылка = Справочники.ИмяСправочника.НайтиПоНаименованию()
Объект 1С можно получить из ссылки 1С или создать с нуля:
СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
СправочникОбъект = Справочники.ИмяСправочника.СоздатьЭлемент();
Пустая ссылка 1С
Ссылка может быть пустой, это значит, что создан «пустой» экземпляр объекта 1С, который не связан с данными.
СправочникСсылкаПустая = Справочники.ИмяСправочника.ПустаяСсылка();
Также ссылку 1С можно проверить на заполненность:
Если СправочникСсылка.Пустая() Тогда
//…
КонецЕсли
Уникальный идентификатор (GUID)
Любой элемент справочника или документ хранится в базе данных. Для идентификации он имеет уникальный «номер» в рамках базы данных — GUID. В понятиях встроенного языка 1С, этот GUID – это ссылка 1С.
Узнать идентификатор можно с помощью универсального метода любого объекта 1С ссылочного типа:
СправочникСсылка = Справочники.ИмяСправочника.НайтиПоНаименованию("Наименование");
GUID = СправочникСсылка.УникальныйИдентификатор();
Возвращаемое значение данного метода имеет специальный тип. Если необходимо сравнивать значение со строкой, не забудьте преобразовать его к строке с помощью Строка(Параметр).
GUID назначается в момент первой записи объекта 1С. Уже до записи можно узнать GUID, который будет назначен объекту 1С при записи:
Также перед записью можно назначить свой GUID. Это бывает полезным, например, при обмене данными:
При работе со значениями, возможно столкнуться со следующими способами хранения и доступа к данным:
- Переменная – созданная в модуле программистом, нетипизированная
- Реквизит объекта 1С (справочника, документа), добавленный в конфигураторе – хранится в базе данных, строго типизирован
- Реквизит формы – поле на форме, строго типизирован.
Поле на форме показывает «какие-то данные». Данные могут быть напрямую связаны с реквизитом объекта 1С (указаны в свойстве поля формы ПутьКДанным).
Также форма может иметь свои реквизиты, они не записываются в базу данных, их устанавливает программист в процедурах и функциях модуля формы (обычно в процедуре обработчике ПриОткрытии формы).
Доступ к значениям именованных свойств объектов 1С
У многих объектов 1С есть свойства, которые имеют наименования.
Например:
- элемент справочника имеет реквизиты с наименованиями
- форма имеет реквизиты с наименованиями
- у таблицы есть колонки с наименованиями
- у строки таблицы есть поля с такими же наименованиями, как колонки у таблицы.
Если у объекта 1С есть свойства (реквизиты, колонки и т.п.), у которых есть наименования, то к ним можно обращаться двумя способами.
Если в наличии имеются два объекта 1С с именованными свойствами и нужно скопировать их значения, удобно использовать процедуру
ЗаполнитьЗначенияСвойств(КудаКопировать, ОткудаКопировать)
которая копирует значения всех свойств, имена которых совпадают, пример:
Вариант 1. Создание документов на основании других документов.
На командной панели карточки каждого документа есть команда «Создать на основании». С ее помощью можно создавать другие внутренние, входящие и исходящие документы на основании уже существующих, автоматически устанавливая связь между ними.
При записи такого документа, созданного на основании внутреннего, программа предложит установить между ними связь.
Исходящий документ удобно создавать как ответ на входящий документ. Это можно сделать при помощи меню «Создать на основании» в карточке входящего документа. При этом поля нового исходящего документа автоматически заполнятся данными из входящего документа. Между документами будет автоматически установлена связь, которая отобразится на закладке «Связи» карточек этих документов.
Вариант 2. Установка связи вручную.
Для установки связи вручную следует нажать кнопку «Добавить» на закладке «Связи» в карточке документа. При этом откроется помощник создания связи, который позволит выбрать нужный документ, указать тип связи и вписать комментарий (по желанию).
После выбора документа следует нажать кнопку «Далее» либо дважды щелкнуть по выбранной строке. Помощник создания связи перейдет на следующий шаг – выбор типа связи.
В окне выбора типа связи расположены следующие поля:
■ Что связать – предмет, из которого создается новая связь;
■ С чем связать – предмет, который выбран для создания связи;
■ Тип связи – список возможных типов связи между выбранными предметами;
■ Комментарий – примечания к создаваемой связи.
Необходимо выбрать тип связи из списка возможных (по умолчанию выбрана первая строка), вписать комментарий (если это необходимо) и нажать «Создать связь».
Созданная связь будет показана на закладке «Связи» карточки документа.
На закладке «Связи» видны не только связанные документы, но и их файлы. То есть, не открывая карточку связанного документа, можно ознакомиться с его файлами, сохранить их на диск или напечатать.
Наконец-то мы перешли на платформу 1С 8.3.20 и смогли отказаться от режима совместимости в 1С ЕРП. Это позволило нам окончательно закрыть вопрос о перемещении ВСЕХ добавленных объектов из самой конфигурации в её расширение. Одним из камней преткновения на пути к переезду, был вопрос работы типового отчета "связанные документы". Ну что же, давайте вместе его решим.
Как вы догадались по названию темы, стандартный отчет "Связанные документы" (Структура подчиненности) требует доработки, поскольку он не видит документы из расширения.
Это и логично, ведь формирование отчета построено на анализе типового объекта конфигурации "КритерииОтбора.СвязанныеДокументы".
Если попытаться решить задачу в лоб - пробросить в расширение типовой критерий отбора "СвязанныеДокументы", то в расширение за ним подтянутся почти все объекты конфигурации и их реквизиты, указанные в критерии отбора. А это почти все документы из типовой конфигурации. Такой подход превратит ваше компактное и изящное расширение конфигурации в нагромождение копий объектов из типовой конфигурации.
Сразу понятно, такое решение не по фэншую. Будем решать задачу по-другому.
Задача:
Есть документ в расширении конфигурации "ИТ_ЗаданиеНаТранспортировку" и в нем есть поле "ДокументОснование", ссылающееся на типовой документ "ЗаказПокупателя". Нужно отразить документ из расширения конфигурации в типовом отчете "Связанные документы".
Условие:
И в новом документе "ИТ_ЗаданиеНаТранспортировку", и в типовом документе "ЗаказПокупателя" должен использоваться типовой отчет "Связанные документы", вызываемый через "СтандартныеПодсистемы.ПодключаемыеКоманды".
Решение:
В расширение ранее уже проброшен документ "ЗаказПокупателя", так как нам нужно было указать тип ссылки в поле "ДокументОснование".
Мы не будем добавлять в расширение типовой критерий отбора "СвязанныеДокументы", вместо этого создаём новый критерий отбора в расширении с названием "ИТ_СвязанныеДокументы" (1) .
В разделе "Данные" заполняем тип данных нового критерия отбора теми объектами, которые должны добавляться к стандартному отчету "Связанные документы"
В разделе "Состав" проставляем флажок у реквизита "ДокументОснование" .
Не забываем пробросить в расширение конфигурации типовую роль "ПросмотрСвязанныеДокументы" и в нашем критерии отбора проставляем право на использование для этой роли.
С критерием отбора покончено.
Но стандартный отчет "Связанные документы" пока нас не замечает. Углубляемся в конфигурацию и понимаем, что все действия по выводу отчета производятся в общей форме "СвязанныеДокументы".
Для того, чтобы "научить" общую форму видеть наш критерий отбора из расширения конфигурации, мы пробрасываем в расширение одну процедуру и одну функцию в режиме "ИзменениеИКонтроль" из модуля формы "ОбщаяФорма.СвязанныеДокументы".
Вносим исправления в код.
Процедура "ВывестиРодительскиеОбъекты" большая, всю ее в статью добавлять не буду. В ней нужно изменить в двух местах условия, которые заставляют отчет пропускать документы, не входящие в критерии отбора:
Функция "ОбъектыПоКритериюОтбора" наоборот - маленькая. Дорабатываем ее, как указано ниже. Код сделан более читаемым в ущерб компактности.
И в принципе, отчет "Связанные документы" уже будет работать с вашими документами из расширения конфигурации.
Однако, нужно провести еще одну доработку.
Если вы используете подключаемые команды из стандартных подсистем (2) в формах документов/списков документов из расширения, вы заметите, что вожделенный отчет "Связанные документы" не появляется в ваших интерфейсах. Типовая кнопка "Структура подчиненности", которая формирует отчет "Связанные документы", просто принудительно скрывается от нас, если документ отсутствует в индексах связанных объектов.
Давайте просто поправим действия с кнопкой "СтруктураПодчиненности".
Находим типовой общий модуль "СтруктураПодчиненностиСлужебный" (3) и пробрасываем из него в расширение конфигурации функцию "ИндексТиповСвязанныхОбъектов".
Вносим в функцию изменения:
Теперь два оба критерия отбора, из основной конфигурации и из расширения, попадают в типовой отчет "Связанные документы".
(1) Префикс "ИТ_" в идентификаторах и префикс "(ИТ) " в синонимах является обязательным для новых объектов в соответствии с политикой внедрений 1С, принятой в нашей компании.
(2) Добавление подключаемых команд из стандартных подсистем на ваши формы документов - это отдельная большая тема, и в данной статье умышленно опущена.
(3) Мне не понятно, почему компания 1С не реализовала функционал добавления новых объектов в специальном модуле "СтруктураПодчиненностиПереопределяемый". Вместо добавления новых, они реализовали функционал по переименованию объектов.
Курс лекций
Форум
Справочник – это агрегатный тип данных, средство для работы со списками однородных элементов данных. Название и структура каждого конкретного справочника определяются при его создании в конфигураторе. У любого справочника существуют два реквизита, которые создаются автоматически – «Код» и «Наименование». Реквизиты справочников могут быть периодическими, т.е. иметь значения, связанные с датой. При изменении значения периодического реквизита старое значение сохраняется, при этом новое значение начинает действовать с указанной даты, старое – до указанной даты.
Свойства справочника редактируются в окне редактирования «Справочник». Для визуального представления справочника существуют «Форма элемента», «Форма группы» и «Формы списка» (их может быть несколько).
Если один справочник подчинен другому (задается в поле «подчинен» окна редактирования), то каждый элемент подчиненного справочника будет соответствовать элементу справочника-владельца. Для этого есть специальный реквизит «Владелец», по которому можно найти элемент справочника-владельца.
Справочник может иметь иерархическую структуру. Число уровней иерархии определяется в поле «Кол-во уровней» в окне редактирования. Для задания иерархии используется реквизит «Родитель», который и определяет, к какой группе относится элемент. Наиболее важные функции:
- ЭтоГруппа() – возвращает 1, если текущий элемент справочника – группа;
- ПринадлежитГруппе() – возвращает 1, если текущий элемент принадлежит группе ;
- Уровень() – возвращает номер уровня текущего элемента.
Глубина вложенности групп настраивается в конфигураторе и не может превышать 10 уровней.
Обычно для обработки элементов справочника используется следующая последовательность команд:
Есть несколько способов поиска элемента справочника:
В последнем случае необходимо, чтобы элементы справочника были отсортированы по этому реквизиту – в свойстве реквизита в закладке «Дополнительно» нужно поставить флажок «Сортировка».
Пример. Следующая функция выполняет поиск элемента справочника по наименованию. Если элемент с таким наименованием не найден, то создается новый элемент. Параметр «Справ» – строка с идентификатором справочника, «Наим» – наименование по которому производится поиск элемента. Функция возвращает ссылку на найденный или созданный элемент.
Для удаления текущего элемента справочника используется функция Удалить(), где может иметь значение 0 – пометка на удаление, 1 – непосредственное удаление (используется по умолчанию). Вообще непосредственное удаление не рекомендуется, из-за возможного нарушения ссылочной целостности базы данных.
Чтобы удалить помеченные на удаление объекты через систему 1С:Предприятие 7.7, нужно зайти в программу в монопольном режиме и в меню «Операции» выбрать пункт «Удаление помеченных объектов…».
Документы в системе 1С: Предприятие используются для ввода, просмотра и корректировки информации о совершаемых хозяйственных операциях. У любого документа есть три обязательных реквизита «ДатаДок», «ВремяДок», «НомерДок». Дата и время, – наиболее важные характеристики документов, так как позволяют устанавливать строгую временную последовательность совершения операций. Форма документа редактируется при нажатии кнопки «Форма».
Реквизиты шапки документа задаются в списке «Реквизиты шапки». Реквизиты табличной части задаются в списке «Реквизиты табличной части».
Для того чтобы документ формировал проводки, необходимо
- создать хотя бы один план счетов.
- поставить флажок «Разрешить проведение документа».
- поставить флажок «Бухгалтерский учет».
Формирование проводок происходит в «Модуле документа» в предопределенной процедуре «Обработка проведения».
Обычно для обработки документов используется следующая последовательность команд:
Для ввода документа используется функция «Новый()», далее заполняются реквизиты шапки документа. Для ввода новой строки документа используется функция «НоваяСтрока()» и заполняются реквизиты табличной части документа.
Для просмотра списка документов используется «Журналы документов». Создание журнала производится в конфигураторе. В диалоговой форме задаются графы – реквизиты документов, входящих в журнал. Реквизиты табличной части можно добавить в журнал только в том случае, если в свойствах реквизита в закладке «Дополнительно» стоит флажок «Итог по колонке».
В соответствии с заданием №1 из приложения 3 создать справочники и документы в новой информационной базе.
Протестируйте качество нашей работы - получите первую консультацию в подарок.
Перенос любых данных 1С. Готовые механизмы переносов. Один звонок и мы решаем вопрос.
Гарантируем стабильный обмен без ошибок между программами 1С. Гарантии фиксируем в договоре.
Одним из основополагающих элементов любых конфигураций 1С являются справочники. Они хранят в себе информацию, которая используется в большинстве других объектов приложения 1С. Именно поэтому при разработке или модернизации любой системы на платформе 1С в первую очередь добавляют новые справочники и заполняют их. Знать основные свойства, функции и возможности этих объектов конфигурации должен каждый разработчик 1С.
Структура и функции справочников в 1С 8.3
Основная функция справочников заключается в хранении и предоставлении нормативно–справочной информации. Учет в системах 1С ведется в разрезе справочников: Номенклатура, Клиенты и другие.
Разработчики выделяют отдельный тип справочников – классификаторы. К ним относят информацию, утвержденную, например, государством:
- Единицы измерения;
- Валюты;
- Страны мира;
- Профессии.
По своей структуре справочники в программе 1С представляют собой списки определенных данных. Чтобы ознакомиться с существующими справочниками в конфигурации 1С, необходимо зайти в нее в режиме конфигуратора. В дереве конфигуратора найдите ветку «Справочники» и раскройте ее.
Рис.1 Ветка «Справочники»
Каждый из справочников обладает своими свойствами, установленными разработчиками. Рассмотрим основные свойства на примере справочника «Валюты».
Вкладка «Основные» содержит информацию о наименовании справочника и его описании. Следующий раздел «Подсистемы» отвечает за включение справочника в конкретную подсистему.
Рис.2 Раздел «Подсистемы»
На вкладке «Функциональные опции» определяется функциональность с использованием справочника. Закладка «Иерархия» позволяет создавать вложенные элементы справочника. Иерархические виды справочников могут быть крайне полезными.
Рис.3 Закладка «Иерархия»
На вкладке «Владельцы» настраивается механизм подчинения. Если справочник подчинен другому, то заполнение реквизита «Владелец» обязательно.
На вкладке «Данные» определяется, какую информацию вы сможете добавить в справочник 1С. Сверху настраивается код и наименование – одни из стандартных реквизитов, в центре – перечень добавленных реквизитов. В нижней части вы видите табличные части справочника.
Рис.4 Вкладка «Данные»
Настройки нумерации объекта конфигурации в 1С позволяют создать уникальную нумерацию для элементов справочника.
Рис.5 Настройки нумерации объекта
На вкладке «Формы» разработчики создают интерфейсы, которые будут видны пользователям. Чаще всего встречаются формы Элемента и Списка: так в программе 1С пользователи видят список данных справочника и его элементы.
Рис.6 Вкладка «Формы»
Грамотная настройка параметров на вкладке «Поле ввода» создаст пользователям максимально удобные условия в работе. Параметры «Быстрый выбор/Ввод по строке/Полнотекстовый поиск» помогут найти нужный элемент. «История выбора при вводе» сохранит ранее используемые позиции.
Рис.7 Грамотная настройка параметров
Раздел «Команды» показывает перечень существующих кнопок, вызывающих данный справочник. В «Макетах» вы сможете найти все печатные формы конкретного объекта конфигурации. «Ввод на основании» будет затронут разработчиком в тех случаях, когда на основании элемента справочника планируется создавать другие объекты конфигурации.
Рис.8 Раздел «Команды»
Подраздел «Права» отражает информацию о том, какие роли включают в себя доступ к справочнику, включая заполнение справочников, изменение и чтение. «Обмен данными» ознакомит, в каких планах обмена участвует справочник. Последняя вкладка включает в себя возможность перейти в модули для написания процедур и функций. Также там расположен перечень предопределенных значений справочника, к которым можно обращаться напрямую в коде.
Рис.9 Обмен данными
Не все свойства являются обязательными к заполнению. Некоторые вкладки так и остаются нетронутыми на протяжении всей жизни ПО на платформе 1С.
Чтобы создание справочников в 1С не вызывало затруднений, создадим новый объект конфигурации этого типа.
Создание и перенос справочника в 1С 8.3
На примере нетиповой конфигурации создадим и начнем использовать справочник «Подразделения», в котором будут храниться данные о структуре предприятия. В конфигураторе, в дереве конфигурации находим «Справочники» и нажимаем кнопку «Добавить». Заполняем поля:
- Имя/Синоним. Первый реквизит отвечает за имя объекта в конфигурации, второй – за название в режиме предприятия;
- Представление объекта используется при открытии одного элемента справочника;
- Представление списка используется при просмотре списка данных справочника;
- Пояснение – справка для пользователей.
Рис.10 Создание справочника
Далее нам необходимо добавить новый справочник в одну из подсистем, если мы хотим, чтобы пользователи могли видеть его в интерфейсе. Открываем вкладку «Подсистемы» и ставим галку напротив уже существующей подсистемы «Общее».
Рис.11 Добавляем справочник в подсистему
Наш новый справочник будет иерархическим, так как подразделения могут входить одно в другое. Групп подразделений на нашем предприятии не планируется, поэтому выбирается тип «Иерархия элементов». Ограничивать вложенность подразделений при этом мы не будем.
Рис.12 Тип «Иерархия элементов»
Помимо стандартного набора нам потребуется еще несколько реквизитов и табличная часть для перечня сотрудников. Для этого нужно добавить их на вкладке «Данные» в соответствующих разделах.
Рис.13 Внесение реквизитов
Для удобства необходимо в форму списка добавить наши реквизиты. Для этого на вкладке «Формы» создаем новую форму списка и устанавливаем ее в качестве основной. В диалоговом окне проставим галки у всех реквизитов, которые нам необходимы. Также зададим и форму элемента, чтобы расположить реквизиты в том порядке, который устроит наших пользователей.
Рис.14 Задаем форму элемента
На этом создание демонстрационного справочника «Подразделения» закончено. Обновляем конфигурацию и запускаем систему вновь в режиме предприятие. В подсистеме «Общее» появилась функциональная клавиша «Список подразделений». Нажатие на нее открывает заданную нами форму списка справочника с возможностью добавления в нее элементов.
Рис.15 Список подразделений
Многие компании работают с несколькими базами 1С, поэтому разработчик может столкнуться с переносом созданного справочника в другую базу. Для этого вместе с большинством конфигураций поставляется внешняя обработка – «Выгрузка и загрузка данных XML». Но перед тем как осуществить перенос справочников 1С 8.3, необходимо подготовить конфигурацию-приемник. В ней должен быть создан аналогичный объект конфигурации с идентичными полями и табличными частями.
При открытии данной обработки, нам необходимо указать, какие объекты мы хотим перенести и выбрать файл. Затем запущенная выгрузка справочника создает XML-файл, куда записывает все данные.
Рис.16 XML-файл
Чтобы загрузить справочники в другую информационную базу, необходимо зайти в нее и открыть эту же внешнюю обработку. На второй вкладке запустить загрузку. Это ручной механизм, поэтому если планируется регулярный ввод новых элементов справочника в одной базе, то лучше организовать обмен между базами.
В заключение хотелось бы напомнить, что создание справочников в 1С 8.3 после запуска системы в эксплуатацию вызовет проблемы из-за необходимости монопольного доступа к базе. Обновление же конфигурации безопаснее всего проводить на сервере.
Читайте также: