Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 09:21
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как вывести результат запроса в табличный документ?  (Прочитано 11475 раз)

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

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Розница 2.0
Есть такой код надо его довести до ума. А точнее чтоб из РегистрНакопления.Продажи.Обороты передавались данные во внешний отчет.
Артикул, Товар, Количество, Единица Измерения, Цена, Сумма. То есть чтобы выводились все имеющиеся данные.
А еще надо чтоб если дата начала и дата конец одинаковые выводились шапка и строка, иначе строка 1 и шапка 1. А еще надо чтоб если магазин не выбран то чтоб выводились данные из всех магазинов.

Перем ЗаДень;
&НаКлиенте
Процедура КомандаСформировать(Команда)
Таб = ВыполнениеНаСервере();
Таб.Показать("Макет","");
КонецПроцедуры

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


ТЗ = Новый ТаблицаЗначений;
ТабДок = Новый ТаблицаЗначений;
Таб = Новый ТабличныйДокумент;
КолонкаКодов    = ФормированиеПечатныхФормСервер.ИмяДополнительнойКолонки();
ВыводитьКоды    = ЗначениеЗаполнено(КолонкаКодов);

//Таб.Колонки.Добавить("Номер");
//Таб.Колонки.Добавить("Артикул");
//Таб.Колонки.Добавить("Товар");
//Таб.Колонки.Добавить("Количество");
//Таб.Колонки.Добавить("Ед");
//Таб.Колонки.Добавить("Цена");
//Таб.Колонки.Добавить("Сумма");
//Таб.ИсходнаяТаблица("Сформировать");
//Ит = Новый БухгалтерскиеИтоги ;

ЗаДень = ?(Отчет.ВыбНачПериода = Отчет.ВыбКонПериода, 1, 0);
//ЗаДень = ?(ВыбНачПериода = ВыбКонПериода, 1, 0);

ЭтотОбъект=РеквизитФормыВЗначение("Отчет");
Макет = ЭтотОбъект.ПолучитьМакет("Макет");

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

Таб.Вывести(ОбластьЗаголовок);
////Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
////Ит.ВыполнитьЗапрос(Отчет.ВыбНачПериода, Отчет.ВыбКонПериода, "41.4, 43", "90.2.1,90.2.2 ",, 2,"Операция", "СК");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1");
ОбластьШапкаНомера    = Макет.ПолучитьОбласть("Шапка|НомерСтроки");
ОбластьШапкаКодов    = Макет.ПолучитьОбласть("Шапка|КолонкаКодов");
ОбластьШапкаДанных    = Макет.ПолучитьОбласть("Шапка|Данные");
ОбластьШапкаСуммы    = Макет.ПолучитьОбласть("Шапка|Сумма");

ОбластьКолонкаАртикул = Макет.Область("КолонкаКодов");
ОбластьКолонкаТовар = Макет.Область("Товар");

ОбластьКолонкаСумма = Макет.Область("Сумма");
ОбластьСтрокаНомера    = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьСтрокаКодов    = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьСтрокаДанных    = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСтрокаСуммы    = Макет.ПолучитьОбласть("Строка|Сумма");
//ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("");
ТабДок.Вывести(Шапка, ВыборкаДетальныеЗаписи.Уровень());

Если ЗаДень = 1 Тогда
Таб.Вывести(ОбластьШапка);
Иначе
Таб.Вывести(ОбластьШапка1);
КонецЕсли;

Таб.Вывести(ОбластьСтрокаНомера);
Таб.Присоединить(ОбластьСтрокаКодов);
Таб.Присоединить(ОбластьСтрокаДанных);
Таб.Присоединить(ОбластьСтрокаСуммы);
//ВыборкаДетальныеЗаписи = Результат.Выбрать();
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
//Таб.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
//КонецЦикла;
//Таб.ЗакончитьАвтогруппировкуСтрок();
//ТЗ.Колонки.Добавить("Номер");
//ТЗ.Колонки.Добавить("Товар");
//// Изм. Н
//ТЗ.Колонки.Добавить("Артикул");
//// Изм. К
//ТЗ.Колонки.Добавить("Количество");
//ТЗ.Колонки.Добавить("Ед");
//ТЗ.Колонки.Добавить("Сумма");   
//ТЗ.Колонки.Добавить("Цена");
//
//ТабДок.Колонки.Добавить("Количество");
//ТабДок.Колонки.Добавить("Цена");
//ТабДок.Колонки.Добавить("Сумма");

Пока ВыборкаДетальныеЗаписи.Следующий()=1 Цикл
Док = ВыборкаДетальныеЗаписи.Документ;
Если Док.Вид() = "БухгалтерскаяСправка" Тогда // если вид документа бухгалтерская справка, то это корректировка, а не реализация
Продолжить;
КонецЕсли;
ВыборкаДетальныеЗаписи.Следующий();
Пока ВыборкаДетальныеЗаписи.Следующий() = 1 Цикл
Если Док.Вид() = "ПоступлениеТоваров" Тогда
Возвр = 1;
Иначе Возвр = 0;
КонецЕсли;

Док.ВыбратьСтроки();
ТабДок.УдалитьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Если Док.Товар <> ВыборкаДетальныеЗаписи.Следующий(1) Тогда
Продолжить;
Иначе
// Изм. Н
Если ЗначениеЗаполнено(Отчет.Магазин) = 0 Тогда
Если Док.МестоХранения = Отчет.Магазин Тогда
ТабДок.НоваяСтрока();
ТабДок.Количество = ?(Возвр = 0, Док.Количество, -Док.Количество);
ТабДок.Цена = Док.Цена;
ТабДок.Сумма = ?(Возвр = 0, Док.Сумма, -Док.Сумма) ;
КонецЕсли;
Иначе
ТабДок.НоваяСтрока();
ТабДок.Количество = ?(Возвр = 0, Док.Количество, -Док.Количество);
ТабДок.Цена = Док.Цена;
ТабДок.Сумма = ?(Возвр = 0, Док.Сумма, -Док.Сумма) ;
КонецЕсли;
// Изм. К
КонецЕсли;
КонецЦикла;
Если ТабДок.КоличествоСтрок() > 1 Тогда
ТабДок.Свернуть("Цена","Количество, Сумма");
КонецЕсли;
Для А = 1 По ТабДок.КоличествоСтрок() Цикл
ТЗ.НоваяСтрока();
ТЗ.НомДок = Док.НомерДок;
ТЗ.Товар = ВыборкаДетальныеЗаписи.Следующий(1);
ТЗ.Количество = ТабДок.Количество;
ТЗ.Сумма = ТабДок.Сумма;
ТЗ.Цена = ?(ТЗ.Количество <> 0, ТЗ.Сумма/ТЗ.Количество, 0);
КонецЦикла;
КонецЦикла;
КонецЦикла;
//Если ЗаДень = 1 Тогда
// ТЗ.Сортировать("НомДок");
//Иначе
// ТЗ.Свернуть("Товар,Цена","Количество, Сумма");
// ТЗ.Сортировать("Товар");
//КонецЕсли;


Пока ВыборкаДетальныеЗаписи.Следующий()=1 Цикл
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
НомДок = ?(ЗаДень = 1,ТЗ.НомДок,"");
Товар= ТЗ.Товар;
// Изм. Н
Артикул = ТЗ.Товар.Артикул;
// Изм. К
Ед=ТЗ.Товар.ЕдиницаИзмерения;
Количество = ТЗ.Количество;
Цена = ТЗ.Цена;
Сумма = ТЗ.Сумма;
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока1 = Макет.ПолучитьОбласть("Строка1");

Если ЗаДень = 1 Тогда
Таб.Вывести(ОбластьСтрока);
Иначе
Таб.Вывести(ОбластьСтрока1);
КонецЕсли;
КонецЦикла;
КонецЦикла;
//ИтогоСумма = ТЗ.Итог("Сумма");   
//ИтогоКоличество = ТЗ.Итог("Количество");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
Таб.Вывести(ОбластьИтого);
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
Таб.Вывести(ОбластьПодвал);
//Таб.ТолькоПросмотр(1);
Возврат Таб;
//КонецЦикла;
КонецФункции
//}}БУХГАЛТЕРСКИЙ ЗАПРОС

Процедура ПриОткрытии()

//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)
ВыбНачПериода = ТекущаяДата();
ВыбКонПериода = ТекущаяДата();
//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА

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


&НаКлиенте
Процедура КомандаЗакрыть(Команда)
// Вставить содержимое обработчика.
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
// Вставить содержимое обработчика.
КонецПроцедуры


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Вы хотя бы отлаживали эту смесь кода 8.2 и 7.7?!!

Я тоже так могу - вылить на форум неотформатированную "простыню" и сказать: "нате копайтесь, мне же НАДО..."
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Мне очень нужна помощь. Я только неделю назад начал изучать 1с. Помогите мне сделать рабочий код.

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Обязательно внешний отчет? Если нет - то открываешь отчет Продажи, в нем Все действия - Изменить вариант и там оставляешь нужные тебе поля Номенклатура, Продавец, Регистратор, еще чего нибудь убираешь-выбираешь и в конце-концов сохраняешь как свой вариант отчета. А иначе будешь как в 7.7 на каждый чих свой отчет мастерить.
Кнопочка Спасибо - слева!

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Обязательно внешний отчет.Чихов не будет.
Мне сделать этот вариант. Он  больше никогда не будет исправляться потом!

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Мне нужно чтоб еще данные в заголовке и подвале выводились нужные

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Тогда все плохо.
В Рознице нет документа Бухгалтерская справка, в продажах скорее всего нет документа ПоступлениеТоваров. Зачем выбирать номенклатуру запросом, а затем делать цикл по строкам документа? В 8.2 есть конструктор запроса с выводом в табличный документ (если тебе так хочется использовать его), есть отчеты на СКД. Начни с малого - сделай простой запрос к виртуальной таблице регистра накопления Продажи.Обороты, а там уже видно будет. А от такого куска кода на смеси французского 8.2 с нижегородским 7.7, с закомментированными кусками, прочитавшему можно заработать эректильную дисфункцию.
Кнопочка Спасибо - слева!

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
А от такого куска кода на смеси французского 8.2 с нижегородским 7.7, с закомментированными кусками, прочитавшему можно заработать эректильную дисфункцию.

+100
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
сделайте плиз мне как надо

Оффлайн Chemezov

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-10-23
  • Сайт: 
  • Профессия: Программист 1С
Мне очень нужна помощь. Я только неделю назад начал изучать 1с. Помогите мне сделать рабочий код.
Бгыгыгы нормально :)
Смотри уроки Чистова, встань и иди :))


Теги:
 

не находить контрагента (Выбрать * Из Документ ГДЕ контрагент = "имя контрагента")

Автор Ivan94Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 249
Последний ответ 23 Окт 2017, 23:14
от Ivan94
Какова взаимосвязь объектов конфигурации "Договоры" и "Документ"?

Автор DDDРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 4409
Последний ответ 25 Ноя 2008, 10:43
от DDD
Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

Автор Елена6666666666Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 9383
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
Как программно открыть документ программно

Автор СерьезныйЧеловекРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 19076
Последний ответ 10 Ноя 2010, 14:08
от Lexius
Документ "Сторно" в 1с 8.2 бух 2.0

Автор cannabis_86Раздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 12361
Последний ответ 09 Июн 2011, 12:57
от defers

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
50 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 170
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal