Платформа 1С:Предприятие 8.3 (8.3.16.1063)
Управление торговлей, редакция 11 (11.4.13.99)
Был сбой ЖД, восстановили по возможности информацию, копий не было.
База заработала после утилиты chdbfl.
Далее была использована обработка для восстановления предопределенных данных.
На этом успокоились так как основные функции работали, проблем не возникало
После сбоя работали около года, товаровед решил добавить вид номенклатуры, но выяснили что при попытке добавить, удалить, изменить 1С выдает ошибку Значение поля "входит в группу" должно быть группой.
Было испробовано ТиС со всеми галочками,
Обновление (проходит нормально без ошибок)
Сохранение-загрузка cf
Выгрузка-загрузка ИБ.
Я понимаю что какой-то элемент справочника вызывает ошибку, но образования не хватает что бы разобраться.
В данный момент БД работает в режиме РИБ 2 магазина
Прошу помощи в направлении пути для исправления, или помощи для непосредственного участия.
(36) Для начала я бы просто создал корректный элемент "Группу" (как в чистой) в справочнике "НаборыДополнительныхРеквизитовИСведений", связал его таким кодом с предопределенным:
НаборНоменклатура = Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию(<Имя нового элемента>);
НаборНоменклатураОбъект = НаборНоменклатура.ПолучитьОбъект();
НаборНоменклатураОбъект.ИмяПредопределенныхДанных = "Справочник_Номенклатура";
НаборНоменклатураОбъект.Записать();
После этого проверил создастся ли новый Вид номенклатуры, если все норм, то потом уже объединял старый и новый с заменой ссылок.
40.
user628430_virusmaiker
23.09.22 09:05 Сейчас в теме
(39) Уважаемый Zevzm!!!
Выполнил все Ваши инструкции, но при привязке с предопределенным элементом "Справочник_Номенклатура" всячески пыталась привязаться к с предопределенным элементом "Справочник_Номенклатура" (общие)- после долгих разборов разобрался в ошибке победил.
Но после всех привязок элемент переставал быть группой и ошибка сохранялась.
Потом ради интереса решил удалить старую группу в Справочники.НаборыДополнительныхРеквизитовИСведений:
-сначала переименовал старую группу(добавил в конце имени _)
-Потом создал Группу с именем "Справочник_Номенклатура" и наименованием Справочник "Серии номенклатуры" как изначальный элемент.
-Перенес в новую группу элемент Справочник_СерииНоменклатуры_Общие
-удалил старую группу
связывание с предопределенным не делал. После всех действий решил создать вид номенклатуры 1С выдала ошибку на элемент Справочник_СерииНоменклатуры
Поступил с группой таким же образом.
Ошибки пропали вид номенклатуры создался, в данный момент на тестовой базе все работает.
Вполне возможно что я не до конца понял Вашу инструкцию, поэтому у меня не получалось.
Думаю в данный момент проблема решена, очень признателен за оказанную Вами помощь.
(1) Зайдите в систему с правами Администратора, далее произведите действие приводящее к ошибке, - после получения сообщения об ошибке нажмите кнопку Подробно*; Будет показана детальная информация - где произошла ошибка.
Если не получается - просто сделайте скриншот сообщения об ошибке и покажите тут.
4.
user628430_virusmaiker
18.09.22 09:29 Сейчас в теме
В режиме отладки выводит сообщение:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Значение поля "Входит в группу" должно быть группой
{ОбщийМодуль.УправлениеСвойствамиУТ.Модуль(592)}: НаборСвойствОбъект.Записать();
{Справочник.ВидыНоменклатуры.МодульОбъекта(200)}: УправлениеСвойствамиУТ.ОбновитьПоляДополнительныхСвойств(ЭтотОбъект,
по причине:
Значение поля "Входит в группу" должно быть группой
и перекидывает в конфигуратор на строки
Если НаборСвойствОбъект <> Неопределено Тогда
НаборСвойствОбъект.Наименование = ВидНоменклатуры.Наименование + ОкончаниеНаименования;
НаборСвойствОбъект.ПометкаУдаления = ?(НуженНаборСвойств, ВидНоменклатуры.ПометкаУдаления, Истина);;
НаборСвойствОбъект.Родитель = РодительНабора;
НаборСвойствОбъект.Записать();
КонецЕсли;
(4) Не пробовали поставить точку останова на этой строке "НаборСвойствОбъект.Родитель = РодительНабора;" и посмотреть что у вас содержится в "РодительНабора" перед записью?
(8) Посмотреть что содержится в переменной можно выделив переменную и нажав "Отладка - Вычислить выражение", либо Shift+F9.
Посмотрел в УПП настройки иерархии для справочника "НаборыДополнительныхРеквизитовИСведений", установлено "Иерархия групп и элементов", для элемента этого справочника вы устанавливаете родителя в переменной "РодительНабора", переменная содержит правильный тип ссылки на этот справочник, то что это не группа видно внизу, но иерархия это позволяет.
По вашей ошибке гуглится такое сообщение, не пробовали повторить:
"В итоге еще и баг БСП нашла, который некорректно обрабатывал добавляемый предопределенный элемент в справочник Наборов, если это группа (т.е. задано Набор.ЭтоГруппа = Истина;), которая используется для случая, описанного в ИТС как "Особые случаи настройки наборов свойств. Настройка объектов с разными наборами свойств у разных групп объектов". Настроила всё в точности по инструкции, но элемент записывался в справочник наборов упорно не как группа, в итоге при попытке добавить дочерний элемент (из спец.справочника на базе которого формировались наборы реквизитов) выходила ошибка на строке в модуле БСП "УправлениеСвойствами" "НаборСвойствОбъект.Записать(); по причине: Значение поля "Входит в группу" должно быть группой".
Для исправления ищем Общий модуль БСП УправлениеСвойствамиСлужебный, процедура СоздатьНаборСвойств:
Заменяем строку:
Если СвойстваНабора.ДочерниеНаборы = Неопределено Или СвойстваНабора.ДочерниеНаборы.Количество() = 0 Тогда
НА
Если (СвойстваНабора.ДочерниеНаборы = Неопределено Или СвойстваНабора.ДочерниеНаборы.Количество() = 0) И Не СвойстваНабора.ЭтоГруппа Тогда
(12) Если выгрузить только конфигурацию и сделать на основе нее пустую базу ошибка воспроизводится? Есть возможность выложить пустую конфигурацию куда-нибудь в облако, я бы попробовал воспроизвести ошибку у себя?
15.
user628430_virusmaiker
19.09.22 12:11 Сейчас в теме
Пробывал создать на основе нее чистую конфигурацию, ошибка не воспроизводится.
Сейчас выгружу на google диск cf файл, ссылку отправлю в личных сообщениях.
(19) Такое ощущение что у вас в справочнике к предопределенному наименованию "Справочник_Номенклатура" после восстановления данных привязан элемент не являющийся группой, а он должен быть группой, на скрине в чистой базе это видно.
Можете в проблемной базе в консоли выполнить запрос:
ВЫБРАТЬ
НаборыДополнительныхРеквизитовИСведений.Ссылка КАК Ссылка,
НаборыДополнительныхРеквизитовИСведений.ЭтоГруппа КАК ЭтоГруппа,
НаборыДополнительныхРеквизитовИСведений.Наименование КАК Наименование,
НаборыДополнительныхРеквизитовИСведений.Используется КАК Используется,
НаборыДополнительныхРеквизитовИСведений.Предопределенный КАК Предопределенный,
НаборыДополнительныхРеквизитовИСведений.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
НаборыДополнительныхРеквизитовИСведений.Представление КАК Представление
ИЗ
Справочник.НаборыДополнительныхРеквизитовИСведений КАК НаборыДополнительныхРеквизитовИСведений
ГДЕ
НаборыДополнительныхРеквизитовИСведений.ИмяПредопределенныхДанных = "Справочник_Номенклатура"
(21) Ну вот это и есть ваша проблема, то что с предопределенным элементом "Справочник_Номенклатура" связан элемент, который не является группой. Сделайте копию базы, заведите новый элемент "Справочник "Номенклатура"" (так как он заведен в чистой на основе конфигурации), отвяжите существующий от предопределенных данных, объедините их типовой обработкой удаления дублей (нужно для замены ссылок на существующий), затем свяжите новый корректный (который является группой) с предопределенным через "Элемент.ИмяПредопределенныхДанных = "Справочник_Номенклатура";". Я бы сделал так. Только все это в копии!
(36) Для начала я бы просто создал корректный элемент "Группу" (как в чистой) в справочнике "НаборыДополнительныхРеквизитовИСведений", связал его таким кодом с предопределенным:
НаборНоменклатура = Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию(<Имя нового элемента>);
НаборНоменклатураОбъект = НаборНоменклатура.ПолучитьОбъект();
НаборНоменклатураОбъект.ИмяПредопределенныхДанных = "Справочник_Номенклатура";
НаборНоменклатураОбъект.Записать();
После этого проверил создастся ли новый Вид номенклатуры, если все норм, то потом уже объединял старый и новый с заменой ссылок.
38.
user628430_virusmaiker
21.09.22 09:58 Сейчас в теме
(37) Извините меня пожалуйста, создание и объединение как делать я понимаю.
я стараюсь учится самостоятельно, но не могу понять как лучше выполнить код, через обработку или через какойто хитрый механизм.
Спасибо
(38) Сделайте внешнюю обработку. В обработке добавьте команду из которой вызывайте серверную процедуру и работайте с элементами справочника. Приложу простейший пример для привязки элемента справочника к предопределенному элементу, который я делал в вашей базе.
40.
user628430_virusmaiker
23.09.22 09:05 Сейчас в теме
(39) Уважаемый Zevzm!!!
Выполнил все Ваши инструкции, но при привязке с предопределенным элементом "Справочник_Номенклатура" всячески пыталась привязаться к с предопределенным элементом "Справочник_Номенклатура" (общие)- после долгих разборов разобрался в ошибке победил.
Но после всех привязок элемент переставал быть группой и ошибка сохранялась.
Потом ради интереса решил удалить старую группу в Справочники.НаборыДополнительныхРеквизитовИСведений:
-сначала переименовал старую группу(добавил в конце имени _)
-Потом создал Группу с именем "Справочник_Номенклатура" и наименованием Справочник "Серии номенклатуры" как изначальный элемент.
-Перенес в новую группу элемент Справочник_СерииНоменклатуры_Общие
-удалил старую группу
связывание с предопределенным не делал. После всех действий решил создать вид номенклатуры 1С выдала ошибку на элемент Справочник_СерииНоменклатуры
Поступил с группой таким же образом.
Ошибки пропали вид номенклатуры создался, в данный момент на тестовой базе все работает.
Вполне возможно что я не до конца понял Вашу инструкцию, поэтому у меня не получалось.
Думаю в данный момент проблема решена, очень признателен за оказанную Вами помощь.
(40) НУ главное, что разобрались. Я экспериментировал на чистой базе от вас, возможно на реальных данных у вас что-то по-другому. Не забудьте удалить ссылку на файл в гугл-диске... Удачи.
25.
user628430_virusmaiker
20.09.22 12:51 Сейчас в теме
(22)
(24) утверждать что точно не буду, сравнивал визуально, написано по разному.
На скрине выделенная строка, в работающей базе созданной на основе CF написано Справочник"Номенклатура"
(26) У него предопределенный элемент в справочнике стал не группой после восстановления, если создать пустую ИБ на основе его конфигурации, то там он Группа и Вид номенклатуры корректно создается.
(28) Ну и причем тут его попытки изменить наименование "Номенклатура" на наименование "Справочник Номенклатура"? Русским языком в Самаре 1С-ники не пользуются?
(31) Главное, что на форуме возродился неиссякаемый источник язвительных замечаний... А то как-то скучно было читать темы без увольнений участников и отправок к сараю с удочками )