Помогите составить запрос в 1С
02.06.2009
12:27
#1
"Добрый день!
Конфигурация Торговля+Склад для Украины 7.70.007
Мне необходимо выгрузить в текстовый формат через разделитель код контрагента и дополнительное поле например коментарий. Пытаюсь воспользоватся вот таким запросом. Помогите плиз. Может у кого есть дока по запросам или готовая реализация?
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса="
|ПЕРИОД С Дата1 По Дата2;
|Фирма=Регистр.ПартииТоваров.Фирма;
|Товар=Регистр.ПартииТоваров.Товар;
|Контрагент=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент;
|ОстатокТовара=Регистр.ПартииТоваров.ОстатокТовара;
|Оборот=Регистр.ПартииТоваров.Оборот;
|КодОперации=Регистр.ПартииТоваров.КодОперации;
|Группировка Контрагент без групп;
|Условие (Фирма=ВыбФирма);
|Условие (Товар в ВыбГруппа);
|Условие (Оборот<>0);
|Условие (ПустоеЗначение(Контрагент)=0);
|Условие (КодОперации В КодыОперацийПродажи);
|Функция ОборотТовара=Сумма(Оборот);
|";
СписокТоваров = СоздатьОбъект("СписокЗначений");
СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
Если глФильтрПоСправочнику("Номенклатура",0,0,0,0,0,СписокТоваров,ТекстЗапроса,0,0,"Товар,,,СписокТоваров,,,,,")=0 Тогда
Возврат;
КонецЕсли;
Если глФильтрПоСправочнику("Контрагенты",0,0,ВыбКатегорияКонтрагентов,0,0,СписокКонтрагентов,ТекстЗапроса,0,0,"Контрагент,,,СписокКонтрагентов,,,,,")=0 Тогда
Возврат;
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
Предупреждение("Запрос по Партиям не выполнился!");
Возврат;
КонецЕсли;
Пока Запрос.Группировка("Контрагент")=1 Цикл
СтрокаТекста=СокрЛП(Строка(Константа.КодДДС))+";";
СтрокаТекста=СтрокаТекста+СокрЛП(Строка(Запрос.Контрагент.Код))+";";
СтрокаТекста=СтрокаТекста+СокрЛП(Строка(Запрос.Контрагент.Комментарий))+";";
ТекстВыгрузки.ДобавитьСтроку(СтрокаТекста);
КонецЦикла;
Если ТекстВыгрузки.КоличествоСтрок()<>0 Тогда
Попытка
ТекстВыгрузки.Записать(ФайлВыгрузки);
Предупреждение("Файл успешно сформирован");
Исключение
Предупреждение("Невозможно сохранить файл! Проверьте путь к файлу выгрузки!");
КонецПопытки;
Иначе
Предупреждение("Нет данных для выгрузки! Файл не сформирован!");
КонецЕсли;
КонецПроцедуры"
Конфигурация Торговля+Склад для Украины 7.70.007
Мне необходимо выгрузить в текстовый формат через разделитель код контрагента и дополнительное поле например коментарий. Пытаюсь воспользоватся вот таким запросом. Помогите плиз. Может у кого есть дока по запросам или готовая реализация?
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса="
|ПЕРИОД С Дата1 По Дата2;
|Фирма=Регистр.ПартииТоваров.Фирма;
|Товар=Регистр.ПартииТоваров.Товар;
|Контрагент=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент;
|ОстатокТовара=Регистр.ПартииТоваров.ОстатокТовара;
|Оборот=Регистр.ПартииТоваров.Оборот;
|КодОперации=Регистр.ПартииТоваров.КодОперации;
|Группировка Контрагент без групп;
|Условие (Фирма=ВыбФирма);
|Условие (Товар в ВыбГруппа);
|Условие (Оборот<>0);
|Условие (ПустоеЗначение(Контрагент)=0);
|Условие (КодОперации В КодыОперацийПродажи);
|Функция ОборотТовара=Сумма(Оборот);
|";
СписокТоваров = СоздатьОбъект("СписокЗначений");
СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
Если глФильтрПоСправочнику("Номенклатура",0,0,0,0,0,СписокТоваров,ТекстЗапроса,0,0,"Товар,,,СписокТоваров,,,,,")=0 Тогда
Возврат;
КонецЕсли;
Если глФильтрПоСправочнику("Контрагенты",0,0,ВыбКатегорияКонтрагентов,0,0,СписокКонтрагентов,ТекстЗапроса,0,0,"Контрагент,,,СписокКонтрагентов,,,,,")=0 Тогда
Возврат;
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
Предупреждение("Запрос по Партиям не выполнился!");
Возврат;
КонецЕсли;
Пока Запрос.Группировка("Контрагент")=1 Цикл
СтрокаТекста=СокрЛП(Строка(Константа.КодДДС))+";";
СтрокаТекста=СтрокаТекста+СокрЛП(Строка(Запрос.Контрагент.Код))+";";
СтрокаТекста=СтрокаТекста+СокрЛП(Строка(Запрос.Контрагент.Комментарий))+";";
ТекстВыгрузки.ДобавитьСтроку(СтрокаТекста);
КонецЦикла;
Если ТекстВыгрузки.КоличествоСтрок()<>0 Тогда
Попытка
ТекстВыгрузки.Записать(ФайлВыгрузки);
Предупреждение("Файл успешно сформирован");
Исключение
Предупреждение("Невозможно сохранить файл! Проверьте путь к файлу выгрузки!");
КонецПопытки;
Иначе
Предупреждение("Нет данных для выгрузки! Файл не сформирован!");
КонецЕсли;
КонецПроцедуры"
02.06.2009
12:45
#2
У тебя ошибка выскакивает или еще в чем проблема? Что не работает то в твоем запросе?
02.06.2009
12:52
#3
"Пока с сутью вопроса непонятно. Запрос пуст или ругается или еще что то...?
Пока небольшой комментарий по месту выгрузки в файл.
Я пользуюсь такой конструкцией, может возьмете на вооружение:
СписокВыгрузки=СоздатьОбъект("СписокЗначений");
СписокВыгрузки.ДобавитьЗначение(Запрос.Контрагент.Код);
СписокВыгрузки.ДобавитьЗначение(Запрос.Контрагент.Наименование);
Текст.ДобавитьСтроку(СписокВыгрузки.ВСтрокуСРазделителями());
это позволяет потом при загрузке легко сделать разбор строки:
СписокЗагрузки=СоздатьОбъект("СписокЗначений");
СписокЗагрузки.ИзСтрокиСРазделителями(Текст.ПолучитьСтроку(НомерСтроки));
при выгрузке корректно отрабатываются символы, являющиеся разделителями. То есть, если воспользоваться вашим способом и в наименовании контрангента попадется символ ";", то у вас будет проблема. В подходе, который я описал она не возникнет"
Пока небольшой комментарий по месту выгрузки в файл.
Я пользуюсь такой конструкцией, может возьмете на вооружение:
СписокВыгрузки=СоздатьОбъект("СписокЗначений");
СписокВыгрузки.ДобавитьЗначение(Запрос.Контрагент.Код);
СписокВыгрузки.ДобавитьЗначение(Запрос.Контрагент.Наименование);
Текст.ДобавитьСтроку(СписокВыгрузки.ВСтрокуСРазделителями());
это позволяет потом при загрузке легко сделать разбор строки:
СписокЗагрузки=СоздатьОбъект("СписокЗначений");
СписокЗагрузки.ИзСтрокиСРазделителями(Текст.ПолучитьСтроку(НомерСтроки));
при выгрузке корректно отрабатываются символы, являющиеся разделителями. То есть, если воспользоваться вашим способом и в наименовании контрангента попадется символ ";", то у вас будет проблема. В подходе, который я описал она не возникнет"
02.06.2009
14:20
#4
Проблема в том что я никак не могу получить строку коментарий из карточки контрагента в результате запроса. В этом мне нужна помощь.
02.06.2009
14:42
#5
Проблема в том что я никак не могу получить строку коментарий из карточки контрагента в результате запроса. В этом мне нужна помощь.
02.06.2009
16:54
#7
"Прямо в запросе:
|Комм=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент.Комментарий;
вы получите если только комментарий не является строкой неограниченной длины"
|Комм=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент.Комментарий;
вы получите если только комментарий не является строкой неограниченной длины"
Читают тему
(гостей: 1)