Как в 1с заблокировать контрагента
При программном изменении существующих объектов есть правило: сразу после получения объекта из ссылки, необходимо его заблокировать для редактирования. Это позволяет:
- во-первых, проверить, что данный объект не заблокирован в настоящий момент другим пользователем;
- во-вторых, гарантирует, что другой пользователь не сможет изменить объект, пока не будут записаны изменения в текущем сеансе;
Внимание! Данное правило неприменимо при пакетной загрузке данных, когда требуется принятие изменений пакетом, а также при разрешении коллизий, возникающих при загрузке данных из другого источника, обладающего большим приоритетом
Заблокировать произвольный объект можно двумя способами:
- Используя метод Заблокировать() объекта метаданных ссылочного типа (Справочники, Документы и т.п.);
- Используя метод ЗаблокироватьДанныеДляРедактирования() глобального контекста;
Давайте рассмотрим примеры работы с каждым из этих методов
Метод Заблокировать()
Если Ваш алгоритм не взаимодействует с пользователем, перед тем как заблокировать объект, следует проверить, не заблокирован ли этот объект другим пользователем или процессом. Если, все же, взаимодействует, следует исключить код для варианта 1. Тогда в случае заблокированного объекта будет вызвано исключение и пользователь увидит полное описание ошибки.
Недостатки: Метод доступен только в контексте сервера, толстого клиента или внешнего соединения
Метод ЗаблокироватьДанныеДляРедактирования()
Данный метод обладает большим спектром возможностей, чем предыдущий:
- он умеет блокировать записи регистра сведений;
- он умеет блокировать данные в контексте управляемых форм;
- он умеет блокировать данные, если совпадает версия данных;
С учетом этого, перепишем предыдущий пример следующим образом:
В том случае, когда нам необходимо заблокировать некоторые данные на время открытия управляемой формы, можно поступить следующим образом:
Блокировка будет снята неявно при закрытии привязанной формы, либо при завершении сеанса пользователя, либо явно при вызове метода РазблокироватьДанныеДляРедактирования()
Внимание! Методы ЗаблокироватьДанныеДляРедактирования() и РазблокироватьДанныеДляРедактирования() доступны только начиная с версии платформы 1С 8.2.9
В этой статье мы рассмотрим стандартный механизм ограничения доступа в программе «1С:Управление торговлей 10.3».
Основные сведения для ограничения доступа к контрагентам
- Настраивать ограничения доступа может только администратор (пользователь с полными правами).
- Настройки доступа не распространяются на пользователей с полными правами. Пользователь, имеющий полные права, имеет доступ ко всем контрагентам, независимо от выполненных в базе настроек.
- Настроенные ограничения действуют, только если в базе включен флаг «Ограничивать права доступа на уровне записей».
- Настроенные ограничения вступают в силу при следующем входе пользователя в базу.
Меню: Сервис – Настройка учета – Настройка параметров учета
В форме настроек на закладке «Общее» поставим соответствующий флаг:
По кнопке «ОК» сохраним и закроем параметры учета.
Настройка прав доступа делается следующим образом:
- Создается несколько групп доступа к контрагентам. Каждый контрагент может быть отнесен в одну группу.
- Создается несколько групп пользователей. Пользователь может входить сразу в несколько групп.
- Для каждой группы пользователей указываются группы контрагентов, которые будут доступны пользователям для чтения/записи.
Пример | Группы доступа к контрагентам | Группы пользователей | Настройка ограничений |
Ограничения по пользователям | Для каждого пользователя создается отдельная группа. Например, «Клиенты Иванова». Все контрагенты пользователя переносятся в соответствующую группу. | Для каждого пользователя создается группа, в нее включается только этот пользователь. Например, «Пользователь Иванов». | Для группы пользователей «Пользователь Иванов» дается доступ к группе контрагентов «Клиенты Иванова». |
Ограничения по отделам | Группа доступа создается одна на весь отдел, все клиенты отдела включаются в нее. Например, «Клиенты оптового отдела». | На каждый отдел создается группа пользователей. Все сотрудники отдела включаются в группу. Например, «Менеджеры оптового отдела». | Группе пользователей отдела дается доступ к клиентам отдела. «Менеджеры оптового отдела» – «Клиенты оптового отдела». |
Группы доступа к контрагентам
Меню: Сервис – Пользователи – Группы доступа к контрагентам
При создании группы указывается только ее наименование. Создадим несколько групп доступа:
Указание группы доступа производится в форме контрагента на закладке «Прочее».
Желательно указывать группу доступа сразу, в момент создания контрагента, чтобы потом не проставлять ее везде.
Укажем у контрагентов «Мобил» и «Телефония» группу «Клиенты Мельникова А.М.», а у контрагентов «Кочеткова Ирина Сергеевна» и «Синицин Олег Юрьевич» группу «Клиенты Потапова О.С.».
Группы пользователей
Меню: Сервис – Пользователи – Группы пользователей
Добавим группу, укажем ее наименование – «Мельников А.М.». В таблице «Виды объектов доступа» поставим флаг «Контрагенты».
Если флаг «Контрагенты» не установлен, то пользователи данной группы будут иметь доступ ко всем контрагентам, независимо от настроек прав доступа. Если флаг установлен, то по умолчанию пользователи группы вообще не имеют доступа к контрагентам, все доступные группы контрагентов указываются отдельно.
Далее укажем состав группы – выберем пользователя «Мельников А.М.». В случае необходимости можно выбрать и других пользователей.
Пример заполненной группы пользователей:
Настройка ограничений прав доступа
Теперь нам остался последний шаг – указать, что группа пользователей «Мельников А.М.» имеет доступ к группе контрагентов «Клиенты Мельникова А.М.».
Перейти к форме настройки прав доступа можно из формы группы пользователя по кнопке «Права»:
В открывшейся форме «Настройка прав доступа» перейдем на закладку контрагенты и добавим группу контрагентов – «Клиенты Мельникова А.М.». Установим для нее флаги «Чтение» и «Запись».
Флаг «Чтение» позволяет видеть контрагента в списке и просматривать его форму. Флаг «Запись» также дает право на изменение контрагента.
По кнопке «ОК» сохраним и закроем настройку.
Создание других групп пользователей и настройка их прав доступа делается по аналогии.
Результат настройки ограничения доступа к контрагентам
После сделанных настроек пользователь Мельников А.М., зайдя в справочник контрагентов, увидит в нем все группы и своих контрагентов.
Вот простейший пример на Delphi отображения заблокированных объектов в 1С.
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
h:=FileOpen('d:ПроверкаКонфликтов1sjourn.$lk',fmOpenRead+fmShareDenyNone);
showmessage(inttostr(h));
for i:=0 to 10000 do
if LockFile(h,i,0,1,0) then
begin
UnlockFile(h,i,0,1,0);
end
else
begin
Memo1.Lines.Add(IntToStr(i)+' - Locked');
end;
FileClose(h);
end;
Для того чтобы понять, какой у документа номер и вид для этого достаточно выполнить простейший select. SELECT IDDOCDEF AS ТипДокумента, IDDOC AS ВнутреннийИдентификатор, DOCNO AS НомерДокумента
FROM _1SJOURN
WHERE (ROW_ID = @i)
Где @i это номер байта полученный вышеописанной процедурой.
Для справочников это будет файл не 1sjourn.$lk а scXXX.$lk где ХХХ – внутренний идентификатор объекта метаданных.
Также нужно отметить, что блокировку установить или снять в пределах своей сессии можно с помощью метода Блокировать(). Значение, которое возвращает этот метод собственно и указывает на то, заблокирован он или нет. Нужно отметить, что пример приведенный на Delphi, гораздо производительней, т.к. в этом случае не нужно открывать выборку данных и проверять каждый элемент на блокировку, а достаточно лишь взять заведомо заблокированные байты и сопоставить их объектам данных в 1С.
Возникает вопрос: а можно ли снимать блокировки не из своей сессии, и что произойдет, например, если мы попытаемся удалить файл 1sjourn? Сразу нужно отметить, что просто так удалить нам его не удастся, если он задействован хотя бы в одном сеансе 1С. Даже если мы возьмем и удалим все хэндлы на него и затем удалим его, то и в этом случае нас постигнет неудача т.к. в этом случае при обращении ко всем документа будет появляться надпись «запись заблокирована». Косвенные причины этого понятны, неудача в LockFile(h,i,0,1,0) ,а в данном случае хэндл теряется, 1С интерпретируется как блокировка объекта. И даже если мы создадим заново этот файл, то блокировок не будет только у тех клиентов, которые загрузили 1С после создания файла. Скорее всего, это происходит потому, что 1С хранит в локальной переменной информацию об открытии файла. Если он уже открывался, то 1С не пытается за нового его открыть и получить новый хендл. Однако принципиальная возможность создания такого менеджера управления блокировками существует(возможно, он уже и написан).
При использовании материалов данной статьи обязательна ссылка на информационный ресурс и автора статьи.
Оперативные консультации по 1С без предоплаты. Как определить тип контрагента в 1С. Обслуживание, настройка и доработка 1С для комфортной работы.
Одной из основных операций при работе с программой 1С 8.3 является заполнение Справочника Контрагенты, представляющего собой перечень всех поставщиков, покупателей и т.д. принявших на себя те или иные обязательства по договору с которыми работает организация.
Давайте рассмотрим, что собой представляет Справочник «Контрагенты» в 1С 8.3 и как с ним работать.
Справочник «Контрагенты» находится в блоке «Справочники»-«Покупки и продажи»-«Контрагенты».
Рис.1 Справочник «Контрагенты»
Перед нами открывается журнал с элементами справочника. Для удобства работы мы можем группировать контрагентов по папкам, по любой принадлежности будь то поставщик, покупатель, банк и т.д.
Рис.2 Журнал с элементами справочника
Если нам необходимо создать новую группу для контрагентов, мы выбираем «Создать группу», и перед нами открывается окно «Контрагенты (создание группы)», где необходимо заполнить поле «Наименование», а по желанию и поле «Комментарий». После нажимаем «Записать и закрыть». В справочнике появится новая группа.
Рис.3 В справочнике появилась новая группа
Также для удобства и ускорения работы со справочником «Контрагенты» можно применять разные режимы просмотра элементов.
Рис.4 Разные режимы просмотра элементов
Кликаем на значение «Еще» и в открывшемся списке выбираем «Режим просмотра», где можно указать один из трех вариантов режима просмотра:
- Иерархический – элементы будут отображаться в выбранной группе;
- 5 Список – будут отображены все элементы справочника без учета группировки;
- 6 Дерево – будут отображаться все группы справочника и выбранные элементы в подчинении.
Рис.5 Режим просмотра
Как создать новый элемент справочника «Контрагенты» в 1С 8.3
Новый контрагент вводится в справочник через значение «Создать».
Рис.6 Введем нового контрагента
Перед нами открывается пустая карточка контрагента, которую необходимо заполнить.
Рис.7 Пустая карточка контрагента
При этом у пользователя есть 2 варианта заполнения карточки Контрагента:
Заполнение автоматом работает только при подключении «1С Контрагент». При этом:
-
Данные заполнятся по ИНН или наименованию контрагента автоматически, без ошибок;
Рис.8 Данные заполнятся по ИНН или наименованию контрагента
Рис.9 Досье по контрагенту
Рис.10 Вкладки досье
Рис.11 Проверка реквизитов
*Если ИНН выделен красным цветом, Контрагент отсутствует в базе ФНС.
При создании контрагента и заполнении карточки в ручном режиме пользователь должен заполнить все основные поля…
Рис.12 Заполнение основных полей
…указать «Вид контрагента» и в выпавшем списке выбрать одно из значений:
- Юридическое лицо;
- Физическое лицо;
- Обособленное подразделение;
- Государственный орган.
В зависимости от выбранного вида контрагента будет изменяться табличная часть документа и поля обязательные для заполнения.
В карточке контрагента имеется функционал «Справки 1СПАРК Риски», который помогает быть в курсе изменений у ваших контрагентов и клиентов: сервис каждый день дает информацию о банкротстве, ликвидации, планах по реорганизации, изменении юридического адреса и руководителя. Сервис помогает отслеживать изменения, использует различные источники информации, включая ЕГРЮЛ и Единый федеральный реестр сведений о фактах деятельности юридических лиц.
Данная опция работает только в случае подключения 1СПАРК Риски.
Рис.13 1СПАРК Риски
Непосредственно в карточке контрагента мы можем создать банковский счет. Для этого выбираем «Банковские счета»-«Создать».
Рис.14 Создаем банковский счет
В открывшейся карточке заполняем такие обязательные для заполнения поля, как банк, номер счета, валюту. Если платежи проводятся через корреспондентский счет, открытый в другом банке, необходимо указать банк для расчетов. Если расчетный счет используется для расчетов по контрагенту государственного заказа, необходимо указать «Государственный контракт».
Рис.15 Государственный контракт
Также можно настроить вывод необходимой информации в платежных поручениях и требованиях. В данной настройке можно прописать:
- Наименование контрагента, которое будет выводиться в поле «Получатель» платежного поручения или в поле «Плательщик» в платежном требовании;
- Обозначить, где будет указываться КПП контрагента (только в платежных поручениях в бюджет или во всех платежных поручениях);
- Написать текст, который будет автоматически выводиться в назначении платежа при создании нового платежного поручения.
Рис.16 Настраиваем данные для ПП
В закладке «Банковские счета» контрагента можно создать множество расчетных счетов, при этом можно указать один из нескольких р/сч «Использовать как основной». При формировании документа списание с расчетного счета в платежном поручении «Основной расчетный счет» будет заполняться по умолчанию.
Рис.17 Закладка «Банковские счета»
В карточке контрагента можно сразу создать документ «Договоры». Для этого выбираем «Договоры»-«Создать».
Рис.18 Создание документа «Договоры»
В открывшейся карточке заполняем вид договора:
- С поставщиком;
- С покупателем;
- С комитентом(принципалом) на продажу;
- С комитентом(принципалом) на закупку;
- С комиссионером (агентом) на закупку;
- С факторинговой компанией;
- пр.
Заполняем поля «Номер договора» и «Дата». При этом наименование программа заполняет автоматически, ориентируясь на информацию из этих полей. Прописываем организацию, с которой данный контрагент заключает договор.
Рис.19 Заполняем поля «Номер договора» и «Дата»
К договору пользователь может присоединить файлы в любом формате.
Рис.20 Присоединяем файлы
Присоединенные файлы можно просматривать, редактировать (каждая версия отредактированного файла храниться в 1С 8.3, где при необходимости их можно просмотреть, когда, в какое время, а также какой пользователь редактировал прикрепленный файл), распечатывать документ.
Важно помнить, что, после того как пользователь отредактировал прикрепленный файл, файл необходимо освободить от редактирования через «Еще»-«Завершить редактирование».
Рис.21 Завершить редактирование
В закладке «Договоры» контрагента можно создать множество элементов договоров, при этом можно указать один из нескольких «Использовать как основной». При формировании документов в программе договор будет заполняться по умолчанию.
Рис.22 «Использовать как основной»
В карточке контрагента существует возможность сохранять историю изменения полей «Полное наименование» и «КПП». Если у контрагента изменился «КПП» или «Полное наименование» необходимо в «Истории» внести дату и новое значение. После внесения изменений в программу данные во всех документах до указанной даты в истории будут брать значение начального реквизита, а в документах, начиная с даты нового значения, будет указываться новое значение реквизита.
Рис.23 История изменения полей «Полное наименование» и «КПП»
Рис.24 Изменение полей «Полное наименование» и «КПП»
В карточке «Контрагент» есть возможность просмотреть все документы, в которых указан текущий контрагент, его расчетные счета, договора. Для этого выбираем «Документы». В открывшемся списке отобразятся все документы контрагентов, которые при необходимости можно отсортировать по договору или организации. У пользователя есть возможность просмотреть проводки по интересующему документу, выбрав интересующий документ и нажав значок «Показать проводки и другие движения документа» (Дт/Кт).
Рис.25 Проводки и другие движения документа
В заключение рассмотрим функционал, предусмотренный для удобства рассылки писем контрагентам.
В 1С 8.3 есть возможность настроить и распечатать конверт, с заполненными автоматом адресными строками и индексом.
Рис.26 Конверт, с заполненными автоматом адресными строками и индексом
Пользователю предлагается выбрать вариант заполнения адреса контрагента-получателя:
- Почтовый;
- Юридический;
- Фактический.
Адрес заполнится автоматически из карточки контрагента.
Также можно выбрать один из трех вариантов формата конверта и вывести на печать логотип организации (загрузить логотип организации можно в реквизитах организации в, разделе «Логотип и печать»).
Рис.27 Распечатанный конверт
При работе с информационной базой могут возникать случаи, когда необходимо, чтобы все пользователи завершили работу в программе. В современных конфигурациях возможность заблокировать пользователей имеется, в том числе для того пользователя, который является инициатором этой блокировки. Для чего это может понадобиться? К примеру, для проведения не динамического обновления или резервного копирования.
Для того чтобы заблокировать пользователей в 1с необходимо перейти в раздел “Администрирование” и далее выбираем пункт “Обслуживание”. По гиперссылке “Активные пользователи” можно предварительно посмотреть сколько пользователей работает с информационной базой в данный момент.
В списке мы видим двух пользователей. Тот пользователей под которым мы сейчас находимся в информационной базе выделен жирным шрифтом.
Далее вернёмся в предыдущее окно и перейдем по ссылке “Блокировка работы пользователей”. Появится соответствующее окно, в котором вверху по кнопке также можно посмотреть на работу. Далее в текстовом поле следует написать необходимый текст, который увидят пользователи перед блокировкой. Далее указываем время начала и конца блокировки. При необходимости можно установить код блокировки в нижнем поле, при помощи которого в дальнейшем можно будет войти в программу, даже во время блокировки. После этого останется нажать на кнопку “Установить блокировку” и подтвердить данное действие нажав “ОК”.
После того как наступит время блокировки программа сама завершит все активные сеансы. До начала времени блокировки ее можно остановить нажав на кнопку “Остановить”.
После того как время блокировки кончится, то пользователи беспрепятственно смогут войти в информационную базу и продолжить свою работу.
Читайте также: