Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 сен 2025, 00:25

ссылка.*

Автор sali, 01 сен 2025, 12:56

0 Пользователей и 1 гость просматривают эту тему.

sali

Цитата: Максим75 от 02 сен 2025, 08:26т.е. в зависимости от количества выбранных видов документов текст запроса будет разным
то бишь запрос будет в цикле

Максим75

Цитата: sali от 02 сен 2025, 08:46
Цитата: Максим75 от 02 сен 2025, 08:26т.е. в зависимости от количества выбранных видов документов текст запроса будет разным
то бишь запрос будет в цикле
где я за запрос в цикле писал?
я писал, что текст запроса строится в цикле, а в цикле обходите список видов документов.

sali

Максим75, я написал своими словами
Цитата: sali от 02 сен 2025, 08:46то бишь запрос будет в цикле
ваше пояснение
Цитата: Максим75 от 02 сен 2025, 08:48текст запроса строится в цикле, а в цикле обходите список видов документов
:D  :D  не сердитесь

sali

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

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладная.Ссылка КАК Документ
|ИЗ
| Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
|ГДЕ
| ПриходнаяНакладная.Проведен
| И ПриходнаяНакладная.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОтчетОРозничныхПродажах.Ссылка
|ИЗ
| Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
|ГДЕ
| ОтчетОРозничныхПродажах.Проведен
| И ОтчетОРозничныхПродажах.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИнвентаризацияЗапасов.Ссылка
|ИЗ
| Документ.ИнвентаризацияЗапасов КАК ИнвентаризацияЗапасов
|ГДЕ
| НЕ ИнвентаризацияЗапасов.ПометкаУдаления
| И ИнвентаризацияЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СписаниеЗапасов.Ссылка
|ИЗ
| Документ.СписаниеЗапасов КАК СписаниеЗапасов
|ГДЕ
| НЕ СписаниеЗапасов.ПометкаУдаления
| И СписаниеЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОприходованиеЗапасов.Ссылка
|ИЗ
| Документ.ОприходованиеЗапасов КАК ОприходованиеЗапасов
|ГДЕ
| НЕ ОприходованиеЗапасов.ПометкаУдаления
| И ОприходованиеЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РасходнаяНакладная.Ссылка
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| НЕ РасходнаяНакладная.ПометкаУдаления
| И (РасходнаяНакладная.Дата МЕЖДУ &НачалоПериода И &КонецПериода)
| И (РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ПродажаПокупателю)
| ИЛИ РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ВозвратПоставщику))
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПеремещениеЗапасов.Ссылка
|ИЗ
| Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов
|ГДЕ
| ПеремещениеЗапасов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И ПеремещениеЗапасов.Проведен";
//|   И РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ПродажаПокупателю)
//|   ИЛИ РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ВозвратПоставщику)";
Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", ?(Период.ДатаОкончания = Дата(1,1,1), Дата(3999,12,31), КонецДня(Период.ДатаОкончания)));
ДокументыСообщения.Загрузить(Запрос.Выполнить().Выгрузить());

ДозаполнитьДокументыСообщенияВыгрузка();
КонецПроцедуры

sali

и тут же может сработать необязательное  условие , к примеру
{ГДЕ Приходнаянакладная.ссылка = &ссылка} или {ГДЕ Приходнаянакладная.контрагент = &контаргент}
или нет??

Максим75

Цитата: sali от 02 сен 2025, 09:18и тут же может сработать необязательное  условие , к примеру
{ГДЕ Приходнаянакладная.ссылка = &ссылка} или {ГДЕ Приходнаянакладная.контрагент = &контаргент}
или нет??
в таком запросе условие надо делать обязательным
только примерно вот таким
ГДЕ
Выбор КОГДА &ЕстьКонтрагент Тогда Приходнаянакладная.контрагент = &контаргент
ИНАЧЕ ИСТИНА
КОНЕЦ

смысл в том, что если на форме заполнен контрагент, то параметр ЕстьКонтрагент становится ИСТИНА и контрагенту нужный контрагент прилетает, если не заполнен, то параметр ЕстьКонтрагент становится ЛОЖЬ и условие не проверяется, оно и так получает ИСТИНА

sali

Максим75, СКАЖИТЕ МНЕ ПОЖАЛУЙСТА, как оин и тот же код может не работать в другой базе? я пишу в процедуре ПриСозданииНаСервере
Если ЭтоУНФ Тогда   

ПредставлениеДокумента = Новый СписокЗначений;
ПредставлениеДокумента.Добавить(Тип("ДокументСсылка.РасходнаяНакладная")); 
ПредставлениеДокумента.Добавить(Тип("ДокументСсылка.ПеремещениеЗапасов"));
ПредставлениеДокумента.Добавить(Тип("ДокументСсылка.ОприходованиеЗапасов"));
ПредставлениеДокумента.Добавить(Тип("ДокументСсылка.ИнвентаризацияЗапасов"));
ПредставлениеДокумента.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
ПредставлениеДокумента.Добавить(Тип("ДокументСсылка.ПриходнаяНакладная"));

КонецЕсли; 
ПредставлениеВидаДокумента.ДоступныеЗначения = ПредставлениеДокумента;
ПредставлениеДокумента.ТипЗначения = Новый ОписаниеТипов(ПредставлениеДокумента);

ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Тип("СправочникСсылка.Контрагенты"));
ПредставлениеКонтрагента.ТипЗначения = Новый ОписаниеТипов(ДобавляемыеРеквизиты);

в одной базе она работает , в другой нет. единственное рабочую базу открывал на 25 платформе , а базу где не работает на 21

sali

понял, платформы то разные и работают они по разному
так работает на 21 платформеСнимок экрана 2025-09-02 161820.png Снимок экрана 2025-09-02 161730.png
у документов сразу выбор конкретного идет

sali

Цитата: Максим75 от 02 сен 2025, 09:29в таком запросе условие надо делать обязательным
а почему??
обработка выгружает с сервера документы , пользователь может выставлять и не выставлять параметры отбора как захочет

sali

Максим75, ПОЧЕМУ если хочу получить значение из списка он выдает неопределенно ?


// процедура ПриСозданииНаСервере
ДобавляемыйДокумент = Новый списокзначений;
ДобавляемыйДокумент.Добавить(Новый ОписаниеТипов("ДокументОбъект.РасходнаяНакладная"), "Расходная накладная");
ДобавляемыйДокумент.Добавить(Новый ОписаниеТипов("ДокументОбъект.ПеремещениеЗапасов"), "Перемещение запасов");
ДобавляемыйДокумент.Добавить(Новый ОписаниеТипов("ДокументОбъект.ОприходованиеЗапасов"), "Оприходование запасов");
ДобавляемыйДокумент.Добавить(Новый ОписаниеТипов("ДокументОбъект.ИнвентаризацияЗапасов"), "Инвентаризация запасов");
ДобавляемыйДокумент.Добавить(Новый ОписаниеТипов("ДокументОбъект.ОтчетОРозничныхПродажах"), "Отчет о розничных продажах");
ДобавляемыйДокумент.Добавить(Новый ОписаниеТипов("ДокументОбъект.ПриходнаяНакладная"), "Приходная накладная");

элементы.ПредставлениеДокумента.СписокВыбора.ТипЗначения = новый описаниетипов(ДобавляемыйДокумент);

&НаСервере
Функция СформироватьТекстЗапроса()
ТекстЗапроса = "";
значениясписка = ПредставлениеДокумента.НайтиПоЗначению("Расходная накладная");
Если значениясписка <> Неопределено Тогда
ТекстЗапроса = ТекстЗапроса +
"ВЫБРАТЬ
| РасходнаяНакладная.Ссылка,
| РасходнаяНакладная.Контрагент
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| НЕ РасходнаяНакладная.ПометкаУдаления
| И (РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ПродажаПокупателю)
| ИЛИ РасходнаяНакладная.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРасходнаяНакладная.ВозвратПоставщику))";
конецесли;

Если ПредставлениеДокумента.НайтиПоЗначению("Приходная накладная") <> Неопределено Тогда   
Если ТекстЗапроса <> "" Тогда
ТекстЗапроса =  ТекстЗапроса + "ОБЪЕДИНИТЬ ВСЕ ";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + 
"ВЫБРАТЬ
| ПриходнаяНакладная.Ссылка КАК Документ,
| ПриходнаяНакладная.Контрагент КАК Контрагент
|ИЗ
| Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
|ГДЕ
| ПриходнаяНакладная.Проведен";
КонецЕсли;

Если ПредставлениеДокумента.НайтиПоЗначению("Перемещение запасов") <> Неопределено Тогда   
Если ТекстЗапроса <> "" Тогда
ТекстЗапроса =  ТекстЗапроса + "ОБЪЕДИНИТЬ ВСЕ ";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +
"ВЫБРАТЬ
| ПеремещениеЗапасов.Ссылка,
| НЕОПРЕДЕЛЕНО
|ИЗ
| Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов";
КонецЕсли;

Возврат ТекстЗапроса;
КонецФункции

ПредставлениДокумента - это реквизит формы с типом СписокЗначений и типом значений - Произвольный

Теги:

Похожие темы (4)

Рейтинг@Mail.ru

Поиск