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

задача по теме запросов

Автор Пушкина, 24 июн 2024, 13:53

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

Пушкина


LexaK

Цитата: Пушкина от 24 июн 2024, 16:27нет
тогда предлагаю, просто удалить из базы эту процедуру и все!

а поиск по коду примерно такой
//&НаСервере - если в форме делать
Функция ЗапросПоКоду(Код, ИмяСправочника)

Результат = Неопределено;

Если ЗначениеЗаполнено(Код) Тогда

//Запрос - шаблон
лкЗапрос = Новый Запрос;
лкЗапрос.Текст = "
    |Выбрать первые 1
| Спр.Ссылка
|из
| Справочник.Товары Спр
|Где
| Спр.Код = &Код
|";
лкЗапрос.УстановитьПараметр("Код", Код);
лкЗапрос.Текст = СтрЗаменить(лкЗапрос.Текст, "Товары", ИмяСправочника);
лкВыборка = лкЗапрос.Выполнить().Выбрать();

Если лкВыборка.Следующий() Тогда
Результат = лкВыборка.Ссылка;
КонецЕсли;

КонецЕсли;

Возврат Результат;

КонецФункции
если помогло нажмите: Спасибо!

Пушкина

LexaK,Пишет ошибку {ОбщийМодуль.Проверки.Модуль(37,22)}: Процедура или функция с указанным именем не определена (Стрза)
    лкЗапрос.Текст = <<?>>Стрза(лкЗапрос.Текст, "Товары", Справочник.Имя); (Проверка: Сервер)

Пушкина

Цитата: LexaK от 24 июн 2024, 15:49Пушкина, пример замены Поиска по наименованию на запрос
Процедура ВыполнитьПроверкуУникальностиЭлементаСправочника(Источник, Отказ) Экспорт

Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

//Получаем описание справочника источника
Справочник = Источник.Метаданные();

Если Справочник.ДлинаНаименования = 0 Тогда
//У этого справочника не используется наименование, проверку не выполняем
Возврат;
КонецЕсли;

//Запрос - шаблон
лкЗапрос = Новый Запрос;
лкЗапрос.Текст = "
    |Выбрать первые 1
| Истина
|Из
| Справочник.Товары Спр
|Где
|   Спр.Наименование = &Наименование
Спр.Ссылка <> &Ссылка
|";
лкЗапрос.УстановитьПараметр("Наименование", Источник.Наименование);
лкЗапрос.УстановитьПараметр("Ссылка", Источник.Ссылка);

лкЗапрос.Текст = Стрза(лкЗапрос.Текст, "Товары", Справочник.Имя);

Отказ = Не лкЗапрос.Выполнить().Пустой();

Если Отказ Тогда
//сообщаем об ошибке
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Справочник.Имя+ " с таким наименованием уже есть в базе!";
Сообщение.Поле = "Наименование";
Сообщение.УстановитьДанные(Источник);
Сообщение.Сообщить();
КонецЕсли;

КонецПроцедуры   

LexaK

Пушкина, естественно могут быть ошибки и опечатки (ну уж если вы и опечатки не можете сами исправить....)
Стрза = Стрзаменить
если помогло нажмите: Спасибо!

Пушкина

Препод пишет, все ок, только надо заменить на внеконтекстную процедуру, напишите пожалуйста как?

8.   В модуле формы документа РасходТовара процедура ЗаполнитьВсемиОстаткамиНаСервере() заменена на внеконтекстную

&НаСервере
Процедура ЗаполнитьВсемиОстаткамиНаСервере()
   
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОстаткиТоваровОстатки.Товар КАК Товар,
    |    ОстаткиТоваровОстатки.Товар.Цена КАК Цена,
    |    ОстаткиТоваровОстатки.КоличествоОстаток КАК Количество,
    |    ОстаткиТоваровОстатки.Товар.Цена
    |*    ОстаткиТоваровОстатки.КоличествоОстаток как Сумма
    |ИЗ
    |    РегистрНакопления.ОстаткиТоваров.Остатки(&Дата, ) КАК ОстаткиТоваровОстатки";
   
    Запрос.УстановитьПараметр("Дата", Объект.Дата);
   
    //загрузка остатками вообще без циклов!!!
    Объект.Товары.Загрузить(Запрос.Выполнить().Выгрузить());
   
КонецПроцедуры

LexaK

Цитата: Пушкина от 24 июн 2024, 18:07заменена на внеконтекстную
какой у вас препод коварный!
скажите что вы не смогли это сделать! (иначе он догадается что это все вообще не вы делали)
Пусть трояк (или что там сейчас у вас) ставит за уже выполненное задание!
если помогло нажмите: Спасибо!

Пушкина

LexaK, бальная система, минус 2 балла

Пушкина

&НаСервереБезКонтекста
Процедура ЗаполнитьВсемиОстаткамиНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ОстаткиТоваровОстатки.Товар КАК Товар,
|    ОстаткиТоваровОстатки.Товар.Цена КАК Цена,
|    ОстаткиТоваровОстатки.КоличествоОстаток КАК Количество,
|    ОстаткиТоваровОстатки.Товар.Цена
|*    ОстаткиТоваровОстатки.КоличествоОстаток как Сумма
|ИЗ
|    РегистрНакопления.ОстаткиТоваров.Остатки(&Дата, ) КАК ОстаткиТоваровОстатки";
Запрос.УстановитьПараметр("Дата", Дата);
РезультатЗапроса = Запрос.Выполнить();
ЗаполнитьОстатками = РезультатЗапроса.Выгрузить();

///Запрос.УстановитьПараметр("Дата", Объект.Дата);

//загрузка остатками вообще без циклов!!!
///Объект.Товары.Загрузить(Запрос.Выполнить().Выгрузить());

КонецПроцедуры

Пушкина

LexaK, Пишет вот эту ошибку: {Документ.РасходТовара.Форма.ФормаДокумента.Форма(20,36)}: Переменная не определена (Дата)
   Запрос.УстановитьПараметр("Дата", <<?>>Дата); (Проверка: Сервер)

Теги:
Рейтинг@Mail.ru

Поиск