Здравствуйте, уважаемые форумчане!
Розница 2.1.2.8 файловый вариант на 1С:Предприятие 8.3 (8.3.5.1186)
Ситуацию смоделировал на новой чистой БД Розница 2.1.2.8 (на других версиях ещё не пробовал), поэтому вероятность повреждения БД отбрасывается.
Создаём БД или используем имеющуюся, чтобы в ней был хотя-бы 1 магазин. Создаём синхронизацию по магазину. В подчинённом узле (либо в главном и синхронизируем) создаём ещё один магазин.
И сталкиваемся с проблемой, что данный магазин в подчинённом узле много где нельзя выбрать (в органайзере "Изменение текущего магазина", в настройках прав пользователей, и т.д.) с вытекающими из этого последствиями. Нельзя подключить ККМ по нему (т.к. она не будет обнаружена при открытии смены); с него не передаётся себестоимость по новым магазинам на главный узел; и ряд других неприятных сюрпризов. Хотя на главном узле всё функционирует. С этими-же проблемами столкнулся и в своей БД с РИБ'ом.
Как заставить созданный Магазин при уже существующем РИБ корректно работать в подчинённых узлах?
2. Скрин № 2. в процедуре комментируем только условие, а всё тело оставляем:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Если НЕ ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка) Тогда
Если Магазины.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" нет ни одной строки'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
,
"Магазины",,
Отказ);
КонецЕсли;
ЕстьОграничения = Ложь;
Для каждого СтрокаТовары Из Магазины Цикл
Если СтрокаТовары.ПередаватьДанные Тогда
ЕстьОграничения = Истина;
КонецЕсли;
КонецЦикла;
Если НЕ ЕстьОграничения Тогда
ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" не выбраны магазины,
|для которых будут передаваться данные'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
,
"Магазины",,
Отказ);
КонецЕсли;
Если НЕ Отказ Тогда
ТекущийОбъект.Магазины.Очистить();
ТекущийОбъект.МагазиныИнформативныхОстатков.Очистить();
КоличествоСтрок = Магазины.Количество() - 1;
Для Т = 0 По КоличествоСтрок Цикл
ТекущаяСтрока = Магазины[КоличествоСтрок - Т];
Если НЕ ТекущаяСтрока.ПередаватьДанные Тогда
Если ТекущаяСтрока.ТолькоОстатки
И Объект.РежимВыгрузкиИнформативныхОстатков = Перечисления.РежимыВыгрузкиИнформативныхОстатков.ИндивидуальнаяНастройка Тогда
СтрокаОстатков = ТекущийОбъект.МагазиныИнформативныхОстатков.Добавить();
СтрокаОстатков.Магазин = ТекущаяСтрока.Магазин;
КонецЕсли;
Иначе
СтрокаМагазинов = ТекущийОбъект.Магазины.Добавить();
СтрокаМагазинов.Магазин = ТекущаяСтрока.Магазин;
КонецЕсли;
КонецЦикла;
КонецЕсли;
//КонецЕсли;
КонецПроцедуры
(1) Alis95,
Добрый день!
Я же писал, что нужно воспользоваться в подчинённых узлах этой обработкой,
в твоей теме Себестоимость" в отчётах. Не везде отображается.
Пока не поставишь галочки по всем магазинам во всех планах обмена в подчинённом узле, будут проблемы. Новый магазин нужно создавать только на центральной базе, потом обработкой (ещё раз ссылка на неё) добавлять его в фильтрах регистрации во всех подчинённых узлах.
(2) maxistm, Спасибо за совет, но этот вариант оставлю на самый крайний случай.
(3) Dima_, Добрый день! Спасибо за попытку помочь! Но что-то не получилось. Может потому что Розница 2.1... В рабочей базе новый Магазин был создан из центрального узла, и сразу в фильтрах синхронизаций выбран, но а вот в подчинённых узлах доступа к фильтрам не оказалось.
Сразу не попробовал Вашу обработку, т.к. экспериментировал с новой БД, и выявил те-же проблемы, даже при создании магазина в подчинённой БД (не зная, что нужно только из центрального).
Какие мои дальнейшие действия?
P.S. Обработку запускаю из подчинённого узла? Хотя если из главного - тоже самое. См. скриншот.
(4) Alis95,
Добрый день!
Постараюсь всё же помочь.
Значит нужно доработать обработку для 2.1….
Делаем следующее:
1. Открываем конфигурацию
2. «Общие\Планы обмена\Помагазину\Формы\ФормаУзла»
3. Открываем обработку «Планы обмена»
4. Меняем в обработке форму «ФормаУзла» на форму из конфигурации «ФормаУзла». (Ctrl+C, Ctrl+V).
5. Открываем модуль формы
6. Находим процедуру (для 2.0 выглядит так)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЭтоПредопределенныйУзелПланаОбмена = ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка);
Если ЭтоПредопределенныйУзелПланаОбмена
ИЛИ ПланыОбмена.ГлавныйУзел() = Объект.Ссылка Тогда
Элементы.НастройкаФильтровРегистрации.Видимость = Ложь;
Элементы.СтраницыФормы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
Иначе
Элементы.МагазиныТолькоОстатки.Видимость = Объект.РежимВыгрузкиИнформативныхОстатков = Перечисления.РежимыВыгрузкиИнформативныхОстатков.ИндивидуальнаяНастройка;
КонецЕсли;
Если НЕ ЭтоПредопределенныйУзелПланаОбмена Тогда
ЗаполнитьМагазины();
КонецЕсли;
КонецПроцедуры
Получается, оставляем только строку после «иначе» и последние условие не проверяем.
7. В следующей процедуре
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Если НЕ ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка) Тогда
...
//КонецЕсли;
Комментируем условие
8. Должно заработать...
P.S. Всё это можно сделать в конфигурации, если она не на поддержке.
P.S.S. Разве разработчики не открыли закладку «Настройка фильтров регистрации» на подчинённом узле в 2.1 ? Обещали сделать в 2.0.9 …
(5) Dima_,
Добрый день!
Спасибо за попытки помочь!
P.S.S. Разве разработчики не открыли закладку «Настройка фильтров регистрации» на подчинённом узле в 2.1 ? Обещали сделать в 2.0.9 …
Нет. В мной используемой Розница 2.1.2.8 - нет. Специально заглянул в самую последнюю версию Розница 2.1.4.9 - тоже нет.
Значит нужно доработать обработку для 2.1….
Что-то не вышло...
Если не сложно, проверьте, пожалуйста, правильно ли я сделал:
На скриншотах 1 и 2 указал, что я сделал. См. скриншоты 1 и 2.
Далее, сохранил обработку, запустил в подчинённом узле. Но во вкладке "Настройка фильтров регистрации" нет Магазинов. (См. скриншот 3.)
P.S. В качестве эксперимента, запускал её и в главном узле - Магазины есть.
Какие мои дальнейшие действия?
Заранее спасибо.
P.P.S. Что-то скриншоты на форуме прикрепились вперемешку, хотя вставлял попорядку. См. номер скриншота в верхнем левом углу самого скриншота (красным).
2. Скрин № 2. в процедуре комментируем только условие, а всё тело оставляем:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Если НЕ ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка) Тогда
Если Магазины.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" нет ни одной строки'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
,
"Магазины",,
Отказ);
КонецЕсли;
ЕстьОграничения = Ложь;
Для каждого СтрокаТовары Из Магазины Цикл
Если СтрокаТовары.ПередаватьДанные Тогда
ЕстьОграничения = Истина;
КонецЕсли;
КонецЦикла;
Если НЕ ЕстьОграничения Тогда
ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" не выбраны магазины,
|для которых будут передаваться данные'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
,
"Магазины",,
Отказ);
КонецЕсли;
Если НЕ Отказ Тогда
ТекущийОбъект.Магазины.Очистить();
ТекущийОбъект.МагазиныИнформативныхОстатков.Очистить();
КоличествоСтрок = Магазины.Количество() - 1;
Для Т = 0 По КоличествоСтрок Цикл
ТекущаяСтрока = Магазины[КоличествоСтрок - Т];
Если НЕ ТекущаяСтрока.ПередаватьДанные Тогда
Если ТекущаяСтрока.ТолькоОстатки
И Объект.РежимВыгрузкиИнформативныхОстатков = Перечисления.РежимыВыгрузкиИнформативныхОстатков.ИндивидуальнаяНастройка Тогда
СтрокаОстатков = ТекущийОбъект.МагазиныИнформативныхОстатков.Добавить();
СтрокаОстатков.Магазин = ТекущаяСтрока.Магазин;
КонецЕсли;
Иначе
СтрокаМагазинов = ТекущийОбъект.Магазины.Добавить();
СтрокаМагазинов.Магазин = ТекущаяСтрока.Магазин;
КонецЕсли;
КонецЦикла;
КонецЕсли;
//КонецЕсли;
КонецПроцедуры
Заработало!
(7) Dima_, Огромное спасибо Вам за помощь, терпение и что всё так досконально разжевали! Действительно дело было именно в фильтрах подчинённых узлов. Сейчас тестирую на копии БД, пока полёт нормальный, вроде всё работает как надо. Завтра/послезавтра применю к рабочей БД.
Ещё раз спасибо!!!
Тот же вопрос возник на Рознице 2.1
Обработку нужно использовать в ПБ и нужно для этого изменять саму конфигурацию?
Можно где-то скачать обработину без "начисления $m"?
(9) kudim, Добрый день.
Обработку нужно использовать в подчинённых узлах. Конфигурацию изменять не нужно. Для этого достаточно её просто открыть (Файл" -> "Открыть") в подчинённых узлах, и настроить фильтры (отметить галочками нужные магазины), как сказано в описании данной обработки.