1С структура

Объект встроенного языка 1с "структура" является весьма полезным и часто используемым в программировании объектом. Во первых, стоит сказать что это динамический объект: в структуру после её создания можно добавлять элементы, удалять из неё элементы, редактировать значения элементов. Один элемент структуры — это совокупность ключа и значения. Ключ является названием какой-либо сущности (например, "бухгалтерский счет"), а значение является конкретизацией ключа (например, "50.1"). В структуру нельзя добавить несколько идентичных ключей. Ключ структуры всегда уникален, и, как следствие, значение у ключа может быть только одно.

В коде ключ структуры является строкой. При указании ключа можно использовать и переменную строкового типа. С точки зрения архитектуры встроенного языка 1С, после создания объекта "структура", можно использовать ключи как имена свойства данного объекта.

Структура является коллекцией, т.е. все её элементы можно перебрать в цикле:

Для каждого ЭлементСтруктуры из ИмяСтруктуры Цикл

КонецЦикла;

Итак, рассмотрим несколько аспектов использования структур:

  1. Как создать структуру
Создаем структуру
  1. Как добавить в неё элементы
  1. Как удалить из неё элементы
Удаляем элемент структуры
  1. Обращаемся к ключу структуры, чтобы получить значение
Используем ключи и значения структуры
  1. Практика применения структуры: использование в других встроенных методах языка программирования 1С (в данном примере мы достанем из регистра сведений по учетной политике её данные на конкретную дату)
Получаем информацию по учетной политике с использованием структуры

Дата запрета редактирования документов 1с 8.2

В типовых продуктах фирмы 1С типа "1С Бухгалтерия 8", "1С Зарплата и управление персоналом", "1С Управление торговлей" и т.п. предусмотрена возможность указывания даты запрета редактирования данных в информационной базе, которые привязаны в конкретному моменту времени. Типичным и основным примером таковых объектов являются документы. Реквизит "Дата" является стандартным реквизитом объекта "Документ" конфигурации 1С. Также в периодических регистрах сведений, регистрах накопления,регистрах бухгалтерии и регистрах расчета аналогично есть поле "Период", по которому программа 1С ориентируется запрещать редактирование данных или нет.

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

  1. В главном меню нажать "Сервис-Управление пользователями и доступом — Дата запрета изменения данных".

Откроется окно, в котором можно указать дату запрета редактирования (границу запрета изменения) данных для:

  • конкретного пользователя (выбирается из справочника "Пользователи");
  • конкретной группы пользователей (выбирается из справочника "Группы пользователей");
  • по организации в целом (выбирается из справочника "Организации").

Дата запрета редактирования данных Сервис

Приоритет по действию даты запрета редактирования следующий (от большего к меньшему): по конкретному пользователю > по группе пользователей > по организации в целом.

  1. Открыть регистр сведений "Границы запрета изменения данных" (в Главном меню нажать Операции — Регистры сведений — Границы запрета изменения данных)

Регистр сведений Границы запрета изменения данных

Откроется форма списка регистра сведений. Здесь вы можете, нажав на плюсик добавить какую-любо запись (например, Организация "Интерактив"- пользователь "Иванов А.А."- граница запрета изменений "31.09.2012 23:59:59").
По второй колонке "Пользователь" в регистре сведений "Границы запрета изменения данных" можно выбрать как пользователя, так и группу пользователей.
Установка даты запрета редактирования данных является весьма актуальным вопросом во многих разделах учета на предприятии / фирме. В бухгалтерском учете, после закрытия месяца/квартала/года обычно указывают Дату запрета, чтобы кто-либо по ошибке не скорректировал какие-либо данные прошлого периода, что в дальнейшем могло бы вызвать корректировку данных, которые были переданы в государственные структуры типа "Федеральная налоговая служба РФ", "Пенсионный фонд РФ", "Фонд социального страхования и т.п."

Внутренняя ошибка компоненты dbeng8

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

Есть 2 варианта решения данной проблемы.

  1. В режиме "Конфигуратор" провести "Тестирование и исправление информационной базы", выбрав режим "Тестирование и исправление".

Тестирование и исправление ИБ 1С

  1. Запустить утилиту "chdbfl.exe" (которая размещена в папке, в которую Вы устанавливали платформу, например: C:\Program Files\1cv82\8.2.16.368\bin\chdbfl.exe) и исправить все ошибки в таблицах информационной базы:
  • запускаем утилиту
  • выбираем расположение информационной базы в поле "Имя файла БД"
  • ставим галочку "Исправлять обнаруженные ошибки"

Стандартная утилита исправления ошибок платформы 1С - &"chdbfl.exe&"

  • Нажимаем кнопку "Выполнить" и ждём результатов.

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

В данной статье я объясню почему может не запускаться программа 1С, в том случае, если появляется информационное окно со следующим текстом:

У текущего пользователя нет доступных ролей, для запуска информационной базы

Текст с таким информационным сообщением запрограммирован в типовой конфигурации 1С 8 Бухгалтерия. Данная ошибка возникает в том случае, если информационную базу запускают под пользователем, для которого не выбраны в конфигураторе одна из доступных ролей: "ПолныеПрава" либо "Бухгалтер".

Код процедуры, в которой идёт вывод этого сообщения находится в общем модуле "Управление пользователями":

Процедура вывода ошибки по отсутствию прав пользователя

Итак, что нужно сделать:

  1. Зайти в режиме конфигуратор в информационную базу.
  2. В главном меню выбрать: "Администрирование — Пользователи". Откроется список пользователей.
  3. Зайти в пользователя и на закладке "Прочие" поставить галку напротив роли "Бухгалтер" и/или "ПолныеПрава".
  4. Теперь можно нажимать "ОК" и заходить в информационную базу в режим "Предприятие" под пользователем, с которым у Вас были проблемы!

Регистры 1c: cтатья 1- регистры сведений

В технологических платформах 1С 8 среди предопределенных объектов метаданных имеется в арсенале 4 типа регистров: Регистр накопления, Регистр сведений, Регистр бухгалтерии, Регистр расчета.

Регистры 1с (с примерами реальных регистров)

В данной статье мы рассмотрим первый тип регистра 1С — это регистр сведений.

Регистр сведений – это структура хранения информации, объект конфигурации платформы 1С версии 8. Сущность регистра сведений – хранение данных (ресурсов) по одному / нескольким разрезам информационных измерений. В качестве типа данных измерения может быть любой ссылочный тип платформы, типа "СправочникСсылка", "ДокументСсылка" и т.п, а также любой примитивный тип – число, строка, дата, булево.

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

Платформа 1С 8 хранит регистр сведений в информационной базе как таблицу записей с конкретными колонками. Одна строчка в такой таблице – это одна запись регистра сведений. В каждой строчке находятся значения измерений и значения ресурсов. В качестве ресурсов как правило (но не обязательно) фиксируются данные типа число/строка/булево. Например, регистр сведений "Контактная информация" в качестве измерения будет иметь поле "Сотрудник" (типа "СправочникСсылка"), а в качестве ресурса поле "Контактный телефон" с типом "Строка".

Регистры сведений бывают периодическими, и непериодическими. Это значит, что каждая запись регистра может быть закреплена за конкретным моментом временем, а может быть и не закреплена. Если в базе данных нужно хранить по измерениям разные характеристики в разные интервалы времени (например, Регистр сведений "События ОС организаций" подразумевает фиксацию конкретного состояния за основным средством, пример – "ОС компьютер" – событие "Принято к учету" ), тогда необходимо использовать периодический регистр сведений.

Периодичность регистра сведений может быть следующей: "непериодический", "по позиции регистратора" и в пределах года/квартала/месяца/дня/секунды. Периодичность подразумевает то, с какой даты начинает действовать информация по записи регистра (до следующей записи с такими же измерениями). Вариант периодичности – "по позиции регистратора" подразумевает ввод записи в регистр в результате проведения документа (документ – это и есть регистратор). Например, в типовой конфигурации 1С Бухгалтерия 8, имеется документ "Изменение состояния ОС", который при проведении делает движение, формирует новую запись по регистру с фиксацией нового состояния основного средства. Если удаляется документ, то соответствующие записи по регистру сведений с периодичностью "подчинение регистратору" (т.е. в нашем примере – подчинение удаляемому документу) также будут удалены.

Если регистр сведений будет являться периодическим, то у него в таблице базы данных будет присутствовать поле "Период" (доп.колонка в таблице регистра в информационной базе), т.е. по регистру будет записываться дополнительная информация по дате и времени. Это поле аналогично будет влиять на уникальность записи регистра сведений. Допустим, есть регистр с периодичностью месяц. Если в него сначала сохранить запись, указав в качестве даты 5 июня 2012 года (периодичность июнь), то при втором сохранении новой записи на 3 июня 2012 года предыдущая запись перезатрется новой.

Измерений в регистре сведений может быть много, но желательно ими не загружать таблицы информационной базы (не больше 8-ми), т. к. это может привести к быстрому разрастанию размера информационной базы, и как следствие невозможность работать с базой данных в файловом варианте (вы будете вынуждены переходить на серверный вариант работы информационной базы, например СУБД MS SQL 2008).

В свойствах измерения регистра сведений есть галка – "Ведущее", она подразумевает что запись в регистре будет храниться только в том случае, если выбранное измерение хранится в информационной базе. Например, измерение "Организация" с типом "СправочникСсылка", если из информационной базы удалится конкретная организация, то записи всех регистров (для которых измерение "Организация" является ведущим), в которых выбрана данная организация, тоже автоматически будут удалены.

Свойства измерения регистра сведений 1С

Функциональность объекта платформы 1С регистр сведений (с точки зрения разработки конфигураций):

  1. Создание записи (метод "Добавить()" объекта РегистрСведенийНаборЗаписей).
  2. Изменение записи — конкретного ресурса или измерения, либо вообще дополнительного реквизита (метод "Прочитать()" объекта РегистрСведенийНаборЗаписей — для считывания данных из таблицы, и, затем необходимая корректировка, т.е. присваивание полю другого значения).
  3. Удаление записи (перейти к статье по удалению записей из регистра сведений).
  4. Выбор записей, соответствующих конкретным параметрам (использование свойства "Отбор" объекта РегистрСведенийНаборЗаписей).
  5. Выбор записей на основе конкретного регистратора – документа основания записи.
  6. Получение значения ресурса записи регистра сведений
  7. Наличие виртуальной таблицы "СрезПервых" ("СрезПервых(началоПериода, структураОтбора)" — метод объекта РегистрСведенийМенеджер, получает первые записи регистра).
  8. Наличие виртуальной таблицы "СрезПоследних" ("СрезПоследних(конецПериода, структураОтбора)" — метод объекта РегистрСведенийМенеджер, получает последние записи регистра).

Как из программы 1с выгрузить или загрузить данные

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

Данная операция будет полезна и в том случае, если вы хотите, например, выгрузить для сохранения / создать архивную копию справочника "Номенклатура", справочника "Статьи затрат", документа "Ввод начальных остатков", документа "Приходный кассовый ордер" и т.п. (т.е. любой объект конфигурации, в том числе регистры сведений, регистры бухгалтерии, регистры накопления).

Для этой операции нам понадобится обработка — Обработка выгрузки/загрузки данных ИБ 1С8.

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

Итак, выгружаем справочник "Контрагенты" в файлик с расширением "*.xml" (делаем архивную копию справочника):

  1. Заходим в режим Предприятие в базу, из которой необходимо сохранить контрагентов.
  2. Открываем обработку (в базе 1С нажимаем в главном меню "Файл-Открыть" и выбираем файл), ссылка на которую расположена выше в статье.
  3. Выгрузка загрузка между базами 1С с одинаковыми конфигурациями (форма обработки)

  4. В колонке "Объекты конфигурации" ставим галочки напротив тех объектов конфигурации, которые необходимо выгрузить. Для нашей задачи мы ставим галочку в разделе "Справочники" — по строке "Контрагенты".
  5. В поле ввода "Куда: " нажимаем на кнопку выбора и выбираем путь, куда необходимо выгрузить элементы информационной базы. Не забываем не только выбрать директорию, но и вписать Имя файла. Расширение файла должно быть "*.xml".
  6. Выбор объекта для выгрузки - справочник "Контрагенты"

    Во второй колонке "Выгружать при необходимости" можно оставить везде галочки, если вы хотите загружать смежные элементы информационной базы. Например, в дальнейшем при загрузке из создаваемой выгрузки, реквизит справочника "Контрагенты" под названием "Основной банковский счет" — может быть либо пустым, либо будет написано в соответствующем поле "Объект не найден": это в случае если не стоит галочка "Выгружать при необходимости" напротив объекта конфигурации — справочника "Банковские счета", в случае если данный банковский счет отсутствует в базе. Если же в форме при выгрузке будет стоять галочка напротив справочника "Банковские счета", тогда для связанного с ним контрагента — данный банковский счет также будет выгружаться в архивную копию.

  7. Нажимаем кнопку "Выполнить" и ждем, когда индикатор выполнения дойдет до 100 %.
  8. Индикатор процесса выгрузки выбранных элементов ИБ

  9. Теперь у Вас есть выгрузка ВСЕХ контрагентов вашей информационной базы 1С. Таким образом, вы можете в любое время их восстановить в рабочую базу, либо в любую другую базу с аналогичной конфигурацией.

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

  1. Заходим в базу, в которую Вы хотите загрузить сохранённые элементы информационной базы (в нашем примере — перечень контрагентов).
  2. Открываем обработку (в базе 1С нажимаем в главном меню "Файл-Открыть" и выбираем файл), ссылка на которую расположена выше в статье.
  3. Выбираем режим — "Загрузка".
  4. Выбираем путь к файлу с данными, которые хотим загрузить в базу 1С.
  5. Загрузка из архивной копии данных в ИБ

  6. Нажимаем кнопку "Выполнить".
  7. Дожидаемся успешной загрузки справочника в информационную базу.

Данной обработкой можно выгрузить / загрузить ВСЕ элементы информационной базы между идентичными конфигурациями. Для того чтобы выгрузка была по всем объектам информационной базы 1С — необходимо просто выбрать галками ВСЕ объекты конфигурации: Справочники, Документы, Планы счетов и т.п.

Конфликт блокировок при выполнении транзакции

Ошибка 1С Конфликт блокировок при выполнении транзакции

Такое информационное сообщение говорит о том, что таблицы информационной базы 1С заблокированы для изменения, поэтому вы не сможете запустить/дальше работать в 1С.

Основная причина такого информационного сообщения — это выполняющийся обмен данными в запускаемой базе.

Можно подождать, некоторое время, и затем нажать кнопку перезапустить. Если Вам СРОЧНО необходимо зайти в базу данных 1С, тогда есть следующие варианты:

  1. Файловый вариант работы базы 1С
  • Возможно у Вас в планировщике задач Windows в фоновом режиме настроено автообновление от другого пользователя компьютера (т.е. не от пользователя текущего сеанса), поэтому Вы не видите окно с выполняющимся обменом. Для того чтобы сбросить этот процесс 1С с обменом необходимо: нажать комбинацию клавиш «Ctrl-Alt-Delete», выбрать «Диспетчер задач», перейти на закладку «Процессы», найти в дереве процессов задачу «1Cv8.exe» и завершить её.
  • Возможно в данной базе работают другие пользователи, и они включили обмен самостоятельно. Поинтересуйтесь, кто мог включить обмен вручную и попросите его остановить обмен. Обмен можно остановить при нажатии комбинации клавиш «Ctrl-Break».
  • Возможно один из активных пользователей текущей информационной базы запустил Групповое перепроведение всех документов, которое тоже может захватывать основную массу таблиц баз данных, что соответственно приводит к блокировке. Аналогично предыдущему варианту, чтобы остановить Групповое перепроведение необходимо нажать комбинацию клавиш «Ctrl-Break».
  1. Серверный вариант работы базы 1С
  • Зайти в «Консоль администрирования серверов 1С Предприятия», раскрыть рабочий кластер сервера, раскрыть закладку «Информационные базы», раскрыть саму базу данных и нажать «Сеансы». Затем в перечне сеансов справа — удалить все лишние процессы, один из этих процессов и блокирует таблицы базы данных 1С.

Консоль администрирования серверов 1С

Конфигурация узла распределенной ИБ не соответствует ожидаемой

В данной статье мы расскажем Вам о том, что нужно делать, если при попытке обмена узла УРБД с центральной базой либо с какой-либо другой почкой высвечивается ошибка "Конфигурация узла распределенной ИБ не соответствует ожидаемой".

Последовательно действий должна быть следующей:

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

Снять с поддержки конфигурацию

  1. Теперь загружаем конфигурацию из файла, созданного на втором шаге: в главном меню нажимаем "Конфигурация — Загрузить конфигурацию из файла", выбираем этот файл, и нажимаем "Открыть" — "Продолжить".
  2. После загрузки конфигурации нажимаем "Ctrl+S" (сохранить конфигурацию), затем "F7" — (обновить конфигурацию базы данных).
  3. После этого необходимо обратно подцепить центральный узел к данной почке, чтобы мог проходить обмен, для этого необходимо закрыть Конфигуратор и открыть почку (которая не хотела обмениваться с центром) в режиме Предприятие.
  4. В главном меню нажимаем "Файл — Открыть", и открываем вот эту обработку Обработка по установке главного узла РИБ:
Обработка установить главный узел
  1. Выбираем центральный узел — нажимаем кнопку "Т", выбираем вид плана обмена, т.е. "полный" либо "по организации", затем сам узел (скорее всего он у Вас будет называться "Центр"), и нажимаем кнопку "Установить главный узел".
  2. Пробуем теперь сделать обмен с центром: выгружаем из этой базы, затем делаем загрузку/выгрузку в центре, и снова в нашей почке делаем загрузку!

Как отсоединить почку от центральной базы (УРБД)

Для того, чтобы отсоединить узел (почку) от центрального узла (почки) необходимо зайти в 1С в режиме предприятия и запустить обработку, которую мы вместе с Вами сейчас и создадим. Отдельно стоит сказать, что данная обработка не будет выполняться при активном сеансе конфигуратора. Это связано с тем, что в структуру конфигурации будут вноситься изменения, а корректировка конфигурации возможна именно в режиме конфигуратора.

Отсоединение узла УРБД от центра может быть полезно в следующих случаях:

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

Текст обработки будет состоять всего из одной процедуры, которая в свою очередь будет состоять всего из одной строчки.

Задача: удалить все записи из регистра сведений

Очистить все записи из регистра сведений — довольно таки легкая задача. Для этого можно создать обработку с процедурой из двух строк кода.

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

Например, у нас стоит задача убрать все записи по непериодическому независимому регистру сведений "СчетаУчетаНоменклатуры" (это стандартный объект конфигурации 1С Бухгалтерия 8):

Процедура по удалению ВСЕХ записей регистра сведений