Материалы курса «Подготовка к Аттестации по Платформе 8.2» — Пакет стартовых задач

Первый пакет разобранных задач по Аттестации

Это восемь задач, с которых мы предлагаем Вам начать обучение в курсе.

Почему именно эти задачи и почему именно таким «пакетом»?

Потому что в них прорабатываются все основные приемы и подходы, используемые для решения аттестационных задач — те, что будем использовать дальше, при разборе следующих.

Хотелось бы, что Вы сначала проработали именно этот пакет, от начала до конца, и только затем переходили к следующим задачам — так многое будет более понятным и узнаваемым.

Порядок работы с этим блоком:

  • Нужно скачать все задачи модуля
  • Обязательно попытаться решить их самостоятельно
  • Просмотреть решения задач от начала до конца
  • Если после просмотра остаются вопросы — задать их комментариями к этой странице

Общий объем: 10 часов 25 минут видео, в пересчете на учебные часы составляет около 14 учебных часов…

Содержание блока

  • Стартовая задача № 1 (оперативный учет)
    2 часа 17 минут
  • Стартовая задача № 2 (оперативный учет)
    1 час 03 минуты
  • Стартовая задача № 3 (бухгалтерский учет)
    1 час 12 минут
  • Стартовая задача № 4 (бухгалтерский учет)
    1 час 12 минут
  • Стартовая задача № 5 (расчетные задачи)
    1 час 28 минут
  • Стартовая задача № 6 (расчетные задачи)
    1 час 14 минут
  • Стартовая задача № 7 (бизнес-процессы)
    1 час 05 минут
  • Стартовая задача № 8 (бизнес-процессы + упр.формы)
    55 минут

Описания задач в PDF и видео-решения находятся в архиве Стартовый пакет из 8 задач: DevAtt-Start.rar на стартовой странице.

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии / обсуждение (1 349):

  1. Дмитрий

    Добрый день!

    Вопрос по «Стартовая задача № 1 (оперативный учет)»:

    При проведении документа «ПродажаТоваров» и чтении остатков по регистру «ОстаткиТоваров», вы выполняете проверку на Оперативность/Неоперативность

    Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
    МоментИтогов = ‘00010101’;
    Иначе
    МоментИтогов = Новый Граница(МоментВремени(), ВидГраницы.Включая);
    КонецЕсли;

    В книге практическое пособие разработчика (Радченко/Хрусталева) написано следующее, цитирую:

    «Занятие 14, стр 431: При неоперативном проведении документов не имеет смысла производить ряд проверок, в частности контроль остатков.»

    Так надо выполнять проверку остатков при не оперативном проведении или нет?? Будет ли ошибкой, если на экзамене я не буду проводить проверку на остатки при не оперативном проведении???

    • GROOVY

      В задаче четко сказано про необходимость проверки остатков. Кроме того проверку Вы напишете в любом случае, какой смысл не пользоваться ей?

      • Дмитрий

        То, что при оперативном проведении ПРОВЕРЯТЬ ОСТАТКИ — это понятно. Вопрос именно в том, что везде пишут (в том числе и выше упомянутый Радченко), что при не оперативном — ПРОВЕРЯТЬ НЕ НАДО. Поэтому не до конца понятно, как же все таки правильно?

        • GROOVY

          В задании написано «проверять остатки и выдавать предупреждение», написано. Если хотите последовательностями и фоновыми заданиями реализовать контроль остатков, можете так сделать, но времени уйдет на порядок больше и экзаменаторами оценено не будет.

          Можно конечно еще реализовать запрет ввода, редактирования и удаления движений в неоперативном порядке. Но это как бы плохо.

          • Дмитрий

            а почему нельзя просто не проверять остатки при не оперативном проведении?

            • GROOVY

              Ну в задаче сказано «С контролем остатков и выводом сообщения». В реальной эксплуатации «не проверка» остатков при неоперетивном проведении мне не встречалась.

  2. Андрей

    Здравствуйте, Павел.
    Можно вопрос по задаче 3.02 (не разобранной в рамках курса) про премию и командировку? («По мере необходимости любой сотрудник может быть отправлен в командировку. В этом случае начисление по Окладу и Премии не происходит. … Следует учесть, что данные о командировке могут вводиться в систему задним числом.»)
    С одной стороны, для вида расчета премия, обычно, не используется период действия, с другой, в этой задаче она должна вытесняться и сторнироваться командировкой, и, вроде как ее удобно сделать с периодом действия. Подскажите, как тут быть?

    • GROOVY

      В контексте приведенного Вами условия, командировка должна сторнировать оклад и должна быть введена в регистр с периодом действия.

  3. Андрей

    Здравствуйте, Павел.

    Появился вопрос по проектированию плана счетов в бух. задаче 1, где себестоимость надо считать в разрезе партий, а остатки в разрезе складов:

    Себестоимость = Сумма [Номенклатура, Партия] / Количество [Номенклатура, Партия];

    Остаток = Количество [Номенклатура, Склад].

    Если рассматривать Количество [Номенклатура, Партия] и Количество [Номенклатура, Склад] как два разных количества, то не будет ли на экзамене караться (за «лишний» ресурс) идея завести для этих двух разных количеств два разных ресурса регистра бухгалтерии (и для них два признака учета субконто)? По-моему, при таком устройстве регистра процедуры проведения документов стали были понятнее, особенно для средних умов )).

    • Андрей

      Вопрос снимается, Ваше решение лучше.

    • GROOVY

      Я не вижу необходимости в втором ресурсе с количеством.

  4. Сергей

    Здравствуйте Павел.
    Очень хотелось бы использовать консоль запросов для работы с регистрами расчета, а именно с таблицей .БазаОсновныеНачисления, но при использовании этой таблицы в консоли запросов система всегда ругается на то, что не верно задан параметр Измерения.
    В коде конфигурации используется для этого массив(как в заданиях 5 и 6)
    с 2 значениями.
    В консоли запросов этот параметр задаётся единственным возможным способом — через список значений.
    Вот ошибка: http://i.imgur.com/jOCeo.png

    Есть ли способ делать запросы к «базовым» виртуальным таблицам регистров расчетов из консоли запросов?

    • GROOVY

      У меня всегда получалось использовать список значений с элементами типа «Строка».

  5. comsystems

    Здравствуйте. Вопрос по блокировкам. В регистрах накопления и бухгалтерии с блокировками все понятно, а вот с регистрами расчета не совсем. Нужно ли накладывать блокировки при решении расчетных задач?

    • GROOVY

      По сотруднику при расчете записей можно в большинстве задач накладывать блокировки.

  6. Enjoineer

    Павел, здравствуйте.
    В первой задаче будет ли эффективней проверить Стр.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.ПустаяСсылка() и не вызывать функцию ПолучитьКоэфф() вместо проверки РезультатЗапроса.Пустой(), или РезультатЗапроса всегда лучше проверять?

    • GROOVY

      Перед получением выборки из запроса по хорошему всегда следует проверять не пустой ли он. Так как попытка получения выборки из результата запроса или ТЗ это довольно тяжелая операция для системы, даже если он пустой.

  7. nina

    Добрый день/вечер, Павел.
    Подскажите пожалуйста, галочка БлокироватьДляИзменения актуальна для Бухгалтерских регистов?

    • GROOVY

      Очень мало задач где ее можно применить. В основном это внутрискладское перемещение. Методика оперативного проведения для регистров бухгалтерии очень редко применяется.

  8. dddonnn

    Не понятно для чего в первой задаче при движении регистра СтоимостьТоваров нужна строка Движения.СтоимостьТоваров.Записать();

    Движения.ОстаткиТоваров.Очистить();
    Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
        Движения.СтоимостьТоваров.Записать();
    Иначе
        МоментИтогов = МоментВремени();
    КонецЕсли;

    при перепроведении мы очистили движения, а для чего потом записали я не понял, что это дало?

    • GROOVY

      Для того чтобы при перепроведении в режиме оперативного проведения старые движения не вошли в результат запроса.

  9. Андрей

    Добрый день, Павел.

    Применим на экзамене такой подход к организации оперативного учета ( или за такое это поставят «двойку»? ):

    — Заводим последовательность;

    — Проверяем отрицательные остатки и отменяем проведение документа только в оперативном режиме;

    — При не оперативном — двигаем все регистры, даже если остатки отрицательные (зачем лишние запреты, если проведение документа задним числом в общем случае ставит под сомнение правильность проведения последующих документов);

    — При необходимости, пользователь всегда может восстановить последовательность, и получить правильные остатки.

    • GROOVY

      Была такая мода одно время. В прошлом году один из коллег завалил таким образом сертификацию. Я правда не на 100% уверен что именно из-за этого…

    • nina

      Мне нравится решение 1.6 через последовательность.
      Правильно ли?

      Приходная, в ней реквизит «дата поступления» и этот реквизит попадает в регистры.
      Документ сдвигает последовательность на «дату поступления».
      Последовательность типовыми документами сдвигается только назад

      Далее обработка проведение по партиям. Восстанавливает партии, двигает границу вперед.

      Стоит ли таким образом пытаться решить на экзамене, или не пытаться?

      • GROOVY

        Последовательности имеет смысл создавать во всех задачах в которых документы могут вводиться задним числом.

  10. Сергей

    Здравствуйте Павел.
    У меня возникли вопросы по решению экзаменационной задачи по оперучету(не из учебника, эта задача с экзамена)
    Вот ссылка на её текст:
    https://docs.google.com/document/d/1hcHv3t0xuXQ68lPqGmL49PEKZw4Z2Kem5XeDno4oLzA/edit?pli=1

    Вот выгрузка базы с моим решением: https://docs.google.com/file/d/0B38I37LIt3KQV2pWeUpPQXNIcXc/edit

    Как правильнее менять учетную политику — через регистр сведений напрямую или через документ, меняющий учетную
    политику? Т.е также как вы сделали во 2 задаче.

    Нужно ли в регистре оборотов «Продажи» ставить галочку «Разделение итогов»?

    Насколько правильно в оборотном регистре делать движения с пустыми полями? У меня в решении это сделано в

    обработке проведения документа «Дополнительные затраты».

    В условии есть предложение:
    «В отчете себестоимость должна отражаться с учетом распределенных затрат, вне зависимости от
    того, в каком периоде был введен документ «Дополнительные затраты»».

    Чтобы выполнить это условие у себя в решении я сделал установку параметра МоментВремени таким образом:
    Запрос.УстановитьПараметр(«МоментВремени»,РасходнаяНакладная.МоментВремени());
    Правильно ли это?

    Там же в обработке проведения «ДополнительныеЗатраты», в запросе, я сделал отбор по регистратору с помощью

    конструкции:
    ГДЕ
    ПродажиОбороты.Регистратор = &РасходнаяНакладная

    Правильно ли это? или нужно было каким то образом это указывать как параметр виртуальной таблицы.
    У меня так указать, к сожалению, не получилось.

    Заранее спасибо.

    • GROOVY

      «Нужно ли в регистре оборотов «Продажи» ставить галочку «Разделение итогов»?» — Для чего Вы хотите ее поставить и почему сомневаетесь?
      «Насколько правильно в оборотном регистре делать движения с пустыми полями?» — ну смотря что за поля. Количество то у Вас не появится от проведения доп.затрат.
      При проведении доп затрат нужно прочитать обороты из регистра с продажами с отбором по регистратору, этот отбор правильнее установить в параметрах виртуальной таблицы.

      • Сергей

        «Для чего Вы хотите ее поставить и почему сомневаетесь?»

        Как я понял для ускорение доступа к данным в регистре накопления.
        Не знаю насколько это важно будет на экзамене.
        Цитата отсюда http://www.gilev.ru/1c/81/lock/lock.htm :
        «4) В регистре накопления в случаи отсутствия необходимости получить «оперативные» данные можно включить разделение итогов, что повысит параллельность записи данных и ускорит работу в целом.»

        «ну смотря что за поля. Количество то у Вас не появится от проведения доп.затрат.»

        Ага, просто хотелось уточнить, а не является ли это ошибкой в моем случае.

        «При проведении доп затрат нужно прочитать обороты из регистра с продажами с отбором по регистратору, этот отбор правильнее установить в параметрах виртуальной таблицы.»

        Я бы так и сделал, но Условие просто не видит поля «Регистратор».
        http://i.imgur.com/7HkFe.jpg
        Или нужно сделать ещё одно измерение в регистре?

        Ещё такой вопрос: Правильно ли в оборотном регистре накопления
        «Продажи» иметь ресурс «Количество»?
        Или его нужно было поместить в регистр остатков
        «ОстаткиНоменклатуры»?
        Просто если в продажах не добавить этот ресурс, то потом в отчете
        придется делать запрос не к одной, а к 2 таблицам и устанавливать
        между ними связь.
        Или же это дело вкуса и на экзамене на такое не обращают
        внимание?

        Вопросы про правильность способа установки учетной политики и
        МоментВремени из комментария выше всё ещё интересуют :-)

        • GROOVY

          Про регистратор — это я поспешил, это ведь рассчитываемое поле, его в параметрах не установить.

          Про «Количество» в «Продажах» — абсолютно правильно.

          Про «изменить учетную политику» — я делал бы документом, тогда можно нормально последовательности прикрутить.

          Про «МоментВремени» не понял, где это применяется?

          • Сергей

            «Про «МоментВремени» не понял, где это применяется?»

            В условии сказано: «В отчете себестоимость должна отражаться с учетом распределенных затрат, вне зависимости от
            того, в каком периоде был введен документ «Дополнительные затраты»».

            Применяется в обработке проведения документа
            ДополнительныеЗатраты.

            Устанавливается как параметр виртуальной таблицы
            ПродажиОбороты и устанавливается таким образом:
            Запрос.УстановитьПараметр(«МоментВремени»,РасходнаяНакладная.МоментВремени());
            где РасходнаяНакладная — это реквизит документа
            ДополнительныеЗатраты.

            Хватит ли этого для соответствия условию?

            • GROOVY

              Проверьте сами. Введите расходную 1 января, а доп затраты 1 февраля, постройте отчет на январь. Есть в суммах доп затраты?

              • Сергей

                Нет, сумма не попадала.

                Решил исправить таким образом.
                В коде модуля объекта ДополнительныхЗатрат, в цикле, где делаются записи движений написал:

                Движение.Период = Выборка.Период;

                Где Выборка.Период берётся из виртуальной таблицы ПродажиОбороты.

          • Сергей

            «Про «Количество» в «Продажах» – абсолютно правильно.»

            Чтобы избежать недоразумений уточню для себя:
            «абсолютно правильно» — это в смысле да, можно в
            РегистреНакопления Продажи иметь ресурс количество? :-)

            А то я задал аж 3 вопроса на эту тему с количеством в
            продажах, боюсь как бы оно относилось не к тому,
            что я подумал.

            • GROOVY

              Количество должно быть обязательно в регистре с продажами.

  11. nina

    Задача 1.6 непонятная.
    Можно на пальцах методику решения?

    «Складской учет товаров не ведется.
    Списание себестоимости товаров должно быть организовано по партиям, в зависимости от срока годности. В том случае, когда по разным партиям приходил товар с одинаковым сроком годности, в первую очередь необходимо списывать более дорогой (по себестоимости за одну единицу) товар.
    Специфика работы организации заключается в том, что информация о поступлении товаров на склад может происходить значительно позднее самого поступления товаров, при этом документы задним числом не вводятся. Таким образом, возможна ситуация, когда продастся товар, которого в системе еще нет. В решении должна быть реализована возможность подобной продажи товара, отсутствующего (по данным учета) на складе. Запрет продажи товара с «отрицательными остатками» или разрешение определяется учетной политикой организации, которая может меняться только в начале года.
    Документы задним числом вводить нельзя, но можно открыть существующий документ и перепровести его.
    «

    • nina

      Также непонятный отчет в задаче 3.20.
      Размер ставки только по подразделению. Где, как берется, зачем?

      • GROOVY

        Где: из первой таблицы
        Как берется: запросом
        Зачем: для построения отчета

    • GROOVY

      Хм… Давайте попробуем так, Вы сформулируете вопрос(ы) — я на них отвечу. Некоторые формулировки в задачнике меня самого повергают в состояние шока. Эта задача на сертификации имеет другую трактовку, партионный учет там не по стоимости, а по срокам годности.

      • Андрей Буравов

        У меня также по 1.6 задаче возник вопрос.
        Как правильнее организовать вот этот пункт:
        >> Специфика работы организации заключается в том, что информация о поступлении товаров на склад может происходить значительно позднее самого поступления товаров, при этом документы задним числом не вводятся. Таким образом, возможна ситуация, когда продастся товар, которого в системе еще нет.

        Как организовать возможность списывать с отрицательными остатками понятно. Непонятно как потом правильнее восстанавливать правильность остатков регистра.

        При списании товара которого нет на складе мы пишем в регистр данные только о номенклатуре, количестве и цене продажи. При этом срок годности и себестоимость остаются нам неизвестными.

        Значит при проведении приходной накладной мы должны как-то находить эти записи с пустыми сроком годности и себестоимость и перезаписать их. Как это сделать правильно?

        • GROOVY

          При покупки товара нужно заминусовать (сторнировать) те продажи которые можно покрыть этим приходом и сформировать (документом поступления) продажу еще с суммовыми значениями.

          • facedancer

            Павел, у меня был такой вариант решения задачи 1.6:
            — у приходной реквизит «дата поступления», он же идёт в движения
            — подписка на событие ОбработкаПроведения приходной накладной, которая (в том случае, если дата поступления меньше даты документа) находит расходные по использованной номенклатуре за период с даты поступления (начало дня) по момент времени и просто перепроводит.

            Мне кажется, очень простое решение, и не надо думать о том что регистр может поплыть при перепроведении старых документов, да и сторнировать по-хорошему надо не только записи с пустым сроком годности, а все (сроки годности ведь тоже могут съехать, если в новой приходной более старые товары). Разве что может быть не очень оптимальное в плане быстродействия.

            Такое решение примут на экзамене?

            • GROOVY

              Это плохой вариант. При перепроведении документов будет куча транзакций с блокировками таблиц.

  12. Андрей

    Добрый день! Не нашел подходящей темы для общих вопросов. Обязательно или нет создавать подсистемы? Если в разных задачах билета используется одинаковые документы, можно для каждой задачи создать свой документ, или надо все сделать в одном?

    • GROOVY

      Обязательно. Почитайте официальные требования на сайте 1С.

  13. facedancer

    Глупый вопрос по первой задаче, про признак «Услуга».
    Первое, что приходит в голову — создать реквизит «Услуга» у номенклатуры, но потом я решила, что можно сделать проще и добавить флаг Услуга сразу в ТЧ документа «Расходная накладная», т.к. больше эта информация по условию нигде не нужна. Это будет правильно?

    • GROOVY

      Не имеет значения. Если Вы можете в обработке проведения обработать любое из этих условий.

  14. Андрей Буравов

    Павел, как определять исходя из условий задачи — по новой методике проведения ее решать или по старой? Как это можно быстро определить?

    • GROOVY

      ВЫБОР КОГДА
      Можно сформировать движения не читая регистр
      ТОГДА новая методика
      ИНАЧЕ старая
      КОНЕЦ КАК Методика решения.

  15. Андрей Буравов

    Павел, вопрос по второму видео.
    В Вашем решении методика проведения такая:
    — проверяем — нет ли нехватки остатков товаров?
    — Списываем и остатки и себестоимость

    А по новой методике проведения нужно:
    — Списываем остатки
    — Проверяем, не ушли ли остатки в минус

    Или же задача все таки решена правильно?
    Если так, то задачи с партиями нужно решать по старой методике проведения?

    • GROOVY

      Подумайте, как мы можем списать партии не читая регистр? Какие партии мы списывать тогда будем?

      • Андрей Буравов

        Не читая регистра, никак.
        Но можно сделать так:

        1. Получаем остатки из регистра и запросом формируем результат, который можно загрузить через Движения.ОстаткиТоваров.Загрузить(Результат.Выгрузить());
        (сортируем партии в запросе так: http://img19.imageshack.us/img19/1130/35460929.jpg)

        2. Проверяем — не ушли ли остатки в минус вторым запросом с той же временной таблицей ДокТЧ что и для первого запроса (где есть список товаров)

        3. Если ушли — ругаем пользователя о нехватке таких-то товаров и отменяем запись движений через Отказ = Истина.

        По сути это же и будет являться проведением по новой методологии?
        Или если нам приходится дважды обращаться к регистру остатков — это уже означает что будет использоваться старая методика проведения?

        • GROOVY

          Нет, новой методикой не будет. Если перед проведением вы читаете регистр (каким либо способом) его надо блокировать о параллельного чтения.

          • Андрей Буравов

            Заблокировать можно так:

            ЭлементБлокировки.ИсточникДанных = СписокТоваров;
            ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");

            Я не совсем понял что является новой методикой проведения, поскольку думаю ее можно смоделировать почти в любом случае.
            Павел, будьте добры, поясните пожалуйста.

              • Андрей Буравов

                «Однако не стоит думать, что такая технология может быть применена повсеместно. На секунду задумайтесь, что в этой задаче необходимо еще и себестоимость рассчитать при списании, и Вы придете к выводу, что необходим «старый» метод контроля остатков.»

                Вот это я и искал. Значит когда есть себестоимость — списываем по старой методике.

      • Андрей Буравов

        Снизят ли балл на экзамене если писать так:

        МетодСписания = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментИтогов).МетодСписания;
            Если МетодСписания = Перечисления.МетодыСписания.ПустаяСсылка() Тогда
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Не установлена учетная политика!";
                Сообщение.Сообщить();

            ИначеЕсли МетодСписания = Перечисления.МетодыСписания.LIFO Тогда
                Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ПорядокСортировки", "УБЫВ");
            КонецЕсли;
          • Андрей Буравов

            Во втором видео вы получали МетодСписания через запрос, связывая таблицы со СпискомТоваров и РегистрСведений.УчетнаяПолитика.СрезПоследних.

            Я не совсем понял почему лучше делать именно так, вместо получения МетодаСписания через точку:
            МетодСписания = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментИтогов).МетодСписания

            Снизят ли балл за то что обращаемся к регистру через точку?
            В синтаксис-помощнике написано что метод ПолучитьПоследнее:
            «Возвращает структуру, содержащую значения ресурсов».
            А это значит что мы получим только один ресурс — МетодСписания. Так снизят ли балл за обращение через точку к регистру, который хоть запросом, хоть через точку вернет один ресурс?

            • GROOVY

              Использование конструкции «РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(МоментИтогов).МетодСписания» приведет к выполнению запроса, который сама система сформирует к БД и этим процессом Вы управлять не можете. Лучше использовать обычные запросы для получения любых данных из БД.
              На сертификации важно не использовать много запросов вместо одного. Так что если Вы будете использовать объектную модель для обращения к данным и рядом запрос для получения других данных, то такое решение могут признать неэффективным.

              • Андрей Буравов

                Отлично разъяснено, спасибо!

  16. Андрей Буравов

    Павел, 2 вопроса по блокировкам.

    Вопрос № 1
    Если в ИсточникДанных поместили результат запроса и все поля этого запроса совпадают с пространством блокировок (например с регистром ОстаткиТоваров), то имеет ли вообще смысл писать:
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных(«Товар», «Товар»);
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных(«Склад», «Склад»);

    Ведь названия итак совпадают?

    Вопрос № 2
    Рекомендуется ли принудительно указывать:
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;

    Если режим итак будет по умолчанию исключительным?

    • GROOVY

      1. Названия совпадают, а система об этом не знает, а если и знает не может понять нужен фильтр по данным накладывать или нет. Так что надо.
      2. Это я по привычке. Не очень здорово видеть что свойство по умолчанию поменялось в следующем релизе платформы ;)

      • Андрей Буравов

        Спасибо большое, все понятно! :)

        • GROOVY

          Не будет. Вы будете читать (и необходимо блокировать от грязного чтения) данные из регистра.

  17. karp82

    Добрый день, Павел.
    У меня вопрос простой. На видео уроке видно, что определенные параметры или слова в коде ЗАПРОСА выделены зеленым или синем цветом. Я понимаю, что в конфигураторе производится настройка, но я все перерыл так и не нашел как сделать это. Подскажите где посмотреть?

    • GROOVY

      Этим занимается сторонняя утилита snegopat. Штатных средств, к сожалению, нет.

  18. Екатерина

    Здравствуйте, Павел. При решении задачи 2.26 из сборника возникли вопросы.
    Должны ли совпадать реквизиты курьер и филиал у ПриходнойНакладной с АвансовымОтчетом?

     Означает ли это высказывание:

    «В том случае, когда курьер получил деньги в кассе одного филиала, а отчитывается за закупку, произведенную для другого филиала, должна сформироваться дополнительная проводка по возврату денег в первый филиал и получения их из кассы другого:
    Дт «Касса» — Km «Сотрудники» на сумму возврата в первый филиал
    Дт «Сотрудники» — Km «Касса» на ту же сумму но выданную из другого филиала»

    а конкретно фраза «а отчитывается за закупку, произведенную для другого филиала»,
    что не должно существовать документа Расход денег по этому филиалу, указанному в ПриходнойНакладной и Авансовом отчете, ведь иначе сумма должна
    планомерно раскидаться по всем филиалам, по которым есть документ РасходДенег? То что оно должно планомерно распределяться исходит из того, что
    в задании сказано: «Сумма, за которую отчитывается курьер, должна быть рассчитана при проведении документа таким образом,
    чтобы полностью погасить долг по выбранной накладной».

    Т.е. обобщая вышесказанное можно сказать, что существует 2 случая:
    1) По филиалу, по которому отчитываемся нет документа РасходДенег.
    Как результат формируются проводки из условия:
    Дт «Касса» — Km «Сотрудники» на сумму возврата в первый филиал (т.е. мы как будто бы возвращаем сумму выданную курьеру другим филиалом)
    Дт «Сотрудники» — Km «Касса» на ту же сумму но выданную из другого филиала» (и здесь передаем эту же сумму курьеру как если бы у нас был документ «Расход денег»)

    2) По филиалу, по которому отчитываемся, есть документ «РасходДенег», но суммы на
    этом филиале не хватает, тогда списываем сначала с этого филиала.
    (Это по предложению:
    «В первую очередь с курьера должны быть списаны деньги, которые он забрал в кассе того же филиала, для которого была произведена закупка товара») . Затем списываем с других филиалов, делая при этому проводку:
    Дт «Поставщики» — Kт «Сотрудники» повторяя её столько раз, на сколько филиалов сумма «залезает».  Верны ли мои рассуждения???

    В том случае, когда курьер получил деньги в кассе одного филиала, а отчитывается за закупку, произведенную для другого филиала, должна сформироваться дополнительная проводка по возврату денег в первый филиал и получения их из кассы другого:
    Дт «Касса» — Km «Сотрудники» на сумму возврата в первый филиал
    Дт «Сотрудники» — Km «Касса» на ту же сумму но выданную из другого филиала

    • GROOVY

      Приветствую.

      1. Я не могу уточнить условия задач, я их читаю так-же как и Вы.
      2. Не следует усложнять себе жизнь надумывая усложненные варианты условий. Как правило на рашение 1й задачи у Вас должно уходить механического времени не более 30 минут. Ну и на обдумывание решения еще минут 15.

      ЗЫ: Если этого комментария мало, ответьте мне, я в понедельник подниму полный текст задачи (или Вы опубликуете в комментарии), попробую более предметно ответить.

      • Екатерина

        Здравствуйте Павел, вот полный текст задачи 2.26.
        Учет хозяйственных операций в компании ведется в разрезе филиалов, причем учет по филиалам ведется не на всех счетах. Известно, что счета «Касса» и «Поставщики» ведутся в разрезе филиалов, а счета «Товары» и «Товары в пути» общие, без учета филиалов. Аналитика по филиалам на остальных счетах остается на усмотрение разработчика.
        Закупка товаров компании производится курьерами. Факт приобретения товара отражается документом «Приходная накладная», где помимо всего указывается и курьер. Данный документ реализует следующую проводку:
        Дт «Товары» — Km «Поставщики» на сумму поставленного товара.
        Предварительно курьер получает в компании денежные средства (для проведения подобных закупок). При покупке считается, что у курьера есть достаточно денежных средств и контролировать их не надо.
        Выдача денежных средств производится с помощью документа «Расход денег». Документ делает следующую проводку:
        Дт «Сотрудники» — Km «Касса» на указанную в документе сумму.
        Наличие денег в кассе контролировать не нужно. Необходимо учесть, что новая сумма может быть выдана курьеру до того, как он полностью отчитался о старой.
        Курьеры отчитываются о потраченных средствах с помощью документа «Авансовый отчет». В шапке этого документа указывается курьер, филиал и приходная накладная, за которую он отчитывается. Сумма, за которую отчитывается курьер, должна быть рассчитана при проведении документа таким образом, чтобы полностью погасить долг по выбранной накладной.
        Документ «Авансовый отчет» реализует следующие проводки:
        Дт «Поставщики» — Km «Сотрудники» на сумму предоставленную к
        отчету
        В том случае, когда курьер получил деньги в кассе одного филиала, а отчитывается за закупку, произведенную для другого филиала, должна сформироваться дополнительная проводка по возврату денег в первый филиал и получения их из кассы другого:
        Дт «Касса» — Km «Сотрудники» на сумму возврата в первый филиал
        Дт «Сотрудники» — Km «Касса» на ту же сумму но выданную из другого филиала
        Следует учитывать, что деньги курьер мог забирать в различных филиалах. В первую очередь с курьера должны быть списаны деньги, которые он забрал в кассе того же филиала, для которого была произведена закупка товара. Порядок погашения выданных по остальным филиалам денег, за которые отчитывается курьер, остается на усмотрение разработчика.
        По данным бухгалтерского учета необходимо получать отчет о задолженности курьеров перед компанией. Дополнительно, пользователю должна быть предоставлена возможность детализации выводимых в отчет данных до регистратора записи регистра. С другой стороны, данные в отчете могут быть представлены и без этой детализации.
         

        800×600

        Normal
        0

        false
        false
        false

        RU
        X-NONE
        X-NONE

        MicrosoftInternetExplorer4

        /* Style Definitions */
        table.MsoNormalTable
        {mso-style-name:»Обычная таблица»;
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:»»;
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:»Times New Roman»,»serif»;}

        Задолженность курьеров за период с 01.01.2010 по 31.01.2010
        Сотрудник
        Регистратор
        Долг на начало
        Получено в кассе
        Отчитался
        Долг на конец
        Ононко
         
        1200
        1200
         
         
        Расход денег 1
         
        500
         
         
         
        Расход денег 2
         
        700
         
         
         
        Авансовый отчет 1
         
         
        1200
         
        Бельдыев
        1 000
         
        900
        100
         
        Авансовый отчет 2
         
         
        900
         

        • GROOVY

          Реквизиты документов могут отличаться. Курьер может отчитываться по одному филиалу, а деньги брать в другом.

  19. Екатерина

    Подскажите, а где и как  будут голосовать за следующую  четную задачу?

    • GROOVY

      Материалы готовятся к выпуску, подождите буквально пару дней.

  20. Екатерина

    Возникает ошибки при формировании отчет в задаче 2.35 . 
    В первом случае попыталась указать в СКД произвольный период отчета, после это стала выходить ошибка: {(9, 59)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
     неограниченной длины и поля несовместимых типов.
    РегистрБухгалтерии.РегистрБухгалтерии.Обороты(, , , Счет <<?>>= &Счет, &ВидыСубконто, Субконто2 В (&СписокСтатей), , ) КАК РегистрБухгалтерииОбороты
    Затем сравнила файл отчета в .xml  из вашего решения и свой отчет в .xml 
    Там была разница — в моем отчете был блок:

    </dcscor:item>

    <dcscor:item xsi:type=»dcsset:SettingsParameterValue«>

      <dcscor:parameter>Счет</dcscor:parameter>

    <dcscor:value xsi:type=»v8:StandardPeriod«>

      <v8:variant xsi:type=»v8:StandardPeriodVariant«>Custom</v8:variant>

      <v8:startDate>2012-01-01T00:00:00</v8:startDate>

      <v8:endDate>2012-01-31T23:59:59</v8:endDate>

      </dcscor:value>

      <dcsset:userSettingID>de74225d-5fc1-431d-a0e5-d8737c18122b</dcsset:userSettingID>

    В вашем не было. После его удаления вручную из файла .xml мой  отчет заработал.

    В попытках найти как это удалить в СКД(я вернула старый вариант отчета с тем блоком)
    я пришла ко второму случаю
    после того как в параметрах виртуальной таблицы СКД

    убрала параметр Счет = &Счет
    из
    РегистрБухгалтерии.РегистрБухгалтерии.Обороты(, , , Счет = &Счет, &ВидыСубконто, Субконто2 В (&СписокСтатей), , )
      и заново указала на вкладке Параметры   Счет с типом ПланСчетовСсылка.ПланСчетов и значением ПланСчетов.ПланСчетов.ПрибылиИУбытки
     
     Отчет стал формироваться, но Пустым 
    Как это исправить в СКД, не редактируя вручную файл отчет.xml и не создавая отчет заново.??? 
    2 версии отчета:
    когда выходит ошибка
    http://pastebin.com/UDe4jnb9
    и когда пустой отчет:
    http://pastebin.com/95W29xNT

    • GROOVY

      Тут на лицо ошибка платформы. Используйте последнюю. Я не могу прокомментировать ошибки в платформе (как исправить не редактируя).

  21. ostap

    Задача N3.
    1. При проведении ПРОВЕДЕННОЙ. накладной в вашем решении числом больше чем дата этой накладной то при расчете остатка он вклчает движение самой себя. Т е я так понимаю итоги не пересчитываются. У себя в решении я делаю движение.записать() А какое оптимальное решение?
    2. При формировании запроса в расх. накл. мы получаем партии всех складов. И при выборке может попасться партия другого склада. Для этого ли сделано условие если счетчик = 0 ? И нет существует ли более оптимального запроса в этой задаче при котором в выборке окажутся партии только нужного склада?

    • GROOVY

      1. Проблема с перепроведением решается записью пустого набора записей перед выполнением запроса, что Вы и делаете. Как вариант можно еще учитывать (читать) собственные (старые) движения этим же запросом, однако, этот вариант более времязатратный.

      2. Есть 2 сценария решания этой задачи. Мне кажется он довольно конкурентный.

  22. Екатерина

    Здравствуйте, Павел! Скажите пожалуйста, на экзамене при решении задач по Бизнес-процессам, будет ли ошибкой ввод или не ввод избыточных данных для правил адресации?

    • GROOVY

      Избыточные данные будут считаться ошибкой.

  23. Екатерина

    Здравствуйте! Павел подскажите пожалуйста, будет ли на экзамене грубой ошибкой, если
    в одном периоде, начисление премии и оклада будут проводиться разными документами.
    P.S. это по теме пятой задачи из курса, Вы там говорили про некий механизм приоритетов. 

    • GROOVY

      Ну, грубой, я бы не назвал такую ошибку. Но если в задаче явно сказано что начисления вводятся одним документом, то приоритеты добавить нужно.
      Приоритет — это реквизит плана видов расчетов (я обычно делаю числом) в зависимости от которого выбирается каким по порядку будет рассчитана запись.

  24. Екатерина

    Здравствуйте, Павел. Вопрос по теме периодических расчетов. Если премия рассчитывается процентом от начисленного в том же расчетном периоде оклада. Правильно ли получать сумму  начисленного оклада из виртуальной таблицы ОсновныеНачисленияДанныеГрафика ? 
    Вот текст запроса:
    ВЫБРАТЬ
        ОсновныеНачисленияДанныеГрафика.НомерСтроки,
        ОсновныеНачисленияДанныеГрафика.ВидРасчета.СпособРасчета,
        ОсновныеНачисленияДанныеГрафика.Параметр,
        ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ПризнакФактическийПериодДействия, 0) КАК ФактЧасов,
        ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ПризнакПериодДействия, 0) КАК НормаЧасов,
        ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.Сумма, 0) КАК СуммаБаза,
        ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ОтработаноЧасов, 0) КАК ОтработаноЧасовБаза
    ИЗ
        РегистрРасчета.ОсновныеНачисления.ДанныеГрафика КАК ОсновныеНачисленияДанныеГрафика
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(&Измерения, &Измерения, , Регистратор = &Регистратор) КАК ОсновныеНачисленияБазаОсновныеНачисления
            ПО ОсновныеНачисленияДанныеГрафика.НомерСтроки = ОсновныеНачисленияБазаОсновныеНачисления.НомерСтроки
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ДопНачисления.НомерСтроки,
        ДопНачисления.ВидРасчета.СпособРасчета,
        ДопНачисления.Параметр,
        0 КАК ФактЧасов,
        0 КАК НормаЧасов,
        ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.Сумма, 0) КАК Сумма,
        ЕСТЬNULL(ДопНачисленияБазаОсновныеНачисления.ОтработаноЧасовБаза, 0) КАК ОтработаноЧасовБаза
    ИЗ
        РегистрРасчета.ДопНачисления КАК ДопНачисления
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДопНачисления.БазаОсновныеНачисления(&Измерения, &Измерения, , Регистратор = &Регистратор) КАК ДопНачисленияБазаОсновныеНачисления
            ПО ДопНачисления.НомерСтроки = ДопНачисленияБазаОсновныеНачисления.НомерСтроки
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДопНачисления.БазаДопНачисления(&Измерения, &Измерения, , Регистратор = &Регистратор) КАК ДопНачисленияБазаДопНачисления
            ПО ДопНачисления.НомерСтроки = ДопНачисленияБазаДопНачисления.НомерСтроки,
        РегистрРасчета.ОсновныеНачисления.ДанныеГрафика КАК ОсновныеНачисленияДанныеГрафика

    • GROOVY

      Нет, не правильно. При расчете премии у Вас вообще не должно быть доступа к таблице «ДанныеГрафика» так как премия не может обладать понятием «ПериодДействия», то есть она не зависит от протяженности и должна регистрироваться в отдельном регистре расчета без включенного флага «ПериодДействия».
      При расчете премии нужно получать сумму окладов как базу.

      Кроме того, запрос который Вы описали получит в результате количество строк выборки как произведение записей регистров, там нет связи ни по сотруднику ни по чему либо еще.

  25. comsystems

    Здравствуйте. Есть вопрос. В оперативном учете (задача 1) себестоимость у нас считается без учета склада это я считаю правильным, в бухгалтерском учете (задача 3) себестоимость считается по складам. Правильно ли это?  

    • GROOVY

      Тут вопрос спорный, есть 2 трактовки этой задачи. Если нужно исключить склад из расчета себестоимости, то для учета партий нужно создавать еще ресурсы регистра (количествоВПартии).

      • comsystems

        Получается что для решения задач по первой части себестоимость расчитываем без складов а для задач второй части со складами. В типовой бухгалтерии списание себестоимости идет с учетом склада?

        • GROOVY

          Нет так не получается. Смотрите первые видео по второй части билетов. Там есть пример с использованием признака учета субконто.
          Как в типовой, думаю, имеет смысл посмотреть в типовой.

  26. Insp2012

    Уважаемый Павел, добрый день.
    Хотел задать вопрос по задаче 3.31 сборника:
    ЗП работникам начисляется еженедельно по тарифу, исходя из фактически отработаного
    за неделю время, т.е. кол-во часов факт/ кол-во часов норма * тариф за час.
    1. Какую периодичность регистра выбрать?
    2. Как при выбранной периодичности регистра определить кол-во часов норма?
    Условие предусматривает вытеснение оплаты по тарифу — больничным: кол-во часов норма (предидущей недели) * тариф за час.
    3. как определить кол-во часов норма (предидущей недели)?
    На сколько я понимаю, прямое обращение к регистру графика недопустимо?

    Извиняюсь, что задаю вопрос не в ту ветку

    С уважением, Олег Кашира

    • GROOVY

      В задаче несколько регистров.
      В том в котором рассчитываются оплаты по тарифу периодичность День, по сути это табель заполняемый оператором.
      В том в котором считаем больничные (в задаче ничего не сказано про то что больничный должен вытеснять оплату по тарифу) — месяц.
      У премий и компенсаций затрат на обмундирование — месяц.
      Норма часов — это показатель базы, его надо записывать в ресурс регистра расчета и потом читать как базу при расчете больничного.

      • Insp2012

        Добрый день, Павел,
        Я дейтвительно не понимаю, как найти норму рабочих дней за период некратный
        периоду регистра. По Вашему, выходит, что график для начисления по тарифу
        использовать не надо?, а как надо?
        Павел, Вы знаете, что по данному ворпросу велись бурные дискуссии  на известном
        сайте. Очень хотелось, чтобы Вы поподробнее ответили на мой вопрос о получении
        нормы времени. Очень странно, что этот и подобные вопросы не интересуют
        никого из слушателей, видно я самый тормоз из всех :(. Я считаю, что Вы сами
        должны указывать слушателям на нетривиальные задачи, т.к. мы возможно
        не допонимаем условий некоторых задач, или упрощаем их условия.
        Решенные Вами задачи — это фактически повтор материаллов, представленных
        Вами в бесплатном формате.
        Хотелось, чтобы Вы разобрали хотябы одну сложную задачу, например, 3.31.
        Можно в виде схемы, а не готового решения.
        Очень надеюсь на понимание. Если разбор сложных задач не входит в курс,
        то объявите об этом, и я не буду назойливо писать по-сути одно и тоже, видя, что
        Вы не отвечаете по-существу.
        Простите за резкий тон,

        с уважением, Олег Кашира

        • GROOVY

          Ну мы вообще то для этого и устраиваем голосование по задачам. Слушатели выбирают те задачи которые им интересно решать. Чего не особо наблюдалось по задачам из второго раздела.
          В первом потоке мы решали задачу 3.31.
          К сожалению я не могу мониторить все известные сайты, по сему прошу простить мне мою неосведомленность касательно царящих там дискуссий.

          По задаче, я уже отвечал Вам, но повторюсь:
          1. Расчет «По тарифу» считается как факт.часов * тариф. Нормы часов в расчете там нет. Фактическое количество отработанного времени система узнает как? Правильно оператор введет данные о том в какой день и в какую смену, и сколько часов работал сотрудник. Норму часов по смене получить сможете? Поясню, данные нужно брать из данных графика, в регистре расчета должна быть настроена связь с графиком у реквизита «Смена».
          Итак мы рассчитали оплату по тарифу. Какие данные нам нужно сохранить для дальнейшего расчета? Сумму оплаты по тарифу и норму часов в смене которую должен был отработать сотрудник. Записываем это все в ресурсы регистра. Итак, у нас теперь есть данные базы Сумма и НормаЧасов.
          2. При расчете больничного нам нужно получить БАЗУ за прошлую неделю. В свойствах плана видов расчета в котором у Вас будет считаться больничный нужно настроить зависимость от базы по периоду действия, в этом случае мы получим базу за прошлую неделю, независимо от настройки периодичности регистра расчета в котором у нас хранится оплата по тарифу (пропорционально значению графика).
          3. По остальными видами начислений есть недопонимание как их рассчитать?

          PS: Вы считаете что не следует выкладывать бесплатные материалы, чтобы не было потом неудовлетворительных комментариев к платным материалам о том что темы пересекаются?

          • Insp2012

            Уважаемый Павел,
            бесплатные материалы безусловно нужны. Я уже писал, что благодаря Вашим материалам начал хоть что-то понимать и делать. Я и курс решил оплатить, чтобы поддержать Ваши нужные проекты. Я думаю, что все кто готовятся к аттестации их не раз посмотрели, поэтому мне и хочется решений сложных задач. Я думаю, что какие задачи сложные, а какие нет — Вы знаете сами лучше слушателей.
            Я понимаю, что решение тех задач, о которых я спрашиваю, приводится в Продвинутом курсе за 21 тык. Поэтому не буду задавать, как говориться, лишних вопросов…

            • GROOVY

              Еще раз обращаю внимание на то что задачи мы выбираем совместно. Не четные выбираю я, четные — слушатели.

  27. ostap

    Добрый день!
    Вопрос по Задаче №1 . Не до конца ясна причина использования объекта БлокировкаДанных для второго регистра (стоимость) в документе реализация. почему нельзя было также как в первом регистре. Из-за отсутствующего фильтра потому что мы еще не имеем сформированные записи второго регистра? 

    • GROOVY

      1. Да Вы правы, нет еще записей в регистре и мы сами должны установить фильтр у блокировки.
      2. БлокироватьДляИзменения сработает в момент записи данных в регистр, а мы еще ничего не пишем, а лишь читаем, и не хотим допустить проблему «грязного чтения».

  28. unf13

                 Здравствуйте, Павел.
    В расчетных задачах, в частности в №6 Вы используете не совсем классический способ записи набора записей регистра расчета.  
                Обычно, после расчета записи регистра расчета используют  метод :
    Записать( , ИСТИНА),  т.е. устанавливая второй параметр в «ИСТИНА», отключают пересчет фактического периода действия и ввод записей перерасчетов, т.к. эти действия были выполнены в самом модуле документа «НачислениеЗарплаты», при первоначальной записи движений.
               Ваш метод:  Записать( ,  ,ЛОЖЬ)  отключает расчет фактического периода действия, НО НЕ отключает  ввод записей перерасчета.  С одной стороны, это позволяет нам в обработке по перерасчету, требуемой в некоторых задачах, НЕ удалять после перерасчета записи перерасчета,т.к. они в этом случае удяляются сами.
         Но с другой стороны, не будет ли более оптимальным, использовать такую форму записи :  Записать( ,  ,ЛОЖЬ, ПризнакПерерасчета)  , где ПризнакПерерасчета переменная типа «Булево» — параметр у метода общего модуля, в котором производится расчет?  В этом случае ввод записей перерасчета не будет производиться в общем модуле расчета (т.к. это уже произошло при первоначальной записи движений в документе), если производится обычный расчет, а НЕ перерасчет.  С другой стороны сохранится «бонус» возможности не удалать записи перерасчета, после,собственно, перерасчета (за этот прием Вам спасибо, даже в «Реализации прикладных задач..» записи перерасчета после перерасчета удаляют отдельным кодом). 
         И еще вопрос  касательно перерасчетов. В той же «Реализации прикладных задач» выполняют перерасчет записей в транзакции. У Вас в задаче №6 транзакция в отчете по перерасчету не используется. Нужно ли все-таки ее использовать или нет? 

    Спасибо. 

    • GROOVY

      При расчете записей НУЖНО зарегистрировать необходимость перерасчетов зависимых от базы. если мы отключим запись данных перерасчетов, то будет плохо.

      Про транзакцию: Как хотите. Методически не аргументирую ни использование ни неиспользование транзакции.

  29. Екатерина

    Еще один вопрос,  по 3-й задаче из эталонного решения, почему  в обработке проведения расходной накладной цикл ВыборкаИтоги проходит всегда всего лишь один раз  ?
    Ведь после этого проводка по счету Дт Покупатели  Кт Прибыли и убытки формируется только по первой позиции табличной части расходной накладной и в сумме указана сумма только этой позиции.

    • GROOVY

      1. Потому что это ИТОГИ, ИТОГ ОБЩИЙ, он ОДИН. ВСЕГДА.
      2. Проводка формируется не по первой позиции табличной части, а на ОБЩУЮ СУММУ ДОКУМЕНТА.

      • Екатерина

        Это понятно, но если проверить документ «Расходная Накладная», добавить 
        две позиции в табличную часть, то в регистре проводка по счету
        Дт Покупатели  Кт Прибыли и убытки   не формирует проводку на общую сумму
        документа, а только на одну позицию. У вас в примере решений была только
        одна позиция.Попробуйте  пожалуйста в своей решенной базе 3-го задания, 
        добавить в документ расходная накладная больше чем одну позицию, и посмотрите формируемую проводку. У меня на вашей базе, документ формирует проводку
        не на общую сумму документа, а только сумму одной  позицию из документа.

        • GROOVY

          Да, там ошибка в запросе. Нужно общую сумму документа брать в последней проводке.

    • unf13

      >При расчете записей НУЖНО зарегистрировать необходимость перерасчетов зависимых от базы. если мы отключим запись данных перерасчетов,
      то будет >плохо.
      —————————————
      Согласен, но ведь записи перерасчета, как и формирование фактического периода действия
      УЖЕ ПРОИЗОШЛИ в момент первоначальной записи движений еще в модуле проведения документа Начисления зарплаты:

      <code>Движения.Записать()</code> => Здесь сформировался фактический период действия и ввелись записи перерасчета.

      Поэтому наиболее распространенный вариант(которому учат и на курсах в УЦ) записи рассчитываемого в общем модуле набораа за записей
      выглядит как
      <code>НаборЗаписей.Записать(,Истина)</code> т.е. здесь отключается как формирование фактического периода действия,ТАК И ввод записей перерасчета.

      Недостаток этого метода в том, что записи перерасчета в этом случае не удалятся,если перерасчет производится из обработки перерасчета.
      Если же использовать вариант <code>НаборЗаписей.Записать(,,Ложь)</code>, как в задаче №6, то фактический период формироваться НЕ будет,
      НО записи перерасчета будут повтороно сформированы(!), хотя они уже были введены раньше, при первоначальной записи движений в модуле документа.

      • GROOVY

        Ну а если мы производим расчет записей без проведения документа?! И это возможно не только при перерасчетах. Я считаю, что, однозначно, пересчет результата расчета должен инициировать перерасчеты.

  30. Екатерина

    Здравствуйте, Павел. Вопрос по задаче №3 . Поясните пожалуйста, в обработке проведения документа Перемещение мы у запроса устанавливаем параметр виртуальной таблицы Счет = &Счет, затем мы пишем Запрос.УстановитьПараметр(«Счет», ПланыСчетов.Хозрасчетный.Товары). Для чего мы это делаем, если в дальнейшем он(Счет) нам не пригодится. И что он именно делает в запросе, может ли получится некорректная выборка если мы этот параметр не будем учитывать?

    • GROOVY

      А что значит «в дальнейшем не пригодится»? Нам остатки при перемещении контролировать надо по определенному счету?

      • Екатерина

        Этот счет используется только для получения результата запроса?
        Просто не заметила как это влияет.

        • GROOVY

          В параметрах виртуальной таблицы устанавливается отбор по счету.

              |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
              |               &amp;МоментИтогов,
              |           <strong>    Счет = &amp;Счет,</strong>
              |               &amp;МассивСубконто,
              |               (Субконто1, Субконто3) В
              |                   (ВЫБРАТЬ
              |                       ДокТЧ.Номенклатура,
              |                       ДокТЧ.Склад
              |                   ИЗ
              |                       ДокТЧ КАК ДокТЧ)) КАК ХозрасчетныйОстатки

          Как влияет? Отбор устанавливается. Не укажем получим остатки по всем счетам.

  31. Екатерина

    И еще один вопрос. по первой задаче, почему при формировании движения в док. Продажа товаров в третьем запросе формула расчета такая  ДокТЧ.Количество/СтоимостьТоваровОстатки.КоличествоОстаток * СтоимостьТоваровОстатки.СтоимостьОстаток 
     
    а не просто СтоимостьТоваровОстатки.СтоимостьОстаток  , ведь ДокТЧ.Количество/СтоимостьТоваровОстатки.КоличествоОстаток по идее всегда равно единице.
    Если я не правильно рассуждаю, то поясните пожалуйста.

    • GROOVY

      Вот тема парулетней давности, где ведется полемика с Павлом Белоусовым (он часто принимает аттестационные экзамены), я думаю нет смысла ее перепечатывать здесь.

  32. Екатерина

    Здравствуйте , Павел. Вопрос по первому заданию. Почему в СКД в  запросе набор данных1 РегистрНакопления.ОстаткиТовара.ОстаткиИОбороты(, , , , {Склад = &Склад}) КАК ОстаткиТовараОстаткиИОбороты
    {Склад = &Склад} идёт пятым параметром? Как наглядно можно увидеть на что это влияет?
     

    • GROOVY

      А каким он должен идти? Это условие на измерение регистра накопления.
      Последнее предложение не понятно. Увидеть на что влияет отбор по измерению регистра или на что влияет каким по порядку указан отбор по измерениям? Если про наличие самого отбора, то если указать значение склада, то мы увидим остатки только по одному складу. Если про порядок параметра, то очень наглядно можно провести эксперимент и попробовать указать его в качестве второго или двадцать пятого параметра и увидеть прекрасное окно с синтаксической ошибкой.

      • Екатерина

        Хорошо, а где в конструкторе запроса можно увидеть, что «Склад» это пятый
        параметр?
         

        • GROOVY

          Пятым параметром указывается не «Склад», а «условие на измерения регистра накопления», на любое измерение или сочетание измерений. В конструкторе это можно увидеть открыв параметры виртуальной таблицы. Так же можно посмотреть в синтаксис помощнике список параметров виртуальной таблицы, там даже примеры есть.

  33. Андрей Буравов

    8 урок. Время 0:41:35.
    Павел, почему вы создали две процедуры (на сервере и на клиенте):
    &НаКлиенте
    Процедура ОбработатьПодбор(АдресВХ) Экспорт
    ЗагрузитьТоварыИзВХ(АдресВХ);
    КонецПроцедуры
    &НаСервере
    Процедура ЗагрузитьТоварыИзВХ(АдресВХ)
    Объект.СписокТоваров.Загрузить(ПолучитьИзВременногоХранилища(АдресВХ));
    КонецПроцедуры
     Ведь можно было просто:
    &НаСервере
    Процедура ОбработатьПодбор(АдресВХ) Экспорт
    Объект.СписокТоваров.Загрузить(ПолучитьИзВременногоХранилища(АдресВХ));
    КонецПроцедуры
    Ваш вариант оптимизирует производительность? Или почему вы написали именно так? 

    • GROOVY

      Я сейчас проверить не могу, но у меня стойкое представление, что вызвать серверную экспортную процедуру из модуля другой формы с клиента я не могу.

      • Андрей Буравов

        У меня работает. Специально проверил и первый вариант (с двумя процедурами) и второй вариант (с 1 процедурой).

        • GROOVY

          Ну нет повода Вам не верить, в воскресенье до баз доеду и все равно проверю :)

  34. Helena

    И еще вопрос по отчету из 1-го Задания. Скажите, пожалуйста, почему в запросе по регистру остатков мы используем именно необязательное условие {Склад = &Склад}, а не отбор по этому же реквизиту? В чем принципиальная разница?

    • GROOVY

      Опишите Ваш вопрос подробнее.
      Склад — это не реквизит, а измерение регистра. Отбор накладывается на результат запроса, а условие в виртуальных таблицах — это предусловие расчета остатков.

      • Helena

        Да, Вы правы, вопрос несколько шире. Конструирование отчета для получения одного и того же конечного результата можно произвести различными способами. Например, чтобы ограничить данные одним складом, можно задать необязательное условие в запросе, а можно предусмотреть отбор. Чтобы показать пользователю колонки Количество и Сумма группами НачальныйОстаток, Приход, Расход и КонечныйОстаток, можно организовать соответствующую настройку полей на закладках НаборыДанных и ВычисляемыеПоля, а можно сделать тоже самое в Настройках на закладке Выбранные поля.

        Так вот, вопрос: есть ли принципиальная разница, где именно настраивать финальное представление отчета? И если нет, то все же как лучше сделать, чтобы произвести на экзаменатора наилучшее впечатление?  :)

        • GROOVY

          Я немного не в тему отвечу :)

          Наилучшее впечатление на экзаменатора можно произвести так:
          1. Решить экзаменационный билет без грубых ошибок.
          2. При очной сдаче:
          2.1 Быть красивой девушкой.
          2.2 Сдавать в числе первых в том случае если экзаменатор с утра отдохнувший, и в последнюю очередь если экзаменатор с утра с дороги.
          2.3 Сдавать его заму когда он обедает.
          3. При заочной сдаче:
          3.1 Писать сопроводительную записку с комментариями
          3.2 Акцентировать внимание на интересных «плюшках» в решении.

          Теперь по теме:
          Вычисляемые поля рассчитываются на стороне сервера 1С:Предприятия, а наборы данных подготавливаются средствами SQL. На экзамене можно все делать на стороне скуля. На практике, если поля часто игнорируются в отчетах, то стоит их сделать вычисляемыми.

  35. Helena

    Павел, мне кажется, что в запросе из 1-го Задания вместо кода
    <code>
    ВЫБОР
     КОГДА ЕСТЬNULL(СтоимостьТоваровОстатки.КоличествоОстаток, 0) = 0
      ТОГДА 0
     ИНАЧЕ ВЫБОР
       КОГДА ДокТЧ.Количество = ЕСТЬNULL(СтоимостьТоваровОстатки.КоличествоОстаток, 0)
        ТОГДА СтоимостьТоваровОстатки.СтоимостьОстаток
       ИНАЧЕ ДокТЧ.Количество / СтоимостьТоваровОстатки.КоличествоОстаток * СтоимостьТоваровОстатки.СтоимостьОстаток
      КОНЕЦ
    КОНЕЦ
    </code>

    можно использовать такой код:
    <code>
    ВЫБОР
     КОГДА ЕСТЬNULL(СтоимостьТоваровОстатки.КоличествоОстаток, 0) = 0
      ТОГДА 0
     КОГДА ДокТЧ.Количество = СтоимостьТоваровОстатки.КоличествоОстаток
      ТОГДА СтоимостьТоваровОстатки.СтоимостьОстаток
     ИНАЧЕ ДокТЧ.Количество / СтоимостьТоваровОстатки.КоличествоОстаток * СтоимостьТоваровОстатки.СтоимостьОстаток
    КОНЕЦ
    </code>

    Если я неправа, скажите, пожалуйста, почему.
      

  36. Евгения

    Добрый день!
    И снова наблюдение по задаче 5.
    В условии сказано: «сотрудникам компании начисляется премия процентом от всех начислений, сделанных в предыдущем же расчетном периоде». То есть если сотруднику в марте была начислена премия, при ее (премии) начислении в апреле сумма мартовской премии должна учитываться при расчете базы для премии, однако при существующих настройках предопределенного элемента Премия плана видов расчета ДопНачисления этого вероятно не произойдет. Поэтому вероятно при настройке данного вида расчета была случайно пропущена галка в ТЧ базовых видов расчета.

  37. Евгения

    Павел, возник еще один вопрос, точнее наблюдение и предложение, по задаче 5 касательно структуры регистра сведений Производственный календарь, а именно измерения Подразделение.
    Подобный подход, на мой взгляд, может привести к неоправданному росту числа записей в регистре в случае, если ряд подразделений будут работать по одинаковому графику работы.
    Описанная в видеоразборе ситуация, когда для двух подразделений графики работы (по 5 дней в неделю) не совпадают по дням очевидно соответствует ситуации с двумя различными графиками работы, которые в системе должны быть представлены различными элементами справочника «Графики».
    Предложение: Для хранения соответствия графиков работы подразделениям вероятно стоит использовать отдельный периодический регистр сведений с измерением Подразделение и ресурсом График (это если график работы подразделения может изменяться) или же можно записывать график в реквизит справочника «Подразделения» (если изменение графика невозможно).
    Если мое наблюдение неверно, поправьте меня, пожалуйста.
    Заранее спасибо за прояснение ситуации.

    • GROOVY

      Абстрагируйтесь от «пятидневок». Предположим есть график «Для пожилых работников», в администрации сотрудники по этому графику работают 4 дня, в сталелитейном цехе 1 день.

  38. Евгения

    Добрый день.
    Вопрос возник при разборе задачи 5.
    В условии задачи сказано, что «сотрудники предприятия получают  оплату по окладу пропорционально отработанному времени в днях«. Также есть условие, что «в случае болезни сотрудник получает пособие, размер которого определяется как количество часов болезни, умноженное на среднюю часовую ставку«.
    Получается, что в регистре сведений, хранящем данные о графиках работы должны храниться 2 ресурса: ЗначениеДень и ЗначениеЧасы. В регистре расчета основные начисления к ресурсам Сумма и ОтработаноДней добавляется ресурс ОтработаноЧасов.
    Виды расчета (оклад и больничный по среднему) находятся в одном плане расчетов и записи по ним хранятся в одном регистре расчетов. В регистре расчета мы настраиваем связь с регистром сведений, хранящим данные графиков.
    Вопрос 1: в условиях данной задачи в поле «Значение графика» необходимо выбирать ресурс ЗначениеДень?
    Вопрос 2: в запросе получения данных для расчета будет иметь место код:
    <code>ВЫБРАТЬ …,
    ОсновныеНачисленияДанныеГрафика.ЗначениеДеньПериодДействия КАК ДниПлан,
    ОсновныеНачисленияДанныеГрафика.ЗначениеДеньФактическийПериодДействия КАК ДниФакт,
    ОсновныеНачисленияДанныеГрафика.ЗначениеЧасыПериодДействия КАК ЧасыПлан,
    ОсновныеНачисленияДанныеГрафика.ЗначениеЧасыФактическийПериодДействия КАК ЧасыФакт
    ИЗ РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(Регистратор = &Регистратор)
    …</code> 
    и в зависимости от способа расчета мы будем ориентироваться на факт/план отработанных дней или факт/план отработанных часов?

    • GROOVY

      1. Да.
      2. Оклад по дням, больничный по часам.

  39. Евгения

    Павел, добрый день!
    1. По задаче 4 возник вопрос. В отчете ВедомостьПоЗадолженностям (в источнике данных) есть условие:
    <code>Где
        Регистратор <> Неопределено</code>

    Если я правильно понимаю для отбора только оборотов за период без дополнительных записей с остатками на начало и конец периода достаточно в параметрах виртуальной таблицы ОстаткиИОбороты указать «Метод дополнения» как «Движения» ( по умолчанию значение ДвиженияИГраницыПериода) или могут быть побочные действия от установки данного параметра.
    2. Вопрос по видеоразбору. В обработке проведения документа Корректировка задолженности при написании универсального кода определения, что имеет место быть прибыль или убытки используется только отклонение и вид счета. Для использования этого кода в условии наличия активно-пассивных счетов необходимо будет добавить условие на остаток и в зависимости от остатка на этом счете определять, какие движения необходимо сделать. Верно?

    • GROOVY

      Приветствую!
      1. Перечитал несколько раз. Не понял вопроса, извините.
      2. Активно-пассивные счета в задаче отработают корректно. На основе знака отклонения.

      • Евгения

        2. С активно-пассивными счетами разобралась, спасибо.
        1. Попробую переформулировать. В задаче № 4 в отчете
        ВедомостьПоЗадолженностям для получения необходимой информации используется код:
        <code>ВЫБРАТЬ
            ХозрасчетныйОстаткиИОбороты.Субконто1,
            ХозрасчетныйОстаткиИОбороты.Субконто2,
            ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток,
            ХозрасчетныйОстаткиИОбороты.Регистратор,
            ХозрасчетныйОстаткиИОбороты.СуммаОборот,
            ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток
        ИЗ
            РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , Счет = &Счет, &МассивСубконто, ) КАК ХозрасчетныйОстаткиИОбороты
        Где
            Регистратор <> Неопределено </code>
        Условие используется для «отсечения» строки результата с остатком на конец периода без движений и соответсвенно документа-регистратора.
        В параметрах виртуальной таблицы ОстаткиИОбороты регистра бухгалтерии можно указать «Метод дополнения» как «Движения» ( вместо используемого по умолчанию значения «ДвиженияИГраницыПериода») и результат получается тот же.
        Вопрос: верно ли будет использование данного параметра виртуальной таблицы или же от его установки могут быть побочные действия (возможно не рекомендуется по каким-либо причинам или при отдельных сходных данных может быть потеря части результатов)?

        • GROOVY

          Нам же в отчете нужны накопительные итоги по регистраторам… Я ориентировался именно на это условие отчета.

  40. comsystems

    Здравствуйте.  К обучению приступил с запозданием.  Надеюсь успею догнать остальных. У меня есть несколько вопросов. Помогите разобраться:
      В задаче 2 есть условие: «Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться» я реализовал следующим куском кода
    <code>
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если (Не Проведен) И РежимПроведения=РежимПроведенияДокумента.Неоперативный
    И РежимЗаписи=РежимЗаписиДокумента.Проведение Тогда
    Сообщение=Новый СообщениеПользователю;
    Сообщение.Текст=»Нельзя проводить новые документы неоперативно»;
    Сообщение.УстановитьДанные(Ссылка);
    Сообщение.Сообщить();
    Отказ=Истина;
    КонецЕсли;
    КонецПроцедуры
    </code> 
    Правильно я ли сделал? На экзамене будет ошибкой если не реализовать проверку  условия неоперативного проведения нового документа? Так как учетная политика задается документом, то пользователь может неоперативно перепровести документ УчетнаяПолитика изменив при этом саму учетную политику. Необходимо ли реализовывать последовательность с входящими документами «Учетная политика» и «Продажа товаров», или на экзамене не стоит тратить время на это?

    • GROOVY

      По поводу этого условия у 1С. А что будет если пользователь откроет существующий документ, удалит все строки, введет абсолютно другие данные?! Вот и мне не понятно на что нацелено это условие…
      Реализовать его Вы можете, ничего плохого в этом нет.

      Последовательности хороши в любых задачах. Время на создание последовательности много не уйдет.

  41. I. Shalaev

    Павел.
    Есть небольшое наблюдение: если взять перепровести документ ПриходнаяНакладная в форме в задаче № 3, то документ начнёт задваивать, затраивать и т. д. собственно до бесконечности движения.
    Проверялось и на конфе поставляемом с курсом (платформа 8.2.15.317).
    Вопрос: это косяк платформы?

    • GROOVY

      У меня не задваивает. Платформа та же.
      Задваивать может в случае если форма обычная или в форму выведены команды перехода к связанным данным. Это не глюк платформы, а извращенная фишка :)

      • I. Shalaev

        Да. Павел, вы правы. Действительно на форме есть команда перехода к связанным данным. Спасибо.

    • Kir

      I. Shalaev,
      Проверьте не стоит ли галочки «Использовать всегда» напротив свойства «Объект.Движения» управляемой формы.

  42. ilya_i

    В задаче 5 Вы опустили/упростили условие, что компенсация не больше некоторого значения, для каждого сотрудника, но если не упрощать,  то получается, что в документ надо вводить второй реквизит «параметр», в который сохранять это самое максимальное значение (следуя принципу неизменности пререпроведения)?

  43. unf13

    Доброго времени суток,
    Павел, в первой задаче в отчете  «Ведомость по складам » Вы используете соединение двух наборов данных в самой схеме компоновки данных.

     Как я понимаю, в этом случае Левое соединение двух наборов будет выполнено на стороне сервера приложений? В таком случае, не будет ли более эффективным соединять таблицы остатков о оборотов еще в запросе, с тем, чтобы соединение выполнялось на стороне сервера СУБД? Или на экзамене все это не принципиально?

  44. kirillova_nn

    Павел, добрый день.
    Подскажите пожалуйста по трактовке задачи по резервированию. Задача в сборнике (2010 г.) 1.11. Суть задачи в том, что заказ на товар оформляется Заказом покупателя, при этом накладывается резерв на товар, даже если его еще нет на складах. Продажа и снятие резерва происходит док-м Расходная накладная с соответствующим контолем остатков. 
    Но есть такой абзац «Необходимо предоставить пользователю возможность указать в заказе количество резервируемго товара.» (мое примечание — это и так вроде логично, т.к. оформляется заказ не абстрактный, а конктретный) «При этом следует контролировать количество резерва, чтобы оно не превышало количество заказанного товара«.  И речь вроде как все о том же заказе покупателя. С пониманием этой фразы совсем все плохо. Может закралась какая-либо опечатка. Может имеется ввиду, что контролировать, чтобы мы не отгрузили больше, чем заказывал покупатель? но в этом случае придется указывать в РН ЗАказ или покупателя, по которому осуществлять контроль.
    Павел, прошу помощи, пока не запуталась окончательно. Спасибо. 

    • GROOVY

      Приветствую.

      Я тоже часто медитирую над задачами… Не всегда понимание приходит :)

      Мое понимание того что привели Вы:
      Резервируем товар.
      При продаже товара указываем количество резерва за которым приехал покупатель.
      При контроле смотрим чтобы продаваемый товар не был зарезервирован еще кем то, в том случае если покупатель забирает товара больше чем он заказывал.

  45. Insp2012

    Доброго дня,
    Уважаемый Павел,

    у меня к Вам вопрос
    В решении расчетной задачи Вы приводите отчет о начислениях работникам, в ктором по строкам выводятся группировки по подразделению, работнику, виду расчета, а в колонках — по периоду действия (регистрации).  Имеется ли принципиальная возможность построить такой отчет с помощью СКД в транспонированном виде, т.е по строкам — сотрудники и подразделения, а по колонкам —  периоды и виды расчетов? Хочу получить что-то вроде расчетной ведомости по периодам.
     
    Второй вопрос:
    Нужно ли в состав регистра расчета включать измерение «Подразделение», если в задаче прямо не говорится, что 1)работник может работать в разных подразделениях, или 2)не требуется получать базу целиком по подразделению (например для начисления премии его руководителю)?
    Павел, я извиняюся за назайливость, но хочу, чтобы Вы прокомментировали следующий момент: В расчетных задачах есть таблица с процентами премии и интервалами стажа, которая помещается в регистр сведений. Каким образом можно получить значения ставок премй сразу для всех сотрудников одним запросом в виде: сотрудник (НомерСтроки) — ставка премии.  В самом деле, не вносить же ставки премий вручную в документ, сверяясь с бумажной таблицей.  Такие примеры есть и в оперативных задачах.
    Хотел бы услышать ответы и от слушателей, я думаю, что уровень подготовки их достаточно высок.
    Oleg Kashira

    • GROOVY

      1. Конечно. Просто указываете вывод данных в таблицу и в колонки добавляете периоды.
      2. Если подразделения нет ни в отчетах, ни в условиях, то зачем его добавлять?
      3. Таблицу с процентами премий и другие шкалы можно элементарно подцепять запросами. Я в какой то задаче показывал это точно.

      • Insp2012

        Добрый день, Павел
        1. Я хотел бы в колонках отразить не только периоды, но и виды расчета, а у меня не
        получается.
        3. Вы наверно показывали в задаче для первого потока, а не в нашем потоке.
        Вопрос для меня очень актуальный. Я пробывал, но как-то криво получается конструкцией из семи пакетов в запросе. Странно, что этот вопрос никого не интересует, кроме меня. Почему мне никто не подскажет тогда…

        • GROOVY

          Пришлите мне свою базу и таблицу с примером что Вы хотите получить.

  46. Андрей

    Уточните, пожалуйста, правило о том, что документ должен помнить все данные, на основе которых формируются движения (в видео речь шла о коэффициентах единиц измерения). Не должен ли документ тогда содержать и реквизит со способом списания? Если не должен, то почему?

    • GROOVY

      Не думаю что это принципиально. Можно сохранить значение.
      Идея в том, что данные которые использует документ при проведении делятся на те которые можно спокойно изменить вручную и потом концы с концами не сведешь, а бывают те которые меняются документами, ну к примеру способ списания может устанавливаться документом «Приказ об учетной политике». В этом случае значение можно не хранить в документе.

  47. Insp2012

    Добрый день,
    Уважаемый Павел, у меня к вам два вопроса:
    1. При решении расчетных задач вы используете поиск в Выборке запроса через структуру, перебирая записи регистра. Однако в решениях, которые Вы бесплатно опубликовали на своем сайте (огромное спасибо Вам за это!), использован обратный метод, т.е перебирая результат запроса, позиционируемся на нужной записи в регистре по ее индексу. На мой скромный взгляд, второй вариант решения более изящный и прозрачный. Как вы думаете, что по этому поводу скажут экзаменаторы?

    2. При решении расчетных задач базовые периоды, а также параметры расчетов Вы предлагаете заполнять вручную в документе. Я думаю, что это не совсем правильно. Хотя бы потому, что документ каркасной конфигурации содержит только реквизиты «Дата Начала» и «ДатаОкончания».
    Из условий многих задач требуется автоматически определить значение параметра расчета в зависимости от каких-либо данных, например размер преммии зависит от стажа, выручки и т.п. или Вы предлагаете такие параметры тоже вносить вручную?

    Наверно резковато получилось

    • GROOVY

      Приветствую.
      1. Второй вариант более универсален, так как не нужно следить за тем что в выборку гарантированно попадут все строки набора.
      2. Базовый период можно заполнять как руками, так и автоматом, я думаю это вообще не проблема и вряд ли скажется на оценке. Что касается процента премии зависящего от стажа, то тут конечно нужно строить запрос к регистру сведений, в видео подобный прием продемонстрирован. Так что я не вижу причин по которым Вы не могли бы повторить это :)

      • Андрей

        Добрый день, Павел.

        Вопрос про любую расчетную задачу. Можно не автоматизировать заполнение поля «Параметр» в строках документа «Начисление» ? Это не скажется на оценке, даже если условие задачи намекает на то, что надо бы обеспечить подстановку, например, оклада: «Первоначальное значение оклада может изменяться не чаще, чем один раз в день, но берется на начало расчетного периода» ?  

        И второе, как правильно трактовать вышеприведенное условие? Оклад может изменяться раз в день, и все эти (в том числе ненужные) оклады должны храниться в регистре? Или периодичность регистра можно сделать равным месяцу, а там пусть в него вводят оклады хоть три раза в день?

        • GROOVY

          Автозаполнение можно не автоматизировать.

          Про оклад. надо сделать периодический регистр сведений, с периодом день, но при расчете брать срез последних на начало периода.

  48. Nikolay

    Здравствуйте, Павел.

    У меня вопрос по задаче 3. Почему Вы не наложили блокировку на счет «Товары» в документе «Перемещение»? Ведь мы обращаемся к регистру бухгалтерии, чтобы считать количественный остаток по счету, а потом делаем проверку на то, чтобы он был больше количества перемещаемого остатка. Если не наложить блокировку мы будем читать «грязные данные», ведь остаток кто-то другой к моменту проведения нашего документа сможет изменить и мы получим ошибку.

    И еще одно замечание: зачем в ОбработкеПроведения Расходной накладной открывать цикл по общим итогам, ведь там всегда будет одна запись — итог?

    На мой взгляд, красивее было бы написать:
    <code>
    ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
     ВыборкаОбщийИтог.Следующий();  // Общий итог
      ВыборкаНоменклатуры = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
     Пока ВыборкаНоменклатуры.Следующий() Цикл
       ….
     КонецЦикла;
    </code>

    С уважением, Николай.

    • GROOVY

      Приветствую!

      Поддерживаю, блокировка на счет «Товары» при перемещении нужна.

      Красота кода дело субъективное :)

  49. qwer10707

    Как правильно ввести контроль остатков во 2 задаче? Нужно ли вводить новый РН Остатки,с измерением Номенклатура, Ресурсом Количество и делать все по аналогии с 1-й задачей, или же аттестационная комиссия удовлетворится механизмом контроля из строчки «ВыборкаНоменклатура.Количество > ВыборкаНоменклатура.КоличествоОстаток»?

    • GROOVY

      Нужно продемонстрировать умение использовать оперативное проведение.

Комментарии закрыты