Как связаны объекты конфигурации и объекты базы данных 1с

Обновлено: 04.07.2024

Выполняю обновление измененной конфигурации. Проблема вот в чем. В итоге имеется обновленная основная конфигурация и не обновленная конфигурация базы данных.

ВидПервичногоДокумента
НомерПервичногоДокумента
ДатаПервичногоДокумента

Эти реквизиты не связаны между этими двумя конфигурациями, т. е. в основной они помечены как новые, и в конфигурации БД также помечены как новые.
При обновлении конфы БД получается, что эти реквизиты удаляются, а, следовательно, и их значения. Т.е. после обновления конфы БД заходим в проводки и видим, что эти поля пустые (ВидПервичногоДокумента, НомерПервичногоДокумента, ДатаПервичногоДокумента).
Пробовал сделать так.
Конфигурация-Конфигурация базы данных — Сравнить, объединить с конфигурацией базы данных. Выходит окно сравнения объектов, устанавливаю соответствие злополучных реквизитов этих. Жму кнопку обновить. Вроды бы в окне сравнения больше не выходит, что эти объекты разные. Что делать дальше? Снимаю галки со всех объектов в таблице сравнения, жму Выполнить. Конфигурация базы данных типа обновляется. А при повторном сравнении этих конфиг все повторяется, т. е. Соответствие между этими реквизитами теряется. Как сделать так, чтобы при обновлении конфы базы данных значения этих реквизитов не пропали?

(0) А как вообще так получилось, что они разные?
Скорее всего, криво обновили когда-то в прошлом, что идентификаторы сбились.
Наиболее правильное решение:
1. Переименовать свои в:
УдалитьВидПервичногоДокумента
УдалитьНомерПервичногоДокумента
УдалитьДатаПервичногоДокумента
2. Обновить конфигурацию, перенеся новые поля из обновления. При этом в базе будут и старые заполненные и новые пустые.
3. Заполнить групповой обработкой новые по старым.
4. Удалить старые.
(2) "Переименовать свои в:" - поля в конфе базы данных переименовать нельзя. Может переименовать эти поля в основной конфе, т.е. в обновленной? Потом обновить конфу БД, обработкой заполнить новые данные по старым, затем удалить старые реквизиты, а потом назад переименовать новые реквизиты в нужные?
а почему в моей ситуации не срабатывает установка соответствий?
интересно. Если выгрузить конфу БД в файл, а затем сравнивать основную конфу с этим файлом, то эти реквизиты соответствуют друг другу. При сравнении, объединении с файлом соответствие проходит по именам объектов, а не по внутренним идентификаторам?
(3) Разумеется, в основной. В той, в которой работаете.
(4) (5) При сравнении с файлом соответствие выполняется по именам объектов, при обновлении по УИДам. Он могут быть разные, если изначально эти поля добавлялись не стандартным обновлением, а вручную.
Выгрузите конфигурацию не в .cf, а в .xml. В конфигураторе "Конфигурация" - "Выгрузить конфигурацию в файлы". В этом случае в текстовом файле будут видны УИДы метаданных. Сравните УИДы вашей конфигурации с УИДами типовой. Думаю, они у вас отличаются.
(6) а можно как-нибудь подменить уиды в конфигурации базы данных?
(7) Можно. Но менять нужно не в конфигурации БД, а в основной конфигурации - там нет данных и, соответственно, речь о потере данных не актуально :)

PS: У меня были такие проблемы. Имхо, это временный глюк платформы - при последующем обновлении ошибки соответствия не повторялись. Как выкручивался?

После этого обновил конфигурацию БД.

Если вы каким-то образом "потеряете" версию конфигурации поставщика - это легко восстанавливается повторным обновлением (сняв все галочки в окне сравнения/объединения)

(7) Стандартными средствами нельзя. Самый простой вариант я описала в (2).
(9) Скорее всего, это не глюк платформы. Это кривое обновление в прошлом.
altaykniga, выгрузите в xml и проверьте. Возможно, проблема в чем-то еще. Но скорее всего просто в прошлом криво вручную добавили поля.
(8) Можно в основной конфигурации. Но в этом случае при обновлении конфигурации БД по основной физические поля с данными просто исчезнут и появятся новые пустые с правильными УИДами. По-моему, это не совсем то, что нужно.

(10) "Скорее всего, это не глюк платформы. Это кривое обновление в прошлом." - Вы противоречите сами себе. Даже если "кривое обновление в прошлом" - это тоже глюк платформы. В прошлом :)

Моё утверждение базируется на трех слонах: конфигурация поставщика - недоступна; внутренние идентификаторы "из вне" недоступны; при обновлении внутренние идентификаторы в существующих объектах не изменяются.

Продолжение одинэсной темы, ответы на книгу Радченко, занятие 2 и 3.

Для чего используется объект конфигурации "Подсистема"?
Подсистема - основной элемент для построения интерфейса 1С:Предприятие. Подсистемы выделяют в конфигурации функциональные части, на которые логически разбивается прикладное решение.

Как описать логическую структуру при помощи Подсистем?
При помощи разделения на функциональные части, представляющие собой отдельные предметные области.

Как управлять порядком вывода и отображения подсистем в конфигурации?
Правый клик мыши по конфигурации, выбираем команду "Открыть командный интерфейс конфигурации", поменять позиции можно с помощью стрелочек.


Управление порядком вывода подсистем.


Что такое окно редактирования объекта конфигурации и в чем его отличие от панели свойств?

Окно редактирования - в основном используется для создания новых объектов.
Палитра свойств - не привязано к конкретному объекту конфигурации.

Для чего предназначен объект конфигурации Справочник?
Справочник предназначен для работы со списками данных, описания их свойств и структуры.

Какие характерные особенности объекта конфигурации Справочник?
Справочник состоит из элементов; Каждый элемент представляет собой отдельную запись в таблице, хранящей информацию из этого справочника;
Элемент также может содержать дополнительную информацию, которая подробнее описывает этот элемент - одинаковый для всех элементов справочника - реквизит; Реквизит также является объектом конфигурации;

Для чего используются реквизиты и табличные части справочника?
Реквизиты используются для описания дополнительной информации, описывающей элемент справочника;
Табличная часть используется для описания информации элемента справочника, одинаковой по структуре, но различной по количеству.

Зачем нужны иерархические справочники и что такое Родитель?
Иерархические справочники нужны для группировки элементов справочника по какому-либо признаку или принципы. Различаются несколько типов иерархий: иерархия групп и элементов - элемент справочника, представляющий группу - родитель для всех элементов и групп, входящих в эту группу;
Иерархия элементов - родителем является не группой элементов справочника, а непосредственно сам элемент.

Зачем нужны подчиненные справочники и что такое Владелец?
Элементы одного справочника могут быть подчинены элементам другого справочника, и в таком случае устанавливается связь один-ко-многим. Так же может быть использована связь один-к-одному, когда каждый элемент подчиненного справочника связан с одним из элементов справочника-владельца.

Какие основные формы существуют у справочника?
Форма элемента - для редактирования или создания элемента справочника;
Форма группы - для редактирования или создания группы справочника;
Форма списка - для отображения списка элементов в справочнике;
Форма выбора группы - для выбора одной из группы справочника;

Что такое предопределенные элементы справочника?
Элементы справочника, создающиеся в конфигураторе, данные элементы пользователь удалить не может; Служат для хранения информации всегда, независимо от действий пользователя;

Чем с точки зрения конфигурации отличается обычный элемент от предопределенного?
На предопределенные элементы могут быть завязаны алгоритмы работы конфигурации, следовательно, система добавляет эти элементы в структуру базы данных сама, без участия пользователя.


Как пользователь может отличить обычный элемент от предопределенного?
С помощью пиктограммы


Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.


Также модуль объекта можно открыть из контекстного меню объекта:


Или из меню Действия:


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

Вызов методов модуля объекта


В модуле объекта напишем следующий код:

Теперь создадим обработку с одной формой и в модуле обработки в событии ПриСозданииНаСервере напишем следующий код:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //заполняем экспортную переменную модуля объекта вызвав экспортную функцию ОбъектНоменклатура . ОбщийОстаток = ОбъектНоменклатура . ОбщийОстаток ( ) ;

Здесь мы сначала создаем новый программный объект справочника Номенклатура вызвав встроенный метод Справочники.Номенклатура.СоздатьЭлемент(). Потом через ссылку на этот объект обращаемся к экспортным переменной и функции объекта.

Теперь поменяем код в модуле формы обработки на следующий:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //пытаемся заполнить переменную модуля объекта вызвав функцию модуля объекта ОбъектНоменклатура . ПолноеНаименование = ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименование ) ; //ошибка

Здесь мы делаем все то же самое, но обращаемся к не экспортным переменной и функции.


Так как переменная ПолноеНаименование не является экспортной, то к ней нет доступа из других модулей.

Теперь попробуем обратиться к не экспортной функции модуля объекта. Вставим в модуль формы следующий код и откроем обработку:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ) ; //опять ошибка


Теперь вставим в форму обработки такой код и откроем обработку:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ;

Здесь мы вызываем экспорную процедуру модуля объекта, а потом встроенным методом Записать записываем объект в базу данных.

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


В методе ЗаполнитьРеквизиты() мы обращались напрямую к реквизитам объекта, после чего записали его методом Записать(). Значения реквизитов сохранились в базе данных.

Обработчики событий


В результате откроется список возможных событий:


Рассмотрим основные события модуля объекта:

Для примера создадим в модуле объекта 3 обработчика события и вставим в них следующий код:

Понятие конфигурации и базы данных. Обзор трёх конфигураций, заложенных в любой информационной системе 1С.

conf

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

Давайте рассмотрим это более детально. Что же действительно содержится внутри информационной базы? Информационная база, это достаточно большой блок информации, и, во-первых, в ней содержаться пользовательские данные. Иными словами, это некоторые элементы справочников, который формирует оператор, документы и данные в регистрах накопления. Помимо всего прочего, в информационной базе содержится, как минимум, две конфигурации. Это конфигурация основная, и конфигурация базы данных. Для файл-серверной архитектуры в обязательном порядке всё это содержится непосредственно в специальном файле, с названием 1cv8.1cd.

Для чего же нужны эти две конфигурации? Всё дело в том, что разработчик работает именно с основной конфигурацией. То есть, когда разработчик вносит какие-либо изменения, все изменения делаются именно в основной конфигурации. А с конфигурацией общей базы данных работают операторы, они обращаются к ней и вносят изменения в данные информационной базы.

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

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

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

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