Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.85] |
|
Сообщ.
#1
,
|
|
|
Есть задача - построение отчетов из Битрикс 24.
С помощью рест апи буду получать данные. Данные в json Собственно вопрос: 1 Для построения встроенных запросов данные должны быть сохранены в базе, или достаточно только в форме? 2 если на первый вопрос ответ нет, то как мне данные актуализировать? Т.е. я по кнопке загружаю таблицу, далее мне нужно как-то актуализировать базу. Возможен ли вариант использования временных таблиц, которые после закрытия базы удаляются? Не будут ли временные таблицы забивать базу(рост размера файла)? 3 Если ответ на первый вопрос да, то как мне лучше данные вставлять в форму(управляемое приложение)? По сути там будет около 7-10 связанных по ИД элемента справочников, или документов, если в справочнике нет табличных частей. |
Сообщ.
#2
,
|
|
|
В объект обработки или отчета можно добавить реквизит - таблицу значений с колонками заданных типов. По идее в запросе можно использовать параметры-таблицы, так что данные можно передать в запрос.
Ну и этот реквизит можно будет отобразить на форме. После закрытия обработки или отчета все реквизиты очистятся. |
Сообщ.
#3
,
|
|
|
evGenius
В конструкторе запросов нет таблиц значений с формы. Опять-же не ясно как связывать эти таблицы(и нужно ли вообще) или ты что-то другое имеешь в виду? Прикреплённый файл1c1.png (45,32 Кбайт, скачиваний: 752) |
Сообщ.
#4
,
|
|
|
Цитата ^D^ima @ В конструкторе запросов нет таблиц значений с формы. Таблицу передавай, как параметр запроса. Добавлено ВЫБРАТЬ * ИЗ &таб |
Сообщ.
#5
,
|
|
|
kosten
при этом конструктор запросов не будет работать? |
Сообщ.
#6
,
|
|
|
Цитата ^D^ima @ В конструкторе запросов нет таблиц значений с формы Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ.Код КАК Код, | ТЗ.Наименование КАК Наименование |ИЗ | &ТаблицаФормы КАК ТЗ"; Запрос.УстановитьПараметр("ТаблицаФормы", РеквизитФормыВЗначение("Реквизит1")); как то так. |
Сообщ.
#7
,
|
|
|
Цитата ^D^ima @ при этом конструктор запросов не будет работать? А что ты от него хочешь? Поля твоей таблицы он знать не будет - сам все пропишешь. Связи с другими таблицами может позволит сделать. |
Сообщ.
#8
,
|
|
|
Конструктор не ошибается по крайней мере
Концептуально понял. Как таблицы растащить по страницам? |
Сообщ.
#9
,
|
|
|
Цитата ^D^ima @ Как таблицы растащить по страницам? что? |
Сообщ.
#10
,
|
|
|
На управляемой форме 10 табличных частей в разных закладках
|
Сообщ.
#11
,
|
|
|
Цитата ^D^ima @ На управляемой форме 10 табличных частей в разных закладках И в чем проблема? |
Сообщ.
#12
,
|
|
|
Добавляешь на форму вкладки и в каждую таскаешь мышкой таблицы из дерева свойств.
|
Сообщ.
#13
,
|
|
|
А как я отчеты к своим табличным формам своей обработки привяжу?
Я имею в виду компоновку данных, объект отчеты в конфигурации |
Сообщ.
#14
,
|
|
|
Цитата ^D^ima @ А как я отчеты к своим табличным формам своей обработки привяжу? Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений. |
Сообщ.
#15
,
|
|
|
Цитата Rust @ Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений. В данном случае только так, да. Либо делать отчет не на СКД. |
Сообщ.
#16
,
|
|
|
Цитата Rust @ Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений. Можно пример? Добавлено Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов |
Сообщ.
#17
,
|
|
|
Цитата ^D^ima @ Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов ну я так понял что ты заполняешь табличную часть обработки (или таблицу значений в обработке) данными из битрикса, а потом строишь по ним отчет, при этом тебе не надо хранить данные в базе? во вложении простой пример как построить отчет по данным таблицы значений Прикреплённый файл__________________________________________________________.zip (3,88 Кбайт, скачиваний: 442) |
Сообщ.
#18
,
|
|
|
Rust
Спасибо! Несколько вопросов: 1 ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗ); Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот? Т.е. если у моей ТЗ есть какой-то реквизит, должен ли он быть в ПримерТаблицыЗначений? 2 Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных? Или нужно Сделать SQL запросы напрямую из ТЗ в каую-то результирующую ТЗ, а потом ее переложить в набор данных компоновки для дальнейшей визуальной обработки? |
Сообщ.
#19
,
|
|
|
Цитата ^D^ima @ Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот? 1. Да. Таблицы должны быть идентичны. Данные в компоновку ты передаешь из таблицы значений, эту таблицу значений представляешь системе компоновки как "набор данных - объект", и в этом наборе данных описываешь что именно лежит в передаваемой таблице значений. 2. Здесь как тебе удобнее. Можешь получить из битрикса сразу результирующую таблицу и в системе компоновки работать именно с одной большой таблицей. Но это может быть затратно. Например может быть вариант отчета где нужны данные только одной таблицы и тебе незачем тянуть еще данные из остальных таблиц (тут я про битрикс). Я бы разбил получаемые данные на несколько наборов, связал их через Связи наборов данных, а потом через настройки вариантов отчетов формировал нужные отчеты. При этом СКД сама будет строить запросы исходя из настроек варианта отчета. По пункту 2 не могу точно что-то посоветовать, просто высказал свое имхо, т.к. не знаю какие данные у тебя есть и какие отчеты будешь формировать. Все зависит от входящих данных из битрикса. Добавлено Оффтоп. Уже много лет работаю с 1С, но с битриксом так ни разу и не сталкивался. Хоть и интегрировал кучу совершенно разных систем с 1С Добавлено Цитата ^D^ima @ Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных? В случае работы с набором данных - объект тебе не надо писать запросы. Ты просто описываешь поля таблицы на закладке Наборы данных, в модуле объекта отчета подсовываешь СКД свои данные в виде таблицы значений, на закладке Настройки формируешь внешний вид твоего отчета, и все. СКД дальше все сделает сама. Твоя задача только описать какую таблицу ты передашь СКД, передать ей таблицу и указать СКД как должен выглядеть твой отчет. |
Сообщ.
#20
,
|
|
|
Rust
1 Из битрикса REST API запросами не вытянуть итоговые данные, только по таблицам(т.к. это облачный портал, нет доступа к базе данных напрямую. есть ещё стандартная оьработка по синхронизации, но она далеко не все данные передает) 2 Исходя из ограничений п.1. придется вначале дергать таблицы, потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку. Да и как понимаю так просто не поработать с ТЗ в запросе - нужно создавать временную таблицу там |
Сообщ.
#21
,
|
|
|
Цитата ^D^ima @ потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку. А почему бы не сделать несколько "наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных? Имхо, обрабатывать запросами таблицы значений, чтобы получить другую таблицу значений лишнее. |
Сообщ.
#22
,
|
|
|
Цитата Rust @ "наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных? А как к ним применить SQL запрос? Добавлено Запрос = новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Подразделение.ИД КАК ИД, | Подразделение.Наименование КАК Наименование |ПОМЕСТИТЬ Временная |ИЗ | &Подразделение КАК Подразделение ; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Временная.ИД КАК ИД, | Временная.Наименование КАК Наименование |ИЗ | Временная КАК Временная"; Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения); Выборка = запрос.Выполнить().Выбрать(); Что он хочет от меня? {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(155)}: Ошибка при вызове метода контекста (Выполнить) Выборка = запрос.Выполнить().Выбрать(); по причине: {(6, 2)}: Неверные параметры "Подразделение" <<?>>&Подразделение КАК Подразделение по причине: {(6, 2)}: Неверные параметры "Подразделение" <<?>>&Подразделение КАК Подразделение ТаблицаПодразделения через вычислить выражение определяется |
Сообщ.
#23
,
|
|
|
Цитата ^D^ima @ А как к ним применить SQL запрос? а зачем? в СКД есть несколько наборов данных - набор данных запрос, набор данных объект и набор данных объединение. Запрос используется в наборе данных запрос. Набор данных объект - ты "рисуешь" и заполняешь или подсовываешь готовый объект сам. Объединение - для объединения нескольких наборов в один. Пример выше с получением данных запросом из таблицы значений в твоей задаче можно не использовать, вместо него используй в СКД набор данных объект и подсовывай в объект нужную таблицу значений. Можно конечно и с запросами заморочиться, но это уже наверное дело вкуса. Добавлено Цитата ^D^ima @ ТаблицаПодразделения через вычислить выражение определяется видимо неверно формируется таблица значений. у меня твой пример вот в таком виде работает ТаблицаПодразделения = Новый ТаблицаЗначений; ТаблицаПодразделения.Колонки.Добавить("ИД", Новый ОписаниеТипов("Строка")); ТаблицаПодразделения.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); НоваяСтрока = ТаблицаПодразделения.Добавить(); НоваяСтрока.ИД = "123"; НоваяСтрока.Наименование = "Наименование строки"; Запрос = новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Подразделение.ИД КАК ИД, | Подразделение.Наименование КАК Наименование |ПОМЕСТИТЬ Временная |ИЗ | &Подразделение КАК Подразделение ; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Временная.ИД КАК ИД, | Временная.Наименование КАК Наименование |ИЗ | Временная КАК Временная"; Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения); Выборка = Запрос.Выполнить().Выгрузить(); В переменной Выборка в итоге оказывается сформированная таблица значений Добавлено Посмотри в отладчике что у тебя вот в этой строке Запрос.УстановитьПараметр("Подразделение", ТаблицаПодразделения) в переменной ТаблицаПодразделения |
Сообщ.
#24
,
|
|
|
Я ТЗ с реквизитами накидываю на форму,
Цитата Rust @ в переменной ТаблицаПодразделения ДанныеФормыКоллекция |
Сообщ.
#25
,
|
|
|
Цитата ^D^ima @ ДанныеФормыКоллекция тогда поможет ТаблицаПодразделения = РеквизитФормыВЗначение("ТутИмяТаблицыНаФорме"); |
Сообщ.
#26
,
|
|
|
А это что за х-ня?
Запрос.Текст= "ВЫБРАТЬ | Подразделение.ИД КАК ПодразделениеИД, | Подразделение.Наименование КАК ПодразделениеНаименование, | Сотрудники.ИД КАК СотрудникиИД, | Сотрудники.ФИО КАК ФИО, | Сотрудники.ИДПодразделения КАК ИДПодразделения |ПОМЕСТИТЬ Временная |ИЗ | &Подразделение КАК Подразделение, | &Сотрудники КАК Сотрудники |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Временная.ПодразделениеИД КАК ПодразделениеИД, | Временная.ПодразделениеНаименование КАК ПодразделениеНаименование, | Временная.СотрудникиИД КАК СотрудникиИД, | Временная.ФИО КАК ФИО, | Временная.ИДПодразделения КАК ИДПодразделения |ИЗ | Временная КАК Временная"; Запрос.УстановитьПараметр("Подразделение",РеквизитФормыВЗначение("ТаблицаПодразделения")); Запрос.УстановитьПараметр("Сотрудники",РеквизитФормыВЗначение("ТаблицаСотрудники")); {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(166)}: Ошибка при вызове метода контекста (Выполнить) Выборка = запрос.Выполнить().Выбрать(); по причине: При выборе данных из объекта в запросе не могут присутствовать соединения и объединения по причине: При выборе данных из объекта в запросе не могут присутствовать соединения и объединения Я хочу все таблицы запихнуть во временную и следующим вложенным запросом брать оттуда данные Добавлено Или каждую ТЗ в отдельную временную таблицу засунуть? |
Сообщ.
#27
,
|
|
|
Цитата ^D^ima @ Или каждую ТЗ в отдельную временную таблицу засунуть? Да. Кстати, временную таблицу тоже нельзя соединить с выборкой из таблицы значений. Получишь ошибку по причине: Содержимое объекта данных может быть выбрано только во временную таблицу Поэтому каждую таблицу значений заносишь в отдельную временную таблицу и дальше манипулируешь данными как тебе надо. |
Сообщ.
#28
,
|
|
|
Долбанный неразрывный пробел час потратил чтобы понять почему не работает
|
Сообщ.
#29
,
|
|
|
Цитата ^D^ima @ час потратил чтобы понять почему не работает это ты еще быстро разобрался. |
Сообщ.
#30
,
|
|
|
Как такой формат привести к формату даты 1С?
2019-02-01T03:00:00+03:00 |
Сообщ.
#31
,
|
|
|
Цитата ^D^ima @ Как такой формат привести к формату даты 1С? Из json получаешь? |
Сообщ.
#32
,
|
|
|
kosten
да Добавлено Я вначале поле сделал дата\время, но туда из JSONа ничего не переходит, сделал строку |
Сообщ.
#33
,
|
|
|
Цитата ^D^ima @ да Кури функцию ПрочитатьJSON. У нее один из аргументов - это имена свойств с типом дата. Она нормально сделает перевод в нужный формат. ПрочитатьJSON(ЧтениеJSON,, "ДатаЗапроса", ФорматДатыJSON.ISO) |
Сообщ.
#34
,
|
|
|
kosten
ФорматДатыJSON.ISO – формат вида: “ГГГГ-ММ-ДДTЧЧ:ММ:ССZ”, Например: “2009-02-15T00:00:00Z”. ФорматДатыJSON.JavaScript – формат вида : “1234656000000”. ФорматДатыJSON.Microsoft – Формат вида: “/Date(123456000000)/”. Вот такой и выходит формат, а мне нужно в обычный ДЛФ=ДВ Добавлено Пока сделал по старинке СтрЗаменить( Лев(Т1Итем.DEADLINE, 10),"-","") |
Сообщ.
#35
,
|
|
|
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); Результат = Сериализатор.XMLЗначение(Тип("Дата"), СокрЛП("2019-02-01T03:00:00+03:00")); В переменной Результат у нас получается 01.02.2019 5:00:00 ФабрикаXDTO в типовых уже есть. Пример обработки во вложении Прикреплённый файл______________________.zip (3,52 Кбайт, скачиваний: 410) Добавлено Цитата Rust @ 01.02.2019 5:00:00 А это уже можно обработать при помощи Формата |
Сообщ.
#36
,
|
|
|
Rust
Спасибо, проверю. Возник такой вопрос - как в ТЗ отображать нули? Но умолчанию они не видны, а нужны. Не заполнено и ноль разные вещи, неясно как там где 0, ставить 0, где пусто ничего. |
Сообщ.
#37
,
|
|
|
Цитата ^D^ima @ Возник такой вопрос - как в ТЗ отображать нули? В свойствах поля поставь Формат Представление нуля 0 Смотри скриншот Прикреплённый файлScreenshot_119.jpg (124,09 Кбайт, скачиваний: 610) |
Сообщ.
#38
,
|
|
|
Почему тогда в ТЗ попадает 0 если переменная Неопределено???
Т.е. я получаю JSON, и если какая-то переменная Неопределено, то он туда ставит 0??? Или для ТЗ 0 и неопределено одно и то-же? Добавлено Можно конечно строку сделать, но потом будет запутка что нужно к числу преобразовывать, забудешь и понеслось |
Сообщ.
#39
,
|
|
|
Цитата ^D^ima @ Почему тогда в ТЗ попадает 0 если переменная Неопределено??? Какого типа реквизит на форме? Если числового, то он не может быть Неопределено. Добавлено Цитата ^D^ima @ Можно конечно строку сделать это лишние костыли |
Сообщ.
#40
,
|
|
|
Цитата Rust @ Какого типа реквизит на форме? Если числового, то он не может быть Неопределено. Числового У меня в запросе такие строки: | МАКСИМУМ(ОтгрузкаПоМесяцам.Январь) КАК Январь, | МАКСИМУМ(ОтгрузкаПоМесяцам.Февраль) КАК Февраль, | МАКСИМУМ(ОтгрузкаПоМесяцам.Март) КАК Март, | МАКСИМУМ(ОтгрузкаПоМесяцам.Апрель) КАК Апрель, | МАКСИМУМ(ОтгрузкаПоМесяцам.Май) КАК Май, | МАКСИМУМ(ОтгрузкаПоМесяцам.Июнь) КАК Июнь, | МАКСИМУМ(ОтгрузкаПоМесяцам.Июль) КАК Июль, | МАКСИМУМ(ОтгрузкаПоМесяцам.Август) КАК Август, | МАКСИМУМ(ОтгрузкаПоМесяцам.Сентябрь) КАК Сентябрь, | МАКСИМУМ(ОтгрузкаПоМесяцам.Октябрь) КАК Октябрь, | МАКСИМУМ(ОтгрузкаПоМесяцам.Ноябрь) КАК Ноябрь, | МАКСИМУМ(ОтгрузкаПоМесяцам.Декабрь) КАК Декабрь И в Число они все как нули встают(и пустые значения и нули). Получается если числовая колонка не может быть пустой, то задача не решается без ухода в другой формат |
Сообщ.
#41
,
|
|
|
Цитата ^D^ima @ Числового Числовой тип не может быть Неопределено, будет 0. Цитата ^D^ima @ Получается если числовая колонка не может быть пустой, то задача не решается без ухода в другой формат опиши задачу и желаемый результат, потом можно подумать как получить нужный результат |
Сообщ.
#42
,
|
|
|
Ничего Сотрудники ставят процент отгрузки задачи, она может быть и 0, это отражается в ТЗ
|
Сообщ.
#43
,
|
|
|
Как можно в запросе обыграть такую ситуацию:
В параметрах запроса я задаю данные для отбора в запросе(например дата), которые участвует в секции где | Календарь.Сотрудник КАК КалендарьСотрудник, | Календарь.ДатаНачала КАК КалендарьДатаНачала, | Календарь.ДатаКонца КАК КалендарьДатаКонца, | Календарь.Сделка КАК КалендарьСделка, | Календарь.Длительность КАК КалендарьДлительность |ПОМЕСТИТЬ ВременнаяКалендарь |ИЗ | &Календарь КАК Календарь |ГДЕ | Календарь.ДатаНачала >= &КалендарьДатаНачала | И Календарь.ДатаКонца <= &КалендарьДатаКонца |; | Как мне сделать так, чтобы если параметр запроса не задан, то этот параметр игнорируется в запросе. Если я например не выбрал сотрудника и не передал его как парметр, то запрос формировал бы не по конкретному сотруднику данные, а по всем. Я понимаю что некоторые данные можно фильтровать прямо в итоговой ТЗ, куда запрос передает данные, но некоторые(например дата по которой отбираются данные), так не сделать. |
Сообщ.
#44
,
|
|
|
Цитата ^D^ima @ Как мне сделать так, чтобы если параметр запроса не задан, то этот параметр игнорируется в запросе. Как то так Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения |ИЗ | Справочник.Номенклатура КАК Номенклатура |{УсловиеВЗапросе"; НуженОтбор = ЗначениеЗаполнено(ЭлементНоменклатура); Если НуженОтбор Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "{УсловиеВЗапросе}", "Где Номенклатура.Ссылка = &СсылкаНаЭлемент"); Запрос.УстановитьПараметр("СсылкаНаЭлемент", ЭлементНоменклатура); Иначе ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "{УсловиеВЗапросе}", ""); КонецЕсли; Запрос.Текст = ТекстЗапроса; |
Сообщ.
#45
,
|
|
|
Rust
Хакерство какое-то Почему это не прокатывает? |ГДЕ | ВЫБОР | КОГДА Календарь.ДатаНачала = ДАТАВРЕМЯ(0001,01,01,0,0,0) | ИЛИ Календарь.ДатаКонца = ДАТАВРЕМЯ(0001,01,01,0,0,0) | ТОГДА ИСТИНА | ИНАЧЕ Календарь.ДатаНачала >= &КалендарьДатаНачала | И Календарь.ДатаКонца <= &КалендарьДатаКонца | КОНЕЦ Календарь.ДатаНачала это реквизит на форме дата время |
Сообщ.
#46
,
|
|
|
Ничего не понял. Приведи весь запрос
Добавлено наверное так? |ГДЕ | ВЫБОР | КОГДА Календарь.ДатаНачала = ДАТАВРЕМЯ(0001,01,01,0,0,0) ИЛИ Календарь.ДатаКонца = ДАТАВРЕМЯ(0001,01,01,0,0,0) | ТОГДА ИСТИНА | ИНАЧЕ | ВЫБОР | КОГДА Календарь.ДатаНачала >= &КалендарьДатаНачала И Календарь.ДатаКонца <= &КалендарьДатаКонца | ТОГДА ЛОЖЬ | КОНЕЦ | КОНЕЦ |
Сообщ.
#47
,
|
|
|
Цитата ^D^ima @ Календарь.ДатаНачала это реквизит на форме дата время В запросах не видно реквизиты формы. |
Сообщ.
#48
,
|
|
|
я слепой лошара
так конечно |ГДЕ | ВЫБОР | КОГДА &КалендарьДатаНачала = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ИЛИ &КалендарьДатаКонца = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА ИСТИНА | ИНАЧЕ Календарь.ДатаНачала >= &КалендарьДатаНачала | И Календарь.ДатаКонца <= &КалендарьДатаКонца | КОНЕЦ |
Сообщ.
#49
,
|
|
|
^D^ima, ты уже нашел консоль запросов?
|
Сообщ.
#50
,
|
|
|
Как отловить событие ТЗ формы при программном создании элемента ЭлементТаблицы = ТаблицаКалендарь.Добавить(); или ЗначениеВРеквизитФормы(ЗначениеИзФайла("c:\ТаблицаКалендарь.txt"),"ТаблицаКалендарь");
Я хочу при добавлении элемента в таблицу помещать данные в выпадающий список. Добавлено Цитата kosten @ ты уже нашел консоль запросов? А что с нее толку-то? немного быстрее поможет писать код |
Сообщ.
#51
,
|
|
|
Цитата ^D^ima @ Я хочу при добавлении элемента в таблицу помещать данные в выпадающий список. Если нет возможности вызывать обновление списка во всех местах кода где добавляется новый элемент таблицы, то я бы сделал так: добавил в таблицу какой-нибудь невидимый на форме реквизит Булево, для новой строки в таблице значений выставлял его Истина. Как только строка добавляется в выпадающий список - выставить в таблице Ложь. Потом используя ПодключитьОбработчикОжидания проверять таблицу значений на наличие строк с реквизитом Истина. Если есть такие - добавляешь в список и т.д. Описанный метод может вызвать подвисание если элементов в таблице много. Более изящного метода пока не приходит в голову |
Сообщ.
#52
,
|
|
|
Rust
Я уже понял что проще добавлять в местах заполнения таблицы, т.к. обработчики реагируют на ручные операции. |