-
Подозрительно легкая задача..... может я что-то упустил.... Здесь решено только то, что указано в тексте задания, на остальное не отвлекался, получилось вроде-бы неплохо))
Вложения:
109_1CCoder.dt
-
Мой вариант.
Вложения:
tenikov_1.09.dt
-
Век живи, век учись, а я для аванса отдельный регистр делал(, но прошу пояснить в задании сказано, что если в приход денег указан проект, то погашается задолженность по нему, а оставшаяся часть идет как аванс, т.е. она на другие проекты не распределяется. Если я правильно во всех 3 конфигах идет погашение по всем проектам, и если деньги остались то они идут на аванс. Я вытаскиваю инфу таким запросом:
Quote
ВЫБРАТЬ
ВзаиморасчетыОстатки.Проект,
ВзаиморасчетыОстатки.СуммаОстаток КАК Сумма
ИЗ
РегистрНакопления.Взаиморасчеты.Остатки(
&МоментВремени,
Контрагент = &Контрагент
И (Проект = &Проект
ИЛИ &Проект = ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяССылка))) КАК ВзаиморасчетыОстатки
УПОРЯДОЧИТЬ ПО
ВзаиморасчетыОстатки.Проект.ДатаОплаты
Т.е. либо конкретный проект если он задан, если он не задан то остальные. Прокомментируйте ход мысли
-
1C_CoderVamp,
1. вопрос по приведенному решению: почему в документе "приход денег" не используются блокировки данных, а в документе "расходная накладная" - используются, хотя принцип работы с данными один и тот же в этих документах (сначала данные считываются, а потом записываются в эти же регистры).
2. ну и свойство конфигурации "Режим управления блокировкой данных" установлено "автоматический", ...тут явно автор забыл изменить на "управляемый"
-
Вот как я решал
Вложения:
1.09_marku.dt
-
Mихаил,
на самом деле там многое можно изменить в лучшую сторону, когда готовился к сдаче, то сильно не заморачивался на том, чтобы сделать задание на 100%, главное было уловить суть. Поэтому многие вещи либо забывал, либо просто не делал, чтобы не тратить на это время)) Кстати, не стоит относиться к решениям выложенным на сайте как к идеальным решениям, это лишь варианты решений, главная их задача - это показать решение хитрозамудренных загагулин, про блокировки, связи, вытеснения, признаки и прочее каждый должен знать по умолчанию
-
Quote (marku)
Вот как я решал
Прикрепления: 1.09_marku.dt(153Kb)
1. В документе ПриходДенег, я думаю можно не делать соединение со Справочником Проекты, а дату оплаты выцепить по ссылке ПродажиОстатки.Проект.ДатаОплаты КАК ДатаОплаты
2. Мне не понятно зачем в РасходнойНакладной ты делаешь кроме запроса по Остаткам, еще и запрос по документу? Можно я думаю обойтись маленьким запросом Запрос.Текст = "ВЫБРАТЬ
| ПродажиОстатки.Контрагент,
| ПродажиОстатки.Проект,
| ПродажиОстатки.СуммаОстаток КАК СуммаАванса
|ИЗ
| РегистрНакопления.Продажи.Остатки(
| &МоментВремени,
| Контрагент = &Контрагент
| И Проект = &Проект) КАК ПродажиОстатки";
3. Нету у тебя Блокировок В РасходнойНакладной
Я честно говоря добавил в проекты предопределенный элемент, Аванс и крутился вокруг него (не знаю правильно это или нет но очень удобно), Зачем в регистре нужно появление поля проекты с незаполненым значением, я не понял.
-
Quote (Dima1C)
Я честно говоря добавил в проекты предопределенный элемент, Аванс и крутился вокруг него (не знаю правильно это или нет но очень удобно), Зачем в регистре нужно появление поля проекты с незаполненым значением, я не понял.
Насколько я помню задание, вся его суть сводилась к тому, чтобы как-то обозначить авансовые суммы, в моем случае использовалось пустое значение (раз не привязано ни к какому конкретному проекту, значит аванс), в твоем случае использовался предопределенный элемент, что тоже имеет право на жизнь, т.е. по сути разницы нет никакой
-
моё решение, практически аналогично решению 1C_CoderVamp (которое считаю отпимальным)
Вложения:
1.09.dt
-
Мое решение, в задача легкая, но есть заморочь с блокировками
Вложения:
1_09_mm.dt
-
В общую копилочку, не сложная задача
Вложения:
_1.09.dt
-
тоже выложу свое решение .. интересная задача .. ))
Вложения:
DoctorRoza_1_9.dt
-
Выложил свое решение, помоему напутал с блокировками, может кто посмотрит
Вложения:
1.9nik.dt
-
DoctorRoza,
Кажется, у вас не отрабатывает это условие.
«Если сумма платежа превышает сумму отгрузки, то оставшиеся деньги должны быть зачтены как аванс.»
Должно быть:
Расход 1000
Приход 1000
Аванс 500
И я думаю можно сделать блокировку по проекту из дока и по авансу. А у вас блокируются все проекты по контрагенту. Не знаю на сколько это критично?
Вложения:
s4681112.jpg
-
kow1976,
Скрин 1 .. ну я не стал тут туманить решение, если .. в начале провести приход, потом задним числом, ранней датой провести расход ..
Вложения:
s9082012.jpg
-
При решении решил использовать два регистра:
1 ВзаиморасчетыПоДолгам – отгрузки приход(Расх нак) оплата расход(Приход денег)
2 Аванс - приход оплата (Приход денег), расход(Расх нак).
Один регистр не использую по двум причинам
1. Считаю неправильным моделировать поведение регистра на пустом проекте или на предопределенном проекте.
С таким подходом можно регистры не использовать, а программно организовать учет на реквизитах документов.
2. Не возможно, построить заданный отчет по одному регистру в данной постановке задачи так как
отгрузка приход(Расх нак) – взаиморасчеты по партиям
отгрузка расход(Расх нак) – движения по авансу
объединить в один столбец «отгрузки» в отчете в рамках одного регистра не получиться.
Прошу общественность надругаться над следующим решениям.
Вложения:
kow1971.9.dt
-
kow1976, Ну а что .. нормальное решение .. 2 регистра .. Считать аванс отдельно .. тут не запутаешься. Может запросы увеличатся в размерах засчет обращений к регистру Авансов, но это мелочь. Только вот это смущает ..
Quote (kow1976)
1. Считаю неправильным моделировать поведение регистра на пустом проекте или на предопределенном проекте.
С таким подходом можно регистры не использовать, а программно организовать учет на реквизитах документов.
А есть ли принципиальная разница между предопределенным проектом и "непредопределенным"?
Учет на реквизитах документов? Ради интереса, сделайте такое, а то у меня без регистров ничего не получается
Quote (kow1976)
2. Не возможно, построить заданный отчет по одному регистру в данной постановке задачи так как
отгрузка приход(Расх нак) – взаиморасчеты по партиям
отгрузка расход(Расх нак) – движения по авансу
объединить в один столбец «отгрузки» в отчете в рамках одного регистра не получиться.
Почему не получится? Все получится, только в конечном остатке минусы будут, но их можно объяснить в рамках принятой бизнес-модели! Сам не понял, что сказал, но звучит красиво! ))) Движения расходной - это, принимаем, минус, отгрузка. Приход денег на аванс - это плюс, оплата. Списать аванс для погашения расходной - это отгрузка для аванса, это минус. Остаток, если есть, для расходной - это оставшаяся отгрузка, это минус. Так что же тут нельзя объединить!? Поэтому вирт. таблица ОстаткиИОбороты и есть.
/////////////////////////////////
Не понял, Вы расходную в плюс отправляете .. и чистый приход по авансу в плюс! Не логично, совсем разные вещи! Что то в плюс, что то в минус!
-
Quote (DoctorRoza)
Почему не получится? Все получится,
Совершенно правильно вы говорите, что будет минус. Кроме этого отгрузка по авансу будет попадать в Оплату. И тем самым меняет суть заданного отчета.
Quote (DoctorRoza)
Не понял, Вы расходную в плюс отправляете .. и чистый приход по авансу в плюс! Не логично, совсем разные вещи!
Расходную в плюс так как по расходной нужны остатки плюсом в отчете. А в поступлении денег в минус так как отрицательных остатков не будет, в связи с записью в аванс.
Соответственно аванс по поступлении денег в плюс(и всегда положительный), а в расходной в минус (и всегда положительный) так как избыток в плюс по взаиморасчетам.
Получается замкнутый круг!!!
Спасибо за коментарий
-
Тут главное понимать, что мы должны и что нам должны! Расходная - это что Нам должны, Аванс - это что Мы должны. Движение по авансу - это списание Нашего долга. Все логично!
-
DoctorRoza,
Совершенно вы правы, но приход по авансу это расход по долгу, а в отчете их надо вставить в один столбец.
Вложения:
s5735699.jpg
-
Задачка не сложная, но нудная. Сначала хотел сделать у спр. проекты владельцем спр. контрагенты (как договора), но по отчету понял, что связь многие ко многим. И долго колебался, сделать аванс на пустую ссылку или предопределенным. Ну и полностью смоделировал данные в задаче, чтобы проверить, что у них ошибка в последней строчке отчета. Потратил больше времени чем планировал и решил выложить решение.
Вложения:
1.9_tan1c.dt
-
Мое решение
Вложения:
sv_mikh_01_09.dt
-
Всеобщее мнение задачка легкая. Может я чего-то не догоняю??? Вид отчета взаиморасчеты меня вводит в ступорjavascript://:
1)допустим для РН Взаиморасчеты Оплата это приход, а отгрузка это расход, тогда почему по "васильку" положительный конечный остаток??? а если наоборот, тогда почему по "рабочему" и "сентябрю" положительный конечный остаток???javascript://
2) как вообще возможно ввести начальный остаток по проекту??? ведь в условии сказано("при указании проекта в док-е ПриходД надо погасить сумму отгрузку по этому проекту, оставшуюся сумму провести как аванс"), а если нач. остаток это неоплаченная отгрузка, то как воспринимать последнюю стр. отчета взаиморасчетыjavascript://
3) Как сформировать группировку по партиям в отчете состояние на 31 javascript:// Или один проект может открываться на несколько контрагентов???
-
Quote (МитькинБрат)
Вид отчета взаиморасчеты меня вводит в ступорjavascript://:
Прикольный ступор! Это же сколько нужно кодить, чтобы такой .. заработать?
-
DoctorRoza, Поприкаловался? А теперь на вопросы ответь, по существу.! Или слабо?! javascript://:) ?
-
Quote (МитькинБрат)
DoctorRoza, Поприкаловался? А теперь на вопросы ответь, по существу.! Или слабо?! javascript://:) ?
Сейчас, сборник качну, а то забыл уже эти задачи!
Добавлено (15.05.2012, 21:59)
---------------------------------------------
Quote (МитькинБрат)
1)допустим для РН Взаиморасчеты Оплата это приход, а отгрузка это расход, тогда почему по "васильку" положительный конечный остаток??? а если наоборот, тогда почему по "рабочему" и "сентябрю" положительный конечный остаток???javascript://
-Начнем с "василька".
Для начала нужно определиться, что есть долг "нам", а что есть долг "Им". Положительный остаток по васильку - это, те 10000 и 5000, на которые мы отгрузили и столько нам должны. Смотрим взаиморасчеты за период - там василек оплачивал 5000 и 1000. Эти суммы он оплачивал по конкретным проектам, конкретным долгам. То есть в 2-х (допустим) приходах были проставлены конкретные проекты. У василька есть аванс - значит он есть и он его не трогает. Как он возник? Да заранее в долг нам дал денег, пустой приход сделал и деньги легли как наш долг перед ним!
Quote (МитькинБрат)
2) как вообще возможно ввести начальный остаток по проекту??? ведь в условии сказано("при указании проекта в док-е ПриходД надо погасить сумму отгрузку по этому проекту, оставшуюся сумму провести как аванс"), а если нач. остаток это неоплаченная отгрузка, то как воспринимать последнюю стр. отчета взаиморасчетыjavascript://
- Начальный остаток по проекту - да отгрузили контрагенту без оплаты, в долг или кредит, и вот начальный долг его нам.
Последняя строка в отчете, авансы - это наши долги. Тут с пролетарием больше смущает .. есть аванс 2500, еще нам дают в долг 3500, итого 6000, потом отгрузка по проекту 2 на 4000, которые берутся с аванса - отсюда и оплата по проекту и отгрузка по авансу на 4000. Как верно заметил товарищ kow1976 в (21) приход по авансу - это оплата по долгу. Что то тут непонятно, вроде лишние 4000, не соображу к вечеру!!
Quote (МитькинБрат)
3) Как сформировать группировку по партиям в отчете состояние на 31 javascript:// Или один проект может открываться на несколько контрагентов???
-Ну а почему нет!? Тут конкретной привязки Контрагент-Проект нет. Группировка по партии .. не совсем понятно, что Вы имеете в виду .. тут партий нет .. есть отгрузка и оплата. Ну а проект - это одно из измерений РН.
-
DoctorRoza, спасибо за ответ.
Уточняю:
Quote (DoctorRoza)
Последняя строка в отчете, авансы - это наши долги. Тут с пролетарием больше смущает .. есть аванс 2500, еще нам дают в долг 3500, итого 6000, потом отгрузка по проекту 2 на 4000, которые берутся с аванса - отсюда и оплата по проекту и отгрузка по авансу на 4000. Как верно заметил товарищ kow1976 в (21) приход по авансу - это оплата по долгу. Что то тут непонятно, вроде лишние 4000, не соображу к вечеру!!
Имелось в виду не аванс, а проект3 по "сентябрю": когда нач.ост(= долг контрагента нам) 500, далее оплата 1500(уменьшение долга контрагента) и опять отгрузка 2000 (увеличение долга), конечный остаток 0!!!
т.о:(-500+1500-2000)=0??? а не "-1000"
Да смущало отсутствие привязки проекта к контрагенту (изначально возникла мысль о такой привязке)
Quote (DoctorRoza)
Ну а почему нет!? Тут конкретной привязки Контрагент-Проект нет.
P.S. "Тут с пролетарием больше смущает", там понятно был аванс на 6000(2500+3500) с него списали 4000 и оприходовали как оплату проекта2
-
Немного извратилса, пошол своим путем, может кто протестирует?
Схема движений в картинке...
Вложения:
s9753542.png
RoMeL_1.9.dt
-
Подскажите пожалуйста как в отчете "Состояние взаиморасчетов" в СКД настроить отображение колонки Аванс в последнем столбце?
Вложения:
task1.9.dt
-
Quote (ssserg)
Подскажите пожалуйста как в отчете "Состояние взаиморасчетов" в СКД настроить отображение колонки Аванс в последнем столбце?
Вот так, например.
P.S. Смотрел только отчет
Вложения:
task1.9_RoMeL.dt
-
RoMeL, спасибо.
Вопрос: что вы поменяли в пользовательских настройках?
В СКД не могу этого увидеть...
т.е. добавленный параметр Порядок я вижу, а вот воспроизвести ваш вариант отчета у меня получилось только после того, как я не только
добавил в НаборДанных1 этот код,
но и загрузил вариант пользовательских настроек отчета из вашего отчета в СКД.
-
ssserg, смотри макет
Добавлено (14.08.2012, 17:59)
---------------------------------------------
ssserg, а и сортировка по "Порядок"
Вложения:
s0497747.png
-
RoMeL, точно.
Только у вас ещё и столбец итоги не выводится.
Разобрался это на вкладке "Дополнтельный настройки" в закладке "Настройки" в СКД нужно установить параметры
Расположение общих итогов по горизонтали: Нет
Расположение общих итогов по вертикали: Нет
-
Quote (tan1c)
Мое решение
Прикрепления: sv_mikh_01_09.dt(157Kb)
Посмотрел твое решение, есть несколько ошибок и задача явно упрощена.
Вот мое решение, вроде бы точно в соответствии с заданием. На самом деле если выполнить все условия задания то задача не покажется такой простой.
Вложения:
_1.9__ANdy.dt
-
Похоже часть условий к задаче находится во втором отчете "Взаиморасчеты за период".
ИМХО, во первых, в расходной накладной должна обрабатываться возможность 3-х движений, а не двух:
Рассмотрим ситуацию с "красным цветком":
Остаток аванса 1000.
Делаем расходную накладную по проекту 2 на сумму 6000
1-е движение - "Отгрузка" 6000
2-е движение "Оплата" - 1000
3-е движение "Зачет аванса" - 1000
Ну и мне кажется, что в постановке задачи ошибка в отчете по контрагенту "Красный октябрь". Имеем остаток 500р. на начало месяца по проекту 3 - значит это не аванс. Отгрузка - 2000р. Оплата 1500. В остатке должна быть 1000.
-
Цитата (whisk001)
Остаток аванса 1000.Делаем расходную накладную по проекту 2 на сумму 6000
1-е движение - "Отгрузка" 6000
2-е движение "Оплата" - 1000
3-е движение "Зачет аванса" - 1000
А ведь ты, пожалуй, прав. Например, есть у нас расходная по проекту № 1 на 200 руб, из них она 100 руб. зачитывает авансом. Если делать отгрузку на 100 и зачет аванса на 100, то при формировании отчета по взаиморасчетам будет как будто бы по проекту №1 была отгрузка только на 100 руб. Так что конечно, по-хорошему бы сделать 3 движения, однако, явно в задаче на это не указано, поэтому лучше все-таки 2.
-
Прикрепляю мое решение. Критика приветствуется.
Добавлено (18.04.2013, 09:14)
---------------------------------------------
Цитата (whisk001)
Ну и мне кажется, что в постановке задачи ошибка в отчете по контрагенту "Красный октябрь". Имеем остаток 500р. на начало месяца по проекту 3 - значит это не аванс. Отгрузка - 2000р. Оплата 1500. В остатке должна быть 1000.
С этим согласен, респект тебе за внимательность.
Вложения:
fimanich_01_09.dt
-
Да, наверное ошибка в задаче, то же не смог смоделировать последнюю строку отчета в программе.
Вложения:
KTT_1_9.dt
-
Мое решение.
Цитата (TuMyP1985)
Да, наверное ошибка в задаче, то же не смог смоделировать последнюю строку отчета в программе.
Тоже не получилось без "1000". При этом второй отчет сам составился так же как в условии (после моделирования первого), и там тоже вылезла та самая 1000.
Вложения:
bilateral_upr_9.dt
-
Цитата (bilateral)
Мое решение.
Цитата (TuMyP1985)
Да, наверное ошибка в задаче, то же не смог смоделировать последнюю строку отчета в программе.
Тоже не получилось без "1000". При этом второй отчет сам составился так же как в условии (после моделирования первого), и там тоже вылезла та самая 1000.
Прикрепления: bilateral_upr_9.dt(150Kb)
да там точно ошибка, еще я расширил следующее условие - "в случае если в документе Приход денег указан проект, то происходит погашения задолженности по отгрузке по данному проекту, а в случае если сумма в документе превышает сумму отгрузки, то эта сумма начисляется как аванс", следующим условием "а в случае если сумма в документе превышает сумму отгрузки, то погашаются задолженности по проектам в порядке их даты оплаты, в случае когда сумма оплаты больше всех долгов по отгрузке, оставшаяся сумма зачитываетсся как аванс"
так как считаю нелогичным условие что сумма не списывается по остальным отгрузкам а зачитивается как аванс, в этом случае может возникнуть ситуация когда есть долг по отгрузке и в то же время висит аванс.
просмотрел решение bilateral, в вашем решении несколько ошибок;
1. Вы намудрили с блокировками, все можно было сделать намного проще;
2. Условие Код
Запрос.УстановитьПараметр("МоментВремени", ?(Режим = РежимПроведенияДокумента.Неоперативный,МоментВремени(),Неопределено););
здесь совершенно не к чему, почитайте в СП про момент вермени.
3. и еще похоже у вас неправильные алгоритмы, так как при проведении расходной в случе анличия аванса должны делаться 3 движения, т.е. 1-отргрузка по проекту, 2-уменьшения аванса на сумму отгрузки либо сумму аванса, 3-оплата по огрузке на сумму из п.2, а у вас делаются только два (см. цитату ниже).
есть +, вы настроили отчет через дополнительное поле порядок, взял себе на вооружение
Добавлено (21.06.2013, 22:35)
---------------------------------------------
Цитата (whisk001)
Похоже часть условий к задаче находится во втором отчете "Взаиморасчеты за период".
ИМХО, во первых, в расходной накладной должна обрабатываться возможность 3-х движений, а не двух:
Рассмотрим ситуацию с "красным цветком":
Остаток аванса 1000.
Делаем расходную накладную по проекту 2 на сумму 6000
1-е движение - "Отгрузка" 6000
2-е движение "Оплата" - 1000
3-е движение "Зачет аванса" - 1000
так оно и есть
кому интересно, выгрузку прилагаю
-
соптимизировал запросы, доделал отчеты
Вложения:
1.9.dt
-
Выкладываю свое решение, мб кто-нибудь прокомментирует.
Решал на двух регистрах. После того, как решил, просмотрел пару решений тех коллег из этой ветки, которые тоже решали на двух регистрах. Мое решение оказалось довольно простым по сравнению, например, с решением kow1976
Вложения:
Voyager_1.9.dt
-
Посмотрите если не трудно мое решение. Готов обсудить задачу.
Вложения:
YFred_1.9.dt
-
И мое решение посмотрите. Заранее благодарен.
Добавлено (27.04.2014, 10:29)
---------------------------------------------
YFred, посмотрел твою задачу. Вот замечания:
1. Может это и не важно, но в задании написано, что отгрузка фиксируется документом "Расходная накладная". Зачем создавать еще один документ? Не знаю как экзаменатора, но меня это запутало.
2. Опять же блокировки слишком суровые.
3. Если проводить документ "Приход денег", а долгов по проектам нет, то аванс уходит в минус. Если так и задумано, то надо чтобы отчет этот минус не выводил.
Вложения:
Demy_1_9.dt
-
Кстати заметил у себя косяк. В документе "Приход денег" забыл убрать блокировку на проект, ведь надо блокировать весь регистр по контрагенту. Исправил.
Вложения:
Demy_1_9_1.dt
-
Я вот не пойму, почему практически все решения здесь построены на 1 РН. Ведь если внимательно читать условие, то в нем можно найти строчку "Аванс числится просто за контрагентом без учета проекта", поэтому считаю что корректнее всего решать ее на 2 РН.
-
Здравствуйте!
Проверьте пожалуйста, мой вариант решения задачи 1.09. не совсем уверена в установленных блокировках. Решила на одном РН. Меня правда еще смущает отчет по взаиморасчетам за период (последняя строка), мне кажется ошибка вкралась в задачу
-
Предлагаю свое решение. Тоже опирался на опыт, изложенный в опубликованных решениях.
Делал на одном регистре - Взаиморасчеты. Завел отдельный проект Аванс, и настроил на него константу.
Главный нюанс при решении через один регистр - что по сути проводки Прихода денег на проект Аванс
по логике бухгалтерии должны идти со знаком "-". А отгрузки - это "+"
Но тогда остаток Денегн на проекте Аванс - тоже будут со знаком "-". Что не согласуется с предложенным вариантом отчета.
Поэтому проводки делал на Аванс тоже как +
И в отчете (на СКД) корректровал логику покрытия задолженности по проекту и ден.средства на авансе так:
ВЫБОР
КОГДА ВзаиморасчетыОстаткиИОбороты.Проект = &Аванс
ТОГДА ЕСТЬNULL(ВзаиморасчетыОстаткиИОбороты.СуммаРасход, 0)
ИНАЧЕ ЕСТЬNULL(ВзаиморасчетыОстаткиИОбороты.СуммаПриход, 0)
КОНЕЦ КАК Отгрузка,
ВЫБОР
КОГДА ВзаиморасчетыОстаткиИОбороты.Проект = &Аванс
ТОГДА ЕСТЬNULL(ВзаиморасчетыОстаткиИОбороты.СуммаПриход, 0)
ИНАЧЕ ЕСТЬNULL(ВзаиморасчетыОстаткиИОбороты.СуммаРасход, 0)
КОНЕЦ КАК Оплата
-
Честно говоря немного вздохнул с облегчением увидев что есть и простые задачи в этом разделе.
выкладываю свое решение. Кому не трудно прокомментируйте пжл
-
Честно говоря немного вздохнул с облегчением увидев что есть и простые задачи в этом разделе.
выкладываю свое решение. Кому не трудно прокомментируйте пжл
В целом норм по логике :)
В остальном:
1. Для чего этот код в проведении "Приход денег" ?
Если НЕ ЭтоНовый() Тогда
Движения.Взаиморасчеты.Записать();
КонецЕсли;
Эта конструкция явно очищает движения документа при перепроведении. И поэтому строка ниже (с границей) не будет иметь смысла.
Но и по ней ест замечание:
При неоперативном проведении мы же не должны прочитать те движения, которые сделал сам документ, поэтому надо исключать:
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Граница = Неопределено;
Иначе
Граница = Новый Граница(МоментВремени(),ВидГраницы.Исключая);
КонецЕсли;
На мой взгляд, при неоперативном перепроведении, очищая движения вы тем самым искажаете остатки ведь в этот момент их кто-то может считать, а у вас отмена транзакции произошла. В таком случае бы надо сперва установить блокировку, но допустим, вы решили поменять проект, или еще хуже контрагента, тогда тоже не вариант. Правильней будет воспользоваться методом подробно описанном здесь
http://1c.chistov.pro/2013/07/blog-post_25.html
2. Судя по задаче если в приходе Проект не указан, то все идет в авансы. Условий на заполненность этого реквизита нет.
По этому же пункту я , думаю, что необходимо устанавливать блокировку еще и по проекту (если заполнен), ведь от чтения нам надо заблокировать только в разрезе проектов.
3. В отчете по состоянию надо добавить порядок, так чтоб авансы в конце отчета были.
Плюс можно, я думаю, обойтись без предопределенного элемента проектов "Авансы", опираясь на знак по регистру остатков.
-
Честно говоря немного вздохнул с облегчением увидев что есть и простые задачи в этом разделе.
выкладываю свое решение. Кому не трудно прокомментируйте пжл
В целом норм по логике :)
В остальном:
1. Для чего этот код в проведении "Приход денег" ?
Если НЕ ЭтоНовый() Тогда
Движения.Взаиморасчеты.Записать();
КонецЕсли;
Эта конструкция явно очищает движения документа при перепроведении. И поэтому строка ниже (с границей) не будет иметь смысла.
Но и по ней ест замечание:
При неоперативном проведении мы же не должны прочитать те движения, которые сделал сам документ, поэтому надо исключать:
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Граница = Неопределено;
Иначе
Граница = Новый Граница(МоментВремени(),ВидГраницы.Исключая);
КонецЕсли;
На мой взгляд, при неоперативном перепроведении, очищая движения вы тем самым искажаете остатки ведь в этот момент их кто-то может считать, а у вас отмена транзакции произошла. В таком случае бы надо сперва установить блокировку, но допустим, вы решили поменять проект, или еще хуже контрагента, тогда тоже не вариант. Правильней будет воспользоваться методом подробно описанном здесь
http://1c.chistov.pro/2013/07/blog-post_25.html
2. Судя по задаче если в приходе Проект не указан, то все идет в авансы. Условий на заполненность этого реквизита нет.
По этому же пункту я , думаю, что необходимо устанавливать блокировку еще и по проекту (если заполнен), ведь от чтения нам надо заблокировать только в разрезе проектов.
3. В отчете по состоянию надо добавить порядок, так чтоб авансы в конце отчета были.
Плюс можно, я думаю, обойтись без предопределенного элемента проектов "Авансы", опираясь на знак по регистру остатков.
Спасибо, принял к сведению все замечания. Отдельное спасибо за статью. Правда я не совсем понял причем там движения которые в форме, но в целом почерпнул из нее многое!!!
-
Выкладываю своё решение на 2 регистрах и с нормальным отчетом.
-
Решил максимально просто (главное, чтобы не слишком)
Жду критики. Надеюсь, в принципе, все верно.
В обоих документах (и в РН и в ПриходеДенег) контроль остатков выполняю по старой методике.
-Записываю пустые движения
-Движения.ДолгиПокупателей.Записывать = Истина;
-Блокирую объектом
-Запрос к остаткам
и если их достаточно, то
-формирование движений
-
Решил максимально просто (главное, чтобы не слишком)
Жду критики. Надеюсь, в принципе, все верно.
В обоих документах (и в РН и в ПриходеДенег) контроль остатков выполняю по старой методике.
-Записываю пустые движения
-Движения.ДолгиПокупателей.Записывать = Истина;
-Блокирую объектом
-Запрос к остаткам
и если их достаточно, то
-формирование движений
1.Блокировка в док. не правильно установлена. Блокируется не все движения по контрагенту,а только в значении контрагент,проект.
2.Не корректно работает разработанный алгоритм при отмене проведения документов. В регистре образовываются минусовые остатки.
3. В Отчете состояние взаиморасчетов задолженность по проекта выводиться со знаком минус.
Дальше не смотрел задача не решена.
-
Какой Вы суровый. Надеюсь Вы не принимаете экзамены?
Благодарю за критику. Постараюсь все учесть.
-
Пожалуйста, покритикуйте решение.
-
Пожалуйста, покритикуйте решение.
В справочнике Проекты есть какой-то предопределенный проект "Аванс". Аванс - это не проект, и почему я могу его выбрать в расходной накладной или в приходе денег?
Дальше:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВзаиморасчетыОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.Взаиморасчеты.Остатки(
| &МоментВремени,
| Контрагент = &Контрагент
| И Проект = ЗНАЧЕНИЕ(Справочник.Проекты.Аванс)) КАК ВзаиморасчетыОстатки";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Блокировка.Заблокировать();
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Выборка.Следующий();
СуммаАвансаСписание = Мин(СуммаПоДокументу, -Выборка.СуммаОстаток);
И программа валится с ошибкой, когда результат запроса пустой. А это уже классифицируется как ошибка в программном коде.
-
Если не сложно, посмотрите пожалуйста решение. ;)
-
Для ПриходаДенег сделал две логики проведения, для заполненного и пустого проекта.
Авансы не только погашаются но и зачитываются на проект и только затем списываются, чтобы не вышло ситуации когда в отчете нет проектов - одни авансы.
Весь код прокомментирован, кто сможет найти ошибки буду очень рад.
-
Всем привет. Сделал задачу с 1 одним регистром и все прекрасно списывается. Отчеты идентичны по структуре книжным.
-
Для ПриходаДенег сделал две логики проведения, для заполненного и пустого проекта.
Авансы не только погашаются но и зачитываются на проект и только затем списываются, чтобы не вышло ситуации когда в отчете нет проектов - одни авансы.
Весь код прокомментирован, кто сможет найти ошибки буду очень рад.
Непонятно почему документ "Приход денег" делает приходные движения в регистр. По логике нужно создать регистр Взаиморасчеты(обмен наших услуг на денежные средства контрагентов) в котором отражаются приходные движения по продаже этих услуг(РасходнаяНакладная) и расходные по поступлению денег(ПриходДенег)
-
Всем привет. Сделал задачу с 1 одним регистром и все прекрасно списывается. Отчеты идентичны по структуре книжным.
Подкорректировал
-
Решение на двух регистрах мне показалось более элегантно.
Выкладываю свое решение. Почему-то не смог добиться порядка в проектов в отчетах (Проект 1, Проект 2, ... , Аванс), во всяком случае сходу не получилось.
-
Мой вариант :)
-
Не то выгрузила :(. Замена.
-
Выкладываю свое решение, мб кто-нибудь прокомментирует.
Решал на двух регистрах. После того, как решил, просмотрел пару решений тех коллег из этой ветки, которые тоже решали на двух регистрах. Мое решение оказалось довольно простым по сравнению, например, с решением <b>kow1976</b><hr>Вложения:
<a href="./ucoz_attachments/9/Voyager_1.9.dt">Voyager_1.9.dt</a>
Чёртов гений ;)
-
Всем Привет, выкладываю свое решение, покритикуйте плиз, если есть тут кто)