Механизм разделения данных 1с. Использование механизма разделения данных вместо RLS

💖 Нравится? Поделись с друзьями ссылкой

[Кнопка 7710967300 БУХ РБ] Connect=Srvr="%servername%";Ref="%base_name%"; AdditionalParameters=/Z "-0,-0,+7710967300";

После /Z указываем общие реквизиты по порядку. Так как в нашей типовой бухгалтерии уже есть два общих системных реквизита, указываем для них значение -0 чтобы они не использовались, а в качестве третьего (который мы создали) передаём ИНН.

1000 и 1 чекбокс

Теперь нужно определить, какая часть данных будет являться общей для всех областей. Всё это настраивается через конфигуратор. В свойствах общего реквизита, который мы только что создали, есть пункт «Состав» открывающий небольшой список из 800 параметров:

Подбор параметров оставляем на ваше благоразумие, усмотрение и окружение. Вот наш вариант (аккуратнее, там 20 000 пикселей).

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

Выгружаем данные из текущих баз

Для выгрузки данных из текущих баз, мы используем универсальный XML-обмен. Нельзя просто так взять и выгрузить базу, нужно настроить правила обмена, иначе при загрузке могут (и обязательно возникнут) ошибки и конфликты, а вторая база просто не пролезет. Напомним, что мы делим области базы для каждой организации и в нашем случае работают такие правила обмена . Если вам вздумается использовать другой разделитель, придётся пораскинуть мозгами и чекбоксами. Главное — не использовать типовую выгрузку — это приведёт к дублированию всех предопределённых записей.

Хозяйке на заметку: справочники и документы лучше выгружать отдельно — так можно избежать лишних ошибок в момент загрузки.

Загружаем данные в разделённую базу

Запускаем 1С с параметром /Z «-0,-0,+%ваш разделитель%», указывая разделитель той организации, данные которой собираемся загрузить. Запускаем универсальный обмен и скармливаем ему полученные при выгрузке файлы: сперва справочники, потом документы. Повторяем эту операцию для каждой базы-области.

Чтобы упростить задачу, мы осуществляем выгрузки массово, предварительно запуская чуть исправленную стандартную обработку через командную строку (/Execute c:\выгрузка.epf). Затем вручную загружаем полученные файлы в разделённую базу.

Как потратить больше времени, чтобы потратить меньше времени

Процесс разделения — штука не быстрая. Напомним, что у нас сейчас больше 500 организаций, но за пару недель мы успели разделить только 70. Однако, мы точно знаем, что уже через полгода поблагодарим прошлых себя за проделанную работу и кучу сэкономленных времени и сил.

Бухгалтеры не замечают перехода организаций из обычной базы в разделённую, для них процесс проходит безболезненно. Попа горит только у админов:)

Побочные эффекты: экономия места 1 к 20, косвенное увеличение скорости работы — неоценимо. В абсолютных цифрах: 50 организаций занимают 2 Гб пространства в SQL, тогда как одна отдельная база занимает от 800 Мб.

Обещанная ложка дёгтя, даже четыре:

  • если кто-то из пользователей запорол данные в одной организации, приходится откатывать назад всю разделённую базу — нельзя просто взять и откатить одну область данных
  • приходится более тщательно тестировать обновления, особенно те, которые добавляют или изменяют справочники
  • если нужно передать базу клиенту (или слить налоговой:), приходится делать обратную процедуру: выгружать организацию из разделённой базы при помощи универсального обмена, затем загружать в пустую обычную базу и из неё сохранять в. dt-файл
  • в разделённой базе нельзя управлять регламентными заданиями (например, не получится автоматически обновить курсы валют)
Первые три ложки не такие горькие — они просто заставляют нас быть более внимательными. А вот что делать с четвёртой мы пока не знаем, но усердно исследуем.

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

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Внутренний язык программирования 1С 8.3 для начинающих программистов: формат в 1С

При программировании в 1С часто приходится выводить (в те же отчеты) значения различных типов (строки, даты, числа...). У каждого из значений есть различные представления.

К примеру, одну и ту же дату "01.01.2005" можно представить в виде строки как:

  1. "01.01.2005"
  2. "1 января 2005"
  3. "01.01.05"

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

Использование функции Формат в 1С

Отключаем группировку разрядов

Пусть нам требуется вывести число 10000.

Если мы напишем:

Форматная строка в общем случае состоит из двух частей, разделенных знаком равно. Слева от равно стоит имя задаваемого параметра (смотрим в справке или на примерах), а справа значение этого параметра.

В приведенном выше примере форматная строка "ЧГ=0" имеет параметр ЧГ и значение 0. Такая комбинация отменяет группировку разрядов числа. И, как вы можете убедиться, теперь выводится 10000.

Выводим лидирующие нули

Также частой задачей является вывод лидирующих нулей перед цифрой. К примеру, пусть требуется вывести число 5 с лидирующим впереди нулём то есть в виде "05":

Сообщить(Формат(5 , "ЧЦ=2; ЧВН=" ) ) ; // выводит 05

Давайте разберём форматную строку "ЧЦ=2; ЧВН=". Она состоит из двух форматных строк, разделенных точкой с запятой. Разберём каждую из них по отдельности.

Строка "ЧЦ=2" задаёт общее число отображаемых десятичных разрядов целой и дробной частей. Таким образом общее число позиций, которое будет занимать число при выводе будет равно 2.

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

Комбинация двух форматных строк и даёт нужный нам результат "05", вместо "5".

Меняем разделитель целой и дробной части

Предположим нам требуется выводить дробные числа с разделителем звёздочка вместо точки. То есть, чтобы 25.46 выводилось как "25*46":

Форматная строка представляет из себя параметр ДФ и значение дддд, что и указывает функции Формат вывести длинное представление дня недели (обратите внимание как много букв "д" она содержит).

Представление месяца даты

Описание месяца по дате выводится так:

Сообщить(Формат("20050101" , "ДФ=ММММ" ) ) ; // выведет Январь

Форматная строка имеет тот же самый параметр ДФ, как и в предыдущем случае. Но вот значение отличается. Теперь оно равно ММММ.

Пройдите тест

Начать тест

1. Формат("19050505", "ДФ=ММММ") вернёт

2. Форматная строка меняющая разделитель дробной и целой части на ^

3. Чтобы вместо 5 функция Формат вернула "00005" подойдёт форматная строка

4. Чтобы вместо 10 000 функция Формат вернула "10000" подойдёт форматная строка

5. Функция Формат возвращает значение типа

1.Преамбула.

Возникла необходимость организовать учет по двум организациям в одной ИБ. Ситуация не уникальная, но так сложилось, что наша сильно не типовая 250 гигобайтная УППшка работала довольно медленно, поэтому вместо RLS решили попробовать разделение данных. Что это такое, описано, например, или . Вкратце, если RLS дополняет условиями запросы SQL, то разделитель данных - это дополнительный столбец в таблицах на уровне СУБД, за счет чего механизм разделения должен работать пошустрее RLS.

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

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

2. Реализация

Платформа 8.2.19.90, без режима совместимости. СУБД - MSSQL Server 2008 R2 Standart.

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

Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь,"ОсновнаяОрганизация");
ПараметрыСеанса.ОрганизацияРазделительЗначение = Организация.ЗначениеРазделителя;

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

При отключенном разделении, когда ПараметрыСеанса.ОрганизацияРазделительИспользование = Ложь, платформа отказывается записывать документы, вываливаясь с ошибками типа "ОшибкаSDBL: ожидается выражение (pos=12)", поэтому давать пользователю записывать документы в таком варианте нельзя. Для надежности, создали подписки на событие "Перед записью" для объектов, входящих в состав общего реквизита:

Если ПараметрыСеанса.ОрганизацияРазделительИспользование = Ложь Тогда
#Если Клиент Тогда
Предупреждение("Нельзя записать, т.к. разделение данных отключено!");
#КонецЕсли
Отказ = Истина;
КонецЕсли;

План действий у нас был такой: готовим конфигурацию-приемник ИБ №1, проставляем значения общего реквизита = 1, загружаем данные из ИБ №2, после загрузки для всех объектов с пустым (равным 0) значением разделителя устанавливаем ОрганизацияРазделитель = 2.

Конфигурацию подготовили, возник вопрос, как установить значение общего реквизита для документов и их движений в закрытых периодах, причем быстро и без риска того, что полетят цифры в балансе? Через объектную модель 1С записывать разделитель отдельно от объекта невозможно, поэтому пришлось нарушить лицензионное соглашение выкручиваться и писать запрос для MS SQL. Поскольку в составе общего реквизита много объектов, а таблиц в скуле по этим объектам еще больше, написали обработку, генерирующую запрос для SQL (для каждого объекта метаданных, входящего в состав разделителя, писали "update " + Имя_БД + ".dbo._" + ИмяТаблицы + " set _" + ПолеОбщийРеквизит + " = 1";)

Значение проставили, перенесли часть данных из ИБ №2, начали тестировать.

Результат разочаровал. Во-первых, проблемы с регистром бухгалтерии. При включенном разделении не видно аналитику:

Связано это с тем, что регистр бухгалтерии на уровне СУБД хранится как несколько таблиц, и не во всех таблицах было проставлено значение общего реквизита (для просмотра структуры использовали обработку ).


Хорошо, проставляем значение разделителя через MS SQL, аналитику видим. Теперь не работают отчеты. Оказывается, проблемы с запросами к виртуальным таблицам регистра бухгалтерии "Обороты" и "ОборотыДтКт":

(Fld27033 - это как раз общий реквизит в таблице регистра бухгалтерии)

Разделитель установлен во всех таблицах, это видно на уровне СУБД, в чем может быть ошибка, не понятно. Разворачиваем типовую пустую УПП, делаем описанные выше изменения в конфигурации, вводим пару документов (в этом варианте платформа сама проставляет значение разделителя во всех таблицах регистра бухгалтерии), но ошибки воспроизводятся. Плохо, но исключаем регистры бухгалтерии из состава общего реквизита, продолжаем тестирование.

Далее, выясняется что перестал работать механизм вытеснения у регистров расчета. Планы видов расчета мы не разделяли, пробуем искать проблему в таблицах регистра расчетов и в перерасчетах. Проверяем, проставляем значение основного реквизита, делаем ТиИ - безрезультатно.

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


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

На этот момент принимаем решение выключить разделение данных и использовать-таки RLS. При установке разделения в "не использовать" натыкаемся на ошибки "Microsoft OLE DB Provider forSQL Server: CREATE UNIQUE INDEX terminated because a duplicate keywas found for index...". Т.е., вернуться в состояние до разделения так запросто не получается. Проблема с индексами таблиц перерасчетов, настроек хранения итогов и других. Дело в том, что в таблицах хранятся идентичные строки, отличающиеся только значением общего реквизита. При удалении общего реквизита появляются неуникальные записи. Придется удалить ненужные записи напрямую в MS SQL, примерно так (для таблицы перерасчетов):

Use base;
ALTER TABLE _CRgRecalc1399
ADD id INT IDENTITY(1,1);
GO
DELETE FROM _CRgRecalc1399
WHERE id < (SELECT MAX(id)
FROM _CRgRecalc1399 AS T1
WHERE _CRgRecalc1399._RecorderTRef = T1._RecorderTRef and
_CRgRecalc1399.[_RecorderRRef] = T1.[_RecorderRRef] and
_CRgRecalc1399.[_CalcKindRRef] = T1.[_CalcKindRRef] and
_CRgRecalc1399.[_Fld1400RRef] = T1.[_Fld1400RRef] and
_CRgRecalc1399.[_Fld1401RRef] = T1.[_Fld1401RRef] and
_CRgRecalc1399.[_Fld1402RRef] = T1.[_Fld1402RRef]
);
GO
ALTER TABLE _CRgRecalc1399
DROP COLUMN id;

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

3. Выводы.

Теплилась надежда, что на 8.3 проблемы решены. Не поленились, проверили на 8.3.4.482 (с отключенным режимом совместимости). Смотрели на практически типовой УПП-шке, с изменениями в конфигурации только по общему реквизиту. На этой тестовой базе разделение включили до ввода информации, т.е. платформа должна была корректно записывать значение разделителя во все таблицы, самостоятельно напрямую в MS SQL ничего не писали.

Результат:

    Проблема с запросами к виртуальным таблицам "Обороты" и "ОборотыДтКт" воспроизводится.

    Проблема с вытеснением воспроизводится.

    Проблема с записью в независимые регистры сведений воспроизводится.

    Проблема с выключением разделения - одним нажатием кнопки от него избавится не получится!

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

Что Вы узнаете из этой статьи?

  • В статье рассматривается предназначение режима разделения итогов
  • Разбирается поведение системы «1С:Предприятие 8» при параллельной работе большого количества пользователей
  • Показываются минусы режима разделения итогов
  • Выдаются рекомендации по корректному использованию разделения итогов регистра

Платформа «1С:Предприятие 8» содержит возможности и механизмы, о работе которых не все имеют полное представление, как и о способах их эффективного использования. Таковым является режим разделения итогов.

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

Покажем эффективность данного режима с помощью примера. Для этого рассмотрим ситуацию до и после включения режима разделения итогов.

До включения режима разделения итогов

Мы имеем в наличии два одинаковых документа с номерами 001 и 002:

Оба документа осуществляют движение по регистру накопления. Контроля остатков нет. Структура регистра накопления:

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

При этом на уровне СУБД возникает следующая картина:

Вот что происходит в системе:

  1. Документы пытаются внести запись в регистр накопления
  2. На уровне СУБД регистр накопления представлен двумя таблицами: таблицей движений и таблицей остатков (таблица итогов).
  3. В таблице движений возможна запись документами своих данных параллельно. Это обеспечивается различными значениями поля «Регистратор», и, соответственно, работа идет с различными строками таблицы.
  4. А вот в таблице остатков нет поля «Регистратор», данные в этой таблице хранятся в разрезе измерений самого регистра.
  5. Тут наблюдается ситуация, при которой двум документам необходимо изменить одну запись, но одну запись одновременно менять нельзя.
  6. Для того чтобы не потерять записываемые данные, какой-либо из документов должен ожидать своей очереди на запись, пока другой документ не запишет свои движения. И, после того как первый из документов внесет свои движения, второй сможет внести уже свои.

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

Для разрешения возникшей проблемы и создан механизм разделения итогов.

Его использование предусмотрено только для регистров накопления и регистров бухгалтерии.

Включение режима разделения итогов

Включение данного режима выполняется достаточно просто:

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

Что происходит после включения режима разделения итогов?

В таблице итогов регистра накопления/бухгалтерии появляется новый столбец «Разделитель». В самой СУБД он назван «Splitter».

При этом таблица движений остается неизменной, разделителем в ней выступает «Регистратор». Изменение мы видим в таблице итогов.

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

Такая реализация режима разделения итогов делает возможным выполнять параллельную запись всем транзакциям.

В нашем примере с двумя документами при включении режима наблюдается следующее:

Оба наших документа выполнили параллельную запись своих данных благодаря новому полю «Разделитель». В результате не возникают ожидания при блокировках и повышена параллельность работы пользователей.

Минусы режима разделения итогов

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

При получении остатков по регистру возникает потребность свертки данных, что приводит к затратам времени, пусть и незначительным.

В нашем случае с двумя документами для получения остатка товара «Стол» по складу «Основной» возникает необходимость сложения двух строк для получения итогового значения «7». При выключенном разделителе группировка строк (сложение) не требуется.

Когда следует использовать режим разделения итогов?

Для этого необходимо выполнить условия:

  1. По регистру нет контроля остатков – нет чтения данных в транзакции. В регистрах бухгалтерии контроль остатков, как правило, отсутствует. Но если контроль остатков присутствует, то мы не получим никакого выигрыша в производительности. К тому же, при контроле остатков нужно использовать свойство набора записей «БлокироватьДляИзменения», так как возникает вероятность взаимоблокировки.
  2. С регистром выполняется параллельная работа пользователей, причем активная.

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

Бурмистров Андрей

Относительно новая функциональная особенность 1С, отнесенная к облачным технологиям. После появления функционала компанией 1С была доработана БСП. Эти же доработки вошли в состав основанных на БСП типовые конфигурации, например, УНФ и УТ11.

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

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

В БСП предусмотрены два разделителя учета: ОбластьДанныхОсновныеДанные и ОбластьДанныхВспомогательныеДанные. Загадкой осталось, почему эти 2 разделителя ссылаются на одни и те же параметры сеанса: ОбластьДанныхЗначение, ОбластьДанныхИспользование.

Включение механизма

Если ваша самописная конфигурация основана на БСП, то, скорее всего, перед включением необходимо внедрить загадочную библиотеку "1С:Библиотека технологии сервиса". Странно, что даже Гугл не знает о таком продукте 1С. А в типовых конфигурациях процедуры ПроверитьВозможностьИспользованияКонфигурацииВМоделиСервиса в модуле РаботаВМоделиСервиса не существует. Скорее всего, найти недостающие части из этой библиотеки можно в типовых конфигурациях, выполненных на основе БСП. В частности, одна из подсистем называется СтандартныеПодсистемы > РаботаВМоделиСервиса > ВыгрузкаЗагрузкаДанных.

Механизм разделения данных включается через установку константы ИспользоватьРазделениеПоОбластямДанных. Можно установить через пункт меню Все функции.

Создание пользователей области данных

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

Запуск 1С с параметром командной строки

Этот пункт не обязателен, если используется вход в область данных через форму входа.

1С можно запустить сразу в режиме разделения данных. Предусмотрен параметр командной строки /Z. Например, параметр «/Z-,+1» указывает, что 1С запускается со значением Области данных основные данные равным 1, разделитель Область данных вспомогательные данные не установлен.

Способ очень ненадежный. При запуске возникает ошибка в процедуре РаботаВМоделиСервиса. ПриПроверкеВключенияБезопасногоРежимаРазделенияДанных. Ничего лучшего, чем закомментировать эту процедуру, я не нашел. Процедура проверяет, есть ли у пользователя право менять текущую область данных, ограничены ли его права и влияет на безопасность.

Далее при запуске возникают несколько ошибок среди них: «Разделенным пользователям не может быть назначена роль Администратор системы», «Разделенным пользователям не может быть назначена роль Запуск толстого клиента».

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

Заполнить регистр сведений Области данных

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

Вход в область данных

Администрирование - Сервис - Вход в область данных (ОбщаяФорма.ВходВОбластьДанных)

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

Выгрузка данных из области

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

Данные сериализуются конфигурацией в XML-формат и запаковываются в ZIP. То есть архивирование происходит не средствами 1С-конфигуратора, как традиционная выгрузка.

Загрузить данные в область

ОбщаяКоманда.ЗагрузитьДанныеВОбласть

Для появления в Администрирование-Сервис нужно через Конфигуратор в составе подсистемы НастройкаИАдминистрирование установить видимость.

Данные загружаются в выбранную область. До этого они должны быть выгружены в XML-формат.

Выводы

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

Опыты с входами в разные области, выгрузкой и загрузкой областей были удачными. Неудача постигла при попытке выполнить запрос получения всех организаций для всех областей данных. Ошибка: «Нельзя использовать таблицу без указания всех разделителей с независимым использованием разделяемых данных». Отчет работает по одной области, если осуществить вход в какую-нибудь область.

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

Интересно было бы узнать о хитрой задумке авторов БСП относительно общих параметров сеансов для двух разделителей, если вызов будет с параметрами: «/Z-,+1», «/Z+1,+1» и «/Z+1,-».

Рассказать друзьям