В Рознице 2.1 с РИБ невозможно создать новый Магазин. Глюк Разработчиков? Как преодолеть?

1. Alis95 04.10.14 02:39 Сейчас в теме
Здравствуйте, уважаемые форумчане!
Розница 2.1.2.8 файловый вариант на 1С:Предприятие 8.3 (8.3.5.1186)

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

Создаём БД или используем имеющуюся, чтобы в ней был хотя-бы 1 магазин. Создаём синхронизацию по магазину. В подчинённом узле (либо в главном и синхронизируем) создаём ещё один магазин.
И сталкиваемся с проблемой, что данный магазин в подчинённом узле много где нельзя выбрать (в органайзере "Изменение текущего магазина", в настройках прав пользователей, и т.д.) с вытекающими из этого последствиями. Нельзя подключить ККМ по нему (т.к. она не будет обнаружена при открытии смены); с него не передаётся себестоимость по новым магазинам на главный узел; и ряд других неприятных сюрпризов. Хотя на главном узле всё функционирует. С этими-же проблемами столкнулся и в своей БД с РИБ'ом.

Как заставить созданный Магазин при уже существующем РИБ корректно работать в подчинённых узлах?

Глюк от разработчиков или я что упустил?

Заранее крайне благодарен!
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Dima_ 149 10.10.14 05:28 Сейчас в теме
(6) Alis95,
Добрый день!
Прошу прощения, что плохо объяснил.
Ошибки:
1. Скрин № 1, действие 3. строка
ЗаполнитьМагазины();

остаётся.
Получаем код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		
	//ЭтоПредопределенныйУзелПланаОбмена = ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка);
	//Сообщить(ЭтоПредопределенныйУзелПланаОбмена);
	//ЭтоПредопределенныйУзелПланаОбмена = Ложь;
	
	//Если ЭтоПредопределенныйУзелПланаОбмена 
	//	ИЛИ ПланыОбмена.ГлавныйУзел() = Объект.Ссылка Тогда

	//	Элементы.НастройкаФильтровРегистрации.Видимость = Ложь;
	//	Элементы.СтраницыФормы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
	//	
	//Иначе
		Элементы.МагазиныТолькоОстатки.Видимость = Объект.РежимВыгрузкиИнформативныхОстатков = Перечисления.РежимыВыгрузкиИнформативныхОстатков.ИндивидуальнаяНастройка;
		
	//КонецЕсли;
	//
	//Если НЕ ЭтоПредопределенныйУзелПланаОбмена Тогда
		ЗаполнитьМагазины();
	//КонецЕсли;
		
КонецПроцедуры
Показать

(Подкреплённый файл Screen_1.)

2. Скрин № 2. в процедуре комментируем только условие, а всё тело оставляем:

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	//Если НЕ ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка) Тогда
		
		Если Магазины.Количество() = 0 Тогда
			
			ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" нет ни одной строки'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			ТекстОшибки,
			,
			"Магазины",,
			Отказ);
			
		КонецЕсли;
		
		ЕстьОграничения = Ложь;
		
		Для каждого СтрокаТовары Из Магазины Цикл
			
			Если СтрокаТовары.ПередаватьДанные Тогда
				
				ЕстьОграничения = Истина;
				
			КонецЕсли;
			
		КонецЦикла;
		
		Если НЕ ЕстьОграничения Тогда
			
			ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" не выбраны магазины,
			|для которых будут передаваться данные'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			ТекстОшибки,
			,
			"Магазины",,
			Отказ);
			
		КонецЕсли;
		
		Если НЕ Отказ Тогда
			
			ТекущийОбъект.Магазины.Очистить();
			ТекущийОбъект.МагазиныИнформативныхОстатков.Очистить();
			КоличествоСтрок = Магазины.Количество() - 1;
			Для Т = 0 По КоличествоСтрок Цикл
				
				ТекущаяСтрока = Магазины[КоличествоСтрок - Т];
				Если НЕ ТекущаяСтрока.ПередаватьДанные Тогда
					
					Если ТекущаяСтрока.ТолькоОстатки 
						И Объект.РежимВыгрузкиИнформативныхОстатков = Перечисления.РежимыВыгрузкиИнформативныхОстатков.ИндивидуальнаяНастройка Тогда
						
						СтрокаОстатков = ТекущийОбъект.МагазиныИнформативныхОстатков.Добавить();
						СтрокаОстатков.Магазин = ТекущаяСтрока.Магазин;
						
					КонецЕсли;
					
				Иначе
					
					СтрокаМагазинов = ТекущийОбъект.Магазины.Добавить();
					СтрокаМагазинов.Магазин = ТекущаяСтрока.Магазин;
					
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЕсли;
		
	//КонецЕсли;
	
КонецПроцедуры

Показать


(Подкреплённый файл Screen_2.)

Пробуйте.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Dima_ 149 08.10.14 10:54 Сейчас в теме
(1) Alis95,
Добрый день!
Я же писал, что нужно воспользоваться в подчинённых узлах этой обработкой,
в твоей теме Себестоимость" в отчётах. Не везде отображается.
Пока не поставишь галочки по всем магазинам во всех планах обмена в подчинённом узле, будут проблемы. Новый магазин нужно создавать только на центральной базе, потом обработкой (ещё раз ссылка на неё) добавлять его в фильтрах регистрации во всех подчинённых узлах.
2. maxistm 6 08.10.14 05:20 Сейчас в теме
создать обмен по двум магазинам в центральной и сделать заново выгрузку узла
4. Alis95 08.10.14 16:20 Сейчас в теме
(2) maxistm, Спасибо за совет, но этот вариант оставлю на самый крайний случай.

(3) Dima_, Добрый день! Спасибо за попытку помочь! Но что-то не получилось. Может потому что Розница 2.1... В рабочей базе новый Магазин был создан из центрального узла, и сразу в фильтрах синхронизаций выбран, но а вот в подчинённых узлах доступа к фильтрам не оказалось.
Сразу не попробовал Вашу обработку, т.к. экспериментировал с новой БД, и выявил те-же проблемы, даже при создании магазина в подчинённой БД (не зная, что нужно только из центрального).

Какие мои дальнейшие действия?

P.S. Обработку запускаю из подчинённого узла? Хотя если из главного - тоже самое. См. скриншот.

Заранее спасибо.
5. Dima_ 149 09.10.14 05:46 Сейчас в теме
(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 …
6. Alis95 09.10.14 15:17 Сейчас в теме
(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. Что-то скриншоты на форуме прикрепились вперемешку, хотя вставлял попорядку. См. номер скриншота в верхнем левом углу самого скриншота (красным).
7. Dima_ 149 10.10.14 05:28 Сейчас в теме
(6) Alis95,
Добрый день!
Прошу прощения, что плохо объяснил.
Ошибки:
1. Скрин № 1, действие 3. строка
ЗаполнитьМагазины();

остаётся.
Получаем код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		
	//ЭтоПредопределенныйУзелПланаОбмена = ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка);
	//Сообщить(ЭтоПредопределенныйУзелПланаОбмена);
	//ЭтоПредопределенныйУзелПланаОбмена = Ложь;
	
	//Если ЭтоПредопределенныйУзелПланаОбмена 
	//	ИЛИ ПланыОбмена.ГлавныйУзел() = Объект.Ссылка Тогда

	//	Элементы.НастройкаФильтровРегистрации.Видимость = Ложь;
	//	Элементы.СтраницыФормы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
	//	
	//Иначе
		Элементы.МагазиныТолькоОстатки.Видимость = Объект.РежимВыгрузкиИнформативныхОстатков = Перечисления.РежимыВыгрузкиИнформативныхОстатков.ИндивидуальнаяНастройка;
		
	//КонецЕсли;
	//
	//Если НЕ ЭтоПредопределенныйУзелПланаОбмена Тогда
		ЗаполнитьМагазины();
	//КонецЕсли;
		
КонецПроцедуры
Показать

(Подкреплённый файл Screen_1.)

2. Скрин № 2. в процедуре комментируем только условие, а всё тело оставляем:

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	//Если НЕ ОбменДаннымиПовтИсп.ЭтоПредопределенныйУзелПланаОбмена(Объект.Ссылка) Тогда
		
		Если Магазины.Количество() = 0 Тогда
			
			ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" нет ни одной строки'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			ТекстОшибки,
			,
			"Магазины",,
			Отказ);
			
		КонецЕсли;
		
		ЕстьОграничения = Ложь;
		
		Для каждого СтрокаТовары Из Магазины Цикл
			
			Если СтрокаТовары.ПередаватьДанные Тогда
				
				ЕстьОграничения = Истина;
				
			КонецЕсли;
			
		КонецЦикла;
		
		Если НЕ ЕстьОграничения Тогда
			
			ТекстОшибки = НСтр("ru = 'В списке """"Магазины"""" не выбраны магазины,
			|для которых будут передаваться данные'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			ТекстОшибки,
			,
			"Магазины",,
			Отказ);
			
		КонецЕсли;
		
		Если НЕ Отказ Тогда
			
			ТекущийОбъект.Магазины.Очистить();
			ТекущийОбъект.МагазиныИнформативныхОстатков.Очистить();
			КоличествоСтрок = Магазины.Количество() - 1;
			Для Т = 0 По КоличествоСтрок Цикл
				
				ТекущаяСтрока = Магазины[КоличествоСтрок - Т];
				Если НЕ ТекущаяСтрока.ПередаватьДанные Тогда
					
					Если ТекущаяСтрока.ТолькоОстатки 
						И Объект.РежимВыгрузкиИнформативныхОстатков = Перечисления.РежимыВыгрузкиИнформативныхОстатков.ИндивидуальнаяНастройка Тогда
						
						СтрокаОстатков = ТекущийОбъект.МагазиныИнформативныхОстатков.Добавить();
						СтрокаОстатков.Магазин = ТекущаяСтрока.Магазин;
						
					КонецЕсли;
					
				Иначе
					
					СтрокаМагазинов = ТекущийОбъект.Магазины.Добавить();
					СтрокаМагазинов.Магазин = ТекущаяСтрока.Магазин;
					
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЕсли;
		
	//КонецЕсли;
	
КонецПроцедуры

Показать


(Подкреплённый файл Screen_2.)

Пробуйте.
8. Alis95 10.10.14 19:18 Сейчас в теме
Заработало!
(7) Dima_, Огромное спасибо Вам за помощь, терпение и что всё так досконально разжевали! Действительно дело было именно в фильтрах подчинённых узлов. Сейчас тестирую на копии БД, пока полёт нормальный, вроде всё работает как надо. Завтра/послезавтра применю к рабочей БД.
Ещё раз спасибо!!!
9. kudim 22.10.14 15:49 Сейчас в теме
Тот же вопрос возник на Рознице 2.1
Обработку нужно использовать в ПБ и нужно для этого изменять саму конфигурацию?
Можно где-то скачать обработину без "начисления $m"?
10. Alis95 22.10.14 16:15 Сейчас в теме
(9) kudim, Добрый день.
Обработку нужно использовать в подчинённых узлах. Конфигурацию изменять не нужно. Для этого достаточно её просто открыть (Файл" -> "Открыть") в подчинённых узлах, и настроить фильтры (отметить галочками нужные магазины), как сказано в описании данной обработки.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот