Книга продаж сортировка по номеру и по дате
Похожие темы.
Не типовая конфигурация,на основе БП 1.6.
Вот так сделать не корректно:
Так так на выходе имеем дерево значений и функция
ОпределитьДатуИНомерСФ()выполняется внутри обхода по группировкам.
Выход мне не понравился, но лучшее не придумал, т.е. создал колонку, сделал обход по группировкам, выполнил сортировку по созданной колонке, выполнил новый обход с выводом на табличный документ:
Не типовая конфигурация,на основе БП 1.6.
Вот так сделать не корректно:
Запрос.Текст = СтрЗаменить(Запрос.Текст, "УПОРЯДОЧИТЬ ПО
| НалоговыйПериод,
| ПорядокОтраженияПоДатам,
| СчетФактураДата,
| СчетФактура,
| ДатаОплаты", "УПОРЯДОЧИТЬ ПО НомерСчетаФактуры");ОпределитьДатуИНомерСФ()выполняется внутри обхода по группировкам.
Выход мне не понравился, но лучшее не придумал, т.е. создал колонку, сделал обход по группировкам, выполнил сортировку по созданной колонке, выполнил новый обход с выводом на табличный документ:
если ФлажокСортировки тогда
если ТипЗнч(ДеревоЗаписей) = Тип("ДеревоЗначений") Тогда
МойТип = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0,ДопустимыйЗнак.Неотрицательный));
ДеревоЗаписей.Колонки.Добавить("ДатаНомер_Порядок",МойТип);
КонецЕсли;
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20); // чтобы получить Секция.Параметры.ДатаНомер
Секция_Параметры_ДатаНомер = Секция.Параметры.ДатаНомер;
ЗаписьКниги_ДатаНомер_Порядок = СокрЛП(Сред(Секция_Параметры_ДатаНомер,Найти(Секция_Параметры_ДатаНомер,"№") + 1));
ЗаписьКниги_ДатаНомер_Порядок = СтрЗаменить(ЗаписьКниги_ДатаНомер_Порядок,"А","");
ЗаписьКниги_ДатаНомер_Порядок = СтрЗаменить(ЗаписьКниги_ДатаНомер_Порядок,"/","");
ЗаписьКниги.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
Для Каждого ЗаписьКниги Из ЗаписьКниги.строки Цикл
ЗаписьКниги.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
КонецЦикла;
КонецЦикла;
СтрокаПоПорядокОтражения.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ИтогПоОрганизации.строки.Сортировать("ПорядокОтраженияПоДатам, ДатаНомер_Порядок", истина);
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
ТабличныйДокумент.Вывести(Секция);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Иначе // здесь типовое решение 1С ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
вот этот кусок работает корректно ?
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
ТабличныйДокумент.Вывести(Секция);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
ТабличныйДокумент.Вывести(Секция);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
(4) Letos, Первые 10 строк типовой код(возможно и не типовой, конфига круто переписана была). Дальше то, чем его заменяю Может легче сам отчет выложить?
//IgorMxl***05.03.2012 11:54:08***START
//***Кусок типового кода
//Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
// Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
// Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
// Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
// ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
// ТабличныйДокумент.Вывести(Секция);
// КонецЦикла;
// КонецЦикла;
// КонецЦикла;
// КонецЦикла;
//***Конец типового. Дальше чем заменяю:
если ФлажокСортировки тогда
если ТипЗнч(ДеревоЗаписей) = Тип("ДеревоЗначений") Тогда
МойТип = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0,ДопустимыйЗнак.Неотрицательный));
ДеревоЗаписей.Колонки.Добавить("ДатаНомер_Порядок",МойТип);
КонецЕсли;
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20); // чтобы получить Секция.Параметры.ДатаНомер
Секция_Параметры_ДатаНомер = Секция.Параметры.ДатаНомер;
ЗаписьКниги_ДатаНомер_Порядок = СокрЛП(Сред(Секция_Параметры_ДатаНомер,Найти(Секция_Параметры_ДатаНомер,"№") + 1));
ЗаписьКниги_ДатаНомер_Порядок = СтрЗаменить(ЗаписьКниги_ДатаНомер_Порядок,"А","");
ЗаписьКниги_ДатаНомер_Порядок = СтрЗаменить(ЗаписьКниги_ДатаНомер_Порядок,"/","");
ЗаписьКниги.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
Для Каждого ЗаписьКниги Из ЗаписьКниги.строки Цикл
ЗаписьКниги.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
КонецЦикла;
КонецЦикла;
СтрокаПоПорядокОтражения.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
КонецЦикла;
КонецЦикла;
КонецЦикла;
//ДеревоЗаписей.выбратьстроку("До");
// ИтогПоОрганизации.Строки[0].строки.Сортировать("ДатаНомер_Порядок", истина); //
ИтогПоОрганизации.строки.Сортировать("ПорядокОтраженияПоДатам, ДатаНомер_Порядок", истина);
//ДеревоЗаписей.выбратьстроку("После");
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
ТабличныйДокумент.Вывести(Секция);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Иначе // здесь типовое решение 1С
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
ТабличныйДокумент.Вывести(Секция);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
конецесли
//***END
Показать
Спасибо разобрался. К стати. что бы эта обработка заработала в книге покупок необходима всего лишь вместо
Сделать
И выходы из цикла тоже разумеется необходима закоментировать.
а так же заменить:
1. ЗаполнитьСтрокуКнигиПродаж на ЗаполнитьСтрокуКнигиПокупок
2. СтрокаПоПорядокОтражения на НалоговыеПериоды.
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
Сделать
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ЗаписьКниги Из НалоговыеПериоды.Строки Цикл
// Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
// Для Каждого ЗаписьКниги Из СтрокаПоПорядокОтражения.Строки Цикл
И выходы из цикла тоже разумеется необходима закоментировать.
а так же заменить:
1. ЗаполнитьСтрокуКнигиПродаж на ЗаполнитьСтрокуКнигиПокупок
2. СтрокаПоПорядокОтражения на НалоговыеПериоды.
Бодрого дня. Необходима вывести записи "книги покупок" по возростанию "Даты оплаты", так как поля даты оплаты уже есть в типовом отчете добавляю перед циклом ЗаполнитьСтрокуКнигиПокупок()
Но ничего не выходит, что не так делаю?
У меняч не отоброжается КОД по этому повторю, на всякий случай.
ИтогПоОрганизации.Строки.Сортировать("ДатаОприходования", истина);
ИтогПоОрганизации.Строки.Сортировать("ДатаОприходования", истина);Но ничего не выходит, что не так делаю?
У меняч не отоброжается КОД по этому повторю, на всякий случай.
ИтогПоОрганизации.Строки.Сортировать("ДатаОприходования", истина);
//Для Каждого ИтогПоНалоговыйПериод Из ИтогПоОрганизации.Строки Цикл
// Для каждого ЗаписьКниги Из ИтогПоНалоговыйПериод.Строки Цикл
//
// Счетчик = Счетчик + 1;
// Секция.Параметры.Ном = Счетчик;
//
// ЗаполнитьСтрокуКнигиПокупок(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
//
// ТабличныйДокумент.Вывести(Секция);
//
// КонецЦикла;
//КонецЦикла; ПоказатьЗаменил эту часть кода на эту
Для Каждого ЗаписьКниги из РезультатЗапроса Цикл
Если ЗаписьКниги.НомерСчетаФактуры<>NULL Тогда
Счетчик = Счетчик + 1;
Секция.Параметры.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупок(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
ТабличныйДокумент.Вывести(Секция);
КонецЕсли;
КонецЦикла;
ПоказатьНу и в ЗаполнитьСтрокуКнигиПокупок удалил и отредактировал несколько строк. Ксожалению у меня бухгалтерия отстаёт в релизах по этому "Книга покупок" старого оброзца. Если что могу выложить что получилось.
В УПП группировок немного больше.
Взял за основу предложенный автором кусок, исправил получение вида сортировки - теперь эта колонка типа Дата и заполняется датой из первой колонки в Книге продаж, при этом выполняется проверка на пустую строку и номер ГТД, важный момент - исправил сам запрос - налоговый период и порядок отражения сделал равными и по году, чтобы не мешали. Вроде на данный момент работает корректно.
Ещё функция:
И кусочек запроса:
Взял за основу предложенный автором кусок, исправил получение вида сортировки - теперь эта колонка типа Дата и заполняется датой из первой колонки в Книге продаж, при этом выполняется проверка на пустую строку и номер ГТД, важный момент - исправил сам запрос - налоговый период и порядок отражения сделал равными и по году, чтобы не мешали. Вроде на данный момент работает корректно.
// добавим колоночку для сортировки, а то фигня какая-то
НовыйТипДатаВремя = Новый ОписаниеТипов(Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя));
ДеревоЗаписей.Колонки.Добавить("ДатаНомер_Порядок",НовыйТипДатаВремя);
// заполним её
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ИтогПоДокументу Из СтрокаПоПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из ИтогПоДокументу.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
Секция_Параметры_ДатаНомер = Секция.Параметры.ДатаНомер;
ЗаписьКниги_ДатаНомер_Порядок = СокрЛП(Сред(Секция_Параметры_ДатаНомер,1,Найти(Секция_Параметры_ДатаНомер,";") - 1));
ЗаписьКниги.ДатаНомер_Порядок = СтрокуВДату(ЗаписьКниги_ДатаНомер_Порядок);
Для Каждого ЗаписьКниги Из ЗаписьКниги.строки Цикл
ЗаписьКниги.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
КонецЦикла;
КонецЦикла;
СтрокаПоПорядокОтражения.ДатаНомер_Порядок = ЗаписьКниги_ДатаНомер_Порядок;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ИтогПоОрганизации.Строки.Сортировать("ДатаНомер_Порядок", истина);
// стандартно выведем результат
Для Каждого НалоговыеПериоды Из ИтогПоОрганизации.Строки Цикл
Для Каждого ПорядокОтражения Из НалоговыеПериоды.Строки Цикл
Для Каждого СтрокаПоПорядокОтражения Из ПорядокОтражения.Строки Цикл
Для Каждого ИтогПоДокументу Из СтрокаПоПорядокОтражения.Строки Цикл
Для Каждого ЗаписьКниги Из ИтогПоДокументу.Строки Цикл
Если ЗаписьКниги.Строки.Количество() > 1 И ЗаписьКниги.Покупатель = "Розничная продажа" Тогда
Для Каждого ЗаписьКнигиДетальная Из ЗаписьКниги.Строки Цикл
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКнигиДетальная, ЕстьЗаписиПоКолонке20, Истина);
ТабличныйДокумент.Вывести(Секция);
КонецЦикла;
Иначе
ЗаполнитьСтрокуКнигиПродаж(Секция, ЗаписьКниги, ЕстьЗаписиПоКолонке20);
ТабличныйДокумент.Вывести(Секция);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ПоказатьЕщё функция:
функция СтрокуВДату(СтрокаДата)
Если Найти(СтрокаДата,"/") ИЛИ ПустаяСтрока(СтрокаДата) Тогда
Возврат Дата(2012,01,01);
КонецЕсли;
День = Сред(СтрокаДата,1,2);
Месяц = Сред(СтрокаДата,4,2);
Год = Сред(СтрокаДата,7,4);
Возврат Дата(Год, Месяц, День);
КонецФункци ПоказатьИ кусочек запроса:
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаписиКнигиПродаж.Организация КАК Организация,
| НАЧАЛОПЕРИОДА(ЗаписиКнигиПродаж.Период, ГОД) КАК НалоговыйПериод,
| НАЧАЛОПЕРИОДА(ЗаписиКнигиПродаж.СчетФактура.Дата, ГОД) КАК ПорядокОтраженияПоДатам,
| ЗаписиКнигиПродаж.НаАванс КАК НаАванс,
| ЗаписиКнигиПродаж.НаСуммовуюРазницу КАК НаСуммовуюРазницу,
| ЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| ЗаписиКнигиПродаж.СчетФактураДата КАК СчетФактураДата,
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаписиКнигиПродаж.Организация КАК Организация,
| НАЧАЛОПЕРИОДА(ЗаписиКнигиПродаж.Период, ГОД) КАК НалоговыйПериод,
| НАЧАЛОПЕРИОДА(ЗаписиКнигиПродаж.СчетФактура.Дата, ГОД) КАК ПорядокОтраженияПоДатам,
| ЗаписиКнигиПродаж.НаАванс КАК НаАванс,
| ЗаписиКнигиПродаж.НаСуммовуюРазницу КАК НаСуммовуюРазницу,
| ЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| ЗаписиКнигиПродаж.СчетФактураДата КАК СчетФактураДата,
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот