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

Тестовое задание

Автор solideogloria, 29 июл 2014, 11:37

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

solideogloria

Добрый день, дорогие друзья!
Получил вот такое тестовое задание на дом по вакансии "консультант-программист 1С в службу поддержки".
Не прошу решения.
Очень нуждаюсь в вашей подсказке - возможно ли отчет построить с помощью СКД? Если да, то хотябы наводку, как?(задание во вложении)

На данный момент нашел выход только через написание кода(ито скорее всего, он не универсальный):

&НаСервере
Процедура ОтчетНаСервере()

Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("ДатаФактическогоПлатежа");
Таблица.Колонки.Добавить("СуммаФактическогоПлатежа");
Таблица.Колонки.Добавить("ДатаПоПлану");
Таблица.Колонки.Добавить("СуммаПоПлану");


ВыборкаФакт = ПолучитьВыборкуФактОплаты(Период.ДатаОкончания, Период.ДатаНачала, Объект.Контрагент);

ВыборкаПлан = ПолучитьВыборкуПланОплаты(Период.ДатаОкончания, Период.ДатаНачала, Объект.Контрагент);

Если ВыборкаФакт.Количество() = 0 ИЛИ ВыборкаПлан.Количество() = 0 Тогда
Возврат;
КонецЕсли;

Пока ВыборкаФакт.Следующий() Цикл
СледующаяЗапись = Истина;
Если Факт = Неопределено Тогда
Факт = ВыборкаФакт.Сумма;
ИначеЕсли Факт = 0 Тогда
СледующаяЗапись = Ложь;
Факт = ВыборкаФакт.Сумма;
КонецЕсли;

Если Не СледующаяЗапись Тогда
Если План = Неопределено ИЛИ План = 0 Тогда
План = ВыборкаПлан.Сумма;
ИначеЕсли План < 0 Тогда
План = -План;
КонецЕсли;

ЗаписьСтроки(Таблица.Добавить(), ВыборкаФакт.Период, ВыборкаПлан.Период, Факт, План);

Остаток = План;
План = ?(Факт>=План,0,Факт-План);
Факт = ?(Факт>=Остаток,Факт-Остаток,0);
СледующаяЗапись = Истина;
КонецЕсли;

Если СледующаяЗапись Тогда
Пока ВыборкаПлан.Следующий() Цикл

Если План = Неопределено ИЛИ План = 0 Тогда
План = ВыборкаПлан.Сумма;
ИначеЕсли План < 0 Тогда
План = -План;
КонецЕсли;

ЗаписьСтроки(Таблица.Добавить(), ВыборкаФакт.Период, ВыборкаПлан.Период, Факт, План);

Остаток = План;
План = ?(Факт>=План,0,Факт-План);
Факт = ?(Факт>=Остаток,Факт-Остаток,0);
Если Факт=0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если Факт <> 0 Тогда
ЗаписьСтроки(Таблица.Добавить(), ВыборкаФакт.Период, Неопределено, Факт, Факт+1, "Факт");
КонецЕсли;
КонецЕсли;

КонецЦикла;
Если План <> 0 Тогда
ЗаписьСтроки(Таблица.Добавить(), Неопределено, ВыборкаПлан.Период, План+1, План, "План");
КонецЕсли;

Документы.ПланПлатежейПоставщикам.ПолучитьФорму("ФормаОтчет",Новый Структура("ПланФактОплаты", Таблица));


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


MuI_I_Ika

Ну по идее здесь только программированием вопрос и решается.

Создать документ и отчет.

MuI_I_Ika

Хотя отчет можно было бы и на СКД сделать.

solideogloria

Цитата: MuI_I_Ika от 29 июл 2014, 12:12
Хотя отчет можно было бы и на СКД сделать.

Сложность состоит в том, что при построении запроса в СКД, строки должны формироваться, учитывая даты и суммы предыдущих строк, причем с условием(если я верно понимаю). Не могу понять, как это можно сделать.

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

Рейтинг@Mail.ru

Поиск