Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 7, свеженьких 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )

> Разделение базы          
bizisoft Подменю пользователя
сообщение 20.12.17, 14:34
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 147
Из: Донецк
Спасибо сказали: 12 раз
Рейтинг: 14.4

Здравствуйте.
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

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

Единственно наверное общим будет Номенклатура и подобные справочники или связанные с ним.

Думал попробовать использовать РИБ, но из-за описанного выше не подходит, т.к. синхронизация РИБ по всем справочникам, тем более что РИБ для меня черный ящик, попробовал почитать - с наскоку не разобраться.
Также необходимо чтобы филиал видел общие (не раздельно по складам) остатки товаров, чтобы можно было перемещать товар с/на.

Пока есть идея сделать 2 копии и выполнить свертку каждой, а потом удалить все лишнее в каждой их них.
Синхронизацию справочников думал сделать посредством обработки через подключение к другой базе на подобии АДО (или как оно там правильно называется) - конечно здесь могут ожидать сюрпризы, т.к. пока не знаю как быстро найти все отличия в номенклатурах и определить где правильная версия, а какую нужно заменить и так по всем параметрам.

Товар другого филиала думал загружать через функционал Прайс-лист контрагента или добавить справочник(регистр) ОстаткиФилиала.
Перемещение товара между филиалами, наверное через ЗаказПоставщику (Ф1) ->ЗаказПокупателя (Ф2) -> РеализацияТоваров (Ф2) ->ПоступлениеТоваров (Ф1).

Может кто-нибудь сталкивался с таким и может дать рекомендации, как это лучше реализовать.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

sava1 Подменю пользователя
сообщение 20.12.17, 14:44
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1766
Из: Проскуров
Спасибо сказали: 415 раз
Рейтинг: 408.7

ИМХО - Лучше "убить время" на РИБ, чем потом постоянно "чесаться".

Vofka Подменю пользователя
сообщение 20.12.17, 14:55
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 12579
Из: Киев
Спасибо сказали: 3760 раз
Рейтинг: 2879.1

А почему нельзя использовать RLS?


Signature
Услуги 1С программиста

sava1 Подменю пользователя
сообщение 20.12.17, 15:11
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1766
Из: Проскуров
Спасибо сказали: 415 раз
Рейтинг: 408.7

поищите у гугла "Управление областью миграции данных в механизмах обмена данными"

bizisoft Подменю пользователя
сообщение 20.12.17, 15:47
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 147
Из: Донецк
Спасибо сказали: 12 раз
Рейтинг: 14.4

Цитата(sava1 @ 20.12.17, 15:44) *
Лучше "убить время" на РИБ, чем потом постоянно "чесаться".

А что можно РИБ настроить под себя, чтобы синхронизировало только то что нужно?
Цитата(Vofka @ 20.12.17, 15:55) *
А почему нельзя использовать RLS?

А что это за зверь такой?
Если конечно я правильно понял что это, то просто нужно, чтобы некоторой информации одного филиала не было в другом физически, а не ограничивать доступ к ней.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

sava1 Подменю пользователя
сообщение 20.12.17, 15:56
Сообщение #6

Крутой
Иконка группы
Группа: Местный
Сообщений: 1766
Из: Проскуров
Спасибо сказали: 415 раз
Рейтинг: 408.7


Цитата(bizisoft @ 20.12.17, 15:47) *
чтобы синхронизировало только то что нужно?


Наводку ж кинул

Vofka Подменю пользователя
сообщение 20.12.17, 17:01
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 12579
Из: Киев
Спасибо сказали: 3760 раз
Рейтинг: 2879.1

Цитата(bizisoft @ 20.12.17, 15:47) *
А что это за зверь такой?
Если конечно я правильно понял что это, то просто нужно, чтобы некоторой информации одного филиала не было в другом физически, а не ограничивать доступ к ней.

Что нужно, я не знаю. Но если информации "не видят" кому не положено, можно ли это расценивать, что её нету? В общем, с использованием RLS можно скрыть нужную информацию от посторонних. Там образом можно не париться с обменами. Но RLS не панацея и там есть свои недостатки и свои проблемы особенности. Поэтому как лучше сделать, зависит от конкретной задачи и конкретных условий. Решать вам smile.gif .


Signature
Услуги 1С программиста

cos12 Подменю пользователя
сообщение 20.12.17, 17:42
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 166
Спасибо сказали: 11 раз
Рейтинг: 9.3

Цитата(bizisoft @ 20.12.17, 15:47) *
А что можно РИБ настроить под себя, чтобы синхронизировало только то что нужно?

можно

Спасибо сказали: Alien900,

bizisoft Подменю пользователя
сообщение 10.01.18, 15:51
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 147
Из: Донецк
Спасибо сказали: 12 раз
Рейтинг: 14.4

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

Поэтому решено делать разделение своими силами.
Предварительно база была была почищена от помеченных на удаление объектов, выполнено восстановление последовательности, тестирование и исправление и выгрузка в файл.
Из бекапа была восстановлена в отдельную папку (копия) в которой запустил Свертку базы (самописная), на выходе были получены:
ВводОстатковТоваров (в разрезе Склад)
ВводОстатковВзаиморасчетов (в разрезе Валюта, Подразделение)
ИзменениеЦен (в разрезе ТипЦены)

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

Все вроде получилось нормально.

Следующий этап синхронизация.
Перемещение товаров решено сделать через фиктивного контрагента, через следующую цепочку:
1) Ф1.ЗаказПоставщику --->--(СОМ соединение)--->---- Ф2.ЗаказПокупателя
2) Ф2.ЗаказПокупателя --->--(на основании)--->-- Ф2.РеализацияТовара
3) Ф2.РеализацияТовара --->--(СОМ соединение)--->---- Ф1.ПоступлениеТовара

Как думаете, на сколько такая схема жизнеспособна?

А вот с получением и отображением остатков другого филиала(ов) ситуация такая.
Для хранения прайса филиала создал РегистрСведений Измерения:( НашиФилиалы; Номенклатура; ), Остаток, Цена
Через СОМ соединение подключаюсь к филиалу и запросами получаю две ТЗ (Партии и Цены), далее в цикле перебираю ТЗПартии и для текущего товара через ТЗЦена.Найти() получаю Цену.
Полученные данные записываю в Регистр.
Все работает, но как-то очень долго выполняет.
Есть предположение, что это из-за того, что каждый происходит старт и проведение транзакции.
Подскажите пожалуйста, как можно этот процесс ускорить.

Вот код
        ТЗОстатки = ПолучитьОстаткиПрайс();
    ТЗЦены = ПолучитьЦеныПрайс();
    
    Для Каждого Стр Из ТЗОстатки Цикл        
        НайденаяСтрока = ТЗЦены.Найти(Стр.Артикул, "Артикул");
        Цена = 0;
        Если НайденаяСтрока = Неопределено Тогда
        Иначе
            Цена = НайденаяСтрока.Цена;
        КонецЕсли;        
                
        //Записываем запись в регистр сведений
        Набор = РегистрыСведений.ТоварыФилиалов.СоздатьНаборЗаписей();
        Набор.Прочитать();
        НовЗапись = Набор.Добавить();
        НовЗапись.НашФилиал= пвФилиал;
        НовЗапись.Номенклатура= Стр.Номенклатура;
        НовЗапись.ОстатокОбщий = Стр.Остаток;
        НовЗапись.ЦенаЗакупки = Цена;
    Набор.Записать();

    КонецЦикла;


Может быть можно быстрее загрузить в регистр из ТЗ.
Я пробовал, но выдавало ошибку (точно не помню какую) что-то типа не совместимости полей.



Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

Petre Подменю пользователя
сообщение 10.01.18, 16:02
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2312
Из: Київ, Україна
Спасибо сказали: 559 раз
Рейтинг: 516.4

bizisoft @ Сегодня, 15:51 * ,
По коду вы считываете абсолютно все имеющиеся записи регистра, и потом их же плюс новые записи записываете.


Signature
Допрацьовую:
- "Бухгалтерія для України 1.2";
- "Бухгалтерія для України 2.0";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

bizisoft Подменю пользователя
сообщение 10.01.18, 21:03
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 147
Из: Донецк
Спасибо сказали: 12 раз
Рейтинг: 14.4

Цитата(Petre @ 10.01.18, 17:02) *
По коду вы считываете абсолютно все имеющиеся записи регистра, и потом их же плюс новые записи записываете.

Получается, нужно перед Прочитать() выполнить отбор по двум Измерениям (НашФилиал и Номенклатура), подставляя соответствующее текущее значение?

bizisoft @ Сегодня, 21:43 * ,
Добавил отбор
Набор = РегистрыСведений.ТоварыФилиалов.СоздатьНаборЗаписей();
        Набор.Отбор.НашФилиал.Установить(пвФилиал);
        Набор.Отбор.Номенклатура.Установить(Стр.Номенклатура);                  
        Набор.Прочитать();


Выдало ошибку:
Набор.Записать();
по причине:
Запись с такими ключевыми полями существует! : ТоварыФилиалов: ГРАНД-ПАРТС, Подшипник дифференциала ( 00118-27-350 ) (Регистр сведений: Товары филиалов)

А оно не должно перезаписать данные?


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

bizisoft Подменю пользователя
сообщение 11.01.18, 2:09
Сообщение #12

Завсегдатай
****
Группа: Пользователи
Сообщений: 147
Из: Донецк
Спасибо сказали: 12 раз
Рейтинг: 14.4

bizisoft @ Вчера, 22:03 * ,
Нашел как по другому сделать
ОбъектРегистр = РегистрыСведений.ТоварыФилиалов.СоздатьНаборЗаписей();    
        ОбъектРегистр.ОбменДанными.Загрузка = Истина;
        СтруктураОтбора = Новый Структура();
                //Измерения
        СтруктураОтбора.Вставить("НашФилиал", пвФилиал);
        СтруктураОтбора.Вставить("Номенклатура", Стр.Номенклатура);
                //Ресурсы
                СтруктураОтбора.Вставить("ОстатокОбщий", Стр.Остаток);
        СтруктураОтбора.Вставить("ЦенаЗакупки", Цена);
                
        ОбъектРегистр.Отбор.НашФилиал.Установить(СтруктураОтбора.НашФилиал);
        ОбъектРегистр.Отбор.Номенклатура.Установить(СтруктураОтбора.Номенклатура);         
        ЗаполнитьЗначенияСвойств(ОбъектРегистр.Добавить(), СтруктураОтбора);
        ОбъектРегистр.Записать(Истина);


Вроде работает и в сравнение с предыдущим вариантом раз в 20 быстрее.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 21.04.18, 0:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне