Зацикливание уровней 1с как исправить

Бухгалтерия предприятия, редакция 3.0 (3.0.121.25) (http://v8.1c.ru/buhv8/)
Copyright (С) ООО «1C-Софт», 2009 — 2022. Все права защищены
(http://www.1c.ru)
1С:Предприятие 8.3 (8.3.20.2180)

Добрый день!
Возникла необходимость настроить учет в разрезе подразделений.
Услуги отрабатываем без проблем.
А вот расходы будущих периодов не можем отразить по конкретному подразделению. В карточке РБП отсутствует поле «Подразделение» -как во вновь создаваемых, так и в старых (Скрин 1). В настройках, плане счетов учет по подразделениям настроен (скрин 2-4) Сориентируйте пожалуйста , где указывается подразделение для отражения РБП . Кроме того прошу подсказать если карточка РБП была создана ранее, а в настоящий момент мы меняем счет б/у с 26 на 20и указываем подразделение, то просто не перекручивая предыдущие месяца мы закрываем месяц и у нас расход за текущий месяц ложится согласно новой настройке?

зацикливание уровней справочника

Я
   dima575

24.11.08 – 22:01

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

   dima575

1 – 24.11.08 – 22:10

никто не сталкивался с этой проблемой ?

Тестирование и исправление помогает или нет ?

   у лю 427

2 – 24.11.08 – 22:11

Это как? Зацикливание уровней. Поясни…..

   dima575

3 – 24.11.08 – 22:13

запустил тестирование пишет зацикливание уровней элемента номенклатуры и повисло помойму

   dima575

4 – 24.11.08 – 22:14

зацикливание возникает например когда родитель элемента тот же самый элемент в иерархических справочниках

   vde69

5 – 24.11.08 – 22:18

можно сделать справочник вообще без иерархии

   у лю 427

6 – 24.11.08 – 22:21

почему то всегда считал, что это проверяется платформой при записи… при переносе в другую группу и т.д.

   vde69

7 – 24.11.08 – 22:23

(6) ну может косяк какой вышел 🙂

   dima575

8 – 24.11.08 – 22:24

Сам не понимаю из-за чего это возникло, может проблема возникла из-за обмена через распределенную базу.

   dima575

9 – 24.11.08 – 22:25

Пытался дома насильственно сломать базу (зациклить уровни) не дает !!!

   H A D G E H O G s

10 – 24.11.08 – 22:26

Что за справочник то?

   H A D G E H O G s

11 – 24.11.08 – 22:27

В предприятие входит?

   dima575

12 – 24.11.08 – 22:28

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

   dima575

13 – 24.11.08 – 22:32

При выборе элементов у которых родитель товары 1с виснет.

   H A D G E H O G s

14 – 24.11.08 – 22:32

В консоле отчета выполни

ВЫБРАТЬ

   Номенклатура.Ссылка

ИЗ

   Справочник.Номенклатура КАК Номенклатура

ГДЕ

   Номенклатура.Родитель = Номенклатура.Ссылка

   dima575

15 – 24.11.08 – 22:33

это только выберет а как исправить

   dima575

16 – 24.11.08 – 22:33

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

   у лю 427

17 – 24.11.08 – 22:34

(15) после этого попробуй получить каждый элемент как элемент, вписать родителя и записать.

   vde69

18 – 24.11.08 – 22:35

(15) делаешь копию, потом в конфигураторе убираешь иерархию, потом по com-у востанавливаешь нормальные ветки

   H A D G E H O G s

19 – 24.11.08 – 22:36

(18) Йа в шоке.

Берем скуль.

Счаст даже запрос приведу..

   dima575

20 – 24.11.08 – 22:36

логично это попробую обязательно. Я боюсь что не получиться. Повиснет наверно 1с-ка. У кого нибудь была такая проблема или нет ?

   Euguln

21 – 24.11.08 – 22:38

Такая проблема была при переносе из 7.7. Лечилось (14) + обработку написал за 5 минут по очистке родителей таких.

   dima575

22 – 24.11.08 – 22:38

Теперь база даже не выгружается пишет ошибку

   dima575

23 – 24.11.08 – 22:38

Может и у меня это из 7 прилетело ?

   dima575

24 – 24.11.08 – 22:39

и помогла очистка родителей ?

   Euguln

25 – 24.11.08 – 22:40

(24) конечно

   dima575

26 – 24.11.08 – 22:41

отлично тогда с этого и начну. Спасибо за подсказку. А то я хотел снова пробовать запускать тестирование и исправление.

   H A D G E H O G s

27 – 24.11.08 – 22:43

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

   у лю 427

28 – 24.11.08 – 22:46

ну так 27 и есть главный …. дятел…
(24) или очистка (элементы слетят в корень) или запись туда выбранного родителя – вполне исправят ситуацию

   dima575

29 – 24.11.08 – 22:48

завтра проверим исправят ситуацию или будут вешать 1с.

   H A D G E H O G s

30 – 24.11.08 – 22:50

(28) Ты иди, на акул охоться.. Смешной ты человече..

   у лю 427

31 – 24.11.08 – 22:51

команды миздеть не было….

   H A D G E H O G s

32 – 24.11.08 – 22:54

Тсссс, молчи.. А то придет Сержант 1С и банным веником гонять тебя будет. Опять потом психосексуальные комплексы залечивать будешь..

   dima575

33 – 24.11.08 – 22:56

у меня беда, а вы все шутки шутите !!!!!!!!!!!!

   vde69

34 – 24.11.08 – 23:03

наверно запрос будет примерно такой:

ВЫБРАТЬ

   Номенклатура.Ссылка

ИЗ

   Справочник.Номенклатура КАК Номенклатура

ГДЕ

   (Номенклатура.Родитель = Номенклатура.Ссылка) и (Номенклатура.Родитель.Уровень+1 > Номенклатура.Уровень)

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

   vde69

35 – 24.11.08 – 23:04

(34)+ вот это “(Номенклатура.Родитель = Номенклатура.Ссылка) и ” – лишнее

   H A D G E H O G s

36 – 24.11.08 – 23:06

(35) Где в (14) неправда?

   Defender aka LINN

37 – 24.11.08 – 23:06

(34) А если зацикливание “через уровень” идет? 🙂

З.Ы. Платформа такие вещи дает записать “на раз”: Объект.ОбменДаными.Загрузка = Истина и не такие чудеса творит.

   vde69

38 – 24.11.08 – 23:08

(36) если через уровень?

в 34 тогда правильней условие такое “(Номенклатура.Родитель.Уровень+1) >= Номенклатура.Уровень”

   dima575

39 – 24.11.08 – 23:08

(34) такой запрос работать не будет. Скажет поле не найдено Номенклатура.Родитель.Уровень

   vde69

40 – 24.11.08 – 23:14

(39) може и не будет, не знаю, но вообще я от зацикливания справочников (правда по реквизиту в ТЧ) боролся 🙂 и обычно оно гдето через 2-3 уровня появляеться

   H A D G E H O G s

41 – 24.11.08 – 23:20

Щас смоделировал эту хрень. Можно перезаписать.. Предварительно выбрав запросом в (34).

   dima575

42 – 24.11.08 – 23:21

(40) И как получилось побороть ?

(34) Почему сомнения что удасться побороть такие элементы ?

И как тогда бороться если не даст их перезаписать ?

   vde69

43 – 24.11.08 – 23:24

(42) ну да,

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

   vde69

44 – 24.11.08 – 23:26

(42) если не даст переписать, то или прямым запросом (но восьмерку я прямыми не ковырял), или попробовать через загрузку, или (18).

   artem666

45 – 24.11.08 – 23:53

Была такая хрень – неправильно перенес справочники из 7.7, вот и закольцевал группы номенклатуиы – хорошо хоть сразу обработку написал,если надо могу скинуть

   у лю 427

46 – 25.11.08 – 07:18

(37)”…………….З.Ы. Платформа такие вещи дает записать “на раз”: Объект.ОбменДаными.Загрузка = Истина и не такие чудеса творит.”

Выходит, что платформа – гавно, причем гавно большое….

   Serg_1960

47 – 25.11.08 – 08:39

(46)Тебя послушать, так выходит что “format c:” – самое большое “зло”. И того кто “это” придумал – повесить мало…

   Serg_1960

48 – 25.11.08 – 09:17

Я сталкивался с “зацикливанием” – не так все просто 🙁 – одним запросом не отделаешься 🙁

И группы “зацикливаются” через один-два-несколько уровней, – и номенклатура может оказаться “родителем”… Как ловить тогда все “кольца”?

Имхо: в цикле для каждой номенклатуры перебираем родителей с подсчетом их количества и запоминаем в списке значений. Как только количество родителей и количество в списке перестанет быть равным – список пользователю показать – пусть сам решает где надо рвать “кольцо”.

Перебор, конечно, не самое лучшее решение. Но это лучше, чем пытать составить “красивое” решение исходя из представления “а как это может быть”…

   Defender aka LINN

49 – 25.11.08 – 09:21

(46) Петя, ты в снеговике много работал? 🙂

Вообще, такое “зацикливание”, ИМХО – проблема логики, а не платформы.

  

BabySG

50 – 25.11.08 – 09:43

(49) Присоединюсь – это логика, а не платформа

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

никто не сталкивался с этой проблемой ? Тестирование и исправление помогает или нет ?

Это как? Зацикливание уровней. Поясни…..

запустил тестирование пишет зацикливание уровней элемента номенклатуры и повисло помойму

зацикливание возникает например когда родитель элемента тот же самый элемент в иерархических справочниках

можно сделать справочник вообще без иерархии

почему то всегда считал, что это проверяется платформой при записи… при переносе в другую группу и т.д.

ну может косяк какой вышел 🙂

Сам не понимаю из-за чего это возникло, может проблема возникла из-за обмена через распределенную базу.

Пытался дома насильственно сломать базу (зациклить уровни) не дает !!!

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

При выборе элементов у которых родитель товары 1с виснет.

В консоле отчета выполни ВЫБРАТЬ    Номенклатура.Ссылка ИЗ    Справочник.Номенклатура КАК Номенклатура

это только выберет а как исправить

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

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

делаешь копию, потом в конфигураторе убираешь иерархию, потом по com-у востанавливаешь нормальные ветки

Йа в шоке. Берем скуль. Счаст даже запрос приведу..

логично это попробую обязательно. Я боюсь что не получиться. Повиснет наверно 1с-ка. У кого нибудь была такая проблема или нет ?

Такая проблема была при переносе из 7.7. Лечилось + обработку написал за 5 минут по очистке родителей таких.

Теперь база даже не выгружается пишет ошибку

Может и у меня это из 7 прилетело ?

и помогла очистка родителей ?

отлично тогда с этого и начну. Спасибо за подсказку. А то я хотел снова пробовать запускать тестирование и исправление.

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

ну так 27 и есть главный …. дятел… или очистка (элементы слетят в корень) или запись туда выбранного родителя – вполне исправят ситуацию

завтра проверим исправят ситуацию или будут вешать 1с.

Ты иди, на акул охоться.. Смешной ты человече..

команды миздеть не было….

Тсссс, молчи.. А то придет Сержант 1С и банным веником гонять тебя будет. Опять потом психосексуальные комплексы залечивать будешь..

у меня беда, а вы все шутки шутите !!!!!!!!!!!!

наверно запрос будет примерно такой:    Номенклатура.Ссылка ИЗ только есть у меня сомнение, что удасть переписать такие элементы, хотя попробовать стоит

+ вот это “(Номенклатура.Родитель = Номенклатура.Ссылка) и ” – лишнее

А если зацикливание “через уровень” идет? 🙂 З.Ы. Платформа такие вещи дает записать “на раз”: Объект.ОбменДаными.Загрузка = Истина и не такие чудеса творит.

если через уровень? в 34 тогда правильней условие такое “(Номенклатура.Родитель.Уровень+1) >= Номенклатура.Уровень”

такой запрос работать не будет. Скажет поле не найдено Номенклатура.Родитель.Уровень

може и не будет, не знаю, но вообще я от зацикливания справочников (правда по реквизиту в ТЧ) боролся 🙂 и обычно оно гдето через 2-3 уровня появляеться

Щас смоделировал эту хрень. Можно перезаписать.. Предварительно выбрав запросом в .

И как получилось побороть ? Почему сомнения что удасться побороть такие элементы ? И как тогда бороться если не даст их перезаписать ?

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

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

Была такая хрень – неправильно перенес справочники из 7.7, вот и закольцевал группы номенклатуиы – хорошо хоть сразу обработку написал,если надо могу скинуть

“…………….З.Ы. Платформа такие вещи дает записать “на раз”: Объект.ОбменДаными.Загрузка = Истина и не такие чудеса творит.” Выходит, что платформа – гавно, причем гавно большое….

Тебя послушать, так выходит что “format c:” – самое большое “зло”. И того кто “это” придумал – повесить мало…

Я сталкивался с “зацикливанием” – не так все просто 🙁 – одним запросом не отделаешься 🙁 И группы “зацикливаются” через один-два-несколько уровней, – и номенклатура может оказаться “родителем”… Как ловить тогда все “кольца”? Имхо: в цикле для каждой номенклатуры перебираем родителей с подсчетом их количества и запоминаем в списке значений. Как только количество родителей и количество в списке перестанет быть равным – список пользователю показать – пусть сам решает где надо рвать “кольцо”. Перебор, конечно, не самое лучшее решение. Но это лучше, чем пытать составить “красивое” решение исходя из представления “а как это может быть”…

Петя, ты в снеговике много работал? 🙂 Вообще, такое “зацикливание”, ИМХО – проблема логики, а не платформы.

Присоединюсь – это логика, а не платформа

Тэги:

Комментарии доступны только авторизированным пользователям

Смена родителя номенклатуры

Автор maxxi, 15 мая 2023, 12:39

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте, есть код:


НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
    ОбъектТовар = Выборка.ПолучитьОбъект();
    Если ОбъектТовар.Родитель <> НовыйРодитель Тогда
         ОбъектТовар.Родитель = НовыйРодитель;
         ОбъектТовар.Записать();
    КонецЕсли;
КонецЦикла;
После выполнения этого кода, копируются только папки, а товары остаются  без категории, скажите пожалуйста, что я делаю не правильно.
Спасибо.


Выборка = Справочники.Товары.ВыбратьИерархически();
так это вроде и выбирает как раз верхний уровень справочника, ваши папки
попробуйте такую команду
Выборка = Справочники.Товары.Выбрать();

  • 1 пользователь сказал спасибо!

если помогло нажмите: Спасибо!


LexaK, в корне есть Папка/ПодПапка/ПодПодПапка/Товар.
Хочу перенести все это в условную папку “hello”.



Цитата: maxxi от 15 мая 2023, 13:37Выдает ошибку “Зацикливание Уровней”.

ааа, ну да, по вашему коду, вы и свою новую папку тоже пытаетесь поместить саму себя, добавьте еще проверку, примерно так

НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.выбрать(); //ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка = НовыйРодитель Тогда
//это сама папка "hello", пропускаем
Продолжить;
КонецЕсли;
Если Выборка.Родитель <> НовыйРодитель Тогда
//смена родителя
     ОбъектТовар = Выборка.ПолучитьОбъект();
         ОбъектТовар.Родитель = НовыйРодитель;
         ОбъектТовар.Записать();
    КонецЕсли;
КонецЦикла;

  • 1 пользователь сказал спасибо!

если помогло нажмите: Спасибо!


Такая проблема, как Ошибка формата потока, в 1С 8.3 встречается достаточно часто. Рассмотрим, как исправить данную ошибку.

Что же такое ошибка формата потока в 1с 8.3?

Такое происходит в следующих ситуациях:

  1. Ошибка формата потока при запуске 1С Предприятия 8.2 или конфигуратора обычно связана с проблемами в кеше. Обычно она вызвана неправильным выключением системы вследствие, например, отключения электричества. Поэтому настоятельно рекомендуется ставить блоки бесперебойного питания, чтобы не потерять важную информацию. Часто ошибка появляется при запуске базы после обновления конфигурации.
  2. Вторая ситуация — при формировании какого-либо отчета, например, открытии отчета , проведении документа, открытии документа и т.д. Часто это связано именно с содержанием информации в базе данных. Причиной этой ошибки чаще всего является наличие «битой» информации внутри системы.

Получите 267 видеоуроков по 1С бесплатно:

Исправление

  1. Как правило, для решения данной проблемы достаточно почистить временные файлы в системе. .
  2. Если не помогло, но есть возможность попасть в конфигуратор, запустите .
  3. Если доступа в конфигуратор нет, и база тестовая — воспользуйтесь , которая располагается в папке программы.
  4. Если вышеперечисленные методы не помогают, но запускается режим 1С предприятие, выгрузите данные в новую базу с помощью обработки « «. Однако при этом возможны потери данных.
  5. Обновление
    . Еще одной причиной может стать наличие активных сеансов пользователей с разной версией клиентской части платформы 1С. То есть, например, в базе работает пользователь с платформой 1С 8.3.5.1517, а пытается подключиться другой, с версией 8.3.5.1444.

Если это не помогло — есть более изощренные способы решения данной проблемы. Например, с помощью HEX-редактора. Если Вам необходима квалифицированная помощь программистов 1С, обратитесь к нам! Подробности на странице

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

Результат работы — печатная форма таблицы, с колонками в виде «Код», «Наименование», «Внутреннее представление»
зацикленных групп, а также их родителей:) и колонки для составления схемы подчиненности зацикленных групп.
В печатную форму выводятся только группы, участвующие в замкнутых циклах подчиненности, например:
A=>A ; A=>B=>A ; A=>B=>C=>A. (A=>B означает, что B является родителем A). Правильные «ветки» подчиненности,
подсоединенные к циклам, например, «ветка» «D» : D=>A=>B=>A из выборки исключаются.

Чтобы исправить замкнутую подчиненность, достаточно разорвать цепочку групп в одном месте — у одной из групп
очистить реквизит «Родитель». Программа анализирует и рекомендует для этих целей использовать: а) группы, которые
раньше других созданы (соответсвенно, должны иметь по логике более высокий уровень); б) группы, наиболее
удаленные от элементов (справедливо для справочников, где элементы всегда расположены последними по иерархии).
Цепочки замкнутых групп в отчете разделены пустыми строками. Для очистки родителя одной из групп цепочки нужно нажать
клавишу Enter / кликнуть мышкой на ячейке в строке с исправляемой группой, в колонке «Очистить!!!» .

В прикрепленных файлах — архив с внешним отчетом и архив пример информационной базы с зацикленным справочником

для демонстрации работы отчета.

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

// УстРодитель — устанавливаемый родитель для группы справочника

// Спр — переменная, для записи объекта справочника

=
0
;

=
0
;

ПровРодитель
=
УстРодитель
;

СЗ
= СоздатьОбъект(«СписокЗначений
»
);

Пока ПустоеЗначение(ПровРодитель
) = 0
Цикл

Если ПровРодитель
= Спр
.ТекущийЭлемент
() Тогда

ПопыткаЗаписиЦиклическойСсылки
= 1
;

Прервать;

КонецЕсли;

Если СЗ
.НайтиЗначение
(ПровРодитель
) > 0
Тогда

ПопыткаЗаписиПринадлежностиКЦиклу
= 1
;

Прервать;

КонецЕсли;

СЗ
.ДобавитьЗначение
(ПровРодитель
);

ПровРодитель
= ПровРодитель
.Родитель
;

КонецЦикла;

Если (ПопыткаЗаписиЦиклическойСсылки
= 0)

И

(ПопыткаЗаписиПринадлежностиКЦиклу
= 0
) Тогда

Спр

Родитель
=
УстРодитель
;

Спр
.
Записать
();

КонецЕсли;

Одной из самых неприятнейших встречающихся ошибок при работе с 1С 8.3 или 8.2 является «Ошибка формата потока». Причин ее появления может быть множество и их не всегда легко установить. При этом окно уведомления об ошибке далеко не эталон информативности.

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

Наиболее распространенные причины

Самой распространенной причиной ошибки формата потока является неправильная обработка кэша программой 1С 8. Вспомните, не было ли перебоев электропитания до ее возникновения, обновления конфигурации? Корректно ли был завершен сеанс работы пользователя? Зачастую в таком случае ошибка формата потока будет возникать не на всех компьютерах. Проблемы лучше предупреждать, чем потом исправлять, поэтому рекомендуется использовать источники бесперебойного питания на компьютерах.

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

Как исправить ошибку формата потока

  1. Первым делом попробуйте . Если на одном компьютере программа работает нормально, а на другом появляется ошибка формата потока, то, скорее всего этот способ именно для вас.
  2. В том случае, если очистка кэша не помогла, попробуйте открыть информационную базу в режиме конфигуратора и запустите .
  3. Если вам не удалось зайти в конфигуратор, но база файловая – воспользуйтесь ChDBFl.exe. Данная утилита является аналогом тестирования и исправления ошибок в конфигураторе, но более простым.
  4. Убедитесь, что все текущие пользователи данной информационной базы используют одинаковую версию платформы. Если версии различаются, то установите всем актуальные.
  5. Если 1С запускается в режиме «Предприятие», то выгрузите все данные при помощи универсальной выгрузки/загрузки в новую базу.
  6. Отключите, а при необходимости удалите все фаерволы и антивирусы.
  7. Если данная информационная база клиент – серверная, то проверьте, хватает ли дискового пространства на сервере в папке для хранения временных данных.
  8. Удалите платформу 1С (через панель управления) и установите заново.
  9. Если информационная база открывается в конфигураторе, попробуйте выгрузить ее в файл *.dt и загрузить в пустую.
  10. Воспользоваться HEX-редактором, заменив содержимое чистой базы содержимым той, в которой произошла ошибка.

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

Добавить комментарий