Динамический список. Проблема с получением ссылки.

1. KirillZ44 12 11.07.24 14:46 Сейчас в теме
Добрый день, коллеги.

Конфигурация Розница 3.0.7.122, платформа 8.3.23.2040.

В типовой рознице у обработки РабочееМестоКассира имеется форма ФормаВыбораЧека. На форме имеется реквизит ТаблицаЧековККМ с типом ДинамическийСписок. У него установлено свойство ПроизвольныйЗапрос и указан следующий запрос:

ВЫБРАТЬ
    "12345678901234567890" КАК Номер,
    "12345678901234567890" КАК НомерККМ,
    ДАТАВРЕМЯ(2001, 1, 1, 0, 0, 0) КАК Дата,
    0 КАК СуммаДокумента,
    ВЫРАЗИТЬ("" КАК Строка(1024)) КАК Комментарий
ИЗ
    Справочник.НастройкиРабочегоМестаКассира КАК НастройкиРабочегоМестаКассираПереопределяемый


При вызове события ПриСозданииНаСервере, в зависимости от переданных параметров, запрос переопределяется. После этого, при активации события Выбор ТаблицыФормы мы получаем ссылку на документ с помощью свойства ТекущиеДанные и затем начинаем, к примеру, оформление возврата. При этом, ссылка отсутствует в списке колонок ТаблицыФормы.

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

ТекстЗапроса = 
"ВЫБРАТЬ
|	ЧекККМ.Ссылка КАК Ссылка,
|	ЧекККМ.Дата КАК Дата,
|	ЧекККМ.Номер КАК Номер
|ИЗ
|	Документ.ЧекККМ КАК ЧекККМ
|ГДЕ
|	НЕ ЧекККМ.ПометкаУдаления";
Показать



Суть проблемы в следующем: При активации события Выбор ТаблицыФормы в моем расширение в текущих данных отсутствует поле ссылка. Но если я скопирую реквизит ТаблицаЧековККМ с типовой формы и повторю те же самые действия, ссылка в текущих данных будет присутствовать.

Пробегал по всем свойствам, сравнивал формы через сравнение объектов, не могу найти, в чем отличия и почему так разниться поведение. Подскажите, может быть, кто-то сталкивался с подобным?
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. newlogin1 11.07.24 15:02 Сейчас в теме
(1)
Суть проблемы в следующем: При активации события Выбор ТаблицыФормы в моем расширение в текущих данных отсутствует поле ссылка. Но если я скопирую реквизит ТаблицаЧековККМ с типовой формы и повторю те же самые действия, ссылка в текущих данных будет присутствовать.

Если я не ошибаюсь в типовой так - у поля Ссылка стоит признак ИспользоватьВсегда, сама ссылка добавлена на форму и скрыта (видимость убрана) и поэтому ссылка доступна для использования пользователем (поля например вытащить) и програмно ее тоже можно вытащить
KirillZ44; baracuda; +2 Ответить
3. ddukatov 11.07.24 15:06 Сейчас в теме
(1) Может быть в типовой указана Основная таблица в настройках динамического списка?
KirillZ44; +1 Ответить
4. KirillZ44 12 12.07.24 06:07 Сейчас в теме
(2) (3) Прошу прощения за долгий ответ, коллеги.

Нет, в настройках динамического списка в типовой форме нет поля "Ссылка" и признаков "ИспользоватьВсегда". Так же нет и основной таблицы в настройках динамического списка.

Программно эта колонка тоже не добавляется, пробегал по всему коду открытия формы. Ну и скопировав к себе никаких доп обработок не делал. Просто переопределил запрос динамического списка и ссылка, в отличии от созданного мной динамического списка, там есть.
Прикрепленные файлы:
5. Pokemonus 12.07.24 08:06 Сейчас в теме
(4) от куда появится "необходимое" поле, если в тексте запроса в выборке полей не указана Ссылка?
ее сначала надо добавить в поля запроса
KirillZ44; +1 Ответить
6. KirillZ44 12 12.07.24 08:10 Сейчас в теме
(5) Запрос из примере выше переопределяется в зависимости от переданных параметров при открытии формы. К примеру, если оформляется чек возврата итоговый запрос содержит в себе поле "Ссылка":

|ВЫБРАТЬ
|	ДокументЧекККМ.Ссылка КАК Ссылка,
|	ДокументЧекККМ.Номер КАК Номер,
|	ДокументЧекККМ.НомерЧекаККМ КАК НомерККМ,
|	ДокументЧекККМ.Дата КАК Дата,


И в моем примере, где я в двух динамических списках переопределяю этот запрос на запрос вида:
ТекстЗапроса = 
"ВЫБРАТЬ
|    ЧекККМ.Ссылка КАК Ссылка,
|    ЧекККМ.Дата КАК Дата,
|    ЧекККМ.Номер КАК Номер
|ИЗ
|    Документ.ЧекККМ КАК ЧекККМ
|ГДЕ
|    НЕ ЧекККМ.ПометкаУдаления";
Показать


В одном, скопированном с типовой форме, ссылка присутствует, а в другом нет.

Надеюсь, правильно понял ваш вопрос.
7. Pokemonus 12.07.24 08:16 Сейчас в теме
(6)
В одном, скопированном с типовой форме, ссылка присутствует, а в другом нет.

"присутствует"/"отсутствует" где?

в тексте запроса?
KirillZ44; +1 Ответить
9. Pokemonus 12.07.24 08:20 Сейчас в теме
(7) в догонку:

если у динамического списка установлено свойство "Основная таблица" и это таблица ссылочного типа,
тогда надо пользовать не
Элементы.Список.ТекущиеДанные

а
Элементы.Список.ТекущаяСтрока

это всегда будет ссылка текущей строки списка, вне зависимости присутствия в тексте запроса поля Ссылка.
KirillZ44; +1 Ответить
10. KirillZ44 12 12.07.24 08:26 Сейчас в теме
(7) При активации события Выбор таблица формы динамического списка, скопированного с типовой формы, в свойстве ТекущиеДанные содержит поле "Ссылка", а таблица формы динамического списка, созданного мной, его не содержит.

Приложит скриншоты значений свойства ТекущиеДанные, динамических списков и их переопределения. Вроде бы все одинаковая, но результат разный.
Прикрепленные файлы:
12. Pokemonus 12.07.24 08:33 Сейчас в теме
(10) конкретный вопрос:
какое значение имеет
Элементы.ТаблицаЧековККМ.ТекущаяСтрока

ВНИМАНИЕ! не ТекущиеДанные, а ТекущаяСтрока?
13. Pokemonus 12.07.24 08:35 Сейчас в теме
(12) ну, раз уже победил - тогда все
14. KirillZ44 12 12.07.24 08:44 Сейчас в теме
(12) Содержит порядковый номер строки.
Прикрепленные файлы:
15. user1992988 12.07.24 08:50 Сейчас в теме
(14)
порядковый номер строки
О сколько открытий тебя еще ждёт...
KirillZ44; +1 Ответить
16. KirillZ44 12 12.07.24 08:51 Сейчас в теме
(15) Правильнее было сказать - идентификатор строки, вы об этом?
17. user1992988 12.07.24 08:52 Сейчас в теме
(16) Да, там синтетика.
KirillZ44; +1 Ответить
8. spacecraft 12.07.24 08:17 Сейчас в теме
(1) там помимо подмены текста запроса есть еще работа с ДС.
Самый простой способ, после подмены теста запроса:
ТаблицаЧековККМ.УстановитьОбязательноеИспользование("Ссылка", Истина);
KirillZ44; +1 Ответить
11. KirillZ44 12 12.07.24 08:30 Сейчас в теме
(8) В комментарии 10 я скопировал динамический список из типовой формы к себе на форму и самостоятельно переопределил запрос, то есть не устанавливаю обязательное использование. При этом, результат работы двух списков разный.

Я, в целом, проблему обошел и скрыл поле Ссылка с установкой свойства "Использовать всегда", спасибо коллегам, но для собственного развития хотел бы понять, что изначально делал не так и почему работает по разному.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот