Неправильное смещение внутри коллекции 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


Collaborator


Author

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

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

@dmpas

@Mr-Rm



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.
Это же баг и источник багов. Нельзя такое повторять. Есть другие мнения?

@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: цикличность метода Сдвинуть; приведение типа первого параметра

Ошибка при вызове метода контекста (Выполнить)

Автор Марат, 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

Участник

ru
Offline Offline


Всем привет. Помогите разобраться: в документе ЗаявкаНаПоставку есть ТабЧ, которая содержит инфу по счетам (Инвойсам).  Соответственно регистрируется это все в регистре накоплений ОборотыДенежныхСредств. Инвойс может быть оплачен (Приход,соот-но нужна СуммаПриход) и неоплачен (Расход,соот-но нужна СуммаРасход). В заявке может быть как оплаченные так и неоплаченные Инвойсы.

Код:

ВЫБРАТЬ
    ОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход,
    ОборотыДенежныхСредствОстаткиИОбороты.СуммаРасход,
    ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
    ОборотыДенежныхСредствОстаткиИОбороты.Период
ИЗ
    Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
        ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
ГДЕ
    (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
    И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
    И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты
ИТОГИ ПО
    Заявка

в результате получаю таблицу СуммаРасход, а хотелось бы СуммаРасход(что хочется).

jonik_joker

Участник

ru
Offline Offline


пробовал ч\з объединить.

ВЫБРАТЬ
    ОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход,
    ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
    ОборотыДенежныхСредствОстаткиИОбороты.Период
ИЗ
    Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
        ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
ГДЕ
    (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
    И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
    И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ОборотыДенежныхСредствОстаткиИОбороты.СуммаРасход,
    ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка,
    ОборотыДенежныхСредствОстаткиИОбороты.Период
ИЗ
    Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
        ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
ГДЕ
    (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
    И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
    И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты
ИТОГИ ПО
    Заявка

получил СуммаРасход(объединение)

jonik_joker

Участник

ru
Offline Offline


ч\з пакетный

ВЫБРАТЬ
    ОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход,
    ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
    ОборотыДенежныхСредствОстаткиИОбороты.Период
ПОМЕСТИТЬ Приход
ИЗ
    Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
        ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
ГДЕ
    (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
    И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Проведен = ИСТИНА
    И ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты = &ВариантОплаты
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ОборотыДенежныхСредствОстаткиИОбороты.СуммаРасход,
    Приход.СуммаПриход,
    Приход.Заявка КАК Заявка,
    Приход.Инвойс КАК Инвойс,
    Приход.НомерЗаказ,
    Приход.Период
ИЗ
    РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Приход КАК Приход
        ПО ОборотыДенежныхСредствОстаткиИОбороты.Заявка = Приход.Заявка
ИТОГИ ПО
    Заявка

результат

Kivals


jonik_joker, нет желания выкачивать все варианты и разбираться что там отличчается.
Напиши конкретный вопрос: что ты не можешь получить (или что не так)


Записан
jonik_joker

Участник

ru
Offline Offline


Kivals,  в результате выполнения запроса получается таблица вида

СуммПриход СуммРасход Инвойс
                     расх3
                     расх2
                     расх1
прих1                               инв1
прих2                               инв2

прих1=расх1,прих2=расх2

хотелось бы получить

СуммПриход СуммРасход Инвойс
                     расх3
прих1                               инв1
прих2                               инв2

Добавлено через 1 минуту и 2 секунды:
но сойдет и

СуммПриход СуммРасход Инвойс
                     расх3
прих1           расх1           инв1
прих2           расх2           инв2

« Последнее редактирование: 13-11-2013 20:37 от jonik_joker »
Записан
Kivals


По какому признаку у теб связаны «прих1=расх1,прих2=расх2» ?
В регистре ОборотыДенежныхСредств есть измерение Инвойс ?


Записан
jonik_joker

Участник

ru
Offline Offline


спасибо,сделал так:выгрузил результат запроса в 2 таблицы значений потом объединил.


Записан
Kivals


Вывод: свою задачу решил, с запросами так и не разобрался


Записан
jonik_joker

Участник

ru
Offline Offline


к сожалению, проще не получается:

В регистре ОборотыДенежныхСредств есть измерение Инвойс ?

измерение то есть, но оно заполняется только для регистра прихода.

По какому признаку у теб связаны «прих1=расх1,прих2=расх2» ?

прих — кол-во поступивших ден.средств, расх — кол-во ден. средств на изготовление.


Записан
Kivals


jonik_joker, если ты каким-то образом объединил данные в таблицах — значит условие есть, нужно с ним правильно работать в запросах. Если запрос получается слишком сложным или тормозит, а получаемые данные это необходимый результат от ввода документов — значит нужно менять (дорабатывать) структуру данных.
Почему измерение Инвойс не заполняется для расхода? Если будет 2 инвойса с одинаковыми суммами — кк ты с ними разберешься?


Записан
jonik_joker

Участник

ru
Offline Offline


Kivals, запрос и правда все в себя вобрал: 3 временные таблицы, вложенный и 4 пакетных запроса, в конце последнего — объединение 2 врем. таб. Короче развлекся как мог.

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

Хотелось бы,но эта прерогатива для меня в перспективе.

Почему измерение Инвойс не заполняется для расхода?

Так написан конструктор движений для расхода, туда детально не заглядывал, главное результат — измерение Инвойс не заполняется.

Если будет 2 инвойса с одинаковыми суммами — кк ты с ними разберешься?

По номеру


Записан
jonik_joker

Участник

ru
Offline Offline


Kivals,  не знаю в этой теме продолжать или новую начать…ладно, попробуем здесь начать: как писал выше я соединил 2 ТЗ в 3-ю посредством периода, т.е. отсортировал каждую таблицу по периоду и посредством циклов сравнивал строчку одной ТЗ с другой. Что такое период для каждой из таблиц : для таблицы прихода это дата прихода денежных средств, для таблицы расхода — соответственно дата производства. Сначала изготавливаем(ДатаРасхода), потом отгружаем(ДатаПрихода), отсюда, к примеру, для 1-го инвойса в заявке получаем приход-расход и т.д. И все чудесно, пока тестировал отчет мне попадались только заявки, где не оплачен был последний по дате производства (!) инвойс в заявке, но вот незадача…


Записан
jonik_joker

Участник

ru
Offline Offline


а если не оплачен инвойс в середине? получается после сортировки по периоду строка инвойса без оплаты табрасхода присоединится к строке табприхода, но уже следующего оплаченного инвойса, что неверно…сделал сортировку в каждой ТЗ по номеруинвойса,что более-менее приблизило меня к решению,теперь вопрос:
как после нахождения нужного неоплаченного инвойса при сравнении строк этих таблиц сдвинуть строку с уже оплаченным инвойсом табприход вниз, чтобы восстановить порядок? пробовал метод Сдвинуть() , но выдается ошибка

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

скорее всего неправильно понимаю метод


Записан
jonik_joker

Участник

ru
Offline Offline


все, сам разобрался.


Записан
Kivals


jonik_joker, ты будешь постоянно натыкаться на какие-то проблемы в связи данных, пока не сделаешь конкретную связь между таблицами (в твоем случае напрашивается по инвойсу)
ИМХО инвойс должен заполнятся при расходе, если это не так — значит это баг. Если не можешь сам это сделать по причине политики разработки — сообщи ответственным за эти движения.
Если дело не в политике и ты сам полностью отвечаешь за конфигурацию — тогда пытайся разобраться почему не заполняется.

Главная суть: весь программный анализ должен идти при проведении документов (сохранении данных), в отчетах должны работать только запросы. Тогда все необходимые отчеты будут на раз-два строиться с помощью СКД.


Записан

Понравилась статья? Поделить с друзьями:

Интересное по теме:

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

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии