Понедельник, 07.10.2024, 08:00
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Подбор и обработка. Произвольный алгоритм. Изменение отбора
GetNightДата: Среда, 08.12.2021, 19:07 | Сообщение # 1
Подполковник
Группа: Проверенные
Сообщений: 109
Репутация: 64
Статус: Оффлайн
Платформа: 8.3.16.1876
Режим БД: клиент-серверный
Конфигурация. Название: Управление производственным предприятием для Украины, редакция 1.3 (1.3.67.2)
Конфигурация. Основной режим запуска: Обычное приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим управления блокировкой данных: Управляемый
Конфигурация. Режим совместимости: Версия8_3_10
Конфигурация. Версия БСП: 102
Инструменты разработчика. Версия: Портативный 6.21.2p
Инструменты разработчика. Инструмент: Прочее
Инструменты разработчика. Перехват клавиатурного ввода: Нет
Инструменты разработчика. Объекты на сервере: Нет
Инструменты разработчика. Серверный модуль: Нет
Клиент. ОС: Майкрософт Windows 10 Корпоративная LTSC 64-разрядная Русский
Клиент. Приложение: Обычное приложение 64б
Клиент. Проверка модальных вызовов: Нет
Клиент. Язык интерфейса конфигурации: ru
Клиент. Язык интерфейса системы: ru_UA
Клиент. От имени администратора Windows: Да

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

и все начинает работать идеально

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

Штрихкод: 40144979      уже имеет владельца "Цукерки MAMBA 106г жувальні".
Обработка объекта InformationRegisterRecordSet.Штрихкоды(Штрихкод:string(40144979     ), Владелец:CatalogRef.Номенклатура(449eedde-188e-11e9-81a1-00155d000801), ТипШтрихкода:ChartOfCharacteristicTypesRef.ТипыШтрихкодов(39fddca4-7cc4-49d4-a09d-9fe5517b4df6), ЕдиницаИзмерения:CatalogRef.ЕдиницыИзмерения(449eeddf-188e-11e9-81a1-00155d000801), ХарактеристикаНоменклатуры:CatalogRef.ХарактеристикиНоменклатуры(00000000-0000-0000-0000-000000000000), СерияНоменклатуры:CatalogRef.СерииНоменклатуры(00000000-0000-0000-0000-000000000000), Качество:CatalogRef.Качество(d05404a0-6bce-449b-a798-41ebe5e5b977))
{ВнешняяОбработка.ирОбщий.МодульОбъекта(15870)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Штрихкоды"!



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

(уже сталкивался несколько раз ранее при попытке корректировки регистров, но не было времени для развернутого описания)
Прикрепления: 9872436.jpg (132.8 Kb) · 7341277.jpg (178.3 Kb)


Сообщение отредактировал GetNight - Среда, 08.12.2021, 22:34
 
tormozitДата: Четверг, 09.12.2021, 21:42 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Обработка регистра по описанию не выглядит ошибкой. Поэтому нужно описать это его отдельно в виде пожелания. А пожелания рассматриваются во вторую очередь.
 
GetNightДата: Пятница, 10.12.2021, 17:28 | Сообщение # 3
Подполковник
Группа: Проверенные
Сообщений: 109
Репутация: 64
Статус: Оффлайн
Гм. А что же тогда это?..
{ВнешняяОбработка.ирОбщий.МодульОбъекта(15870)}: Ошибка при вызове метода контекста (Записать): Не удалось записать

Давайте от обратного. Как отобрать штрихкоды и удалить в них пробелы?

1. отбираю подбром и обработкой штрихкоды с пробелами
2. ставлю алгоритм удалить пробелы
3. запускаю на выполнение... ошибка.

я что-то делаю не так? что?
 
tormozitДата: Пятница, 10.12.2021, 19:35 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Произвольный алгоритм - обработка для программиста. Он должен знать как правильно изменить набор записей регистра. С таким же успехом можно и некорректные изменения и в ссылочном объекте сделать (например пустую дату установить документу). При этом я согласен, что для набора записей можно сделать удобнее. Но это не ошибка ИР.
 
GetNightДата: Суббота, 11.12.2021, 13:09 | Сообщение # 5
Подполковник
Группа: Проверенные
Сообщений: 109
Репутация: 64
Статус: Оффлайн
На скрине виден код, который я вводил в произвольный алгоритм:

Код
Объект.Штрихкод = СоклЛП(Объект.Штрихкод)

И он меняется, я проверяю в алгоритме выводом сообщения.
Но не записывается. Из-за того, что сменился отбор (хотя, полагаю, это могло быть проработано на уровне самого инструмента).

Но даже если так - я корректирую отбор, но это тоже не помогает...
Код
ОбъектБД.Отбор.Штрихкод.Значение = Объект.Штрихкод
Возможно, отбор закрыт от изменений. Судя по всему, обработка думает, что этот элемент уже занят. Но ведь он занят тем же элементом, который я и пытаюсь  изменить...

Хотя в модуле набора записей этого регистра я меняю в отборе старое значение на новое и всё работает  (на скринах есть) - новые записи очищаются от пробелов. У меня же задача - исправить старые. Это - возможно?

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


Сообщение отредактировал GetNight - Суббота, 11.12.2021, 13:15
 
tormozitДата: Суббота, 11.12.2021, 20:11 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Сделал за тебя отдельную тему. Тяжело отделять 2 разные проблемы, которые ты тут смешал. Каждый раз открываю эту тему, начинаю читать начало чтобы вспомнить суть, а потом выясняется что в конце ты уже пишешь про другое. Дооформи первое сообщение.

Да. При записи объекта сейчас отбор не изменяется (набор пишется с исходным отбором). При изменении ключа возникают скрытые опасности и одновременно сложности для инструмента, например создание дубля строки или ненамеренное затирание существующей строки. Его менять сейчас можно только в обработке "Изменить реквизиты / Добавить строку" и эта возможность появилась там только в прошлом году и включается флажком "Изменять измерения".
 
tormozitДата: Суббота, 11.12.2021, 20:33 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Цитата GetNight ()
Приведите, пожалуйста, пример, каким образом я должен был ввести этот код, чтобы это сработало.
Можно добавить

Код
ОбъектБД.Записать();
 
GetNightДата: Понедельник, 13.12.2021, 16:34 | Сообщение # 8
Подполковник
Группа: Проверенные
Сообщений: 109
Репутация: 64
Статус: Оффлайн
Цитата tormozit ()
Дооформи первое сообщение.
К сожалению, я теперь не вижу кнопок "Правка" в своих сообщениях, видимо, их можно менять только до вашего ответа.
Но в принципе, суть передана. В будущем постараюсь делить проблемы на отдельные темы.

попробовал сделать ОбъектБД.Записать(), не помогло...


Код
Штрихкод = Объект.Штрихкод;
Объект.Штрихкод = СокрЛП(Объект.Штрихкод);
Сообщить("Отбор до:    (" + ОбъектБД.Отбор.Штрихкод.Значение + ")");
ОбъектБД.Отбор.Штрихкод.Значение = Объект.Штрихкод;
Сообщить("Отбор после: (" + ОбъектБД.Отбор.Штрихкод.Значение + ")");
ОбъектБД.Записать();
Сообщить(Объект.Владелец.Наименование + " - (" + Штрихкод + ") >> (" + Объект.Штрихкод + ")");


Отбор до:    (071737498088 )
Отбор после: (071737498088)

Штрихкод: 071737498088  уже имеет владельца "яСигари Captain Black LC Silver (пач.20)".

Обработка объекта InformationRegisterRecordSet.Штрихкоды(Штрихкод:string(071737498088 ), Владелец:CatalogRef.Номенклатура(f46ccd44-f75e-11e6-b837-00155d000802), ТипШтрихкода:ChartOfCharacteristicTypesRef.ТипыШтрихкодов(39fddca4-7cc4-49d4-a09d-9fe5517b4df6), ЕдиницаИзмерения:CatalogRef.ЕдиницыИзмерения(8f967f7d-82fb-11e7-80c0-828eb0592153), ХарактеристикаНоменклатуры:CatalogRef.ХарактеристикиНоменклатуры(00000000-0000-0000-0000-000000000000), СерияНоменклатуры:CatalogRef.СерииНоменклатуры(00000000-0000-0000-0000-000000000000), Качество:CatalogRef.Качество(d05404a0-6bce-449b-a798-41ebe5e5b977))

{(7)}: Ошибка при вызове метода контекста (Записать): Не удалось записать: "Штрихкоды"!


Вы говорите, есть риск затереть... как я понимаю, изменение отбора может сделать лишь человек, который понимает его предназначение (для новичка его заполнение вообще неочевидно).

А без указания отбора - можно сделать так - проверять - новый отбор будет ли содержать объекты?
если нет - то смело менять. Пусть не 100% решение, но хотя бы 95%.

В нашем случае новый отбор вернёт пустой набор записей.


Сообщение отредактировал GetNight - Понедельник, 13.12.2021, 16:41
 
tormozitДата: Вторник, 14.12.2021, 00:13 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
ОбъектБД.Записать() должен помочь записать объект, т.к. записывает ровно тот набор записей, который находится в переменной ОбъектБД. И в таком случае объект в переменной уже перестанет быть модифицированным и потому не будет записан после выполнения алгоритма.
Отключи (закомментируй код обработчиков ПередЗаписью и ПриЗаписи), выполни свою обработку и покажи результат.
Если проблема не уйдет, то поставь точку останова в отладчике в обработчике ПередЗаписью и покажи отбор для каждой остановки (вызова обработчика).
 
  • Страница 1 из 1
  • 1
Поиск: