Конфигурация - Бухгалтерия для Беларуси, редакция 2.1 Локализация для Республики Беларусь (2.1.41.3)
Есть задача - ограничить доступ пользователей в 1С к определённым организациям. То есть чтобы определённые пользователи не видели определённые организации и документы этих организация (реализация, поступление и все остальные).
База на MSQL Server.
Само ограничение не работает просто если включить "Ограничить доступ на уровне записей". Сначала нужно включить Константу "Использовать группы пользователей", добавить создать нового пользователя в отдельной группе, присвоить ему права.
Затем включить "Ограничить доступ на уровне записей" и настроить ограничения через "Группы доступа".
Проблема в том, что, если ограничить для пользователя какую-либо организацию - он всё равно будет видеть её в списках. При этом документы этой организации для пользователя видны не будут.
Подскажите пожалуйста, как сделать так, чтобы сама организация тоже не была видна.
У меня есть регистр накопления и документ задачи. В регистре есть реквизит "автор" ссылка на "автор" в документе задача. Сделал движение указав Движение.Автор = Автор;
Когда добавляю автора в документ, провожу его, то а регистре накопления пустое поле, что делать?
Effector saver - это специализированная программа для автоматического резервного копирования 1С:Предприятия.Программа позволяет создавать резервные копии баз данных 1С:Предприятия, баз Microsoft SQL или PostgreSQL серверов, пользовательских папок и файлов.Сохранять же резервные копии можно на внешние, сетевые и локальные диски, FTP сервер.Effector saver вмещает большое количество расширенных функций, которые значительно упрощают резервное копирование: планирование и автоматический запуск задач, удобное заполнение настроек и тестирование баз 1С, автоотключение пользователей 1С:Предприятия 8.
Наша цель - создание ежедневных архивов. На компьютере где производится настройка, должна быть установлена программа 1С:Предприятие и подключена необходимая база данных.Скачаем программу с официального сайта https://efsaver.ru/download.htmlЗапускаем файл инсталляции Мастера установки.
На последнем этапе Мастера установки, соглашаемся с запуском программы и нажимаем "Завершить".
Настроим параметры автозапуска "Агента". Для этого в Панели инструментов выбераем "Сервис" & "Параметры программы" & "Параметры запуска".
Выбираем "Запускать агент как приложение" (выбор зависит от установки программы на рабочую станцию или на сервер).
Нажимаем кнопку "Запустить агента" - "Сохранить".
Создаем задачу резервного копирования
Выбираем "Задачи" - "Добавить задачу".
Выбираем чем архивироватьПоле "Наименование" оставим по умолчанию, оно автоматически изменится на имя выбранной базы 1С.
Из выпадающего списка "Вид задачи" выбираем "Архивирование средствами 1С:Предприятие 8".
Указываем базу для архивацииВ закладке "Подключение" нажимаем "Выбрать и заполнить". В открывшемся окне "Выбор базы 1С:Предприятия" указываем нужную нам базу и нажимаем "Выбрать".
Поля "Исполняемый файл", "Вариант базы" и "Каталог базы" автоматически заполнятся значениями в соответствии с выбранной базой или же их можно заполнить вручную.
Заполняем имя и пароль пользователя выбранной базы, под которым будет запускаться резервное копирование средствами конфигуратора 1С:Предприятия.У этого пользователя в базе должны быть соответствующие права. Обратите внимание, имя задачи автоматически изменилось на имя выбранной базы.
Если для защиты 1С используется USB ключ, то не нужно устанавливать флаг "Использовать программную лицензию 1С".
Указываем место размещения архивированной базыПереходим на вкладку "Настройка архивов". Указываем каталог для хранения архивов: нажимаем на кнопку с тремя точками в конце поля "Каталог архивов" и выбераем в диалоговом окне каталог, или, если потребуется, создайте новый каталог с помощью кнопки "Создать папку".
В параметре "Количество одновременно хранимых архивов" установим 10. Effector saver будет удалять более старые резервные копии данной задачи, как только их количество превысит 10 штук.
Выбираем когда производить архивированиеЧтобы установить время выполнения задачи, переходим на вкладку "Расписание".
В нашем примере резервное копирование производится на рабочей станции, поэтому выбираем в поле "Назначить задание", пункт "Ежедневно после загрузки системы".
Если необходимо чтобы между стартом программы и архивированием прошла небольшая пауза, установите "Время задержки" в формате "чч:мм".
В поле "Время начала" установите произвольное время в формате "чч:мм" в тот период, когда последний пользователь прекращает работу с базой и до момента начала работы первого пользователя. Например ночь, 01:00.
Активация и сохранение настройки задачиУстанавливаем флаг "Выполнять задачу" в верхней части окна настройки.
Жмём кнопку "Сохранить".
{}{}
Проверка работы задачиПосле выбора и настройки всех параметров резервного копирования, приступаем непосредственно к проведению самого копирования.
Удостоверьтесь, что пользователи вышли из базы 1С:Предприятия.
В главном окне "Менеджера" кликнув мышкой делаем активной строку со своей задачей.
В меню "Задачи" нажимаем "Выполнить сейчас" и ждём, пока закончится процесс. Ранее мы запустили "Агент", поэтому задача будет выполнена немедленно.{}{}
{}{}
Всё, готово. Резервная копия успешно создана.
Просмотр результатов работы задачиПосле завершения процесса резервного копирования во вкладке "Журнал" мы увидим дату и результат выполнения задачи по созданию бэкапа.
Для подробного просмотра результата выполнения задачи, выберите в меню "Журнал" - "Открыть запись", или сделайте двойной клик мышкой по записи выполнения задачи.
Во вкладке "Файлы" можно просмотреть список файлов бэкапа, которые были созданы в результате выполнения задачи.
Для просмотра файла бэкапа, выбираем в меню "Файлы" - "Открыть файл", или правый клик мыши по записи выполнения задачи - "Открыть файл".
{}{}{}{}{}{}
Таким вот образом, за считанные минуты, можно создать автоматическую задачу резервного копирования 1С:Предприятия, и тем самым обезопасить себя от потери важных данных. С резервными копиями, сбой жесткого диска или непреднамеренное удаление пройдет менее болезненно.
В рамках выполнения проекта столкнулся с интересной задачей ускорения загрузки данных из других информационных баз. Задача загрузки данных предполагала выполнение к внешней базе несвязанных между собой запросов, результаты которых помещаются в одну таблицу значений. Когда на оптимизацию запроса рука уже не поднималась, приступил к ускорению загрузки с помощью распараллеливания процессов. Отмечу, что элементы кода в данном посте приведены для клиент-серверного варианта и укрупнено для общего понимания подхода.
Что у нас в 1с Предприятии 8.2 имеется для распараллеливания & это фоновые задачи. Метод, который будет вызываться в фоновой задаче, должен быть прописан в серверном общем модуле и быть экспортным. Естественно нам понадобиться в фоновую задачу передавать и забирать значения.
В моем случае передача значений в фоновую задачу происходила через параметры. Метод ЗагрузитьИзВИБ имеет два параметра это ВходнойПараметр и АдресВХранилище. ВходнойПараметр это структура, в которую сгружаются все данные, необходимые для проведения загрузки. АдресВХранилище это адрес во временном хранилище, по которому будет передан результат загрузки. Сам код метода фонового задания выглядит так:
Зачем нам в фоновую задачу передавать адрес во временном хранилище. Наша фоновая задача должна куда-то положить результат, причем так чтобы мы знали где его потом взять.
Для того чтобы запустить фоновые задачи выполняется следующий код:
Перед запуском фоновой задачи через ФоновыеЗадания.Выполнить() мы формируем массив параметров. Значения из массива параметров переходят в метод фонового задания в качестве параметров. В МассивЗапущенныхЗаданий хранятся все фоновые задачи, которые мы запустили. Теперь надо подождать их ожидания.
После того как все задачи были завершены, можем приступить к получению из них данных. Для этого мы проходим по всем адресам в хранилище, которые хранятся в массиве МассивАдресовВХранилище. После получения результата фонового задания перегоняем его в общую таблицу.
Вопрос определения оптимального количества потоков выходит за рамки данного поста. А после получения некоторых результатов на рабочих данных пока что выходит и за рамки моего сознания . Но если у вас есть идеи как посчитать нужное количество потоков, пишите в комментариях, с радостью почитаю.
Часто возникает необходимость в частичном ограничении доступа к данным. Например, когда пользователь должен видеть документы только своей организации. В таких случаях в 1С используется механизм ограничения доступа на уровне записей (так называемый, RLS – Record Level Securiy).
Для примера предположим, что перед нами стоит следующая задача. На предприятии ведется многофирменный учет и каждый контрагент и пользователь базы данных относится к определенной организации. Необходимо обеспечить доступ к справочнику “Контрагенты” таким образом, чтобы каждый пользователь мог просматривать, редактировать и добавлять контрагентов только своей организации.
Для решения задачи будем использовать платформу “1С:Предприятие 8.2″. Создадим новую конфигурацию в свойствах которой в качестве основного режима запуска будет выбран вариант “Управляемое приложение”.
Далее создадим справочник “Организации” и ещё два справочника – “Контрагенты” и “Пользователи” с реквизитом “Организация”. Кроме справочников нам понадобятся два параметра сеанса – “Организация” и “Пользователь” (соответствующих типов). Значения этих параметров устанавливаются при запуске сеанса работы с конфигурацией и хранятся до его завершения. Именно значения этих параметров мы и будем использовать при добавлении условий ограничения доступа на уровне записей.
Установка параметров сеанса выполняется в специальном модуле – “Модуль сеанса”
В этом модуле опишем предопределенную процедуру “УстановкаПараметровСеанса” в которой вызовем функцию заранее подготовленного общего модуля “ПолныеПрава”. Это необходимо в силу особенностей работы базы данных в режиме управляемого приложения, когда часть программного кода может выполняться только на стороне сервера (подробно на объяснении этих принципов в данной статье я останавливаться не буду).
В свойствах модуля “ПолныеПрава” необходимо отметить флажки “Сервер”, “Вызов сервера” и “Привилегированный” (последнее означает, что процедуры и функций данного модуля будут выполнятся без контроля прав доступа). Текст модуля будет выглядеть так:
В модуле управляемого приложения будем проверять наличие пользователя конфигурации в справочнике “Пользователи” (для простоты будем искать его по наименованию) и завершать работу системы если он не найден. Это необходимо для того, чтобы обеспечить заполнение параметров сеанса.
Теперь можем перейти непосредственно к описанию ограничений доступа. Для этого создадим роль “Пользователь” и перейдем на закладку “Шаблоны ограничений”, где добавим новый шаблон “КонтрагентыЧтениеИзменение” со следующим текстом шаблона: ГДЕ Организация =Организация #Параметр(1)
Текст шаблона ограничений является расширением языка запросов. В отличии от обычного запроса, текст ограничения должен в обязательном порядке содержать условие “ГДЕ”. В качестве значений параметров запроса (в нашем случае это “&Организация”) используются значения одноименных параметров сеанса. Конструкция вида #Параметр(1) означает, что на это место система подставит текст, переданный в качестве первого параметра в месте использования шаблона. С помощь приведенного шаблона будет выполняться проверка каждой записи таблицы (в нашем случае это будет справочник “Контрагены”). Для записей, значение реквизита “Организация” которых совпадает с заданным в соответствующем параметре сеанса, условие описанное в шаблоне будет выполняться. Таким образом эти записи будут доступны для чтения, изменения или добавления (в зависимости от того для какого из этих прав применяется шаблон). Продемонстрирую вышеизложенное на нашем примере.
Перейдем на закладку “Права” роли “Пользователь” и откроем список прав справочника “Контрагенты”. Будем использовать шаблон ограничений “КонтрагентыЧтениеИзменеие” для прав “Чтение”, “Изменение” и “Доблавление”.
Для права “Чтение” будем использовать шаблон с параметром “ИЛИ ЭтоГруппа”. При этом пользователям данной роли будет разрешено чтение не только элементов справочника “Контрагенты” своей организации, но и всех групп этого справочника.
#КонтрагентыЧтениеИзменение("ИЛИ ЭтоГруппа")
Поскольку при добавлении новых элементов справочника системой выполняется неявное чтение предопределенных реквизитов (это нужно, например, для нумерации), то необходимо обеспечить беспрепятственное чтение этих полей. Для этого добавим дополнительную строку с пустым текстом ограничения в таблицу ограничения доступа к данным и перечислим поля для которых действует данное правило – Ссылка, Версия данных, Родитель, Код.
Таким образом, поставленная задача ограничения доступа на уровне записей решена. Пользователи с действующими ограничениями получат доступ на просмотр и редактирование данных только своей организации.
Нужно сделать РМК (рабочее место кассира) с работающим сканером и другим нужным функционалом.
Порядок действий:
1. Ставим 1с, конфигурацию.
Для начала сделаем пару пользователей, первый он всегда «Админ«, второго назовем «Кассир» и дадим ему полные права (для теста, по хорошему надо настраивать персональные права) .
В конфигураторе (от админа) подправим пользователя «Кассир». Ставим «тип запуска» & «обычное приложение»
Идем дальше, что бы в «Администрировании» появился пункт «Подключаемое оборудование» (иначе как мы его будем настраивать? ) нужно поставить галку на
«Использовать подключаемое оборудование» и «Использовать группы пользователей»
Администрирование & Настройка параметров учета.
Возможности пользователя в РМК настраиваем в Администрировании & Дополнительные права пользователя
2. Настраиваем сканер на эмуляцию com порта, это позволит нам работать в РМК со сканером без лишних заморочек.
Для этого мне потребовалось скачать драйвер Symbol COM Port Emulation Driver v 1.8.5
т.к. проверять уже не охота, а перед установкой драйвера была применена вот эта инструкция:
Настройка_сканеров_Symbol_в_1С прикладываю и ее, в ней показаны штрих кода для программирования сканера на эмуляцию и настройка в 1с сканера.
Ну и в принципе на этом настройка сканера завершена. Теперь в РМК будет перехватывать все сканированные штрихкода.
Все тоже самое только на Windows 7
Сканер установился автоматом. Заставить эмулировать его COM порт я не стал. Сканер работает как клавиатура. Для 1с пришлось настроить сканер что бы он сначала слал F7 (ввод по штриху) + сам штрих + enter.
Прежде чем купить сканер штрих кода обратите особое внимание на то, каким образом будет подключаться сканер к компьютеру.
Несмотря на обилие видов сканеров штрих кода на рынке все они, в конечном счете, подключаются через один из четырех типов коннекторов или интерфейсных портов:
- PS/2 Разрыв клавиатуры – из названия следует что сканер штрих кода подключается в разрыв между компьютером и клавиатурой.
- USB Эмуляция ( фактически подключение через порт usb а настройки как в PS/2)
- RS-232 Последовательный (Com) порт – подключается в Com порт компьютера, однако требует дополнительно блок питания.
- USB Эмуляция ( фактически подключение через порт usb а настройки как в RS-232)
Настройка сканера штрих-кода в программах 1С в разрыв клавиатуры
Настроить сканер штрих-кода 1С, подключаемый в разрыв клавиатуры, совсем не сложная задача. Первое что надо сделать - настроить префикс сканера штрих-кода. По умолчанию сканер штрих-кода, подключаемый в разрыв клавиатуры при сканировании штрих-кода товара он возвращает цифры штрих-кода и символ возврата – это аналогично тому, как если бы вы нажимали после сканирования клавишу ENTER на клавиатуре компьютера. Однако для сканирования штрих – кода товара в программе 1С нажать клавишу F7 - Возврат каретки необходимо. Чтобы постоянно не нажимать F7, нам и поможет добавление специального символа – префикса. Префиксом называется в данном случае некий набор символов, которые сканер отсылает перед отправкой штрих-кода. В качестве префикса в основном используют значение “150” - это ASCII-код клавиши F7. Этот способ подойдет и для USB-сканера в том случае, когда нет возможности установить драйвер эмуляции COM-порта.
Настройка сканера штрих-кода в программах 1С через порт USB.
Программа 1C не видит сканеры штрих-кода подключенные через USB-разъем, зато их прекрасно “видит” операционная система Windows. При первом включении сканера операционная система предложит установить его драйвер, но мы ей этого не позволим и откажемся от автоматической установки, а поставим драйвер вручную. Как правило, драйвер эмуляции COM-порта находится на диске из комплекта поставки сканера штрих-кода, там же есть и специализированные утилиты для настройки свойств самого сканера штрих-кода, такие как: громкость бипера, префикс, суфикс и т.п. Или же имеется специальное руководство пользователя с конфигурационными штрих-кодами, сканируя которые можно определенным образом настроить сканер. В процессе установки этого драйвера, операционная система создает виртуальный COM-порт. Далее нужно произвести конфигурирование порта. После того как настроен сам сканер – переходим к настройке в 1С. Для этого в меню Сервис?Настройки торгового оборудования?Находим закладку Сканеры и переходим в нее и устанавливаем новый сканер штрих-кодов. В качестве обработки обычно используют входящую в поставку стандартную обработку обслуживания «1CScanOPOSScan_v2.epf». Далее заходим в “Параметры” настраиваем COM-порт и параметр Скорость сканера. Сканер штрих-кода настроен!
Настройка сканера штрих кода в программах 1С через COM-порт.
Настройка сканера штрих-кода 1С производим как в предыдущем примере. После того как настроен сам сканер – переходим к настройке в 1С. Для этого в меню Сервис?Настройки торгового оборудования?Находим закладку Сканеры и переходим в нее и устанавливаем новый сканер штрих-кодов. В качестве обработки обычно используют входящую в поставку стандартную обработку обслуживания «1CScanOPOSScan_v2.epf». Далее заходим в “Параметры” настраиваем COM-порт и параметр Скорость сканера. Сканер штрих-кода настроен!
Передать информацию о контрагентах из УП в БП. Данные передаются в одностороннем порядке, идентификация производится по уникальному идентификатору.Настройка правил конвертации выполняется с помощью специальной конфигурации Конвертация данных, редакция 3.0 (далее – КД 3.0).
Выполняемые действия
Этап 1. Подготовка к настройке правил.
Для настройки правил конвертации в конфигурации КД 3.0 должны содержаться сведения о структуре информационных баз, между которыми производится синхронизация данных, а также о структуре формата Enterprise Data.
Шаг 1. Выгрузка структуры информационных баз УП и БП.
Для выгрузки информации о структуре информационной базы используется обработкаMD83Exp.epf, входящая в комплект поставки конфигурации КД 3.0.
Для каждой информационной базы (УП и БП) необходимо выполнить следующие действия:
Открыть информационную базу в режиме “Предприятие”.
Указать имя файла, в который следует сохранить структуру информационной базы.
Проверить настройки в форме обработки (все флаги должны быть сняты).
Нажать кнопку Выгрузить.
Шаг 2. Экспорт xml-схемы формата обмена
Для выгрузки схемы формата обмена используются стандартные возможности платформы.
Необходимо выполнить следующие действия:
Открыть одну из информационных баз (либо УП либо БП) в режиме “Конфигуратор”.
В дереве метаданных найти XDTO пакеты с именами ExchangeMessage иEnterpriseData_1_0_beta.
Установить курсор на пакет XDTO, нажать правую кнопку мыши и в контекстном меню выбрать пункт Экспорт XML-схемы. Указать путь и имя файла для экспорта. Выполнить это действие для каждого из двух пакетов, сохранив XML-схемы в два разных файла.
Шаг 3. Загрузка структуры информационных баз в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”. Перечисленные ниже действия следует выполнить для каждой из конфигураций, для которых настраиваются правила конвертации (УП и БП).
Перейти в раздел Конфигурации, и выбрать команду Загрузка структуры конфигурации.
Указать путь к файлу со структурой информационной базы (см. Этап 1, Шаг 1).
Указать способ загрузки & в новую версию конфигурации.
Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Шаг 4. Загрузка структуры формата обмена в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”.
Перейти в раздел Формат данных, и выбрать команду Загрузка структуры формата.
Указать файлы со структурой формата (см. Этап 1, Шаг 2). Необходимо указать сразу оба файла, используя множественный выбор.
Проверить имя основного пакета XDTO – должен совпадать с пространством имен пакета XDTO EnterpriseData_1_0_beta (см. в конфигураторе УП или БП).
Указать способ загрузки & в новую версию формата.
Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Этап 2. Создание конвертаций
Для решения описанной задачи необходимо создать две конвертации:
УП (для выгрузки данных из УП в формат обмена)
БП (для загрузки данных из формата обмена в БП)
Создание конвертаций производится в разделе Конвертации, команда Конвертации. Для новой конвертации необходимо указать наименование, конфигурацию и формат обмена. Например, конвертация для конфигурации УП:
Наименование & “УП2.0.7”.
Конфигурация & “УправлениеПредприятием”.
Поддерживаемые версии формата & одна строка, в которой выбрана единственная позиция справочника Версии формата.
Далее для каждой из двух конвертаций требуется настроить правила:
правила обработки данных,
правила конвертации объектов,
правила конвертации предопределенных данных.
Для перехода к комплекту правил конкретной конвертации необходимо перейти в разделКонвертации, выбрать команду Настройка правил конвертации и выбрать в списке конкретную конвертацию, для которой будут настраиваться правила. В результате будет открыта форма Настройка правил обмена, в которой собраны все правила для конкретной конвертации.
Этап 3. Создание правил конвертации объектов
Шаг 1. Правило конвертации для выгрузки контрагентов из УП
Открыть настройку правил обмена для конвертации УП.
Перейти на закладку Правила конвертации объектов.
Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”
Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств
Вручную добавить правило конвертации свойства для ОКПО (свойство конфигурации & “КодПоОКПО”, свойство формата & “ОКПО”).
Позже потребуется вернуться к правилам конвертации свойств, чтобы заполнить правило конвертации свойства для свойства “ЮридическоеФизическоеЛицо”, которое является перечислением.
Нажать кнопку Записать и закрыть.
Шаг 2. Правило конвертации для загрузки контрагентов в БП
Открыть настройку правил обмена для конвертации БП.
Перейти на закладку Правила конвертации объектов.
Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”.
Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств.
Вручную добавить правило конвертации свойства для ОКПО (свойство конфигурации & “КодПоОКПО”, свойство формата & “ОКПО”).
Позже потребуется вернуться к правилам конвертации свойств, чтобы заполнить правило конвертации свойства для свойства “ЮридическоеФизическоеЛицо”, которое является перечислением.
Перейти на закладку ПередЗаписьюПолученныхДанных и написать алгоритм для заполнения страны регистрации нового контрагента. Алгоритм содержит следующий текст: «ПолученныеДанные.СтранаРегистрации = Справочники.СтраныМира.Россия;».
Нажать кнопку Записать и закрыть.
Этап 4. Создание правил конвертации предопределенных данных
Порядок действий одинаков для обоих конвертаций.
Открыть настройку правил обмена для конвертации (УП или БП)
Перейти на закладку Правила конвертации предопределенных данных
Создать новое правило конвертации и заполнить его свойства:
Объект конфигурации: “ПеречислениеСсылка.ЮридическоеФизическоеЛицо”
Объект формата: “ЮридическоеФизическоеЛицо”
Область применения: для отправки и получения
В табличном поле заполнить соответствия значений перечисления конфигурации и формата: “ФизическоеЛицо” & “ФизическоеЛицо” и “ЮридическоеЛицо” & “ЮридическоеЛицо”
Нажать кнопку Записать и закрыть
Указать новое правило в правиле конвертации свойства “ЮридическоеФизическоеЛицо” справочника Контрагенты
Перейти на закладку Правила конвертации объектов
Найти правило конвертации справочника Контрагенты, открыть форму правила
Перейти на закладку Правила конвертации свойств и найти правило для свойства “ЮридическоеФизическоеЛицо”
Открыть форму правила конвертации свойства и указать в нем правило конвертации объекта & “Перечисление_ЮридическоеФизическоеЛицо”.
Сохранить внесенные изменения
Этап 5. Создание правил обработки данных
Порядок действий одинаков для обоих конвертаций.
Открыть настройку правил обмена для конвертации (УП или БП)
Перейти на закладку Правила конвертации объектов
Найти правило конвертации справочника Контрагенты, открыть форму правила
Нажать кнопку Создать на основании & Правило обработки данных
В созданном правиле обработки данных проверить заполнившиеся автоматически свойства:
Идентификатор правила & указать такой же как для правила обработки данных (“Справочник_Контрагенты_Отправка” либо “Справочник_Контрагенты_Получение”)
Область применения & такая же как для правила обработки данных
Объект выборки:
для конвертации УП & “СправочникСсылка.Контрагенты”
для конвертации БП & “Справочник.Контрагенты”
Правило конвертации объекта & ссылка на правило конвертации объекта.
Нажать кнопку Записать и закрыть.
Этап 6. Получение модулей менеджера обмена данными
Модуль менеджера обмена данными необходим для обмена данными между конфигурациями в соответствии с настроенными в КД 3.0 правилами.
Порядок действий одинаков для обеих конвертаций:
Открыть информационную базу УП или БП в режиме “Конфигуратор”. Найти в дереве метаданных общий модуль МенеджерОбменаЧерезУниверсальныйФормат и открыть его для редактирования. Модуль должен быть пустым.
Открыть информационную базу КД 3.0 в режиме “Предприятие”.
Перейти в раздел Конвертации и выбрать команду Выгрузка модуля.
В открывшейся форме указать соответствующую конвертацию и нажать кнопку Выгрузить. Модуль будет скопирован в буфер обмена.
Перейти в конфигуратор информационной базы УП или БП и вставить содержимое буфера обмена в общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
Сохранить конфигурацию.
Выгрузка модуля в буфер обмена также может производиться из формы настройки правил обмена по кнопке Сохранить модуль менеджера обмена.
Для того чтобы по настроенным правилам выполнялся обмен данными, необходимо в обеих информационных базах в режиме “Предприятие” настроить синхронизацию данных через универсальный формат.
Периодически во встроенном языке возникает необходимость изменения текста запроса в зависимости от разных алгоритмических условий. Раньше подобная задача решалась путём непосредственного формирования нужного текста запроса в виде строки. А это не всегда удобно и зачастую очень громоздко.
Теперь во встроенном языке мы реализовали объектную модель схемы запроса. Вы можете создать пустую схему запроса конструктором и загрузить в неё имеющийся текст запроса. После этого отдельные элементы текста запроса будут доступны вам как свойства объектной модели.
На рисунке ниже стрелки показывают, в каких объектах встроенного языка будут доступны те или иные элементы простого запроса, загруженного в схему:
Редактирование текста запроса с помощью объектной модели позволяет вам проще и понятнее модифицировать имеющиеся запросы. Или даже создавать их во встроенном языке «с нуля». А затем просто получать готовый текст запроса из схемы методом ПолучитьТекстЗапроса().
В некоторых типовых конфигурациях фирмы 1С существует возможность ручной корректировки движений документа по регистрам. В конфигурации 1С: Бухгалтерия 8 для этого, при наличии соответствующих прав, нужно открыть движения документа и установить флаг “Ручная корректировка”. Однако, иногда возникает необходимость выполнить корректировку движений большого количества документов. В этом случае нам понадобится обработка, которая изменит движения документов без перепроведения.
Рассмотрим как изменить движения документа на примере конфигурации 1С: Бухгалтерия 8. Менять будем движения по регистру бухгалтерии “Хозрасчетный”. Пусть перед нами стоит задача заполнить суммы налогового учета по данным бухгалтерского. Предположим, что у нас уже есть обработка, которая выбирает необходимые нам документы и последовательно обрабатывает их с помощью описанной нами процедуры “ИзменитьДвиженияДокумента”. Посмотрим как должна выглядеть эта процедура.
Хотелось бы отметить, что без проверки ведения налогового учета на счёте, при попытке записать набор, содержащий проводку с ненулевой суммой по счёту на котором не ведется налоговый учет, возникнет ошибка следующего содержания:
Запись не верна! Поле “Сумма (налоговый учет)” должно быть пустым! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)
Режим обмена данными устанавливается следующими строками:
Это необходимо для того, чтобы не выполнялся программный код, находящийся в обработчиках событий “ПередЗаписью” модуля набора записей регистра бухгалтерии “Хозрасчетный” и модуля корректируемого документа. В каждом из них (для типовых конфигураций) есть проверка следующего вида:
Признак ручной корректировки документа (ДокументОбъект.РучнаяКорректировка = Истина) необходимо устанавливать для того, чтобы изменения сохранились при повторном проведении документа. При проведении такого документа в конфигурации 1С:Бухаглерия 8 выдается следующее сообщение:
Движения документа отредактированы вручную и не могут быть автоматически актуализированы.
Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство:
в обычном приложении параметр для ОтборСтрок - Отбор...
в управляемом приложении - ФиксированнаяСтруктура
ОтборСтрок, которое входит в расширение табличного поля, связанного с табличной частью.
Управляемые формы
пример:
или такой динамический отбор
Обычные формы
Использовать его очень просто:
или 2-й вариант:
А теперь конкретные примеры:
Подчиненные табличные части в 8.х
С помощью свойства ОтборСтрок можно реализовать подчиненные (связанные) табличные части. При смене текущей строки в первой табличной части вторая табличная часть показывает только связанную информаци. Например, таким образом можно реализовать работу с комплектами: 1-я таб. часть - комплекты, вторая - состав комплекта.
Во второй табличной части должна быть колонка - идентификационный признак, связывающий ее с первой табличной частью. Таких колонок может быть несколько (составной ключ);
В событии ПриАктивизацииСтроки для первого табличного поля пишем:
При добавлении новой строки во вторую табличную часть, нужно следить за тем, чтобы идентификационная колонка была установлена.
Обращаю ваше внимание, что при таком отборе не используются индексы и для больших табличных частей возможно замедление работы.
Еще раз напомню, что ОтборСтрок входит в расширение табличного поля табличной части, т.е. табличное поле должно быть связано с табличной частью. Если же оно связано с динамическим списком типа СправочникСписок, то здесь нужно использовать свойство Отбор для объекта типа СправочникСписок.
Если понадобилось перебрать строки, вошедшие в отбор, то это можно сделать, только заново перебрав все строки и проверив условие отбора для каждой строки. Перебрать строки табличного поля, которые сейчас на экране - невозможно.
В общем виде задача отказа от модальности заключается в том, чтобы заменить модальные методы их асинхронными аналогами.
Старая процедура, открывавшая модальное окно и обрабатывавшая полученные им данные, могла выглядеть так:
В новом варианте для формы ФормаВводТекста (которая будет открываться в блокирующем окне) нужно установить свойство РежимОткрытияОкна в значение БлокироватьВесьИнтерфейс. Это обеспечит модальность для пользователя:
А программный код вместо одной процедуры, как раньше, будет содержать уже две процедуры:
В первой процедуре открываем форму. При этом в последнем параметре мы передаём ей местонахождение второй процедуры, которая будет выполнена после того, как пользователь закроет окно. В данном случае эта процедура расположена в этом же модуле, но вообще может находиться и в другом.
Когда пользователь введёт данные и закроет форму, они будут обработаны в указанной нами второй процедуре, в которую мы просто перенесли "старый" код, обрабатывающий полученные данные.
Кроме форм, которые разработчик может открыть в модальном режиме (по своему желанию), существуют методы встроенного языка, которые всегда, независимо от желания разработчика, открывали модальные формы для ввода или выбора данных. Например, метод ВвестиЗначение().
Использовать такие методы в немодальном режиме ещё проще. Для всех таких методов в платформе сделаны методы-дублёры, при вызове которых нужно так же указать местонахождение процедуры, которая будет выполнена после того, как пользователь закроет окно.
Например, ниже показано использование старого метода ВвестиЗначение() и его нового метода-дублёра ПоказатьВводЗначения():
В 8.3.5 можно выполнить автоматическое преобразование Модальных вызовов
Теперь в простых, и в не очень простых, случаях вы можете сделать это автоматически (команда Модальные вызовы - Преобразовать модальный вызов):
Если вы преобразуете модальную функцию, то платформа добавит инициализацию переменной, в которую возвращается значение функции. Потому что в общем случае эта переменная может использоваться далее в той же процедуре:
Другой случай. Например, фрагмент, который вы преобразуете, содержит две ветки исполнения, одна из которых включает в себя модальный код, а другая нет. Платформа преобразует такой фрагмент в две процедуры:
Однако если вы преобразуете код, который находится, например, в модуле управляемого приложения, то полностью автоматическое преобразование вам выполнить не удастся:
Дело в том, что у глобального контекста нет свойства, позволяющего сослаться на него самого (ЭтотОбъект). А значит процедуру, обрабатывающую оповещение, нельзя разместить тут же, в модуле управляемого приложения. Её можно разместить, например, в каком-нибудь общем модуле. Эти действия вам нужно будет выполнить вручную: