Вывести в форме списка документов реквизит этой формы

реквизит справочника на форму списка доков

Я
   dvrk

07.06.21 — 10:12

Привет, нужно подскажите как на форме списка в колонку запихнуть значение реквизита контрагента соответствующее значению контрагента из документа

  

Партнерская программа EFSOL Oblako

   dvrk

1 — 07.06.21 — 10:12

-нужно

   dvrk

2 — 07.06.21 — 10:15

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

   ДенисЧ

3 — 07.06.21 — 10:19

УФ/ОФ?

   Обработка

4 — 07.06.21 — 10:20

Зачем создавать колонку? Нужно просо вывести. Если ваш список это как раз журнал документов а контрагент реквизит документа.

   dvrk

5 — 07.06.21 — 10:22

(3) ОФ (4) не совсем понял «просто вывести»

   acht

6 — 07.06.21 — 10:24

(0) > нужно подскажите как

О боже, боже, что же о нас подумают на известном телеграм канале?

(5) Твое «запихнуть» сводится к «вывести» — вызову .УстановитьТекст внутри цикла в обработчике ПриПолученииДанных. Код напишешь сам.

   ДенисЧ

7 — 07.06.21 — 10:27

Если оф — тогда в ПриПолученииДанных — рисуй в эту колонку что хочешь.

   Бишбармак

8 — 07.06.21 — 10:29

Судя по предыдущим темам у автора УТ 10.3

   dvrk

9 — 07.06.21 — 10:30

(8) +

   Обработка

10 — 07.06.21 — 10:31

Для начала что за список?!

   dvrk

11 — 07.06.21 — 10:32

(7) (6) нет такого обработчика (10) РТиУ

   ДенисЧ

12 — 07.06.21 — 10:34

(11) Врёшь. Есть, если это обычные формы.

   dvrk

13 — 07.06.21 — 10:38

(12) ут 10, форма допилена, она ж обычная

   dvrk

14 — 07.06.21 — 10:39

(13) имею ввиду, что форма используется типовая с доработками

   ДенисЧ

15 — 07.06.21 — 10:41

(13) И что? Добавить надо этот обработчик, а не ждать, как ворона на дубе, когда на неё сыр свалится

   Василий Алибабаевич

16 — 07.06.21 — 10:41

(13) «ПриПолучениииДанных» — оно платформенная фишка. Оно есть хоть в «типовой», хоть в «допиленной». Лишь бы форма была неуправляемая.

   dvrk

17 — 07.06.21 — 10:43

(16) я понял, но нет его в вываливающемся списке обработчиков (15) нет его в списке

   dvrk

18 — 07.06.21 — 10:45

я что могу не отличить УФ от ОФ что ли?

   Василий Алибабаевич

19 — 07.06.21 — 10:48

(18) Тут согласен — интрига…

(17) Искать не «в вываливающемся списке обработчиков», а в палитре свойств элемента управления. В списке присутствуют только УЖЕ ОПРЕДЕЛЕННЫЕ обработчики. События которым обработчики не определены в список не попадают.

   acht

20 — 07.06.21 — 10:49

(17) Алё, это событие не формы, а списка, запихивающий

   ДенисЧ

21 — 07.06.21 — 10:49

Аааа! Обработчики воруют, дожили!….

А почему у меня есть?

Попробуй ПКМ по списку и свойства… Там поищи

   dvrk

22 — 07.06.21 — 10:52

ну да, не там смотрел…

   1Сергей

23 — 07.06.21 — 10:53

(21) можно теперь обработчиками барыжить?

   acht

24 — 07.06.21 — 10:54

(23) У одних отбирать, другим отдавать.

   dvrk

25 — 07.06.21 — 10:55

да ладно вам, бывает

   d_monah

26 — 07.06.21 — 10:55

(23) Нельзя,1С запрещает.

   ДенисЧ

27 — 07.06.21 — 10:55

(23) Учти, я у тебя покупать не буду))

   d_monah

28 — 07.06.21 — 10:57

(27) Купи у меня,за полцены отдам

   ДенисЧ

29 — 07.06.21 — 10:58

(28) Мне свои-то девать некуда… Вон, СП куча валяется, обесценивается… А тут ещё обработчики…

   d_monah

30 — 07.06.21 — 11:02

(29) От СП толку особого нет,в отличии от обработчиков)).Сп интересен в первый год работы))

   dvrk

31 — 07.06.21 — 11:26

я мб туплю, у ПРиПолученииДанных параметр Элемент, а как мне обратиться к Элементам всем чтобы циклом пройтись?

   1Сергей

32 — 07.06.21 — 11:27

(31) Для кажного …

   Василий Алибабаевич

33 — 07.06.21 — 11:39

(31) Не нужно циклом никуда проходиться. Оно само для каждой строки списка генерится будет.

   dvrk

34 — 07.06.21 — 12:03

(32) для каждого чего, коллекции нет

   ДенисЧ

35 — 07.06.21 — 12:09

(31)

ПриПолученииДанных (OnDataGet)

Синтаксис:

ПриПолученииДанных(<ОформленияСтрок>)

Параметры:

<ОформленияСтрок>

Тип: ОформленияСтрок.

Коллекция оформления строк табличного поля.

Какой элемент?

   dvrk

36 — 07.06.21 — 12:11

(35) Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)

   ДенисЧ

37 — 07.06.21 — 12:14

(36) Элемент — это твой список.

А вот ОформленияСтрок — как раз строки, в которых рисовать надо

   dvrk

38 — 07.06.21 — 12:21

(37) в смысле рисовать то? мне нужно заполнить колонку, я создал реквизит Булево, указал путикданным в колонке и мне надо реквизит.значение = контрагент.реквизит.значение

   dvrk

39 — 10.06.21 — 10:15

оформлениестроки.ДанныеСтроки.Реквизит1 = «Да»

Поле объекта недоступно для записи (Реквизит1)

  

dvrk

40 — 10.06.21 — 10:20

ладно пох через текст сделаю

       Формы списка внутренних, входящих и исходящих документов позволяют пользователю самому настроить перечень колонок, которые будут отображаться в форме. В том числе в отдельные колонки можно выводить и дополнительные свойства, и дополнительные сведения документов.

       Для настройки списка следует воспользоваться командой в форме списка: Все действия — Настройка — Изменить форму.

       Для добавления колонки с дополнительным свойством следует в дереве настроек формы, в элементе формы «Список», выбрать поле «Ссылка» и нажать кнопку «Добавить поля».

       При этом откроется окно со списком реквизитов документа для размещения в форме.

       После выбора вами необходимого реквизита он появится в окне «Настройка формы» в составе элемента формы «Список», и будет добавлен в качестве дополнительной колонки в списке документов.

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

Что ни день вижу обсуждения, где предлагают нещадно ломать типовую конфигурацию для решения задач, того вовсе не требующих. Если есть необходимость сохранения каких либо дополнительных данных, сохранение которых не предусмотрено не стоит сразу создавать свои справочники или регистры сведений, и уж тем более не нужно добавлять свои реквизиты в справочники и документы. Дополнительные реквизиты в типовых конфигурациях существуют давно, так что ничего нового я тут не открыл, просто увидел, что в БП 3.0 механизм несколько изменился, решил поделиться с сообществом. (Файл с текстом в word во вложении:-)
28.06.2014 — Для работы с ДРС предлагаю использовать инструмент, описанный http://infostart.ru/public/288722/

Использование дополнительных реквизитов и сведений в БП 3.0

Дополнительные реквизиты и сведения (далее ДРС) — механизм, позволяющий не изменяя конфигурацию расширить её функционал. Написать эту заметку сподвиг заказ на печать ТТН и Справки А и Б с сохранением реквизитов, с целью их дальнейшего использования в декларациях по алкогольной продукции, да и просто для того, что бы повторно посмотреть дополнительную информацию по реализации. Используют базовую БП 3.0 — менять конфигурацию соответственно нельзя, да для этой задачи вполне достаточно ДРС.

Для БП 2.0 в принципе решение у меня давно есть — так же использую дополнительные реквизиты, где сохраняются данные по автомобилю, водителю, перевозчику и т.д. Схема отработана — при печати записываются (при первой печати создаются не созданные) дополнительные реквизиты, при последующем выводе на печать реквизиты формы заполняются сохраненными значениями. Эти же данные использую при заполнении деклараций по алкоголю. Стал делать на УФ в БП 3.0 (3.0.20.18) и увидел, что механизм использования ДРС существенно изменился, причем ИМХО в лучшую сторону:

  1. Изменились объекты, «обслуживающие» ДРС:

БП 2.0

БП 3.0

Справочник ЗначенияСвойствОбъектов

Удален

План видов характеристик НазначенияСвойствКатегорийОбъектов

Удален

План видов характеристик

СвойстваОбъектов

Удален

Регистр сведений ЗначенияСвойствОбъектов

Удален

Нет

Справочник НаборыДополнительныхРеквизитовИСведений

Нет

План видов характеристик ДополнительныеРеквизитыИСведения

Нет

Регистр сведений ДополнительныеСведения

  1. В 2.0 название «Дополнительны реквизиты» не совсем точно отражает суть назначение эти данных — это всё-таки именно «дополнительные сведения», и хранятся они в объектах конфигурации, отличных от самого объекта этих сведений. В 3.0 можно задавать как сведения, сохраняемые регистре «Дополнительные сведения», так и именно реквизиты, сохраняемые в табличной части справочников «ДополнительныеРеквизиты» (в УТ 11 сейчас аналогичная табличная часть есть и у документов), причем эти реквизиты стали доступны в форме элемента справочника, а не вызываются по кнопке отдельным окном.

Как видим, объектов ДРС стало меньше, а работать с ними, как мне кажется, удобнее. Значительным отличием является хранение списка объектов конфигурации, для которых возможно хранение ДРС, не в плане видов характеристик «НазначенияСвойствКатегорийОбъектов», а в справочнике «НаборыДополнительныхРеквизитовИСведений», имеющем две табличные части:

  • — ДополнительныеРеквизиты — содержит список реквизитов, доступных в форме справочника для чтения/записи и флаг их обязательного заполнения. эти реквизиты хранятся в табличной части справочника;
  • — ДополнительныеСведения — список сведений, сохраняющихся в регистре «ДополнительныеСведения» и доступных по дополнительной кнопке.

Для документов сейчас доступен только выбор дополнительных сведений:

Для справочников можно установить и сведения и дополнительные реквизиты:

Причем редактируются дополнительные реквизиты справочника в форме элемента:

Зарегистрированные для справочника реквизиты выводятся на форму элемента, но записи в табличной части дополнительные реквизиты появляются только в случае их заполнения.

Изменился и состав объектов, имеющих ДРС:

  • — БП 2.0 это 15 справочников и список всех документов конфигурации в одной характеристике,
  • — БП 3.0 справочников стало 18, и 110 документов (не проверял все это документы или нет), на каждый из которых дополнительные сведения задаются в отдельном предопределенном элементе справочника «НаборыДополнительныхРеквизитовИСведений».

Для дополнительных реквизитов с типом «Значение свойства объекта» можно задавать произвольный список для выбора — фактически аналог справочника (с 2.0 это был справочник «ЗначенияСвойствОбъектов»):

Список может редактироваться.

Ещё один момент, из справки к ПВХ «ДополнительныеРеквизитыИСведения» — «Все дополнительные реквизиты и сведения объектов можно вывести в отчетах и списках.». Действительно, теперь зарегистрированные ДРС можно использовать не только для целей сохранения данных, но и, например, для отбора в списке документа и т.п.

Список РТиУ без отбора:

Записанные дополнительные сведения для документа:

Настройка отбора списка РТиУ по доп.сведениям:

Список РТиУ с установленным отбором по незаполненному водителю:

Вроде бы пустячки, а приятно……….

Вы уже научили выводить реквизит иного справочника и документа в форме документа. И даже редактировать.

Тут: 

http://novichok1c.ru/comment/1451#comment-1451

Отлично работает, за что еще раз ОГРОМНОЕ Спасибо!

Так же Вы научили редактировать «дистанционно» реквизит другого справочника или документа.

Однако у данного метода есть существенный недостаток:

Чтобы произошли измененния, необходимо, чтобы документ, в который выводится реквизит был открыт и перезаписан.

В связи с чем 2 вопроса: 

Вопрос 1.

1С возможно объединить реквизит?

Т.е. создать один реквизит для нескольких документов?

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

Вопрос 2.

Как вывести данные реквизита документа(справочника) из формы списка другого документа?

(когда документы находятся в подчинении друг друга или связаны, как ЗаказПокупателя и РеализацияТоваровУслуг, Контрагенты и ЗаказПокупателя и т.д.)

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Продолжаем рассматривать варианты размещения элементов на форме на примере вывода реквизитов документа на форму списка документов, состав документа представлен на рис. 1:

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 1. Реквизиты документа

Добавим на форму списка документов колонку со значением статуса приходной, статус приходной находится в регистре сведений. Открываем форму списка документа пр_Приходная. Если формы списка еще нет, то нажимаем значок лупы на вкладке Формы окна свойств документа (рис. 2):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 2. Создание формы списка документа

В открывшемся окне Конструктор формы документа нажимаем Далее > и выбираем поля, которые хотим вывести на форму (поля — это реквизиты и табличные части документа), нажимаем Готово. Открывается окно формы списка документа.

В форме списка документа открываем свойства реквизита Список (правой кнопкой мышки — Свойства), в окне Свойства ставим галочку у свойства Произвольный запрос (рис. 3):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 3. Свойства реквизита формы Список

После установки свойства Произвольный запрос состав свойств раздела Объект изменится (рис. 4):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 4. Состав раздела Объект окна Свойства

Нажимаем на гиперссылку Открыть свойства Настройка списка (рис. 4). Открывается окно Динамический список (рис. 5):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 5. Окно Динамический список

Добавляем в запрос текст для получения статуса приходной из регистра сведений. В примере используется регистр сведений пр_СтатусПриходной со значением свойства Периодичность — В пределах дня, состав регистра представлен на рис. 6:

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 6. Состав регистра с данными о статусе приходной

Изменить запрос в окне Динамический список можно нажав на кнопку Конструктор запроса… или можно сразу написать нужный текст в поле Запрос (рис. 7):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 7. Измененный запрос

Текст запроса:

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

Важно проверить, что в поле Основная таблица окна Динамический список указан нужный документ (рис. 7), иначе, если поле будет не заполнено, то в форме списка документов не будет возможности добавлять новые документы и открывать существующие (и не будет привычных кнопок Создать, Создать копированием и т.п.). Нажимаем ОК. Теперь в составе реквизита Список те поля, которые были выбраны в запросе (рис. 8):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 8. Состав реквизита Список

Перетаскиваем новое поле Статус из вкладки Реквизиты на вкладку Элементы в состав элемента Список (рис. 8). И размещаем поле Статус на вкладке Элементы после полей Дата, Номер (рис. 9):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 9. Размещение поля Статус

У реквизитов (на вкладке Реквизиты) в составе динамического списка можно отметить свойство Использовать всегда (рис. 8). Это нужно, когда поля должны быть в составе динамического списка в любом случае, даже если они не будут добавлены на форму как элементы, например, будут использоваться в дальнейшем в коде модуля формы списка документа.

Проверяем работу формы списка документа в пользовательском режиме: появилась колонка Статус, содержащая значение статуса приходной из регистра сведений (рис. 10):

УФ: Размещение элементов на форме в 1С — добавление колонки на форму списка (произвольный запрос динамического списка)

Рис. 10. Новая колонка формы списка

На чтение 5 мин Просмотров 2.8к. Опубликовано 02.11.2021

Содержание

  1. Остатки в списке документов
  2. Неверный путь
  3. Оптимальное решение
  4. Обращайте внимание

Рассмотрим задачу, когда нужно вывести дополнительные реквизиты и сведения в общем списке элементов. Рассмотрим на примере конфигурации УТ 11, в справочник Номенклатура добавлен дополнительный реквизит Артикул клиента.

Открываем список элементов справочника Номенклатура, выбираем меню Все действия – Изменить форму… (рис. 1):

Рис. 1. Все действия – Изменить форму…

В открывшемся окне Настройка формы у Списка номенклатуры находим поле Ссылка, выделяем его и нажимаем Добавить поля (рис. 2):

Рис. 2. Добавление полей

Далее в открывшемся окне Выберите поля для размещения в форме выбираем нужный дополнительный реквизит Артикул клиента и нажимаем ОК (рис. 3):

Рис. 3. Выбор дополнительного реквизита

Поле Артикул клиента появляется на форме Настройка формы, можно переместить его, нажимая на стрелочки Вверх, Вниз. После выбора позиции нажимаем ОК (рис. 4):

Рис. 4. Дополнительный реквизит в списке полей

В списке Номенклатуры появилась колонка с дополнительным реквизитом Артикул клиента (рис. 5):

Рис. 5. Новая колонка в списке

Можно выгрузить в файл получившийся список, меню Все действия – Вывести список… (рис. 6):

Остатки в списке документов

Решим следующую задачу: в списке документов «Заказы поставщику» нам необходимо добавить новую колонку «Остаток по заказу», которая будет отображать остаток для документа в регистре накопления «Заказы поставщику» на текущую дату.

Реализовать это нужно в конфигурации «Управление производственным предприятием» версии 1.3.

Неверный путь

Рассмотрим самый «очевидный» путь, он же самый простой. Большинство начинающих программистов делают именно так. У табличного поля формы, которое привязано к реквизиту формы с типом «ДокументСписок» есть событие «ПриВыводеСтроки». В нем напишем Запрос к остаткам по заказу для выводимой строки и полученный результат присвоим ячейке текущей строки в колонке «Остаток». Вот так будет выглядеть код обработчика события «ПриВыводеСтроки»:

Дело сделано! Задача решена! Но! Событие «ПриВыводеСтроки» вызывается для каждой строки отдельно. То есть, если в список выводится 30 строк, то запрос будет формироваться столько же раз! Может есть другой путь?

Оптимальное решение

Другой путь есть. Оптимальное решение кроется в использовании события «ПриПолученииДанных». Это событие вызывается один раз, когда происходит получение порции данных списком документов. В контексте этого события нам доступны данные, которые получила платформа. Поэтому мы можем их обработать одним запросом. Вот программный код обработчика «ПриПолученииДанных» для решения этой задачи:

Результат работы такой же, как и для варианта с использованием события «ПриВыводеСтроки», но есть одно НО.

Обращайте внимание

Самое главное отличие заключается в скорости работы. Вот сравнение времени выполнения для обоих вариантов решения задачи:

При использовании «ПриВыводеСтроки» время формирования списка выполняется дольше практически в четыре раза! Не смотря на это, не рекомендую добавлять подобные поля в список документов, поскольку, в любом случае, это потребует дополнительных ресурсов серверной машины. Лучше используйте отчеты.

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

Задача:
Производство. Вахтовый метод работы, сменные графики, когда вахтовый цикл составляет 1 месяц, 2 месяца и 3 месяца. Территория — местность приравненная к районам крайнего севера (МСК), со всеми вытекающими последствиями для учета. По спец. оценке условий труда (СОУТ) количество дней отпуска будет изменяться в зависимости от класса «вредности». Этот факт мы также обязаны предусмотреть при составлении графика. А именно будет изменяться количество дней оплачиваемого отдыха за работу сверх нормы. Итак, условий много. Было решено создавать графики с учетом всех условий, максимально приближено к реальным. Ежемесячные особенности, к примеру изменения дат и количества дней в пути, корректировать индивидуальными.
На выходе получили более 50 графиков работ. Встал вопрос как их идентифицировать при приеме и переводе сотрудников. Заказчик поставил задачу разработать внутренние нормативные документы для упрощения работы кадровой службы. Начали описывать. Договорились что для информативности унифицируем названия графиков. Но по факту этого оказалось недостаточно. Очень хотелось иметь ещё и номер. Структура элемента справочника Графики работы сотрудников к нашему разочарованию не имеет нумерации.

Я пошла искать подобные темы. Форумчане в голос твердили что без снятия конфигурации с поддержки не обойтись. Вот пример такой темы: https://buh.ru/forum/forum18375/topic80453/

Но на моем проекте жёсткое условие, конфигурацию с поддержки не снимать. Подумав пару часов, нашла решение. Применила дополнительные реквизиты и настройки списка.

Решение:

1. Создаем дополнительный реквизит к справочнику Графики работы сотрудников

Как видно на рисунке выше, дополнительный реквизит самый простой, тип строка.

2. Для удобства переместила доп. реквизит на форме элемента справочника вверх

3. В форме списка справочника — Все действия (или «Ещё», если работаете в режиме Такси) — Изменить форму. Добавим на форму поле «Ссылка»

4. Теперь идем в Настроить список (там же, во «Все действия») Условное оформление — Добавим текст, но выберем не Строка, а Поле компоновки данных — ДополнительныеРеквизиты.Значение

5. В качестве оформляемого поля выбираем Ссылка

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

Буду рада если кому-нибудь пригодится такое решение.

  • Распечатать

Оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(0 голосов, среднее: 0 из 5)

Поделитесь с друзьями!

[Практика программирования] Управляемые формы 1С 8: как программно изменить запрос динамического списка и программно вывести колонку добавленного реквизита списка

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

Для программного добавления элементов управляемой формы должно быть учтено условие о том, что добавление происходит на стороне сервера, а не на клиенте (не в процедуре «ПриОткрытии», как это было в обычном приложении). И так можно ошибочно подумать по старой привычке (если есть опыт программирования в обычном интерфейсе), учитывая архитектуру платформы 1С: Предприятие 8.2 и 8.3. Ведь процедура «ПриОткрытии» формы есть и в управляемом приложении, но через не создать программно и не разместить элементы для прикладной задачи. Поэтому «&НаСервере» и преимущественно в процедуре «ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)» формы документа или элемента справочника или формы списка теперь происходит программное добавление каких-либо элементов формы.

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

Нажатие на изображении увеличит его
1С 8, код, управляемый интерфейс, программное изменение запроса динамического списка реквизита формы
Рис. 1. Пример теоретического кода для программного изменения текста произвольного динамического списка для управляемой формы в 1С 8. 

Прикладная задача заключалась в том, чтобы выводить программно в управляемую форму списка документов «Реализация товаров и услуг» колонку добавленного реквизита документа. Реквизит с именем «ДопМФ_Отгружено» тип «Булево», в данном примере добавлен в расширении, но может быть и добавлен в основной конфигурации, если она на частичной поддержке. Как вывести программно элемент формы, содержащей флажок, добавленного реквизита, повторимся, можно изучить в соответствующей статье, о которой уже упоминалось в начале страницы.

1С 8, как программно изменить запрос динамического списка, чтобы вывести добавленный реквизит объекта конфигурации

Рис. 2. Пример добавленного реквизита объекта конфигурации (документа) в 1С 8 для дальнейшего программного вывода колонки в управляемую форму списка объекта.

Прежде чем перейти непосредственно к программному добавлению колонки элемента таблицы формы нужно добавить его выбор в текст запроса динамического списка. Таким образом подготовительный рабочий исполняемый код получается примерно следующим:

1 | СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
2 | СвойстваСписка.ОсновнаяТаблица = «Документ.РеализацияТоваровУслуг»;
3 | СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
4 | ИсхТекстаЗапроса = СписокРеализацииТоваровУслуг.ТекстЗапроса;
5 |
|
СвойстваСписка.ТекстЗапроса = СтрЗаменить(ИсхТекстаЗапроса, «ВЫБРАТЬ», «ВЫБРАТЬ»+Символы.ПС+«РеализацияТоваровУслуг.ДопМФ_Отгружено КАК ДопМФ_Отгружено,»);
6 |
|
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.СписокРеализацииТоваровУслуг, СвойстваСписка);
7 | //СписокРеализацииТоваровУслуг.Параметры.УстановитьЗначениеПараметра(«Параметр1», 42);

Прокомментируем его основные моменты. В строке 1 происходит получение структуры через функцию «СтруктураСвойствДинамическогоСписка()» общего модуля «ОбщегоНазначения» для заполнения ее значений и передачи для заполнения свойств динамического списка. Для ключа «ОсновнаяТаблица» структуры в строке 2 указывается название основной таблицы, которая используюется для динамического списка, в примере это «Документ.РеализацияТоваровУслуг». Значение ключа структуры в строке 3 «ДинамическоеСчитываниеДанных» в значении «Истина». В строках 4 и 5 ведется произвольная модификация запроса.

Нажатие на изображении увеличит его
1С 8, пример исходного текста произвольного запроса динамического списка, как изменить программно,
Рис. 3. Пример исходного текста произвольного запроса динамического списка реквизита управляемой формы списка документов.

Можно просто подготовить новый или измененный исходный текст запроса для указания его в ключе «ТекстЗапроса» структуры. В данном же случае была использована хитрость, чтобы минимизировать зависимость от изменений разработчиков. Происходит модификация исходного текста запроса, который определили разработчики, за счет замены подстроки «ВЫБРАТЬ», которая есть в любом запросе, на подстроку так же содержащее это обязательное слово текста запроса и текст для выборки значения добавленного реквизита документа «ДопМФ_Отгружено». Таким образом, доработка в расширении может сломаться тогда, когда разработчики существенным образом изменять исходный текст запроса. И на примере строки 5 помещаем новый вариант текста запроса в структуру. В данном примере получилось, что запрос содержит одну дополнительную строчку, чтобы выбирать значения добавленного реквизита. Порядок следования полей выборки в запросе для динамического списка не имеет значения.

Т.е. в практической задаче начало запроса программно изменялось:

С:

ВЫБРАТЬ

    РеализацияТоваровУслуг.Ссылка,

На:

ВЫБРАТЬ

    РеализацияТоваровУслуг.ДопМФ_Отгружено КАК ДопМФ_Отгружено,

    РеализацияТоваровУслуг.Ссылка,

Особенно обратим внимание на то, к каким объектам ведется обращение в строке 7, когда выполняется установка новой настройки для динамического списка с помощью процедуры «УстановитьСвойстваДинамическогоСписка» общего модуля «ОбщегоНазначения». В этом месте важно не перепутать, т.к. в типовой конфигурации названия элемента формы таблицы-списка и реквизита формы одинаковые. А важно, что первым параметром передается элемент управляемой формы — Таблица реквизита формы. Не перепутать его с названием реквизита формы, к которому ранее обращались для получения текста исходного запроса. Вторым параметром передается заполненная структура. Строка 7 в данном примере закомментирована, т.к. в данной прикладной задаче в тексте запроса не содержится параметров. Но, если параметр  есть, то устанавливается через свойство «Параметры» и метод «УстановитьЗначениеПараметра» реквизита управляемой формы, а не элемента формы. Установка значения по имени параметра по коду как для классического запроса в 1С: первое значение — текстовое имя параметра, второе значение — собственно значение для параметра.

Нажатие на изображении увеличит его
1С 8, как программно изменить текст запроса динамического списка реквизита управляемой формы
Рис. 4. Сравнение одноименных реквизита и элемента управляемой формы 1С 8 для программного изменения текста произвольного запроса динамического списка этого реквизита формы.

После модификации текста произвольного динамического запроса реквизита управляемой формы 1С 8, становится возможным размещение колонки нового реквизита. И теперь рассмотрим код для программного вывода, размещения, добавления (как будет угодно) колонки в элемент-таблицу формы. 

Нажатие на изображении увеличит его
1С 8, как программно вывести, добавить колонку из запроса динамического списка для добавленного реквизита справочника, документа
Рис. 5. Пример кода в 1С 8 для программного вывода колонки нового реквизита объекта конфигурации, в частности документа, в элемент «Таблица» управляемой формы 

По логике программного вывода в прикладной задачи новая колонка, напомним с флажком, должна выводиться сразу после колонки «Номер», содержащей данные номеров документов списка. Код на скриншоте содержит условие на то, что если колонка «Номер» по каким то причинам, например скрыта пользователем в управляемой форме, что вполне может быть (странно но может быть, ведь номер для документа является ключевым реквизитом для работы пользователей), то тогда новая колонка будет выведена самой первой в списке.

1 | ТаблицаФормы = Элементы.СписокРеализацииТоваровУслуг;
2 | КолонкаВставки = ТаблицаФормы.ПодчиненныеЭлементы.Найти(«Номер»);
3 |  
4 | КолонкаОтгружено = Элементы.Вставить(«_Отгружено», Тип(«ПолеФормы»), ТаблицаФормы, КолонкаВставки);
5 | КолонкаОтгружено.Вид = ВидПоляФормы.ПолеФлажка;
6 | КолонкаОтгружено.Заголовок = «О.»;
7 | КолонкаОтгружено.Подсказка = «Отгружено»;
8 | КолонкаОтгружено.ТолькоПросмотр = Истина;
9 | КолонкаОтгружено.ШиринаЭлемента = 5;
10 | КолонкаОтгружено.ПутьКДанным = «СписокРеализацииТоваровУслуг.ДопМФ_Отгружено»;

Есть небольшие отличия от случая, который уже упоминался выше, добавления колонки для элемента формы Таблица динамического списка, как было описано смежной статье. В смежном случае был пример для таблицы, данными (ПутьКДанным) которой выступал «динамический список», но у которого основанием выступала таблица, а не произвольный запрос. Если отличия не учесть, то будут просто возникать ошибки. В данном же примере 

Отличия заключаются в двух местах кода. Во-первых, это обращение к свойству «ШиринаЭлемента, а не просто «Ширина» как в случае, если колонка — это программно выводимая колонка динамического списка, но у которого указана «Основная таблица» и не используется произвольный запрос. Т.е. для программно добавляемой колонки динамического списка с произвольным запросом указывается свойство «ШиринаЭлемента».

Во-вторых, очень важно правильно указать значение свойства «ПутьКДанным», иначе можно получить ошибку:

Нажатие на изображении увеличит его
1С 8, ошибка, Ошибка при установке значения атрибута контекста (ПутьКДанным) по причине: Недопустимое значение
Рис. 6. Пример ошибки «Недопустимое значение» при указании неверного значения для свойства «ПутьКДанным» элемента управляемой формы .

{Документ.РеализацияТоваровУслуг.Форма.ФормаСписка.Форма(26)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)

КолонкаОтгружено.ПутьКДанным = «Объект.СписокРеализацииТоваровУслуг.ДопМФ_Отгружено»; 

по причине:

Недопустимое значение

Недопустимое значение

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

Нажатие на изображении увеличит его
1С 8, программирование, как программно вывести, добавить элементы управляемой формы, колонку реквизита запроса динамического списка
Рис. 7. Демонстрация того, что данные элемента формы Таблица — это динамический произвольный запрос.

В текущей задаче реквизит формы (он не основной) носит имя «СписокРеализацийТоваровУслуг», а не так, как часто можно встретить в конфигурации, что основной реквизит формы носит имя «Объект». И значения для добавленной колонки берется из реквизита типа «ДинамическийСписок» и для элемента формы. Поэтому строка для «ПутьКДанным» — «СписокРеализацииТоваровУслуг.ДопМФ_Отгружено» с указанием через «.» имени нового реквизита.

Это все условия и нюансы, с которыми пришлось столкнуться на практике для программной модификации произвольного запроса динамического списка реквизита управляемой формы в 1С 8, чтобы потом программно вывести колонку нового реквизита объекта конфигурации базы в элемент «Таблица» формы .

Оцените, оказалась ли эта публикация полезна для Вас?




© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

25-11-2021

Журавлев А.С.
(Сайт azhur-c.ru)

Назад

Понравилась статья? Поделить с друзьями:
  • Выгодный бизнес по франшизе с минимальными вложениями
  • Выплата заработной платы работникам компании вызывает
  • Выплаченные дивиденды российских компаний в 2022 году
  • Время работы ифнс по засвияжскому району г ульяновска
  • Выращивание зелени в теплице как бизнес круглогодично