Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно использовать, когда требуется получить сложную выборку данных, сгруппированную и отсортированную необходимым образом. Классический пример применения запроса - получение сводки по состоянию регистра накопления на определенный момент времени. Так же, механизм запросов позволяет легко получать информацию в различных временных разрезах.
Текст запроса – это инструкция, в соответствии с которой должен быть выполнен запрос. В тексте запроса описывается:
таблицы информационной базы, используемые в качестве источников данных запроса;
поля таблиц, которые требуется обрабатывать в запросе;
правила группировки;
сортировки результатов;
и т. д.
Инструкция составляется на специальном языке – языке запросов и состоит из отдельных частей – секций, предложений, ключевых слов, функций, арифметических и логических операторов, комментариев, констант и параметров.
Язык запросов платформы 1С очень похож на синтаксис других SQL-языков, но имеются отличия. Основными преимуществами встроенного языка запросов являются: разыменование полей, наличие виртуальных таблиц, удобная работа с итогами, нетипизированные поля в запросах.
Рекомендации по написанию запросов к базе данных на языке запросов платформы 1С:
1) Текст запроса может содержать предопределенные данные конфигурации, такие как:
значения перечислений;
предопределенные данные:
справочников;
планов видов характеристик;
планов счетов;
планов видов расчетов;
пустые ссылки;
значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии. Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа ЗНАЧЕНИЕ. Данный литерал позволяет повысить удобочитаемость запроса и уменьшить количество параметров запроса.
Пример использования литерала ЗНАЧЕНИЕ:
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.Москва)
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.ПустаяСсылка)
ГДЕ ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)
ГДЕ ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
ГДЕ ТочкаМаршрута = ЗНАЧЕНИЕ(БизнесПроцесс.БизнесПроцесс1.ТочкаМаршрута.Действие1
2) Использование инструкции АВТОУПОРЯДОЧИВАНИЕ в запросе может сильно время выполнения запроса, поэтому, если сортировка не требуется, то лучше вообще ее не использовать. Во большинстве случаях лучше всего применять сортировку с помощью инструкции УПОРЯДОЧИТЬ ПО.
Автоупорядочивание работает по следующим принципам:
Если в запросе было указано предложение УПОРЯДОЧИТЬ ПО, то каждая ссылка на таблицу, находящаяся в этом предложении, будет заменена полями, по которым по умолчанию сортируется таблица (для справочников это код или наименование, для документов – дата документа). Если поле для упорядочивания ссылается на иерархический справочник, то будет применена иерархическая сортировка по этому справочнику.
Если в запросе отсутствует предложение УПОРЯДОЧИТЬ ПО, но есть предложение ИТОГИ, тогда результат запроса будет упорядочен по полям, присутствующим в предложении ИТОГИ после ключевого слова ПО, в той же последовательности и, в случае если итоги рассчитывались по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
Если в запросе отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ, но есть предложение СГРУППИРОВАТЬ ПО, тогда результат запроса будет упорядочен по полям, присутствующим в предложении, в той же последовательности и, в случае если группировка велась по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
В случае же, если в запросе отсутствуют предложения и УПОРЯДОЧИТЬ ПО, ИТОГИ и СГРУППИРОВАТЬ ПО, результат будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
В случае, если запрос содержит предложение ИТОГИ, каждый уровень итогов упорядочивается отдельно.
3) Что бы избежать повторного запроса к базе данных при выводе результата запроса пользователю (например, построение запроса или отображение результата запроса с помощью табличного документа) полезно использовать инструкцию ПРЕДСТАВЛЕНИЕССЫЛКИ, которая позволяет получать представление ссылочного значения. Пример:
Так же возможно использование инструкции ПРЕДСТАВЛЕНИЕ - предназначена для получения строкового представления значения произвольного типа. Отличие этих инструкций в том, что в первом случае, если инструкции передать ссылку, результатом будет строка, В остальных случаях результатом будет значение переданного параметра. Во втором случае, результатом инструкции всегда будет строка!
4) Если в запросе имеется поле с составным типом, то для таких полей возникает необходимость привести значения поля к какому-либо определенному типу с помощью инструкции ВЫРАЗИТЬ, что позволит убрать лишние таблицы из левого соединения с полем составного типа данных и ускорить выполнение запроса. Пример:
Имеется регистра накопления ОстаткиТоваров, у которого поле Регистратор имеет составной тип. В запросе выбираются Дата и Номер документов ПоступлениеТоваров, при этом при обращении к реквизитам документа через поле Регистратор не происходит множество левых соединений таблицы регистра накопления с таблицами документов-регистраторов.
Если приведение типа считается не осуществимым, то результатом приведения типа будет значение NULL.
5) Не стоит забывать про инструкцию РАЗРЕШЕННЫЕ, которая означает, что запрос выберет только те записи, на которые у текущего пользователя есть права. Если данное слово не указать, то в случае, когда запрос выберет записи, на которые у пользователя нет прав, запрос отработает с ошибкой.
6) В случае, если в запросе используется объединение, и в некоторых частях объединения присутствуют вложенные таблицы (документ с табличной частью), а в некоторых нет, возникает необходимость дополнения списка выборки полями – пустыми вложенными таблицами. Делается это при помощи ключевого слова ПУСТАЯТАБЛИЦА, после которого в скобках указываются псевдонимы полей, из которых будет состоять вложенная таблица. Пример:
7) Что бы в результат запроса не попали повторяющиеся строки, следует использовать инструкцию РАЗЛИЧНЫЕ, потому что так нагляднее и понятнее, а инструкция СГРУППИРОВАТЬ ПО применяется для группировки с помощью агрегатных функций. Ксати, при использовании агрегатных функций предложение СГРУППИРОВАТЬ ПО может быть и не указано совсем, при этом все результаты запроса будут сгруппированы в одну единственную строку. Пример:
8) Инструкция СГРУППИРОВАТЬ ПО позволяет обращаться к полям верхнего уровня, без группировки результатов по этим полям, если агрегатные функции применены к полям вложенной таблицы. Хотя в справке 1С написано, при группировке результатов запроса в списке полей выборки обязательно должны быть указаны агрегатные функции, а помимо агрегатных функций в списке полей выборки допускается указывать только поля, по которым осуществляется группировка. Пример:
9) Инструкция ЕСТЬNULL предназначена для замены значения NULL на другое значение, но не забываем, что второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом.
10) При обращении к главной таблице можно в условии обратиться к данным подчиненной таблицы. Такая возможность называется разыменование полей подчиненной таблицы.
Пример (поиск документов, содержащих в табличной части определенный товар):
Преимущество этого запроса перед запросом к подчиненной таблице Приходная.Товары в том, что если есть дубли в документах, результат запроса вернет только уникальные документы без использования ключевого слова РАЗЛИЧНЫЕ.
11) Интересный вариант оператора В - это проверка вхождения упорядоченного набора в множество таких наборов (Поле1, Поле2, ... , ПолеN) В (Поле1, Поле2, ... , ПолеN).
Пример:
12) При любой возможности используйте виртуальные таблицы запросов. При создании запроса система предоставляет в качестве источников данных некоторое количество виртуальных таблиц - это таблицы, которые так же являются результатом запроса, который система формирует в момент выполнения соответствующего участка кода.
Разработчик может самостоятельно получить те же самые данные, которые система предоставляет ему в качестве виртуальных таблиц, однако алгоритм получения этих данных не будет оптимизирован, так как:
Все виртуальные таблицы параметризованы, т. е. разработчику предоставляется возможность задать некоторые параметры, которые система будет использовать при формировании запроса создания виртуальной таблицы. В зависимости от того, какие параметры виртуальной таблицы указаны разработчиком, система может формировать РАЗЛИЧНЫЕ запросы для получения одной и той же виртуальной таблицы, причем они будут оптимизированы с точки зрения переданных параметров.
Не всегда разработчик имеет возможность получить доступ к тем данным, к которым имеет доступ система.
13) В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется. В большинстве случаев эти правила не оказывают влияния на выполнение запроса, но бывают случаи, когда для выполнения запроса существенна максимальная длина строки результата, вычисленная SQL Server. Важно иметь в виду, что в некоторых контекстах использования функции ПОДСТРОКА() максимальная длина ее результата может оказаться равной максимальной длине строки ограниченной длины, которая в SQL Server равна 4000 символам. Это может привести к неожиданному аварийному завершению выполнения запроса:
Microsoft OLE DB Provider for SQL Server: Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes.
HRESULT=80040E14, SQLSTATE=42000, native=8618
Чтобы избежать такой ошибки, не рекомендуют использовать функцию ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().
14) С осторожностью используйте ИЛИ в конструкции ГДЕ, так как использование условия с ИЛИ может значительно "утяжелить" запрос. Решить проблему можно конструкцией ОБЪЕДИНИТЬ ВСЕ. Пример:
15) Условие НЕ В в конструкции ГДЕ увеличивает время исполнения запроса, так как это своего рода НЕ (ИЛИ1 ИЛИ2 ... ИЛИn), поэтому для больших таблиц старайтесь использовать ЛЕВОЕ СОЕДИНЕНИЕ с условием ЕСТЬ NULL. Пример:
16) При использовании Временных таблиц нужно индексировать поля условий и соединений в этих таблицах, НО, при использовании индексов запрос может выполняться еще медленнее. Поэтому необходимо анализировать каждый запрос с применением индекса и без, замерять скорость выполнения запроса и принимать окончательное решение.
Если вы помещаете во временную таблицу данные, которые изначально индексированы по некоторым полям, то во временной таблице индекса по этим полям уже не будет.
17) Если вы не используете Менеджер временных таблиц, то явно удалять временную таблицу не требуется, она будет удалена после завершения выполнения пакетного запроса, иначе следует удалить временную таблицу одним из способов: командой УНИЧТОЖИТЬ в запросе, вызвать метод МенеджерВременныхТаблиц.Закрыть().
Часто встречаю вопросы касаемые программного создания и настройки прав пользователей.
В этот статье я приведу примеры для Обычного и Управляемого приложений, которые программно создают пользователя в конфигураторе и в режиме Предприятие (справочник пользователи) и установку Групп пользователей.
В приложении к статье обработки, код которых приведен ниже: Скачать обработки
Обработки были написаны под УТ, но, при необходимости, вы можете их легко доработать под другие конфигурации.
Управляемое приложение:
В конфигурациях на управляемом интерфейсе (Такси) изменили подход к ведению пользователей. Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользователь ИБ у вас сам создатся. И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователем ИБ, которого нет в справочнике Пользователи.
! В типовых конфигурациях для работы с пользователями активно используется БСП !
В общем модуле Пользователи используется программный интерфейс процедур и функций НовоеОписаниеПользователяИБ, ПрочитатьПользователяИБ, ЗаписатьПользователяИБ иУдалитьПользователяИБ.
Код создания нового пользователя с использованием БСП:
Разработчики в управляемых приложениях применили новый механизм настройки прав доступа, о которых и пойдет речь.
Будут перечислены все те грабли, которые собрал автор, чтобы вы о них знали.
Наверняка, уже все знают, что из себя представляет новая система, поэтому предистория вкрадце:
Как было раньше( в обычном приложении):
Есть документ. Есть Роли - ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.
С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа.
Теперь:
Вводная та же. Чтобы дать пользователю какие-то права на документ - сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N - количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.
Чтобы "привязать" эти профили к пользователям - нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).
При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше - при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.
Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли - это объекты МД, это не ссылочные типы. Отвечаю - для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится( в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:
Но если мы добавили новую роль в конфигурации, то как она попадет в справочник? Хороший вопрос. У справочника ИдентификаторыОбъектовМетаданных есть метод, позволяющий обновлять его данные. это:
Процедуру следует запускать каждый раз, когда вы вносите изменения в метаданные, особенно когда изменяете роли, объекты, связанные с новыми ролями.
Отлично. Роль добавили, идентификаторы обновили.
Но обратная связь не работает - вы в режиме предприятия назначили пользователю профиль( с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?
За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:
Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение - не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:
После выполнения этого кода, если все, что нужно обновлено - типовая конфигурация добавит пользователю роли.
Раз уж пошли по программному пути, вот код, который добавляет пользователя в справочник Пользователи и ПользователяИБ в ПользователиИнформационнойБазы:
Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользовательИБ у вас сам создатся.
И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователемИБ, которого нет в справочнике Пользователи.
ФиксированныйМассив, элементами которого могут быть значения перечисленных типов, включая ФиксированныйМассив. ФиксированныйМассив не допускает никаких изменений своего содержимого и может быть сконструирован из объекта типа "Массив";
А если проще, то: Фиксированный массив от того и фиксированный, что не поддается изменению.
Инициализируй массив один раз, помещай в фиксированный и больше не трогай
Как внести в 1С Зарплата и Кадры 7.7 исправления вставки по страховым взносам?
Сервис - настройки - ставки страховых взносов. Не попадает уплата страховых взносов в персонифицированный учет.
Нужно сделать документ "Расчет по страховым взносам". Меню документы – налоги - расчет по страховым взносам. В поле "Месяц начисления взносов" указывается месяц, за который перечислены страховые взносы. Дата документа определяет месяц, в котором произведено перечисление страховых взносов. При заполнении Персонифицированного учета не заполняются суммы уплаченных взносов.
В меню Документы-Налоги-Расчеты по страховым взносам, заполнить данный документ за каждый расчетный месяц. Как ввести выплаты по Лицензионным договорам? Они не должны облагаться страховыми взносами?
В меню Справочники - Расчет зарплаты - Виды расчетов - Удержание - НДФЛ - убрать Выплаты по лицензионным договорам из облагаемой базы; - Страховые взносы - Налоги - убрать Выплаты по лицензионным договорам из облагаемой базы. Завести Лицензионный договор, он не будет ничем облагаться. Как завести аренду автомобиля с водителем, чтоб аренда авто не попадала под страховые взносы, в работа водителя не попадала только под ФСС?
Необходимо вводить новые начисления и прописывать, что аренда не облагается налогами, а услуга работы облагается всеми налогами, и после расчета налогов в Журнале расчета страховых взносов удалить сумму ФСС. Как ввести б/л по болезни ребенка 3-и года в стационаре?
В меню Документы - Больничный лист - ввести в данном документе Причину нетрудоспособности: Уход за больным ребенком; и в случае по уходу за ребенком: До 7-ми лет в стационаре, но т.к. средний заработок не заполняется автоматически, его нужно заполнить суммой последнего заработка. Нужно изменить данные в Персонифицированном учете по стажу сотрудника, как это сделать?
В меню Справочники – Сотрудники – Сотрудник - Ввод данных - Персонифицировананный учет ПФР (ввод сведений о стаже) - заполнить данные по стажу или изменить уже имеющиеся данные. Как ввести б/л по болезни ребенка 3-и года в стационаре?
В меню Документы - Больничный лист - ввести в данном документе Причину нетрудоспособности: Уход за больным ребенком; и в случае по уходу за ребенком: До 7-ми лет в стационаре, но т.к. средний заработок не заполняется автоматически, его нужно заполнить суммой последнего заработка. Договор ГПХ не обложился ФСС?
Вознаграждение по договору подряда облагается страховыми взносами в ПФР, ФФОМС и ТФОМС и не облагается страховыми взносами в ФСС РФ (п. 2 ч. 3 ст. 9 Закона N 212-ФЗ). Не заполняется средний заработок по больничному листу.
В настройках поставили проводку по умолчанию "Пропорционально расчетной базе". Где прописать проводку по пособию беременным, вставшим на учет в ранние сроки беременности?
Справочник - расчет зарплаты - виды расчетов - единовременные пособия из соцстраха. На вкладке бухгалтерский учет поставить галочку расходы за счет ФСС и прописать проводку Дт 69.01 Кт 70. В табеле учета рабочего времени 3 и 10 мая ставятся как рабочие дни. Ввод праздничных дней проставила 3-00, 10-00.
Необходимо перезаполнить календарь пятидневка за май с галочкой "Учитывать праздники" и заново сформировать табель учета рабочего времени. Где проставить ставку ФСС НС и ПЗ?
Справочники - бухучет зарплаты - дополнительные проводки. Как ввести Справку по инвалидности?
Нужно в Справочнике Сотрудники выбрать сотрудника, получившего справку по инвалидности. Во вкладке Налоговый учет в строке Данные для расчета страховых взносов по кнопке Изменить выбрать документ Справка об установлении инвалидности. В Отпуске до 1,5 лет неверно ввели дату выплаты пособия до 1,5 лет, как можно ее изменить?
Необходимо сделать возврат в период заведения данного документа, исправить данные и перепровести все документы. Как можно указать, что в ЗиК ведется организация по УСН?
Изменить в Настройках организации – УСН - в Константах - Организация применяющая УСН и сделать расчет з/п. Как внешнего совместителя принять на основное место работы?
Можно уволить Совместителя и принять на работу Штатного сотрудника. В ЗиК считаются все страховые взносы, а организация находится на УСН.
В операциях в константах, в константе основной тариф страховых взносов проставить по кнопке история значения организации, применяющие УСН, и указать с какого числа данная константа действует. В декларации по ЕСН нет кнопки выгрузить…
В сервисе - в настройках во вкладке программа и бухучет поставить программу (вместо другой программы в хозрасчетной организации) бухгалтерия 7.7, ред.4.5 и заново открыть декларацию по ЕСН. Как можно просмотреть данные по Журналу з/п только за 2009г.?
В Журнале з/п установить Глубину просмотра архива на начало года. Установка ЕСН в ЗИКе.
Через "Стартовый помощник". В больничном листе не заполняется средний заработок.
В сервисе в настройках на вкладке зарплата и бухучет в поле проводка по умолчанию прописать проводку по умолчанию. Перезаполнить больничный, средний заработок заполнится. Как оформить невыходы сотрудника?
Меню Документы - Прочие отклонения – Невыходы. Компенсация за использование личного автомобиля в пределах норм облагается НДФЛ.
В составе облагаемой базы НДФЛ найти данное начисление и перенести в левый список. Как добавить стандартный вычет на ребенка?
В меню Справочники – Сотрудники – Сотрудник - на вкладке Основное - Ввод данных - Вычеты НДФЛ - стандартный вычет 1000 руб. Как ввести расчет по сотрудницам вставшим на учет в ранние сроки беременности?
Необходимо ввести предопределенный расчет: Меню Справочники - Расчет з/п - Виды расчетов - Единовременные пособия из соцстраха и проставить в нем проводку. Не вводится новый сотрудник в справочнике "Сотрудники".
Надо отжать кнопку "Установка (отключение) вывода списка по группам. Не формируется проводка по пособию по беременным, вставшим на учет в ранние сроки беременности.
В справочнике - расчет зарплаты - виды расчетов по кнопке "Помощник" описать предопределенный расчет вытянуть единовременное пособие из соцстраха, оставить галочку начисление носит разовый характер, пособие за счет ФСС в шаблоне проводки Дт 69.01 "Расходы по страхованию" Кт 70 счета, записать вид расчета. Ввести его документом ввод расчета по сотруднику, выбрать вид начисления пособие по беременным, вставшим на учет в ранние сроки беременности и сделать его расчет. В табеле рабочего времени не появляется сотрудница, находящаяся в отпуске по уходу за ребенком.
При формировании табеля заполнять не только штатными сотрудниками, а проставлять галочку Временно не работают. Сотрудница вышла из отпуска по уходу за ребёнком раньше времени. Что делать?
Изменить сроки в документе "Отпуск по уходу за ребёнком". Нет кнопки "Выгрузить" в отчетности по ЕСН.
Открыть: сервис- настройки-зарплата и бухучет, сменить программу бухучета, вместо"Другая программа бухучета в хозрасчетной организации". Требуется выгрузить план счетов из бухгалтерии.
Сервис обмен данными выгрузка данных в зарплату и кадры, галочками отмечаете, какие счета надо выгрузить и копируете путь. В ЗиК сервис-обмен данными - загрузка данных вставляете путь, 2 галочки режим отладки, запоминать ссылки и нажимаете на кнопку "Загрузить".Была введена надбавка. Дата начала задана, дата окончания нет. Вышел приказ на отмену надбавки с первого августа. Как ее отменить?
Для исправления даты окончания документа "Ввод расчета списку сотрудников" необходимо создавать документ-исправление по кнопке "Исправить". После создания записей-сторно, необходимо оформить (как и предлагает программа) документ "Начисление з/пл" со способом "Переначисление за прошлые периоды" и указать весь период, пока действовал вид расчета, оформленный исправляемым документом. <br>Также можно воспользоваться документом "Временное прекращение действия надбавок (удержаний)". Документ позволяет приостанавливать временно и насовсем начисления и удержания по одному сотруднику.Сотрудник работает с 4 мая, ошиблась и в приказе о приеме на работу поставила с 14 мая. Обнаружила в августе, что зарплата за май рассчитана неверно. В приказе поправила дату приема на работу. Зарплата за май неправильная. В конце августа сотрудник увольняется.
В документе начисление зарплаты указать способ переначисление зарплаты за прошлый период с 1 мая по 31 мая. После этого переначислить налоги и сделать перерасчет. Данные по перерасчету за май отразятся в журнале расчета зарплаты в периоде август. Не формируются проводки по налогам с ФОТ, по оплате труда формируются.
В справочнике- расчет зарплаты-виды расчетов для каждого налога на вкладке бухгалтерский учет поставить точку распределять по счетам и указать проводку ДТ счета пусто, т.е он будет подбираться автоматически или из проводки по умолчанию. Или из справочника сотрудники, или из подразделения, в зависимости от того, где прописаны проводки по начислению зарплаты и КТ счета 69 субсчета соответствующего налога. При заведении сотрудника дата рождения становится 2046 год, а год рождения 1946, как изменить?
В меню Сервис-Параметры-Год начала рабочего столетия изменить на 1945 год. При проведении пособия до 1.5 лет - не проводится. Ругается на некорректную проводку.
В этом случае необходимо в меню Справочники-Расчет зарплаты-Виды расчетов-Пособ.до 1,5 лет и до 3-х лет проставить проводку и перепровести созданный документ. Сотрудник был направлен в командировку на 3 дня с 30.05.09, но вернулся раньше, как изменить данные по командировке, если расчетный период, когда был создан документ, закрыт?
Находясь в расчетном периоде Июня в заведенном документе Оплата по среднему заработку по кнопке Исправить открыть редактирование периода командировки и отредактировать дату По и провести документ. При формировании отчетности по ЕСН и ПФР неверно формируются суммы авансовых платежей, расхождение по данным сотрудника в переходящем отпуске.
Нужно заполнить внешнюю форму отчета и выгрузить в Бухгалтерию. Как можно узнать в какие периоды сотрудник находился в отпуске?
Нужно просмотреть форму Т-2 (личная карточка), раздел 8. Сотрудник заболел во время отпуска. Больничный не проводится. При вводе больничного листа выдается сообщение: "За период уже были введены отклонения, прервать?".
В этом случае, нужно выбрать нет. После этого зайти в документ отпуск по кнопке "Исправить", изменяем дату окончания отпуска, если отпуск будет продлеваться. Как можно завести отпуск по уходу за ребенком до 1,5 лет, если у сотрудницы родилась двойня?
Нужно ввести на каждого ребенка отдельный документ-отклонение Отпуск по уходу за ребенком. Как проставить проводку по ПФР? <br></font>Следует в меню Справочники-Расчет з/п-Виды расчетов-ЕСН и страховые взносы в нужном налоге проставить проводку.
[b]Сотрудник отработал неполный рабочий день, каким образом можно исправить 8 часов работы на фактически отработанное время работника?
Часы работы можно изменить в Табеле рабочего времени, вместо 8 часов проставить фактически отработанное время. Как в программе проставить работу сотрудников по 4-дневной рабочей неделе?
Необходимо в меню Регламенты-Календари создать Сменный календарь по 4 дня, в меню Справочники-Графики работы создать новый график и внести в него Сменный календарь. При помощи документа Кадровое перемещение внести изменение у сотрудников изменение графика работы и рассчитать зарплату. Управляющая компания должна показать данные в 2-НДФЛ уплаченные за физ.лицо.
В этом случае следует заполнить 1-НДФЛ на этого человека и сформировать данные по формированию данных 2-НДФЛ. Как ввести праздничные дни?
В меню Регламенты-Ввод праздничных дней ввести праздничные дни. Как ввести начисление единоразового пособия при рождении ребенка?
В меню Справочники-Расчет зарплаты проставить данное начисление по ФСС и в меню Документы-Ввод расчетов сотруднику ввести данное начисление. Корректно ли, принять ранее уволенного сотрудника под старым табельным номером?
Нет, только под новым номером. Удержание алиментов.
Меню документы ввод удержаний - исполнительный лист, указываем сотрудника способ удержания почтовый сбор, сумму почтового сбора, способ расчета фиксированной суммой, указываем сумму. После расчета заходим в отчеты исполнительные листы, вид отчета почтой и нажимаем "Сформировать". Как провести беспроцентный займ и посчитать материальную выгоду?
В меню Справочники - Расчет зарплаты ввести Новое начисление (беспроцентный займ), в меню Документы - Ввод расчета по сотруднику ввести начисление займа и по Вводу начислений ввести расчет Материальной выгоды по вкладам. Отпуск по уходу за ребенком. неправильно поставила дату по..
Необходимо исправить в документе дату по... и перерассчитать зарплату. Как рассчитать командировочные по среднему заработку в программе 1С:Зарплата и Кадры 7.7. Не считается регрессивная ставка по ФФОМС и ТФОМС по сотруднику оклад которого превысил 600000 руб. за 9 месяцев.
Нужно ввести в меню Документы-Прочие отклонения-Оплата по среднему заработку. Регрессивная ставка ФФОМС и ТФОМС не считается после превышения 600000 руб.
Вариант 1: ОкноКлиентскогоПриложения (ClientApplicationWindow)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Возвращаемое значение:
Тип: Строка.
Описание: Получает навигационную ссылку в формате 1С:Предприятия на текущую форму.
Доступность: Тонкий клиент, веб-клиент, толстый клиент, внешнее соединение.
Вариант 2: Глобальный контекст (Global context)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Параметры: <Объект> (обязательный)
Тип: Ссылка на объект информационной базы. Ссылка на объект. <ИмяРеквизита> (необязательный)
Тип: Строка. Имя реквизита объекта или ресурса Регистра сведений, для которого нужно выяснить ссылку. Если это реквизит табличной части объекта, то параметр указывается как <имя табличной части>.<имя реквизита>, то есть с разделителем "." (точка).
<Индекс> (необязательный)
Тип: Число. Индекс строки в табличной части, в том случае если объект является реквизитом табличной части. Первая строка имеет индекс равный 0.
Возвращаемое значение: Тип: Строка.
Описание: Получает текст ссылки на объект информационной базы или его реквизит в формате 1С:Предприятия.
В первом случае принимает в качестве параметра ссылку на объект (это может быть как ссылка, так и ключ записи регистра сведений). Объектом могут быть: справочник, документ, ключ записи регистра сведений, бизнес процессы, задачи.
Во втором, в качестве параметров принимает ключ объекта (это может быть как ссылка, так и ключ записи регистра сведений) и имя реквизита (ресурса). Если нужно получить ссылку на реквизит табличной части, перед именем реквизита необходимо добавить имя табличной части и точку ".".
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание: Выполняет обращение к серверу только при получении ссылки на реквизит. При получении ссылки на объект информационной базы запрос на сервер не выполняется.
Получить навигационную ссылку для константы?
Вопрос: В конфигурации есть константа с типом ХранилищеЗначения для хранения изображения. Пытаюсь реализовать Загрузку и Выгрузку изображения: СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Константы.Логотип.Получить());
где СсылкаНаКартинку - реквизит формы с типом строка, а на форме есть элемент, у которого путь к данным = СсылкаНаКартинку
Возможно ли реализовать отображение картинки таким образом, или стоит хранить картинку где-либо еще? Ответ:
Навигационную ссылку на константу получить не получится(
Получится только так:
т.е. в процедуру ПриСозданииНаСервере поместить картинку во временное хранилище и она там сидит пока закроете форму
Есть форма списка справочника "Сотрудники".
В нем есть реквизит "Фото", который имеет тип "СправочникСсылка.ХранилищеДополнительнойИнформации" (справочник "ХранилищеДополнительнойИнформации" по структуре полностью совпадает анологичным справочником в 1С 8.1).
В реквизиты формы списка добавил "АдресКартинки" тип "строка", в элементы добавил поле "Картинка" (вид - поле картинки) с путем к данным "АдресКартинки". Как вывести Картинку?
Ответ:
"Хранилище" - это "стандартный" реквизит справочника "ХранилищеДополнительнойИнформации".
Имеется регистр сведений с именем "Изображения" следующей структуры:
Измерения:
- ИдИзображения (тип - уникальный идентификатор);
Реквизиты:
- Изображение (тип - ХранилищеЗначений)
Реализовать возможность записи изображений в него, проблемы не составило. А застрял на получении навигационной ссылки на нужную запись регистра? Ответ - Для регистра сведений первым параметром должен быть ключ записи, а не ссылка на объект.
Т.е. если есть регистр сведений ХранилищеКартинок с изменением Ном (тип справочник Ном) и ресурс Картинка (тип хранилище значений) - код для получения навигационной ссылки должен быть примерно таким:
При использовании в web-клиенте
Стояла следующая задача: отправлять уведомления о изменениях в документах на почту и вкладывать в письмо гиперссылку на измененный документ. База опубликована на web-севере. Полученная в 1С ссылка методом ПолучитьНавигационнуюСсылку() имела следующий вид https://localhost/#e1cib/data/Документы.Счет?ref="ab99005056c0000811e00f627bcddd55"
Вложенная в таком виде ссылка не открывала нужный документ, а лишь инициировала переход в базу.
Как оказалось проблема была в следующем, в URL-адресах не должны присутствовать кавычки, их заменяем на %22 https://localhost/#e1cib/data/Документы.Счет?ref=%22ab99005056c0000811e00f627bcddd55%22
Для того чтобы существовала возможность обмена какими-либо данными с кем-либо, необходимо некоторым образом идентифицировать тех, с кем мы будем обмениваться, и для каждого из них описать перечень обмена
Обе эти задачи позволяет решать прикладной объект конфигурации План обмена.
При помощи планов обмена мы получаем информацию о том, какие элементы данных были изменены и в какой узел обмена их необходимо передать. Это возможно благодаря тому, что планы обмена содержат механизм регистрации изменений. Информация об измененных данных переносится с помощью сообщений, инфраструктура которых также поддерживается планами обмена.
Подобно тому, как элементами данных справочника являются элементы справочника, элементами данных плана обмена являются узлы плана обмена. Каждый узел идентифицирует участника обмена по данному плану обмена. Кроме этого в каждом плане обмена всегда существует один предопределенный узел, идентифицирующий данную информационную базу.
В состав данных, которыми может производиться обмен, входят элементы информационных структур базы данных, которые описываются следующими объектами встроенного языка: Константа.МенеджерЗначения.<имя>;
СправочникОбъект.<имя>;
ДокументОбъект.<имя>;
ПоследовательностьНаборЗаписей.<имя>;
ПланВидовХарактеристикОбъект.<имя>;
ПланСчетовОбъект.<имя>;
ПланВидовРасчетаОбъект.<имя>;
РегистрСведенийНаборЗаписей.<имя>;
РегистрНакопленияНаборЗаписей.<имя>;
РегистрБухгалтерииНаборЗаписей.<имя>;
РегистрРасчетаНаборЗаписей.<имя>;
ПерерасчетНаборЗаписей.<имя>;
БизнесПроцессОбъект.<имя>;
ЗадачаОбъект.<имя>;
УдалениеОбъекта.
При описании состава данных плана обмена разработчик имеет возможность указать для каждого типа объектов признак Авторегистрация. Он определяет, каким образом план обмена будет отслеживать изменения этих данных.
Создание плана обмена Филиалы
Состав данных обмена должен выглядеть следующим образом:
Теперь с помощью конструктора создадим основную форму узла, чтобы описать в ней некоторые действия, которые должны выполняться при создании нового узла обмена.
Суть этих действий будет заключаться в том, что при создании нового узла обмена мы должны будем сформировать для него все необходимые записи регистрации изменений для всех объектов конфигурации, входящих в данный план обмена. Это будет своего рода начальная синхронизация узла обмена всеми данными обмена.
Прежде всего, опишем в модуле формы узла служебную переменную, которая будет хранить признак того, является ли записываемый узел новым или нет.
Перем РегистрацияВНовыйУзел;
Затем создадим обработчик события формы ПередЗаписью.
Этот обработчик и будет устанавливать значение нашей служебной переменной в Истина в случае записи нового узла плана обмена.
После этого создадим обработчик события формы ПриЗаписи.
Создание обработки Обмен данными
Откроем конфигуратор и создадим новый объект конфигурации Обработка с именем ОбменДанными. Перейдем на закладку Прочее и откроем модуль объекта.
Создадим в нем процедуру ОбменСФилиалами.
Теперь создадим основную форму обработки и в обработчик события нажатия кнопки Выполнить – КнопкаВыполнитьНажатие вставим вызов процедуры ОбменСФилиалами().
Создание процедуры записи данных
Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена Филиалы. Сначала создадим процедуру, которая используется нами при обмене данными, – ЗаписатьСообщениеСИзменениями.
На этом создание процедуры записи данных обмена закончено.
Возникла задача отправлять счета почтой. PDFcreator не подошёл поскольку не удалось вместить счёт на одну страницу по ширине. Решил попробовать OpenOffice. Как сохранять в PDF нашёл быстро, а вот как уместить счёт на одну страницу вширь искал долго.
В версии 1С 8.2.232 появилась возможность сохранять табличный документ в xls файл на сервера под линуксом. А вот работать с Опеном офисом из-под линукса пока не получается. Собственно комментари ненужны. Вот весь код. Самое интересное это бодание со стилями страниц в Опене Офисе. Жаль что этот фрагмент работает только на клиенте. На сервере вопрос не решается *08
Автор: Трактор
Функция позволяющая выполнить выгрузку табличного документа в PDF средствами OpenOffice
Как сохранить Значения элементов при закрытии формы и восстановить их при открытии формы?
Это можно сделать через СохранитьЗначения(), ВосстановитьЗначение():
Но у этого способа, одно НО - Сохраненые значения будут доступны только на там компьютере, на котором их сохранили!
А чтобы эти значения были доступны с любого компьютера, их нужно хранить в базе, например в константах с типом Хранилище значения:
Перебирая все элементы формы, выбрать только поля ввода и записать их значения в структуру.
Потом структуры записываем в константу:
Данные, которые определяют логику функционирования системы на базе 1С:Предприятия, относятся к информационной базе. Хранение информационной базы осуществляется в базе данных с виде набора таблиц, для чего 1С:Предприятие 8.1 может использовать одну из четырех систем управления базами данных (СУБД): * Встроенную в 1С:Предприятие 8.1 (файловый вариант информационной базы). В этом случае все данные информационной базы хранятся в файле с именем 1Cv8.1CD. Этот файл имеет двоичный формат и по сути является базой данных для встроенной в 1С:Предприятие 8.1 СУБД. * Microsoft SQL Server (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных Microsoft SQL Server. * PostgreSQL (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных PostgreSQL. * IBM DB2 (клиент-серверный вариант информационной базы). Все данные информационной базы хранятся в базе данных IBM DB2.
На уровне объектов базы данных (таблиц, полей, индексов и т. п.) как файловый так и клиент-серверный вариант информационной базы имеют сходный формат (отличающийся несущественными деталями). Некоторая информация об этом формате содержится ниже.
Вся информационная база представляется в базе данных в виде набора таблиц. Среди них есть несколько таблиц, которые обязательно присутствуют в представлении любой информационной базы:
* Config - основная конфигурация информационной базы. Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.0 в режиме Предприятия. * ConfigSave - конфигурация, редактируемая Конфигуратором. Конфигурация из ConfigSave переписывается в Config при выполнении "Обновления конфигурации базы данных" в Конфигураторе, а наоборот - при выполнении в Конфигураторе операции "Конфигурация - Конфигурация базы данных - Вернуться к конфигурации БД". * Files содержит служебную информацию, например, о работе с хранилищем конфигурации. * Params содержит параметры информационной базы. Среди них: => Список пользователей информационной базы. => Национальные настройки информационной базы. => Таблица соответствия объектов метаданных и объектов базы данных (таблиц, полей, индексов). => Некоторая другая информация. * _YearOffset - смещение дат в базе данных. Эта таблица создается только при использовании Microsoft SQL Server. * DBSchema содержит информацию о структуре базы данных 1С:Предприятия и определяет другие объекты базы данных, используемые данной информационной базой.
При старте 1С:Предприятие проверяет наличие в информационной базе перечисленных таблиц и в случае отсутствия какой-нибудь из них выдается сообщение "информационная база разрушена". Отсутствие всех перечисленных таблиц означает, что информационная база пустая. В последнем случае эти таблицы будут созданы.
Перечень и структура других таблиц базы данных определяется конкретной конфигурацией, а именно, определенными в ней объектами метаданных. Имя каждой таблицы состоит из буквенного префикса и следующего за ним номера. Префикс определяет назначение таблицы, а номер позволяет различать таблицы одинакового назначения, относящиеся к разным объектам метаданных. Если в качестве СУБД используется IBM DB2, то описанную структуру имеют не имена таблиц, а их псевдонимы.
Если в конфигурации определен хотя бы один план обмена с установленным флагом "Распределенная информационная база", то будут созданы следующие таблицы:
* _ConfigChangeRec - таблица регистрации изменений объектов конфигурации. * _ConfigChangeRec_ExtProps - таблица имен файлов измененных внешних свойств объектов конфигурации.
Ниже перечислены различные объекты метаданных, которым могут соответствовать те или иные таблицы.
* Константы => _Consts содержит текущие значения всех констант, определенных в конфигурации. => _ConstsChangeRec - таблица регистрации изменений констант. Создается, если хотя бы одна константа участвует хотя бы в одном плане обмена. * Планы обмена => _Node<n> - таблица плана обмена. => _Node<n>_VT<k> - табличная часть плана обмена, создается для каждой табличной части. * Справочники => _Reference<n> - таблица справочника. => _Reference<n>_VT<k> - табличная часть справочника - для каждой табличной части. => _ReferenceChangeRec<n> - таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена. * Документы => _Document<n> - таблица документов для каждого объекта метаданных "документ". => _Document<n>_VT<k> - табличная часть документа - для каждой табличной части каждого документа. => _DocumentChangeRec<n> - таблица регистрации изменений объекта метаданных типа "документ". Создается для каждого объекта метаданных типа "документ", если он участвует хотя бы в одном плане обмена. * Последовательности документов => _Sequence<n> - таблица регистрации документов - для каждой последовательности. => _SequenceBoundary<n> - таблица границ последовательности - для каждой последовательности. => _SequenceChangeRec<n> - таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена. * Журналы документов. => _DocumentJournal<n> - таблица журнала документов, создается для каждого журнала документов. * Перечисления => _Enum<n> - таблица перечисления - по одной для каждого перечисления. * Планы видов характеристик => _Chrc<n> - основная таблица плана видов характеристик. => _Chrc<n>_VT<k> - табличная часть плана видов характеристик - для каждой табличной части. => _ChrcChangeRec<n> - таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена. * Планы счетов => _Acc<n> - основная таблица плана счетов. => _Acc<n>_ExtDim<k> - таблица видов субконто плана счетов, создается для плана счетов в том случае, если максимальное количество субконто больше нуля. => _Acc<n>_VT<k> - табличная часть плана счетов, создается для каждой табличной части плана счетов. => _AccChangeRec<n> - таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена. * Планы видов расчета => _CalcKind<n> - основная таблица плана видов расчета. => _CalcKind<n>_BaseCK - таблица базовых видов расчета, создается для плана видов расчета в случае, если его свойство "Зависимость от базы" имеет значение, отличное от "Не зависит". => _CalcKind<n>_DisplacedCK - таблица вытесняемых видов расчета, создается для плана видов расчета в случае, если у него установлен флаг "Использует период действия". => _CalcKind<n>_LeadingCK - таблица ведущих видов расчета - для каждого плана видов расчета. => _CalcKindDN<n> - вспомогательная таблица для порядка вытеснения, создается, если у плана видов расчета установлен флаг "Использует период действия". => _CalcKind<n>_VT<k> - табличная часть плана видов расчета, создается для каждой табличной части. => _CalcKindChangeRec<n> - таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена. * Регистры сведений => _InfoReg<n> - таблица движений регистра сведений. => _InfoRegChangeRec<n> - таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена. * Регистры накопления => _AccumReg<n> - таблица движений регистра накопления. => _AccumRegTotals<n> - таблица итогов регистра накопления, если регистр поддерживает остатки. => _AccumRegTurnovers<n> - таблица оборотов регистра накопления, если регистр поддерживает обороты. => _AccumRegChangeRec<n> - таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена. => _AccumRegOptions - таблица настроек хранения итогов регистров накопления одна на все регистры накопления. * Регистры бухгалтерии => _AccntReg<n> - таблица движений регистра бухгалтерии. => _AccntRegED<n> - таблица значений субконто регистра бухгалтерии, создается в том случае, если он ссылается на план счетов, у которого максимальное количество субконто больше нуля. => _AccTtl0<n> - таблица итогов по счету. => _AccTtl<i><n> - где i от 1 до максимального количества субконто. Таблица итогов по счету с количеством видов субконто равным i. => _AccTtlC<n> - таблица итогов оборотов между счетами, только для регистра бухгалтерии поддерживающего корреспонденцию. => _AccntRegChangeRec<n> - таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена. => _AccntRegOptions - таблица настроек хранения итогов одна на все регистры бухгалтерии. * Регистры расчета => _CalcReg<n> - таблица движений регистра расчета. => _CalcRegActPer<n> - таблица фактических периодов действия для регистра расчета, создается, если у регистра расчета установлен флаг "Период действия". => _CalcRegChangeRec<n> - таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена. => _CalcRegRecalc<n> - таблица перерасчета регистра расчета, создается для каждого перерасчета. => _CalcRegRecalcChangeRec<n> - таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена. * Бизнес-процессы => _BPRoutePoint<n> - таблица точек маршрута бизнес-процесса для каждого бизнес-процесса. => _BusinessProcess<n> - основная таблица бизнес-процесса. => _BusinessProcess<n>_VT<k> - табличная часть бизнес-процесса для каждой табличной части. => _BusinessProcessChangeRec<n> - таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена. * Задачи => _Task<n> - основная таблица задачи. => _Task<n>_VT<k> - табличная часть задачи для каждой табличной части. => _TaskChangeRec<n> - таблица регистрации изменений в задачах. Создается для каждого объекта метаданных типа "задача", который участвует хотя бы в одном плане обмена.
При использовании IBM DB2 префиксы псевдонимов таблиц начинаются не с символа подчеркивания, а сразу с буквенной части.
Количество этих таблиц зависит от функциональности конфигурации и может быть достаточно большим. В штатном режиме 1С:Предприятие не выполняет проверку их наличия, а также целостности и непротиворечивости содержащихся в них данных. Поэтому важно, чтобы база данных, в которой размещена информационная база 1С:Предприятия 8.1, была защищена от несанкционированного доступа и ее модификация выполнялась только средствами 1С:Предприятия. Для проверки необходимо использовать функцию "Администрирование - Тестирование и исправление", встроенную в конфигуратор.
Важно также, чтобы резервное копирование и восстановление базы данных, хранящей информационную базу, выполнялось только целиком. С этой целью рекомендуется использование средств резервного копирования баз данных, встроенных в в используемую СУБД. Резервное сохранение файлового варианта информационной базы может быть выполнено копированием файла 1Cv8.1CD.
В конфигураторе есть специальная функция: Администрирование - Выгрузить информационную базу. С ее помощью можно выгрузить в указанный файл (файл выгрузки) все данные, относящиеся к информационной базе, и больше никакие. Обратная ей функция "Загрузить информационную базу" позволяет в текущую информационную базу вместо существующих загрузить все данные из файла выгрузки. Эти функции также можно использовать для резервного копирования данных информационной базы как в файловом так и в клиент-серверном варианте. Как просмотреть структуру таблиц информационной базы?
Как вызвать стандартную проверку заполнения реквизитов?
Возвращаемое значение:
Тип: Булево. Истина - ошибок не обнаружено, Ложь - в противном случае.
Описание:
Проверяет заполнение реквизитов. Для реквизитов, у которых свойство "Проверка заполнения" установлено в значение "Показывать ошибку" и реквизит не заполнен, будет сформировано сообщение об ошибке.
У прикладных объектов на платформе 1С Предприятие 8.2 появился новый обработчик события ОбработкаПроверкиЗаполнения, где теперь рекомендуется делать все проверки на заполненность реквизитов объекта. Рассмотрим работу с этим обработчиком. Обработчик должен быть расположен в модуле объекта (для констант в модуле менеджера значений) и имеет следующий синтаксис:
Здесь параметр Отказ (тип Булево) отвечает за возможность дальнейшей работы программы после проверки заполнения, а в параметре ПроверяемыеРеквизиты(тип Массив) содержатся реквизиты объекта, которые система будет проверять на заполненность. Напомним, что в версии 1С Предприятие 8.2 появилось возможность на уровне свойств реквизитов объекта устанавливать свойство Проверка заполнения. Так вот в массив ПроверяемыеРеквизиты по умолчанию система помещает реквизиты с установленным свойством «Выдавать ошибку». Однако разработчик может сам некоторые реквизиты добавить в массив или удалить из него в зависимости от каких-либо условий:
Как видно из примера в качестве элементов массива выступают строковые наименование реквизитов, как они заданы в конфигураторе. Для того чтобы полностью отказаться от системной проверки, необходимо очистить массив. При этом разработчик может проводить проверку реквизитов по произвольным алгоритмам, система же проверяет только на заполненность/незаполненность:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Далее рассмотрим, когда вызывается данный обработчик. Это зависит от типа объекта и его свойств. Так для, например, для справочника обработчик вызывается перед записью объекта; для документа: если разрешено проведение - при проведении, иначе при записи; для обработки : при вызове стандартных команд "OK", Да". Подробно это описано во встроенной справке. Но также есть возможность вызвать данный обработчик в произвольный момент, используя метод объекта ПроверитьЗаполнение(). Например, определить команду Проверить в форме документа:
Формируется конечно не быстро, но Структура - объект сериализуемый, поэтому ее надо просто хранить в ХранилищеЗначения в базе 8ки, и восстанавливать перед каждым переносом данных, а не формировать заново. Обновлять ее можно периодически при изменении конфигурации, ито если изменения влияют на перенос данных.
Обратите внимание: все идентификаторы объектов в 10ой системе, а идентификаторы значений перечислений в 36ой.