Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > 1С: Проблемы и решения > Хранение временной информации в базе


Автор: ^D^ima 25.09.19, 07:03
Есть задача - построение отчетов из Битрикс 24.

С помощью рест апи буду получать данные. Данные в json

Собственно вопрос:
1 Для построения встроенных запросов данные должны быть сохранены в базе, или достаточно только в форме?
2 если на первый вопрос ответ нет, то как мне данные актуализировать? Т.е. я по кнопке загружаю таблицу, далее мне нужно как-то актуализировать базу. Возможен ли вариант использования временных таблиц, которые после закрытия базы удаляются? Не будут ли временные таблицы забивать базу(рост размера файла)?
3 Если ответ на первый вопрос да, то как мне лучше данные вставлять в форму(управляемое приложение)?

По сути там будет около 7-10 связанных по ИД элемента справочников, или документов, если в справочнике нет табличных частей.

Автор: evGenius 25.09.19, 07:14
В объект обработки или отчета можно добавить реквизит - таблицу значений с колонками заданных типов. По идее в запросе можно использовать параметры-таблицы, так что данные можно передать в запрос.
Ну и этот реквизит можно будет отобразить на форме. После закрытия обработки или отчета все реквизиты очистятся.

Автор: ^D^ima 25.09.19, 08:23
evGenius
В конструкторе запросов нет таблиц значений с формы. Опять-же не ясно как связывать эти таблицы(и нужно ли вообще)
или ты что-то другое имеешь в виду?
1c1.png (, : 753)

Автор: kosten 25.09.19, 08:51
Цитата ^D^ima @
В конструкторе запросов нет таблиц значений с формы.

Таблицу передавай, как параметр запроса.

Добавлено
ВЫБРАТЬ * ИЗ &таб

Автор: ^D^ima 25.09.19, 08:55
kosten
при этом конструктор запросов не будет работать?

Автор: Rust 25.09.19, 08:58
Цитата ^D^ima @
В конструкторе запросов нет таблиц значений с формы

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   ТЗ.Код КАК Код,
    |   ТЗ.Наименование КАК Наименование
    |ИЗ
    |   &ТаблицаФормы КАК ТЗ";
    Запрос.УстановитьПараметр("ТаблицаФормы", РеквизитФормыВЗначение("Реквизит1"));

как то так.

Автор: kosten 25.09.19, 09:08
Цитата ^D^ima @
при этом конструктор запросов не будет работать?

А что ты от него хочешь? Поля твоей таблицы он знать не будет - сам все пропишешь. Связи с другими таблицами может позволит сделать.

Автор: ^D^ima 25.09.19, 09:48
Конструктор не ошибается по крайней мере :D

Концептуально понял. Как таблицы растащить по страницам?

Автор: kosten 25.09.19, 09:53
Цитата ^D^ima @
Как таблицы растащить по страницам?

что?

Автор: ^D^ima 25.09.19, 10:14
На управляемой форме 10 табличных частей в разных закладках

Автор: kosten 25.09.19, 10:21
Цитата ^D^ima @
На управляемой форме 10 табличных частей в разных закладках

И в чем проблема?

Автор: evGenius 25.09.19, 10:44
Добавляешь на форму вкладки и в каждую таскаешь мышкой таблицы из дерева свойств.

Автор: ^D^ima 25.09.19, 13:56
А как я отчеты к своим табличным формам своей обработки привяжу? :(
Я имею в виду компоновку данных, объект отчеты в конфигурации

Автор: Rust 26.09.19, 04:51
Цитата ^D^ima @
А как я отчеты к своим табличным формам своей обработки привяжу?

Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений.

Автор: evGenius 26.09.19, 07:24
Цитата Rust @
Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений.

В данном случае только так, да. Либо делать отчет не на СКД.

Автор: ^D^ima 26.09.19, 14:40
Цитата Rust @
Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений.

Можно пример?

Добавлено
Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов

Автор: Rust 27.09.19, 04:46
Цитата ^D^ima @
Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов

ну я так понял что ты заполняешь табличную часть обработки (или таблицу значений в обработке) данными из битрикса, а потом строишь по ним отчет, при этом тебе не надо хранить данные в базе?
во вложении простой пример как построить отчет по данным таблицы значений
__________________________________________________________.zip (, : 444)

Автор: ^D^ima 27.09.19, 07:37
Rust
Спасибо!

Несколько вопросов:
1 ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗ); Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот? Т.е. если у моей ТЗ есть какой-то реквизит, должен ли он быть в ПримерТаблицыЗначений?
2 Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных? Или нужно Сделать SQL запросы напрямую из ТЗ в каую-то результирующую ТЗ, а потом ее переложить в набор данных компоновки для дальнейшей визуальной обработки?

Автор: Rust 27.09.19, 08:05
Цитата ^D^ima @
Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот?


1. Да. Таблицы должны быть идентичны. Данные в компоновку ты передаешь из таблицы значений, эту таблицу значений представляешь системе компоновки как "набор данных - объект", и в этом наборе данных описываешь что именно лежит в передаваемой таблице значений.

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

По пункту 2 не могу точно что-то посоветовать, просто высказал свое имхо, т.к. не знаю какие данные у тебя есть и какие отчеты будешь формировать. Все зависит от входящих данных из битрикса.

Добавлено
Оффтоп.

Уже много лет работаю с 1С, но с битриксом так ни разу и не сталкивался. Хоть и интегрировал кучу совершенно разных систем с 1С :)

Добавлено
Цитата ^D^ima @
Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных?

В случае работы с набором данных - объект тебе не надо писать запросы. Ты просто описываешь поля таблицы на закладке Наборы данных, в модуле объекта отчета подсовываешь СКД свои данные в виде таблицы значений, на закладке Настройки формируешь внешний вид твоего отчета, и все. СКД дальше все сделает сама. Твоя задача только описать какую таблицу ты передашь СКД, передать ей таблицу и указать СКД как должен выглядеть твой отчет.

Автор: ^D^ima 27.09.19, 10:27
Rust
1 Из битрикса REST API запросами не вытянуть итоговые данные, только по таблицам(т.к. это облачный портал, нет доступа к базе данных напрямую. есть ещё стандартная оьработка по синхронизации, но она далеко не все данные передает)
2 Исходя из ограничений п.1. придется вначале дергать таблицы, потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку. Да и как понимаю так просто не поработать с ТЗ в запросе - нужно создавать временную таблицу там

Автор: Rust 27.09.19, 11:30
Цитата ^D^ima @
потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку.

А почему бы не сделать несколько "наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных?
Имхо, обрабатывать запросами таблицы значений, чтобы получить другую таблицу значений лишнее.

Автор: ^D^ima 27.09.19, 11:46
Цитата Rust @
"наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных?

А как к ним применить SQL запрос?

Добавлено
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
        Запрос = новый Запрос;
        Запрос.Текст= "ВЫБРАТЬ
                      | Подразделение.ИД КАК ИД,
                      | Подразделение.Наименование КАК Наименование
                      |ПОМЕСТИТЬ Временная
                      |ИЗ
                      | &Подразделение КАК Подразделение ;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      | Временная.ИД КАК ИД,
                      | Временная.Наименование КАК Наименование
                      |ИЗ
                      | Временная КАК Временная";
        Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения);
        
        Выборка = запрос.Выполнить().Выбрать();


Что он хочет от меня?
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(155)}: Ошибка при вызове метода контекста (Выполнить)
        Выборка = запрос.Выполнить().Выбрать();
    по причине:
    {(6, 2)}: Неверные параметры "Подразделение"
    <<?>>&Подразделение КАК Подразделение
     
    по причине:
    {(6, 2)}: Неверные параметры "Подразделение"
    <<?>>&Подразделение КАК Подразделение


ТаблицаПодразделения через вычислить выражение определяется

Автор: Rust 27.09.19, 12:18
Цитата ^D^ima @
А как к ним применить SQL запрос?

а зачем?

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

Добавлено
Цитата ^D^ima @
ТаблицаПодразделения через вычислить выражение определяется

видимо неверно формируется таблица значений.

у меня твой пример вот в таком виде работает
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ТаблицаПодразделения = Новый ТаблицаЗначений;
        ТаблицаПодразделения.Колонки.Добавить("ИД", Новый ОписаниеТипов("Строка"));
        ТаблицаПодразделения.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
            
        НоваяСтрока              = ТаблицаПодразделения.Добавить();
        НоваяСтрока.ИД           = "123";
        НоваяСтрока.Наименование = "Наименование строки";
        
        Запрос = новый Запрос;
        Запрос.Текст= "ВЫБРАТЬ
         | Подразделение.ИД КАК ИД,
         | Подразделение.Наименование КАК Наименование
         |ПОМЕСТИТЬ Временная
         |ИЗ
         | &Подразделение КАК Подразделение ;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         | Временная.ИД КАК ИД,
         | Временная.Наименование КАК Наименование
         |ИЗ
         | Временная КАК Временная";
        Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения);
     
        Выборка = Запрос.Выполнить().Выгрузить();


В переменной Выборка в итоге оказывается сформированная таблица значений

Добавлено
Посмотри в отладчике что у тебя вот в этой строке Запрос.УстановитьПараметр("Подразделение", ТаблицаПодразделения) в переменной ТаблицаПодразделения

Автор: ^D^ima 27.09.19, 12:42
Я ТЗ с реквизитами накидываю на форму,

Цитата Rust @
в переменной ТаблицаПодразделения

ДанныеФормыКоллекция

Автор: Rust 27.09.19, 12:51
Цитата ^D^ima @
ДанныеФормыКоллекция


тогда поможет
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ТаблицаПодразделения = РеквизитФормыВЗначение("ТутИмяТаблицыНаФорме");

Автор: ^D^ima 27.09.19, 14:25
А это что за х-ня?
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
        Запрос.Текст= "ВЫБРАТЬ
                      | Подразделение.ИД КАК ПодразделениеИД,
                      | Подразделение.Наименование КАК ПодразделениеНаименование,
                      | Сотрудники.ИД КАК СотрудникиИД,
                      | Сотрудники.ФИО КАК ФИО,
                      | Сотрудники.ИДПодразделения КАК ИДПодразделения
                      |ПОМЕСТИТЬ Временная
                      |ИЗ
                      | &Подразделение КАК Подразделение,
                      | &Сотрудники КАК Сотрудники
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      | Временная.ПодразделениеИД КАК ПодразделениеИД,
                      | Временная.ПодразделениеНаименование КАК ПодразделениеНаименование,
                      | Временная.СотрудникиИД КАК СотрудникиИД,
                      | Временная.ФИО КАК ФИО,
                      | Временная.ИДПодразделения КАК ИДПодразделения
                      |ИЗ
                      | Временная КАК Временная";
        Запрос.УстановитьПараметр("Подразделение",РеквизитФормыВЗначение("ТаблицаПодразделения"));
        Запрос.УстановитьПараметр("Сотрудники",РеквизитФормыВЗначение("ТаблицаСотрудники"));


<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(166)}: Ошибка при вызове метода контекста (Выполнить)
        Выборка = запрос.Выполнить().Выбрать();
    по причине:
    При выборе данных из объекта в запросе не могут присутствовать соединения и объединения
     
    по причине:
    При выборе данных из объекта в запросе не могут присутствовать соединения и объединения


Я хочу все таблицы запихнуть во временную и следующим вложенным запросом брать оттуда данные

Добавлено
Или каждую ТЗ в отдельную временную таблицу засунуть? :wall: :wall: :wall: :wall:

Автор: Rust 28.09.19, 07:36
Цитата ^D^ima @
Или каждую ТЗ в отдельную временную таблицу засунуть?

Да.

Кстати, временную таблицу тоже нельзя соединить с выборкой из таблицы значений. Получишь ошибку
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    по причине:
    Содержимое объекта данных может быть выбрано только во временную таблицу


Поэтому каждую таблицу значений заносишь в отдельную временную таблицу и дальше манипулируешь данными как тебе надо.

Автор: ^D^ima 01.10.19, 11:00
Долбанный неразрывный пробел :wall: :wall: :wall: час потратил чтобы понять почему не работает

Автор: Rust 01.10.19, 11:07
Цитата ^D^ima @
час потратил чтобы понять почему не работает

это ты еще быстро разобрался.

Автор: ^D^ima 01.10.19, 11:54
Как такой формат привести к формату даты 1С?
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    2019-02-01T03:00:00+03:00

Автор: kosten 01.10.19, 12:47
Цитата ^D^ima @
Как такой формат привести к формату даты 1С?

Из json получаешь?

Автор: ^D^ima 01.10.19, 13:08
kosten
да

Добавлено
Я вначале поле сделал дата\время, но туда из JSONа ничего не переходит, сделал строку

Автор: kosten 01.10.19, 13:20
Цитата ^D^ima @
да

Кури функцию ПрочитатьJSON. У нее один из аргументов - это имена свойств с типом дата. Она нормально сделает перевод в нужный формат.

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ПрочитатьJSON(ЧтениеJSON,, "ДатаЗапроса", ФорматДатыJSON.ISO)

Автор: ^D^ima 01.10.19, 21:23
kosten
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ФорматДатыJSON.ISO – формат вида: “ГГГГ-ММ-ДДTЧЧ:ММ:ССZ”, Например: “2009-02-15T00:00:00Z”.
    ФорматДатыJSON.JavaScript – формат вида : “1234656000000”.
    ФорматДатыJSON.Microsoft – Формат вида: “/Date(123456000000)/”.

Вот такой и выходит формат, а мне нужно в обычный ДЛФ=ДВ

Добавлено
Пока сделал по старинке
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    СтрЗаменить( Лев(Т1Итем.DEADLINE, 10),"-","")

Автор: Rust 02.10.19, 07:43
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
    Результат = Сериализатор.XMLЗначение(Тип("Дата"), СокрЛП("2019-02-01T03:00:00+03:00"));


В переменной Результат у нас получается
01.02.2019 5:00:00

ФабрикаXDTO в типовых уже есть.
Пример обработки во вложении
______________________.zip (, : 411)

Добавлено
Цитата Rust @
01.02.2019 5:00:00

А это уже можно обработать при помощи Формата

Автор: ^D^ima 02.10.19, 09:23
Rust
Спасибо, проверю.

Возник такой вопрос - как в ТЗ отображать нули?

Но умолчанию они не видны, а нужны. Не заполнено и ноль разные вещи, неясно как там где 0, ставить 0, где пусто ничего.

Автор: Rust 02.10.19, 09:55
Цитата ^D^ima @
Возник такой вопрос - как в ТЗ отображать нули?

В свойствах поля поставь Формат Представление нуля 0
Смотри скриншот
Screenshot_119.jpg (, : 611)

Автор: ^D^ima 02.10.19, 10:06
Почему тогда в ТЗ попадает 0 если переменная Неопределено???

Т.е. я получаю JSON, и если какая-то переменная Неопределено, то он туда ставит 0??? Или для ТЗ 0 и неопределено одно и то-же?

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

Автор: Rust 02.10.19, 10:20
Цитата ^D^ima @
Почему тогда в ТЗ попадает 0 если переменная Неопределено???

Какого типа реквизит на форме? Если числового, то он не может быть Неопределено.

Добавлено
Цитата ^D^ima @
Можно конечно строку сделать

это лишние костыли

Автор: ^D^ima 02.10.19, 10:31
Цитата Rust @
Какого типа реквизит на форме? Если числового, то он не может быть Неопределено.

Числового

У меня в запросе такие строки:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Январь) КАК Январь,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Февраль) КАК Февраль,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Март) КАК Март,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Апрель) КАК Апрель,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Май) КАК Май,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Июнь) КАК Июнь,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Июль) КАК Июль,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Август) КАК Август,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Сентябрь) КАК Сентябрь,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Октябрь) КАК Октябрь,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Ноябрь) КАК Ноябрь,
                      | МАКСИМУМ(ОтгрузкаПоМесяцам.Декабрь) КАК Декабрь


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

Автор: Rust 02.10.19, 10:57
Цитата ^D^ima @
Числового

Числовой тип не может быть Неопределено, будет 0.
Цитата ^D^ima @
Получается если числовая колонка не может быть пустой, то задача не решается без ухода в другой формат

опиши задачу и желаемый результат, потом можно подумать как получить нужный результат

Автор: ^D^ima 02.10.19, 14:06
Ничего Сотрудники ставят процент отгрузки задачи, она может быть и 0, это отражается в ТЗ

Автор: ^D^ima 03.10.19, 12:38
Как можно в запросе обыграть такую ситуацию:
В параметрах запроса я задаю данные для отбора в запросе(например дата), которые участвует в секции где
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
                      | Календарь.Сотрудник КАК КалендарьСотрудник,
                      | Календарь.ДатаНачала КАК КалендарьДатаНачала,
                      | Календарь.ДатаКонца КАК КалендарьДатаКонца,
                      | Календарь.Сделка КАК КалендарьСделка,
                      | Календарь.Длительность КАК КалендарьДлительность
                      |ПОМЕСТИТЬ ВременнаяКалендарь
                      |ИЗ
                      | &Календарь КАК Календарь
                      |ГДЕ
                      | Календарь.ДатаНачала >= &КалендарьДатаНачала
                      | И Календарь.ДатаКонца <= &КалендарьДатаКонца
                      |;
                      |

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

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

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

Автор: Rust 03.10.19, 12:51
Цитата ^D^ima @
Как мне сделать так, чтобы если параметр запроса не задан, то этот параметр игнорируется в запросе.

Как то так

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
        
        Запрос = Новый Запрос;
        ТекстЗапроса = "ВЫБРАТЬ
                       |    Номенклатура.Код КАК Код,
                       |    Номенклатура.Наименование КАК Наименование,
                       |    Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
                       |ИЗ
                       |    Справочник.Номенклатура КАК Номенклатура
                       |{УсловиеВЗапросе";
        
        НуженОтбор = ЗначениеЗаполнено(ЭлементНоменклатура);
        Если НуженОтбор Тогда
                ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "{УсловиеВЗапросе}", "Где Номенклатура.Ссылка = &СсылкаНаЭлемент");
            Запрос.УстановитьПараметр("СсылкаНаЭлемент", ЭлементНоменклатура);
        Иначе
            ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "{УсловиеВЗапросе}", "");
        КонецЕсли;
        Запрос.Текст = ТекстЗапроса;

Автор: ^D^ima 03.10.19, 13:02
Rust
Хакерство какое-то :D

Почему это не прокатывает?

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
                      |ГДЕ
                      | ВЫБОР
                      |         КОГДА Календарь.ДатаНачала = ДАТАВРЕМЯ(0001,01,01,0,0,0)
                      |                 ИЛИ Календарь.ДатаКонца = ДАТАВРЕМЯ(0001,01,01,0,0,0)
                      |             ТОГДА ИСТИНА
                      |         ИНАЧЕ Календарь.ДатаНачала >= &КалендарьДатаНачала
                      |                 И Календарь.ДатаКонца <= &КалендарьДатаКонца
                      |     КОНЕЦ

Календарь.ДатаНачала это реквизит на форме дата время

Автор: Rust 03.10.19, 13:14
Ничего не понял. Приведи весь запрос

Добавлено
наверное так?
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    |ГДЕ
    |  ВЫБОР
    |       КОГДА Календарь.ДатаНачала = ДАТАВРЕМЯ(0001,01,01,0,0,0) ИЛИ Календарь.ДатаКонца = ДАТАВРЕМЯ(0001,01,01,0,0,0)
    |           ТОГДА  ИСТИНА
    |       ИНАЧЕ
    |           ВЫБОР
    |               КОГДА  Календарь.ДатаНачала >= &КалендарьДатаНачала И Календарь.ДатаКонца <= &КалендарьДатаКонца
    |                   ТОГДА ЛОЖЬ
    |           КОНЕЦ
    |   КОНЕЦ

Автор: kosten 03.10.19, 13:22
Цитата ^D^ima @
Календарь.ДатаНачала это реквизит на форме дата время

В запросах не видно реквизиты формы.

Автор: ^D^ima 03.10.19, 13:24
я слепой лошара
так конечно :lol:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
                      |ГДЕ
                      | ВЫБОР
                      |         КОГДА &КалендарьДатаНачала = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                      |                 ИЛИ &КалендарьДатаКонца = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                      |             ТОГДА ИСТИНА
                      |         ИНАЧЕ Календарь.ДатаНачала >= &КалендарьДатаНачала
                      |                 И Календарь.ДатаКонца <= &КалендарьДатаКонца
                      |     КОНЕЦ

Автор: kosten 03.10.19, 13:53
^D^ima, ты уже нашел консоль запросов?

Автор: ^D^ima 03.10.19, 13:57
Как отловить событие ТЗ формы при программном создании элемента ЭлементТаблицы = ТаблицаКалендарь.Добавить(); или ЗначениеВРеквизитФормы(ЗначениеИзФайла("c:\ТаблицаКалендарь.txt"),"ТаблицаКалендарь");


Я хочу при добавлении элемента в таблицу помещать данные в выпадающий список.

Добавлено
Цитата kosten @
ты уже нашел консоль запросов?

А что с нее толку-то? немного быстрее поможет писать код

Автор: Rust 04.10.19, 07:35
Цитата ^D^ima @
Я хочу при добавлении элемента в таблицу помещать данные в выпадающий список.


Если нет возможности вызывать обновление списка во всех местах кода где добавляется новый элемент таблицы, то я бы сделал так: добавил в таблицу какой-нибудь невидимый на форме реквизит Булево, для новой строки в таблице значений выставлял его Истина. Как только строка добавляется в выпадающий список - выставить в таблице Ложь.
Потом используя ПодключитьОбработчикОжидания проверять таблицу значений на наличие строк с реквизитом Истина. Если есть такие - добавляешь в список и т.д.
Описанный метод может вызвать подвисание если элементов в таблице много.

Более изящного метода пока не приходит в голову

Автор: ^D^ima 04.10.19, 13:00
Rust
Я уже понял что проще добавлять в местах заполнения таблицы, т.к. обработчики реагируют на ручные операции.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)