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
changed the title
СписокЗначений.Сдвинуть() работает циклично
СписокЗначений и ТаблицаЗначений: Сдвинуть() работает циклично
May 16, 2019
@dmpas подскажи, как автор — почему сделан циклический сдвиг? Есть ли тайный смысл в этом?
@EvilBeaver вот я пытался поковыряться на ИТС и найти какой-нибудь старый синтаксис-помощник. Вот чует моя ж, что когда-то в 1С так и было.
Ща попросим какого-нибудь старожила вспомнить…
/cc @pumbaEO @artbear @allustin ?
Судя по-всему — нет. Оно всегда работало с выдачей исключения. Я не могу найти подтверждения, что было циклично
@EvilBeaver не было такого. Я помню 8.1 я пробовал и получал исходное исключение «Неправильное смещение внутри коллекции» а вот в 7.7 1С++ вроде как смещало циклично.
Copy link
Collaborator
Author
Когда первый параметр метода Сдвинуть() не является Числом или ЭлементомСпискаЗначений / СтрокойТаблицыЗначений соответственно, 1С пытается привести его к числу и выдает ошибку «Несоответствие типов (параметр номер ‘1’)» только если приведение невозможно. В OneScript происходит следующее:
СписокЗначений.Сдвинуть("2",1)
Ошибка: Значение не является значением объектного типа
ТаблицаЗначений.Сдвинуть("2",1)
Ошибка: Неверный тип аргумента
(То же и для СписокЗначений.Удалить("2")
)
Что важнее, совместимость или типизация?
Copy link
Collaborator
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.
Это же баг и источник багов. Нельзя такое повторять. Есть другие мнения?
Кажется в коде примера ошибка: в строке 2 СЗ2 еще не определен
Mr-Rm
added a commit
to Mr-Rm/OneScript
that referenced
this issue
Jul 5, 2019
…параметра к индексу +тесты
EvilBeaver
added a commit
that referenced
this issue
Jul 8, 2019
Fix #876: цикличность метода Сдвинуть; приведение типа первого параметра
Ошибка при вызове метода контекста (Выполнить)
Автор Марат, 17 ноя 2016, 11:24
0 Пользователей и 1 гость просматривают эту тему.
смотреть журнал регистрации — там видно каких прав не хватает.
смотреть в конфигураторе по этим объектам, каким ролям доступны права на эти объекты
ну и добавить роли. в каждой конфигурации по своему (тут совета дать не могу.)
Спасибо за Сказать спасибо
Доброго времени суток друзья!
При нажатии кнопки «подбор» в любом документе выходит вот такая хрень:
{ОбщийМодуль.УправлениеЗапасами.Модуль(2384)}: Ошибка при вызове метода контекста (Сдвинуть)
СписокТиповЦен.Сдвинуть(СтрокаТипаЦены, НомерОчередногоТипаЦен — ТекущийИндекс);
по причине:
Неправильное смещение внутри коллекции
Я не профи. Помогите а
Цитата: Ensam от 22 сен 2017, 18:00Но если проблема в правах, почему ошибка не во всех ситуациях возникает?
может быть права есть на справочник или документ, но не все записи, например. Вариантов много.
Спасибо за Сказать спасибо
Что я вижу в ЖР:
Доступ. Отказ в доступе
В графе «Метаданные»: Регистр накопления. Товары на складах
Действие: Чтение.
В доступных ролях у пользователя отмечены и чтение остатков доступных товаров, и чтение остатков товаров на складах. Куда еще ткнуться?
Добавлено: 26 сен 2017, 03:36
Методом тыка установлено, что если удалить пользователя из группы «Чтение нормативно-справочной информации», ошибка больше не возникает. Но почему?
Платформа: 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)}:УспехПоиска = ЗаполнитьПравилаЗаменыСсылокПоВсемГруппам();
по причине:
Неправильное смещение внутри коллекции
Вот данные отладчика в строке ошибки:
jonik_joker
Участник |
Всем привет. Помогите разобраться: в документе ЗаявкаНаПоставку есть ТабЧ, которая содержит инфу по счетам (Инвойсам). Соответственно регистрируется это все в регистре накоплений ОборотыДенежныхСредств. Инвойс может быть оплачен (Приход,соот-но нужна СуммаПриход) и неоплачен (Расход,соот-но нужна СуммаРасход). В заявке может быть как оплаченные так и неоплаченные Инвойсы. Код: ВЫБРАТЬ в результате получаю таблицу СуммаРасход, а хотелось бы СуммаРасход(что хочется). |
jonik_joker
Участник |
пробовал ч\з объединить. ВЫБРАТЬ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ получил СуммаРасход(объединение) |
jonik_joker
Участник |
ч\з пакетный ВЫБРАТЬ //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ результат |
Kivals |
jonik_joker, нет желания выкачивать все варианты и разбираться что там отличчается. |
||
|
jonik_joker
Участник |
Kivals, в результате выполнения запроса получается таблица вида СуммПриход СуммРасход Инвойс прих1=расх1,прих2=расх2 хотелось бы получить СуммПриход СуммРасход Инвойс Добавлено через 1 минуту и 2 секунды: СуммПриход СуммРасход Инвойс |
||
|
Kivals |
По какому признаку у теб связаны «прих1=расх1,прих2=расх2» ? |
||
|
jonik_joker
Участник |
спасибо,сделал так:выгрузил результат запроса в 2 таблицы значений потом объединил. |
||
|
Kivals
|
Вывод: свою задачу решил, с запросами так и не разобрался |
||
|
jonik_joker
Участник |
к сожалению, проще не получается: В регистре ОборотыДенежныхСредств есть измерение Инвойс ? измерение то есть, но оно заполняется только для регистра прихода. По какому признаку у теб связаны «прих1=расх1,прих2=расх2» ? прих — кол-во поступивших ден.средств, расх — кол-во ден. средств на изготовление. |
||
|
Kivals
|
jonik_joker, если ты каким-то образом объединил данные в таблицах — значит условие есть, нужно с ним правильно работать в запросах. Если запрос получается слишком сложным или тормозит, а получаемые данные это необходимый результат от ввода документов — значит нужно менять (дорабатывать) структуру данных. |
||
|
jonik_joker
Участник |
Kivals, запрос и правда все в себя вобрал: 3 временные таблицы, вложенный и 4 пакетных запроса, в конце последнего — объединение 2 врем. таб. Короче развлекся как мог. Если запрос получается слишком сложным или тормозит, а получаемые данные это необходимый результат от ввода документов — значит нужно менять (дорабатывать) структуру данных. Хотелось бы,но эта прерогатива для меня в перспективе. Почему измерение Инвойс не заполняется для расхода? Так написан конструктор движений для расхода, туда детально не заглядывал, главное результат — измерение Инвойс не заполняется. Если будет 2 инвойса с одинаковыми суммами — кк ты с ними разберешься? По номеру |
||
|
jonik_joker
Участник |
Kivals, не знаю в этой теме продолжать или новую начать…ладно, попробуем здесь начать: как писал выше я соединил 2 ТЗ в 3-ю посредством периода, т.е. отсортировал каждую таблицу по периоду и посредством циклов сравнивал строчку одной ТЗ с другой. Что такое период для каждой из таблиц : для таблицы прихода это дата прихода денежных средств, для таблицы расхода — соответственно дата производства. Сначала изготавливаем(ДатаРасхода), потом отгружаем(ДатаПрихода), отсюда, к примеру, для 1-го инвойса в заявке получаем приход-расход и т.д. И все чудесно, пока тестировал отчет мне попадались только заявки, где не оплачен был последний по дате производства (!) инвойс в заявке, но вот незадача… |
||
|
jonik_joker
Участник |
а если не оплачен инвойс в середине? получается после сортировки по периоду строка инвойса без оплаты табрасхода присоединится к строке табприхода, но уже следующего оплаченного инвойса, что неверно…сделал сортировку в каждой ТЗ по номеруинвойса,что более-менее приблизило меня к решению,теперь вопрос: Неправильное смещение внутри коллекции скорее всего неправильно понимаю метод |
||
|
jonik_joker
Участник |
все, сам разобрался. |
||
|
Kivals
|
jonik_joker, ты будешь постоянно натыкаться на какие-то проблемы в связи данных, пока не сделаешь конкретную связь между таблицами (в твоем случае напрашивается по инвойсу) Главная суть: весь программный анализ должен идти при проведении документов (сохранении данных), в отчетах должны работать только запросы. Тогда все необходимые отчеты будут на раз-два строиться с помощью СКД. |
||
|