Неправильное смещение внутри коллекции 1с ошибка

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more…

closed

Исправлена ошибка при нажатии на кнопку «Порядок из основной формы» в форме настроек колонок в управляемом приложении

Category:

Динамический список


Description

Неправильное смещение внутри коллекции
{ИнструментыРазработчикаTormozit Обработка.ирДинамическийСписок.Форма.НастройкиКолонок.Форма(168)}:                ЭлементыФормы.НастройкиКолонок.Значение.Сдвинуть(СтрокаКолонки, -НастройкиКолонок.Индекс(СтрокаКолонки)+Счетчик);
{ИнструментыРазработчикаTormozit Обработка.ирДинамическийСписок.Форма.ФормаУпр.Форма(810)}:    ВыбранноеЗначение = ФормаНастроек.ОткрытьМодально();

по причине:
Неправильное смещение внутри коллекции

В списке таблицы Документ.ПеремещенияМестаХранения


  • Sprint/Milestone set to Разработка
  • Related to Task #886890: В форме «Настройка колонок» добавлена кнопка «Порядок из основной формы» added
  • Start date set to 2020-09-28
  • Subject changed from При нажатии на кнопку «Порядок из основной формы» в форме настроек колонок в управляемом приложении возникает ошибка to Исправлена ошибка при нажатии на кнопку «Порядок из основной формы» в форме настроек колонок в управляемом приложении
  • Status changed from New to Closed
  • Sprint/Milestone changed from Разработка to 5.59

Also available in: Atom
PDF

@Mr-Rm
Mr-Rm

changed the title
СписокЗначений.Сдвинуть() работает циклично

СписокЗначений и ТаблицаЗначений: Сдвинуть() работает циклично

May 16, 2019

@EvilBeaver

@dmpas подскажи, как автор — почему сделан циклический сдвиг? Есть ли тайный смысл в этом?

@dmpas

@EvilBeaver вот я пытался поковыряться на ИТС и найти какой-нибудь старый синтаксис-помощник. Вот чует моя ж, что когда-то в 1С так и было.

@EvilBeaver

Ща попросим какого-нибудь старожила вспомнить…

/cc @pumbaEO @artbear @allustin ?

@EvilBeaver

Судя по-всему — нет. Оно всегда работало с выдачей исключения. Я не могу найти подтверждения, что было циклично

@dmpas

@ghost

@EvilBeaver не было такого. Я помню 8.1 я пробовал и получал исходное исключение «Неправильное смещение внутри коллекции» а вот в 7.7 1С++ вроде как смещало циклично.

@Mr-Rm



Copy link


Contributor


Author

Когда первый параметр метода Сдвинуть() не является Числом или ЭлементомСпискаЗначений / СтрокойТаблицыЗначений соответственно, 1С пытается привести его к числу и выдает ошибку «Несоответствие типов (параметр номер ‘1’)» только если приведение невозможно. В OneScript происходит следующее:
СписокЗначений.Сдвинуть("2",1)
Ошибка: Значение не является значением объектного типа
ТаблицаЗначений.Сдвинуть("2",1)
Ошибка: Неверный тип аргумента
(То же и для СписокЗначений.Удалить("2"))

Что важнее, совместимость или типизация?

@dmpas

@Mr-Rm



Copy link


Contributor


Author

Удивительная несогласованность в 1С. Пробуем код:

ТЗ1 = Новый ТаблицаЗначений;
ТЗ1.Колонки.Добавить("К1");
Ст11 = ТЗ2.Добавить();
Ст12 = ТЗ2.Добавить();
ТЗ2 = Новый ТаблицаЗначений;
ТЗ2.Колонки.Добавить("К1");
Ст2 = ТЗ2.Добавить();
ТЗ1.Сдвинуть(Ст2,1);

Получаем ошибку: «Недопустимое значение параметра (параметр номер ‘1’) (Строка не принадлежит коллекции)«.
Теперь аналогичное:

СЗ1 = Новый СписокЗначений;
Эл11 = СЗ1.Добавить("э11");
Эл12 = СЗ1.Добавить("э12");
СЗ2 = Новый СписокЗначений;
Эл2 = СЗ2.Добавить("э2");
СЗ1.Сдвинуть(Эл2, 1);

Просто сдвигается 0-й элемент! СЗ1.Индекс(Эл2) честно возвращает -1.
Это же баг и источник багов. Нельзя такое повторять. Есть другие мнения?

@EvilBeaver

Кажется в коде примера ошибка: в строке 2 СЗ2 еще не определен

Mr-Rm

added a commit
to Mr-Rm/OneScript
that referenced
this issue

Jul 5, 2019

@Mr-Rm

…параметра к индексу +тесты

EvilBeaver

added a commit
that referenced
this issue

Jul 8, 2019

@EvilBeaver

Fix #876: цикличность метода Сдвинуть; приведение типа первого параметра

Войти или зарегистрироваться

8.х ошибка

Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем Uliss, 23 фев 2016.




0/5,
Голосов: 0
  1. TopicStarter Overlay

    Uliss

    Offline

    Uliss
    Опытный в 1С

    Регистрация:
    20 мар 2010
    Сообщения:
    195
    Симпатии:
    0
    Баллы:
    26

    Добрый день
    конфа УТ 10.3.34.1 скульная
    У одного из пользователей перестал открываться справочник номенклатуры. Выходит ошибка:
    {ОбщийМодуль.УправлениеЗапасами.Модуль(2384)}: Ошибка при вызове метода контекста (Сдвинуть)
    СписокТиповЦен.Сдвинуть(СтрокаТипаЦены, НомерОчередногоТипаЦен — ТекущийИндекс);
    по причине:
    Неправильное смещение внутри коллекции

    Где копать? Подозреваю что это связано с настройками пользователя, может какой то сбой там. Как очистить? может поможет…


    Uliss,
    23 фев 2016
    #1

  2. Vlad

    Offline

    Vlad
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.519
    Симпатии:
    20
    Баллы:
    29

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


    Vlad,
    23 фев 2016
    #2
  3. TopicStarter Overlay

    Uliss

    Offline

    Uliss
    Опытный в 1С

    Регистрация:
    20 мар 2010
    Сообщения:
    195
    Симпатии:
    0
    Баллы:
    26

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


    Uliss,
    23 фев 2016
    #3

  4. Vlad

    Offline

    Vlad
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.519
    Симпатии:
    20
    Баллы:
    29

    Посмотрел модуль. Там что-то с типами цен. С правами пользователя все в порядке? Может удалить не используемые или помеченные на удаление типы цен?


    Vlad,
    23 фев 2016
    #4
  5. TopicStarter Overlay

    Uliss

    Offline

    Uliss
    Опытный в 1С

    Регистрация:
    20 мар 2010
    Сообщения:
    195
    Симпатии:
    0
    Баллы:
    26

    У остальных пользователей все работает. Не в правах дело думаю.


    Uliss,
    23 фев 2016
    #5

  6. Vlad

    Offline

    Vlad
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.519
    Симпатии:
    20
    Баллы:
    29

    Так типы цен еще посмотри. На них же ругается. Удали ненужное, добавь чего-нибудь новое. Возможно, есть там какой-то зацеп на конкретного пользователя.


    Vlad,
    23 фев 2016
    #6
  7. TopicStarter Overlay

    Uliss

    Offline

    Uliss
    Опытный в 1С

    Регистрация:
    20 мар 2010
    Сообщения:
    195
    Симпатии:
    0
    Баллы:
    26

    создал тип цен, справочник открылся. мда.


    Uliss,
    23 фев 2016
    #7
(Вы должны войти или зарегистрироваться, чтобы ответить.)
Показать игнорируемое содержимое
Похожие темы

  1. Helmut

    8.х
    Ошибка при обноавлнии ЗУП Ошибка записи!

    Helmut,
    5 фев 2010
    , в разделе: Установка платформы «1С:Предприятие 8»
    Ответов:
    7
    Просмотров:
    2.349
    Draco
    9 фев 2010

  2. zxcv

    8.х ОБМЕН
    Ошибка СУБД: ошибка dbeng8

    zxcv,
    3 мар 2014
    , в разделе: Обмен данными в «1С:Предприятие 8»
    Ответов:
    7
    Просмотров:
    1.946
    zxcv
    4 мар 2014

Загрузка…
Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Поиск

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние сообщения

Больше…

Сдвигает строку таблицы значений с указанным смещением

Синтаксис

Метод Сдвинуть() имеет следующий синтаксис:

Сдвинуть(Строка, Смещение)

А также альтернативный англоязычный синтаксис:

Move(ValueTableString, Offset)

Параметры

Описание параметров метода Сдвинуть():

Имя параметра* Тип Описание
Строка Число Индекс сдвигаемой строки таблицы значений
СтрокаТаблицыЗначений Сама сдвигаемая строка
Смещение Число Количество строк, на которое необходимо переместить строку
*Жирным шрифтом выделены обязательные параметры

Описание

Метод Сдвинуть() сдвигает строку таблицы значений с указанным смещением вверх или вниз таблицы. Если указано положительное смещение, строка будет передвинута вниз (ближе к концу таблицы значений), если отрицательное — вверх (ближе к началу таблицы)

Внимание! В случае, если осуществляется попытка сместить строку за границы индексов таблицы, будет выдано сообщение об ошибке: «Неправильное смещение внутри коллекции». Программисту следует самостоятельно следить за тем, чтобы индекс сдвигаемой строки не выходил за границы таблицы

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Сдвинуть():

//получаем текущую строку
ТекущаяСтрока = ЭлементыФормы.тз.ТекущаяСтрока;

//сдвинуть вниз
Сдвиг = 1;
НовыйИндекс = тз.Индекс(ТекущаяСтрока) + Сдвиг;
Если НовыйИндекс < тз.Количество() Тогда 
	//строго меньше количества строк
	тз.Сдвинуть(ТекущаяСтрока, Сдвиг);
КонецЕсли;

//сдвинуть вверх
Сдвиг = -1; 			
НовыйИндекс = тз.Индекс(ТекущаяСтрока) + Сдвиг; 
Если НовыйИндекс >= 0 Тогда
	//больше или равен нулю (начальному индексу)
	тз.Сдвинуть(ТекущаяСтрока, Сдвиг);
КонецЕсли;

Читайте также:

Программная работа с таблицей значений

Поделиться страницей в соц.сетях

Добрый день!

Платформа: 8.3.20.1789
Режим БД: клиент-серверный
Конфигурация. Название: Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.118.14)
Конфигурация. Основной режим запуска: Управляемое приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим управления блокировкой данных: Управляемый
Конфигурация. Режим совместимости: Версия8_3_18
Конфигурация. Версия БСП: 301
Инструменты разработчика. Версия: Конфигурация 6.41.2
Инструменты разработчика. Инструмент: Прочее
Инструменты разработчика. Перехват клавиатурного ввода: Да
Инструменты разработчика. Объекты на сервере: Да
Инструменты разработчика. Асинхронность запрещена: Нет
Инструменты разработчика. Разрешены имитаторы: Да
Расширения. СМ_Общее (1.0.0.1)
Расширения. СМ_Роли (1.0.0.1)
Расширения. СМ_Модули (1.0.0.1)
Расширения. СМ_ДатыЗапрета (1.0.0.1)
Клиент. Приложение: Управляемое приложение 64б
Клиент. Проверка модальных вызовов: Да
Клиент. Язык интерфейса конфигурации: ru
Клиент. Язык интерфейса системы: ru
Клиент. ОС: Microsoft Windows Server 2016 Standard 64-bit Русский
Клиент. ОС от имени администратора: Нет
Клиент. ОС Active code page: 866
Сервер. ОС: Microsoft Windows Server 2012 R2 Standard 64-bit Русский
Сервер. Процесс: 64б
Сервер. Отладка: нет

Собственно проблема наблюдается при попытке нажатия на кнопку «В правила» из закладки «Группы дублей».
Текст ошибки:
Неправильное смещение внутри коллекции
{ОбщийМодуль.ирОбщий.Модуль(19796)}:ТипизированнаяТаблица.Колонки.Сдвинуть(НоваяКолонка, ТаблицаДанных.Колонки.Индекс(ОригинальнаяКолонка) — ТипизированнаяТаблица.Колонки.Индекс(НоваяКолонка));
{ОбщийМодуль.ирОбщий.Модуль(27159)}:КопияТаблицыДанных = ирОбщий.СузитьТипыКолонокТаблицыБезПотериДанныхЛкс(КопияТаблицыДанных,, ИмяПоляСсылки);
{Обработка.ирПоискДублейИЗаменаСсылок.Форма.Форма.Форма(2690)}:СтрокаПорядка = ирОбщий.ПрочитатьДополнительныеПоляСсылающихсяОбъектовЛкс(ЭлементыФормы.НайденныеСсылки, КомпоновщикДопПолей);
{Обработка.ирПоискДублейИЗаменаСсылок.Форма.Форма.Форма(2683)}:ПрочитатьДополнительныеПоляСсылающихсяОбъектов(); // Это надо делать в самом конце, чтобы пользователь мог прервать этот долгий процесс
{Обработка.ирПоискДублейИЗаменаСсылок.Форма.Форма.Форма(954)}:ЗагрузитьРезультатПоискаСсылокВТабличноеПоле(мСсылкиНаЭлементыГрупп);
{Обработка.ирПоискДублейИЗаменаСсылок.Форма.Форма.Форма(3332)}:УспехПоиска = ЗаполнитьПравилаЗаменыСсылокПоВсемГруппам();

по причине:
Неправильное смещение внутри коллекции

Вот данные отладчика в строке ошибки:

Понравилась статья? Поделить с друзьями:
  • Неправильное управление это какая ошибка
  • Неправильное склонение слова это какая ошибка
  • Неправильное управление синтаксическая ошибка
  • Неправильное разделение предложения какая ошибка
  • Неправильное указание места представления сведений код ошибки 01002000000