Форум Чистова. Подготовка к экзаменам 1С

Аттестация "1С:Специалист" => Аттестация "1С:Специалист по платформе 1С:Предприятие 8.3 и 8.2" => Тема начата: Jones от Июль 30, 2015, 10:57:34 pm

Название: Билет 1. Спец по платформе V8
Отправлено: Jones от Июль 30, 2015, 10:57:34 pm
Сделал 1 билет из 15-ти (https://docs.google.com/document/d/19Cv6COjMRcN_qDLbiWmYwp686IXpxE9GHHzQkpa2rME/edit)
Пойдет? Вроде все работает ))

ПР - Оклад (из рег.свед), Премия (Процент из Шкалы от стажа)
БУ - Сроки годности, Номенклатура.
ОУ - Услуги, Партии, УчетнаяПолитика. Себестоимость по Партиям, но не по Складам (2 остаточных РН)
БП как БП. Параметр сеанса, форма задач, карта маршрута в форме процесса.

И еще вопрос: кто знает, что значит фраза "Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается"?
Нужны ли в этой задаче Подразделения вообще?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Июль 30, 2015, 11:14:28 pm
Добавил кнопку Обновить для Карты маршрута в процессе.
Кнопку Установить пользователя в справочнике ФизЛица оформил текстом.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Июль 30, 2015, 11:35:00 pm
Подразделение нигде по задаче не нужно, в том числе и в отчете его нет.
В общем, я его вообще не использую, ни в ТЧ документа Начисление, ни в РР
Надеюсь, это не грех.

Народ, кто еще готовится к Спецу по платформе, прошу оценить решение.
Как думаете, сгодится, если так на экзамене успеть?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Июль 31, 2015, 05:45:48 am
Ух ты! Еще бы рубрикатор по этим "новым" билтеам, которых 15 шт.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Июль 31, 2015, 09:59:26 am
Подразделение нигде по задаче не нужно, в том числе и в отчете его нет.
В общем, я его вообще не использую, ни в ТЧ документа Начисление, ни в РР
Надеюсь, это не грех.
Читал разъяснения, что "совместительство не допускается" - нет измерения Подразделение в РР, "допускается" - измерение есть, так что всё верно, хотя до экзамена надо еще поразмышлять.  :)

Как думаете, сгодится, если так на экзамене успеть?
ОУ - "Использование менее эффективной методики проведения документов" (как же так? ведь об этом столько говорят), в отчете убрать итог количество по складу.
БУ - субконто примитивного типа (дата) - не приветствуется.

Спасибо за работающий БП, сейчас буду у себя добивать, чтобы карта обновлялась.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Июль 31, 2015, 10:09:57 am
ОУ - "Использование менее эффективной методики проведения документов" (как же так? ведь об этом столько говорят), в отчете убрать итог количество по складу.

alex1248, хотите сказать, здесь можно контролировать остатки по НОВОЙ МЕТОДИКЕ?
Но ведь для формирования движений необходимо сначала получить Себестоимость.
Не понял Вас. Можете выложить решение с новой методикой? А то я прямо усомнился, может я чего не догоняю ))

А остаток количества по складу зачем из запроса убирать? Проверяю по нему, есть ли достаточное количество товара на этом складе. Регистров то ДВА.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Июль 31, 2015, 10:19:22 am
Читал разъяснения, что "совместительство не допускается" - нет измерения Подразделение в РР, "допускается" - измерение есть, так что всё верно, хотя до экзамена надо еще поразмышлять.  :)

Ага, картинка прорисовывается. Спасибо, alex1248
Тогда, если "Каждый сотрудник может работать одновременно в нескольких подразделениях компании, то есть совместительство допускается",
то это значит, что в РР необходимо Подразделение?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Июль 31, 2015, 10:29:53 am
ОУ - "Использование менее эффективной методики проведения документов" (как же так? ведь об этом столько говорят), в отчете убрать итог количество по складу.

alex1248, хотите сказать, здесь можно контролировать остатки по НОВОЙ МЕТОДИКЕ?
Но ведь для формирования движений необходимо сначала получить Себестоимость.
Не понял Вас. Можете выложить решение с новой методикой? А то я прямо усомнился, может я чего не догоняю ))
Хм ... не понимаю, почему может быть нельзя. Бывают ситуации, что нет смысла, потому что уже предварительно нужно запросом получить какую-то информацию. В данном случае склад в шапке, номенклатура и количество в ТЧ, больше ничего не надо.
Да, прикрепляю.
Только там ОУ без всего остального. Может быть, имеет значение увязка с БУ? Этого я пока не делал.
Тем не менее, по отдельности у меня почти все ОУ из решенных - по новой методике.

А остаток количества по складу зачем из запроса убирать? Проверяю по нему, есть ли достаточное количество товара на этом складе.
Из отчета.
Не надо суммировать майонез с холодильниками.  :D
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Июль 31, 2015, 10:32:01 am
Читал разъяснения, что "совместительство не допускается" - нет измерения Подразделение в РР, "допускается" - измерение есть, так что всё верно, хотя до экзамена надо еще поразмышлять.  :)

Ага, картинка прорисовывается. Спасибо, alex1248
Тогда, если "Каждый сотрудник может работать одновременно в нескольких подразделениях компании, то есть совместительство допускается",
то это значит, что в РР необходимо Подразделение?
Да, по слухам из тырнета именно так.  :D
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Август 02, 2015, 01:48:01 am
Хм ... не понимаю, почему может быть нельзя

alex1248, как Вы понимаете смысл Новой методики контроля остатков? Зачем она нужна и что дает?
В моем понимании, она работает быстрее старой (на уровне платформы), то есть позволяет сократить время проведения документа (это становится ощутимо на больших объемах данных).

В своем решении, в документе РН, Вы сначала делаете списание ОстаткиТоваров по НОВОЙ методике, а затем списываете Партии по СТАРОЙ. У меня же используется Старая методика. Запрос выполняется один, он получает остатки и по Складу и по Партиям и если их хватает, то формируются движения.

В моем понимании смысл НОВОЙ методки заключается в том, что сразу один раз без контроля остатков списал, затем проверил, что нет минусов и все! Поэтому она и применима не везде, а только в том случае, если для формирования движений не нужно предварительно получать данные.

А по Вашей схеме, и правда, "новую" методику можно использовать всегда.
С другой стороны, возможно, Вы правы, а я ошибаюсь, вот только рассудить нас некому ))
Хорошо, если бы к нам заглянул ВСЕВИДЯЩИЙ GROOVY, но вряд ли он найдет время копаться в наших "умных" решениях ))

alex1248, спасибо за ответ. Очень интересно узнать другую точку зрения. Ваше решение понятное, четко структурированное, легко читается, в общем респект.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Август 02, 2015, 10:21:50 am
alex1248, спасибо за ответ. Очень интересно узнать другую точку зрения. Ваше решение понятное, четко структурированное, легко читается, в общем респект.
В моем решении есть явная ошибка (-1 балл) (и наверное, не одна, так что работы еще море  :D ) - запрос (Если ТекСтрокаСписокНоменклатуры.Номенклатура.Услуга = Ложь) в цикле при записи в регистр остатков. В дальнейшем в такой ситуации из ТЧ номенклатуру без услуг выбираю одним запросом.
alex1248, как Вы понимаете смысл Новой методики контроля остатков? Зачем она нужна и что дает?
В моем понимании, она работает быстрее старой (на уровне платформы), то есть позволяет сократить время проведения документа (это становится ощутимо на больших объемах данных).

В своем решении, в документе РН, Вы сначала делаете списание ОстаткиТоваров по НОВОЙ методике, а затем списываете Партии по СТАРОЙ. У меня же используется Старая методика. Запрос выполняется один, он получает остатки и по Складу и по Партиям и если их хватает, то формируются движения.

В моем понимании смысл НОВОЙ методки заключается в том, что сразу один раз без контроля остатков списал, затем проверил, что нет минусов и все! Поэтому она и применима не везде, а только в том случае, если для формирования движений не нужно предварительно получать данные.

А по Вашей схеме, и правда, "новую" методику можно использовать всегда.
С другой стороны, возможно, Вы правы, а я ошибаюсь, вот только рассудить нас некому ))
Хорошо, если бы к нам заглянул ВСЕВИДЯЩИЙ GROOVY, но вряд ли он найдет время копаться в наших "умных" решениях ))
Я бы сказал, что вопрос не в понимании смысла методики, а в том, 1) когда преподаватели на экзамене посчитают, что она эффективнее, 2) убедить себя, что это именно так. В этом случае, можно будет во время защиты находиться с ними на одной волне, что, надеюсь, повысит шансы.  :D
В общем, когда - на данный момент я придерживаюсь т.з., что новую методику (не проведения, а контроля остатков), надо использовать тогда, когда вот этот самый контроль остатков (и ничего более) можно осуществить без получения данных из этого же самого регистра. Записали, прочитали, если есть нехватка - блокировку сняли - с регистром может работать другой работник. Всё остальное (а оно почти всегда находится) мы осуществляем в другом регистре и только в том случае, если знаем, что остатки корректны, и их даже проверять уже не надо.
Хотя, при моем двухнедельном опыте  :D работы с "новой" методикой и блокировками, думаю, все же лучше поделиться ссылками на источники:
http://1c.chistov.pro/2013/07/blog-post_25.html - итоговый запрос в конце статьи.
http://forum.chistov.pro/index.php?topic=1036.180 - если взглянуть на задачу, вроде бы, тоже можно без проблем провести "по-старому".
http://forum.chistov.pro/index.php?topic=1310.msg13626#msg13626 - ну и вот это вчера нашел (тоже ссылаются в других темах), со вторым регистром действительно почти всегда можно добиться этого.
Придумал ситуацию, когда невозможно использовать новую методику - например, товар хранится на нескольких складах, нам надо набрать в разных, но не более чем с двух - без получения остатков в разрезе складов записывать нечего, придется считать из базы остатки по всем складам из регистра остатков (если бы он был), значит, новая методика не имеет смысла.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: r2d2 от Сентябрь 01, 2015, 10:19:03 am
Моё решение первого билета. Если у кого есть возможность и желание - прошу проверить и отозваться о решении.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Uncle от Сентябрь 03, 2015, 08:42:26 am
вопрос следующий, кто как решал:

Движения.ОстаткиНоменклатуры.Очистить();
   Движения.ОстаткиНоменклатуры.Записать();
   Движения.ОстаткиНоменклатуры.Записывать = Истина;
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;

т.к. по новой методике, нужна ли в этом случае БлокировкаДанных по измерению регистра Номенклатура?
и как вообще если эти две блокировки пересекаются?

и второй вопрос:
условие билета . В одном документе могут быть данные за разные расчетные периоды.
достаточно ли ввода ПериоодРегистрации в ТЧ. кто сдавал? у кого какая инфа? ведь можно и без него брать по НачалоПериода (привести его к началу месяца)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Сентябрь 14, 2015, 02:38:54 pm
Вопрос по бухгалтерской части в документе Расходная накладная:

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

...
            ОсталосьСписать = ОсталосьСписать - КоличСписать;
            ОсталосьСписатьСумма = ОсталосьСписатьСумма - СуммаСписать;



Допустим есть одна и та же номенклатура со сроками годности:
СрокГодности 01.01.2016 Сумма 8 руб. - 1 шт.
СрокГодности 01.02.2016 Сумма 40 руб. - 2 шт.

По Вашему алгоритму СредняяЦенаНом  =  16 руб.
Надо списать 2 шт.

При списании по первому сроку годности уходим в минус.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Сентябрь 14, 2015, 03:30:15 pm
При списании по первому сроку годности уходим в минус.
Чтобы не "плыли" остатки по сумме там, где они не нужны, снимается признак суммового учета по соответствующему субконто (именно так сделано в этом решении).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Сентябрь 16, 2015, 08:02:24 am
alex1248,
спсибо
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Сентябрь 16, 2015, 08:13:03 am
   // отметим активность проводок если док помечен
   Если Не ЭтоНовый() Тогда
      НабЗап = РегистрыБухгалтерии.Основной.СоздатьНаборЗаписей();
      НабЗап.Отбор.Регистратор.Установить(Ссылка);
      НабЗап.Прочитать();
      НабЗап.УстановитьАктивность(Не ПометкаУдаления);      
      НабЗап.Записать();
   КонецЕсли;


А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Зачем читаются старые движения регистра "НабЗап.Прочитать();" и потом записываются, они же затрутся по завершении процедуры "ПриЗаписи" и заместятся новыми движениями "Объект.Движения.Основной", взятыми с формы?

Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Сентябрь 17, 2015, 07:31:43 am
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Сентябрь 17, 2015, 01:32:04 pm
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.

К этой строчке у меня вопросов нет.
Но зачем снова читать данные из регистра, они же есть на форме и так?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Quantum81 от Сентябрь 17, 2015, 02:03:51 pm
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.

К этой строчке у меня вопросов нет.
Но зачем снова читать данные из регистра, они же есть на форме и так?
Когда ставишь/снимаешь пометку удаления, никакой формы нет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Сентябрь 17, 2015, 02:25:38 pm
А вот этот код в документе Операция в процедуре "ПриЗаписи" можете прокомментировать?
Обратите внимание на УстановитьАктивность(). Этот фрагмент кода отключает активность проводок, если документ Помечен на удаление.

К этой строчке у меня вопросов нет.
Но зачем снова читать данные из регистра, они же есть на форме и так?
Когда ставишь/снимаешь пометку удаления, никакой формы нет.

Убедили!
Но код можно упростить:


    ДвиженияБух = Движения.РегистрБухгалтерии1; 
    Если не ДвиженияБух.Модифицированность() Тогда
        ДвиженияБух.Прочитать();
    КонецЕсли;
    ДвиженияБух.УстановитьАктивность(не ПометкаУдаления);
    ДвиженияБух.Записать();

Название: Re: Билет 1. Спец по платформе V8
Отправлено: Quantum81 от Сентябрь 17, 2015, 06:47:29 pm
пересмотрев несколько вариантов на форуме, решил залезть в БУХу и посмотреть.
Там примерно так:
Проводки=Движения.Проводки;
Если Проводки.Записывать=Ложь тогда
проводки.Прочитать();
КонецЕсли;
НоваяАктивность=Не ПометкаУдаления;
Для каждого строка из Проводки цикл
Если строка.Период<>Дата тогда
Проводки.Записывать=Истина;
строка.Период=Дата;
КонецЕсли;
Если строка.Активность<>НоваяАктивность тогда
Проводки.Записывать=Истина;
строка.Активность=НоваяАктивность;
КонецЕсли;
КонецЦикла;
Лишний раз не читает, лишний раз не обновляет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Svetik_1704 от Сентябрь 18, 2015, 01:01:46 pm
Индексировать временные таблицы нужна всегда, причем по тем полям, которые используются при соединении таблиц, сортировке и тд. Еще временные таблицы не мешало бы и удалять. Но говорят платформа сама справляется с этим, поэтому никто этого не делает)).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Сентябрь 18, 2015, 03:08:27 pm
Индексировать временные таблицы нужна всегда, причем по тем полям, которые используются при соединении таблиц, сортировке и тд. Еще временные таблицы не мешало бы и удалять. Но говорят платформа сама справляется с этим, поэтому никто этого не делает)).

На экзамене снижают бал, если не проиндексирована ВТ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Сентябрь 21, 2015, 11:27:15 am
На экзамене снижают бал, если не проиндексирована ВТ?

Вот здесь рекомендуют использовать индексы. Чисто показать что мы умеем ими пользоваться:

http://forum.chistov.pro/index.php?topic=2005.msg22307#msg22307
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Сентябрь 29, 2015, 05:28:45 pm
Еще доработал обработку ПередЗаписью документа Операция.
Отключение активности записей поместил в условие. Теперь чтение и запись Набора выполняется только если происходит снятие/установка ПометкиУдаления для объекта.

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

Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Сентябрь 29, 2015, 06:34:37 pm
доработал
Цитата: "пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов" и усё, больше никаких возможностей ему не требуется ...  :)
Я на экзамене сделал только запись Даты в шапке в Период каждой записи регистра.  По поводу остального сделал пометку доделать позже, но так и не добрался до этого, как оказалось, не напрасно. ИМХО, в цейтноте не стоит Операции уделять много внимания.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Октябрь 05, 2015, 03:01:02 pm
В задаче по ПР обнаружил для себя два момента, которые надо закрепить. Проработал для быстрого решения на экзамене. Выкладываю решение задачи по ПР с учетом этих интересных для меня моментов:

1)   ПР: получение Оклада на начало РасчетногоПериода (ПериодаДействия) записи
В условии задачи есть формулировка: «В одном документе могут быть данные за разные расчетные периоды». При этом «Первоначальное значение оклада может изменяться не чаще, чем один раз в день, но берется на начало расчетного периода».
Для решения,
- в запросе РасчетаНачислений получаю ПериодДействия каждой записи ОН
- Левым соединением получаю все записи физической таблицы регистра сведений СведенияОСотрудниках, у которых Период <= ПериодуДействия записи ОН
- Группирую, получаю Максимальный Период (т.е. последний на ПериодДействия записи)
- Еще раз левым соединением подцепляю записи физ.таблицы СведенияОСотрудниках, так получаю Оклад на ПериодДействия каждой записи
Проблема казалась серьезной, но решилась неожиданно легко.
Спасибо Quantum81 и alex1248 за то, что указали верное направление.

2)   ПР: получение Процента премии в зависимости от Стажа
Еще раз проработал решение и закрепил его для себя.
- в спр.ФизЛица добавляю реквизиты ДатаПриема и НачальныйСтаж
- добавляю рег свед ШкалаПроцентов (От, До, Процент)
- в запросе процедуры РасчетаНачислений получаю СтажВсего:
РазностьДат(ДатаПриема, БазовыйПериодНачало, Год) + НачальныйСтаж
- Левым соединением подцепляю Процент из Шкалы, используя два простых условия:
СтажВсего > От
СтажВсего <= До
Здесь важное дополнение: чтобы условия работали, в регистр надо занести последнюю запись со значением До=999 (т.е. не 0, а максимальное число)

3)   Про отчет сказано, что он должен быть построен только за определенный календарный месяц.
Как считаете, пойдет, если на форме отчета будет выбор стандартного периода (как у меня) или есть более красивые варианты?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: pewit от Октябрь 06, 2015, 02:31:58 pm
Начинаю подготовку к сдаче экзамена. Посмотрите, кому не лень оперативный учет. Правильно ли хоть двигаюсь. Заранее спасибо большое!
Название: Re: Билет 1. Спец по платформе V8
Отправлено: margaritka47729 от Октябрь 09, 2015, 02:17:20 pm
доработал
Цитата: "пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов" и усё, больше никаких возможностей ему не требуется ...  :)
Я на экзамене сделал только запись Даты в шапке в Период каждой записи регистра.  По поводу остального сделал пометку доделать позже, но так и не добрался до этого, как оказалось, не напрасно. ИМХО, в цейтноте не стоит Операции уделять много внимания.


подскажите, на счет задачи в БУ ....надо как то проверять правильность заполнения согласно этому условию задачи:

 На один и тот же товар с разными сроками годности при его поступлении может указываться разная цена. Например, на товар со сроком годности 10 января 2010 цена может быть ниже, чем на товар со сроком годности 30 января 2010. Товар с одинаковым сроком годности может поступать разными документами и по разной цене. Возможна ситуация когда в одном документе один и тот же товар поступает с разными сроками годности (и по разной цене).  ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 10, 2015, 11:06:52 pm
Приступил к подготовке.
Прорешал задачу по ОУ.
Если у кого есть желание и время прошу комментарии.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 12, 2015, 01:45:07 pm
Сделал 1 билет из 15-ти (https://docs.google.com/document/d/19Cv6COjMRcN_qDLbiWmYwp686IXpxE9GHHzQkpa2rME/edit)
Пойдет? Вроде все работает ))

ПР - Оклад (из рег.свед), Премия (Процент из Шкалы от стажа)
БУ - Сроки годности, Номенклатура.
ОУ - Услуги, Партии, УчетнаяПолитика. Себестоимость по Партиям, но не по Складам (2 остаточных РН)
БП как БП. Параметр сеанса, форма задач, карта маршрута в форме процесса.

И еще вопрос: кто знает, что значит фраза "Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается"?
Нужны ли в этой задаче Подразделения вообще?

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

Покажите мне как Вы получаете условие задачи:
Цитировать
В первую очередь списывается товар с наименьшим календарным сроком годности.
в запросе я не вижу упорядочивания по сроку годности.

У меня получился такой запрос:
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СписокНоменклатуры.Номенклатура КАК Номенклатура,
        |    СУММА(СписокНоменклатуры.Количество) КАК Количество,
        |    СУММА(СписокНоменклатуры.Сумма) КАК Сумма
        |ПОМЕСТИТЬ ТабДок
        |ИЗ
        |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК СписокНоменклатуры
        |ГДЕ
        |    СписокНоменклатуры.Ссылка = &Ссылка
        |    И СписокНоменклатуры.Номенклатура.ВидНоменклатуры = &Товар
        |
        |СГРУППИРОВАТЬ ПО
        |    СписокНоменклатуры.Номенклатура
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    УправленческийОстатки.Субконто1 КАК Номенклатура,
        |    УправленческийОстатки.Субконто2 КАК СрокГодности,
        |    ЕСТЬNULL(УправленческийОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
        |    ЕСТЬNULL(УправленческийОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
        |ПОМЕСТИТЬ Остатки
        |ИЗ
        |    РегистрБухгалтерии.Управленческий.Остатки(
        |            &МоментИтогов,
        |            Счет = &Счет,
        |            ,
        |            Субконто1 В
        |                (ВЫБРАТЬ
        |                    ТабДок.Номенклатура
        |                ИЗ
        |                    ТабДок КАК ТабДок)) КАК УправленческийОстатки
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ТабДок.Номенклатура КАК Номенклатура,
        |    Остатки.СрокГодности КАК СрокГодности,
        |    Остатки.КоличествоОстаток КАК КоличествоОстаток,
        |    Остатки.СуммаОстаток КАК СуммаОстаток,
        |    ТабДок.Количество КАК Количество
        |ИЗ
        |    ТабДок КАК ТабДок
        |        ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
        |        ПО ТабДок.Номенклатура = Остатки.Номенклатура
        |
        |УПОРЯДОЧИТЬ ПО
        |    СрокГодности
        |ИТОГИ
        |    СУММА(КоличествоОстаток),
        |    СУММА(СуммаОстаток),
        |    МИНИМУМ(Количество)
        |ПО
        |    Номенклатура";

Может я ошибаюсь ?

И еще самое главное в этом вопросе: снял галку суммовой у субконто сроки годности но в таблице остатков партия все равно висит и не списывается, что я не так делаю. База в приложении к сообщению.

Кстати в решении:
Добавил кнопку Обновить для Карты маршрута в процессе.
Кнопку Установить пользователя в справочнике ФизЛица оформил текстом.
Также при полном списании первой партии по сроку годности и частичному списанию второй, первая уходит по сумме в минус

Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 12, 2015, 10:08:27 pm
Отвечу себе же.
Воспользовался методом сисадминов, одел свитер с оленями, взял бубен ...
А если честно то мистика.
В плане счетов поменял местами галку суммовой у признака субконто у номенклатуры отключил у сроков годности поставил, запустил платформу перепровел приходную смотрю итоги по двум субконто - бются как положено у номенклатуры нет суммы, вернул в конфигураторе все на место, опять перепровел гляжу и все встало как надо, что такое было не знаю.
Как доделаю БУ сразу выложу
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Октябрь 13, 2015, 01:12:32 pm
Покажите мне как Вы получаете условие задачи:
Цитировать
В первую очередь списывается товар с наименьшим календарным сроком годности.
в запросе я не вижу упорядочивания по сроку годности.

Все верно. Это моя ошибка. В плане решения, для себя, я указал: "упорядочнить по СрокГодн Возр (сначала наименьший СрокГодн)"
но сделав запрос забыл добавить в него упорядочивание )) Получается я упростил задачу, чего на экзамене делать ни в коем случае нельзя.
alex44ru! Спасибо, что нашли косяк.

PS
Как Вы уже указали, в запрос надо добавить строку:
УПОРЯДОЧИТЬ ПО Срок
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 13, 2015, 04:41:49 pm

alex44ru! Спасибо, что нашли косяк.

PS
Как Вы уже указали, в запрос надо добавить строку:
УПОРЯДОЧИТЬ ПО Срок
мы все тут что бы друг у друга искать косяки )))
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 16, 2015, 10:16:08 pm
Решил подзадачу по бухгалтерии. Выкладываю совместное решение ОУ+БП.
Продолжаю решать ЗП.
Любые пинки приветствуются )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 16, 2015, 11:29:50 pm
Любые пинки приветствуются )
Не установлено индексирование измерений РН.
Выгрузка результата запроса в ТЗ без необходимости (ТабДок = РезультатЗапроса.Выгрузить(); ).
В БУ не решена проблема копеек.

Просто совет - на экзамене не стоит тратить время на красоту формы Операции и отчетов.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 17, 2015, 09:11:22 pm
Спасибо за ответ !
Не установлено индексирование измерений РН.
а зачем оно там ?
при проведении читаются остатки из одного период+номенклатура+склад
и из другого период+номенклатура,
а это как известно индекс таблицы итогов РН период+измерение1+измерение2...
Выгрузка результата запроса в ТЗ без необходимости (ТабДок = РезультатЗапроса.Выгрузить(); ).
Затем эта переменная далее участвует в объекте Блокировка в строке 105
ЭлементБлокировки.ИсточникДанных = ТабДок;
В БУ не решена проблема копеек.
ага не обратил внимание проверял на десятках чтоб в голове решать легче было, поправил
Просто совет - на экзамене не стоит тратить время на красоту формы Операции и отчетов.
это понятное дело, на экзамены бы задачу то не упростить ) какая там красота.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 17, 2015, 10:01:27 pm
Не установлено индексирование измерений РН.
а зачем оно там ?
при проведении читаются остатки из одного период+номенклатура+склад
и из другого период+номенклатура,
а это как известно индекс таблицы итогов РН период+измерение1+измерение2...
Хм, я ориентировался лишь на доступную теорию и материалы форума, сам в вопросе индексов совершенно не спец  :(. К тому же, мнения расходятся.
Могу лишь сослаться на источники:
 - В задачах получения данных из информационной базы установка отборов по неиндексированным полям - одна из распространенных ошибок,
 - На форуме года 2 назад обсуждали, что многим сдававшим спеца снимали баллы за неустановку индексирования измерений РН.
Увы, это все мои аргументы.


P.S. Еще порылся в недрах форума. Да, похоже, речь идет не о самих измерениях РН, а об установке индексирования полей ВТ в запросе, с чем у alex44ru всё в норме. И я кое-чему доучился.  :)

Выгрузка результата запроса в ТЗ без необходимости (ТабДок = РезультатЗапроса.Выгрузить(); ).
Затем эта переменная далее участвует в объекте Блокировка в строке 105
ЭлементБлокировки.ИсточникДанных = ТабДок;
Это я видел. Но необходимости такого ее использования всё же нет. Вроде, можно выборку из результата запроса использовать, хотя на экзамене обычно ограничиваются ТЧ документа.

В БУ не решена проблема копеек.
ага не обратил внимание проверял на десятках чтоб в голове решать легче было, поправил
А что изменилось? Скачал новый файл, посмотрел в конфигураторе, разницы не увидел. На всякий случай ввел в польз режиме: новая номенклатура приход с разными сроками годности 1 ед - 1,00, 1 ед - 1,00, 1 ед - 1,01. Далее создал расх накладную сразу на 3 единицы, каждая списалась на сумму 1,00 ,т.е. 0,01 по сумме зависло.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 17, 2015, 10:52:47 pm
И я кое-чему доучился.
во во вот и я думал у мя все идеально )
Вроде, можно выборку из результата запроса использовать, хотя на экзамене обычно ограничиваются ТЧ документа.
ага намотал на ус как говориться
А что изменилось? Скачал новый файл, посмотрел в конфигураторе, разницы не увидел. На всякий случай ввел в польз режиме: новая номенклатура приход с разными сроками годности 1 ед - 1,00, 1 ед - 1,00, 1 ед - 1,01. Далее создал расх накладную сразу на 3 единицы, каждая списалась на сумму 1,00 ,т.е. 0,01 по сумме зависло
понятно, работаю над этим ... может подскажите в каком направлении копать ? я понимаю как по партиям все до копейки списать, но тут другая тема.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 18, 2015, 09:20:19 am
А что изменилось? Скачал новый файл, посмотрел в конфигураторе, разницы не увидел. На всякий случай ввел в польз режиме: новая номенклатура приход с разными сроками годности 1 ед - 1,00, 1 ед - 1,00, 1 ед - 1,01. Далее создал расх накладную сразу на 3 единицы, каждая списалась на сумму 1,00 ,т.е. 0,01 по сумме зависло
понятно, работаю над этим ... может подскажите в каком направлении копать ? я понимаю как по партиям все до копейки списать, но тут другая тема.
Можно через получение в запросе Итогов (Количество по документу) по Номенклатуре, далее определяем сумму к списанию на общее количество по номенклатуре, ну и т.д. И надо будет использовать Окр(), иначе всё равно не сведется.
Вот тут недавно необходимость использования Окр() обсуждали:
http://forum.chistov.pro/index.php?topic=993.msg42402#msg42402
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 18, 2015, 08:52:08 pm
Все поправил в соответствии с указанными недоработками (включая копейки).
Итак попытка номер ...
Билет 1 решено ОУ и БП
 
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 19, 2015, 09:10:42 am
Приступил к решению части билета по ЗП.
Появились две непонятки:
1) Начисление зарплаты сотрудникам предприятия осуществляется ежемесячно с использованием метода отклонений - это сторно ?
2)
Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается.

Кто подскажет, что это за формулировки ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 21, 2015, 01:37:35 pm
Билет 1 решено ОУ+БП+ЗП
Очень жду Вашей помощи в поиске косяков в моем решении ...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 21, 2015, 10:23:13 pm
1) Начисление зарплаты сотрудникам предприятия осуществляется ежемесячно с использованием метода отклонений - это сторно ?
Нет, это когда факт период действия получается отклонением от нормального (например, вытеснениями). Но я грубо пишу, точнее лучше просто погуглить.
В принципе ничего особенного реализовывать не надо, это лишь противопоставление задачам с табелем.
Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается.
Подразделение - реквизит РР. Если совместительство допускается, подразделение - измерение РР (Автомобиль - всегда реквизит  :) ).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 22, 2015, 08:01:27 am
Нет, это когда факт период действия получается отклонением от нормального (например, вытеснениями).
Странное условие задачи, так как тут нет вытесняющих видов расчета

Подразделение - реквизит РР. Если совместительство допускается, подразделение - измерение РР (Автомобиль - всегда реквизит  :) ).
Я в своем решении все таки сделал подразделение измерением.

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

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

Возможно это извращение, но в своем решении реализовал так:
Создал справочник сотрудники, подчинил подразделениям. У сотрудников отключил Наименование поставив длину 0, поставил контроль уникальности кода во всем справочнике и добавил реквизит с ссылкой на справочник физ лицо. Добавил обработчик перед записью написав в нем код: Код = ФизЛицо.Наименование. В итоге исполнил условие что каждый сотрудник может работать только в одном подразделении совместительство не допускается, платформа сама все проконтролирует. Ну и документа в ТЧ поставил связи параметров выбора. Решение считаю адекватным заданию, на аттестации я думаю оспаривать бы его не стали.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 22, 2015, 03:17:04 pm
Выкладываю полное решение Билет № 1

По поводу совместительства СПР намудрил конечно я, но такой вариант тоже верен совместительство поставить не получиться, правда на аттестации такое реализовывать наверное не стоит тратить время.

Как и прежде жду критики решения, очень жду )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Dzenga от Октябрь 25, 2015, 09:59:39 am
Добрый день! интересно, почему в результате запроса образуется 2-я строка: https://yadi.sk/i/FYluyeepjyc26 ин не является ли это ошибкой
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Октябрь 25, 2015, 01:51:07 pm
Добрый день! интересно, почему в результате запроса образуется 2-я строка: https://yadi.sk/i/FYluyeepjyc26 ин не является ли это ошибкой

Видимо по субконто "Сроки годности" отключен суммовой учет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 25, 2015, 08:59:06 pm
Добрый день! интересно, почему в результате запроса образуется 2-я строка: https://yadi.sk/i/FYluyeepjyc26 (https://yadi.sk/i/FYluyeepjyc26) ин не является ли это ошибкой
В каком документе, в какой процедуре ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 26, 2015, 01:04:53 pm
Обновил решение.
* Поправил получение процента премии из РС задачи СПР
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Dzenga от Октябрь 26, 2015, 04:35:19 pm
Добрый день! интересно, почему в результате запроса образуется 2-я строка: https://yadi.sk/i/FYluyeepjyc26 (https://yadi.sk/i/FYluyeepjyc26) ин не является ли это ошибкой
В каком документе, в какой процедуре ?

В документе "Расходная накладная" в обработке проведения по бухгалтерскому учету, если в отладке вычислить РезультатЗапроса.Выгрузить() то получается таблица, как я указал выше. Тоже решаю Билет 1, у меня как и у Вас получается эта строка.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 27, 2015, 09:03:57 pm
В документе "Расходная накладная" в обработке проведения по бухгалтерскому учету, если в отладке вычислить РезультатЗапроса.Выгрузить() то получается таблица, как я указал выше. Тоже решаю Билет 1, у меня как и у Вас получается эта строка.
Как Вам уже ответили по субконто "Сроки годности" отключен суммовой учет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Октябрь 29, 2015, 04:28:09 pm
Всем привет! 

Начал только решать ЗП, теорию вроде освоил мало-мало )))
Первый билет. Посмотрите кто делал:

Сразу вопросы, тут пробежался - а вопросы остались открытыми:

1)  Движения.ОсновныеНачисления.Записывать = Истина;
   Движения.ОсновныеНачисления.Очистить();
   
   Движения.ДополнительныеНачисления.Записывать = Истина;
   Движения.ДополнительныеНачисления.Очистить();

 - Очищать ли старые движения??? И нужно ли ещё Движения.ДополнительныеНачисления.Записать();  ?
    чтобы записать пустой набор записей по аналогии с Регистрами Накопления?
2) Про Период Регистрации:   Почему нельзя взять его от Даты документа?  Или всё же необходимо его вручную писать в документе...неудобно как-то имхо.

3) Про измерения в ВТ ДополнительныеНачисленияБазаОсновныеНачисления   - указываю одно "Сотрудник", -норм отрабатывает, указываю ещё "Подразделения" - точно также  )) сколько указывать то лучше

4)Видел в решениях, Базовый период не указывают в ТЧ (т.к. он берётся за тот же месяц,что и оклад) - и берут его от периода Регистрации, а может в этой задаче нужно поставить галочку у ВР Премия "Период действия как базовый период"??? Как думаете.

Ну и про совместительство... Как быть с этой ситуацией. Действительно, Измерение "" у РР не делать - это правильно будет? в отчёте же не нужно "Подразделение"...

Выкладываю базу-может кто глянет...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex44ru от Октябрь 29, 2015, 09:24:22 pm
- Очищать ли старые движения???
И нужно ли ещё Движения.ДополнительныеНачисления.Записать();  ?
    чтобы записать пустой набор записей по аналогии с Регистрами Накопления?

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

Про Период Регистрации:   Почему нельзя взять его от Даты документа?

Как раз период регистрации и надо брать от даты документа, посмотри решения других

Про измерения в ВТ ДополнительныеНачисленияБазаОсновныеНачисления   - указываю одно "Сотрудник", -норм отрабатывает, указываю ещё "Подразделения" - точно также  )) сколько указывать то лучше

Указывать оба так как если вдруг у тебя сотрудник будет работать в 2 подразделениях, то ты получить не ту базу

Видел в решениях, Базовый период не указывают в ТЧ (т.к. он берётся за тот же месяц,что и оклад) - и берут его от периода Регистрации, а может в этой задаче нужно поставить галочку у ВР Премия "Период действия как базовый период"??? Как думаете.

Сдается мне ты что то перепутал так как такой галочки нет, есть галочка Базовый период как период действия, тут уже совсем другой смысл

Ну и про совместительство... Как быть с этой ситуацией. Действительно, Измерение "" у РР не делать - это правильно будет? в отчёте же не нужно "Подразделение"...

если совместительство запрещено делай Подразделение реквизитом, если нужно совместительство то измерением

... может я конечно не прав, но я делаю так ...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Октябрь 30, 2015, 10:15:51 am
- Очищать ли старые движения???
И нужно ли ещё Движения.ДополнительныеНачисления.Записать();  ?
    чтобы записать пустой набор записей по аналогии с Регистрами Накопления?

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


1. Экзамен уже давно принимается на упр.формах. Большинство форумчан при подготовке работают именно с ними.
2. Зачем нужны строки:
Движения.Основной.Очистить();
Движения.Основной.Записать();
Движения.Основной.Записывать = Истина;


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

В результат запроса не дожны попасть движения сделанные ранее этим же документом (если он проведен), поэтому делаются первые две строки
Движения.Основной.Очистить();
Движения.Основной.Записать();


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

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

2) Про Период Регистрации:   Почему нельзя взять его от Даты документа?  Или всё же необходимо его вручную писать в документе

В задаче внизу идет ключевая фраза: "В одном документе могут быть данные за разные расчетные периоды"
Она означает, что ПерРег у каждой записи может быть своим, то есть заполнять его из ДатыДон - это упрощение задачи.
Значит ПерРег надо делать в ТЧ и расчеты начислений выполнять от него.

3) Про измерения в ВТ ДополнительныеНачисленияБазаОсновныеНачисления   - указываю одно "Сотрудник", -норм отрабатывает, указываю ещё "Подразделения" - точно также  )) сколько указывать то лучше

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

может в этой задаче нужно поставить галочку у ВР Премия "Период действия как базовый период"
"ПД является базовым периодом" можно включить только у ВР, имеющего ПД. У Премии не может быть ПД, так как это ВР не протяженный во времени (поэтому он находится в ДН, а не в ОН)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Октябрь 30, 2015, 02:29:38 pm
 Jones,
Не посоветуешь как лучше реализовывать условие на услугу на твой взгляд?

Допустимо ли делать так?

...   

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

Т.е. сначала ТЗ, потом выборка из одного и того же запроса
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Октябрь 30, 2015, 05:03:49 pm
Всем привет!) Моё. Рад конструктивной критике.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Октябрь 30, 2015, 07:27:13 pm
Всем привет!) Моё. Рад конструктивной критике.

Мельком глянул, ОУ и БУ вроде без ошибок, только ИНДЕКСИРОВАТЬ надо бы в ВТ сделать, говорят смотрят и отнимают баллы ;)

Что касается ПР - тут явно ошибки, мелкая - это Стаж нужно брать просто разницей, без Начального стажа, т.к. там сказано что Стаж на Данном Предприятии, хватит Даты Приёма в справочнике...

А крупная и фатальная ошибка - это не учитывается условие "В одном документе могут быть данные за разные расчётные периоды".  И "Оклад может меняться".  Вы берёте СрезПоследних на одну дату, (почему то на дату документа?)  - а нужно брать СрезПоследних на Начало Расчётного Периода - для КАЖДОЙ записи, а он у них может быть разный ;))  Посмотрите как сделано, я недавно выкладывал(но там косяки но другие) или у кого-нить тут много правильных решений.


Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Октябрь 30, 2015, 08:20:57 pm
Всем привет!) Моё. Рад конструктивной критике.

Мельком глянул, ОУ и БУ вроде без ошибок, только ИНДЕКСИРОВАТЬ надо бы в ВТ сделать, говорят смотрят и отнимают баллы ;)

Что касается ПР - тут явно ошибки, мелкая - это Стаж нужно брать просто разницей, без Начального стажа, т.к. там сказано что Стаж на Данном Предприятии, хватит Даты Приёма в справочнике...

А крупная и фатальная ошибка - это не учитывается условие "В одном документе могут быть данные за разные расчётные периоды".  И "Оклад может меняться".  Вы берёте СрезПоследних на одну дату, (почему то на дату документа?)  - а нужно брать СрезПоследних на Начало Расчётного Периода - для КАЖДОЙ записи, а он у них может быть разный ;))  Посмотрите как сделано, я недавно выкладывал(но там косяки но другие) или у кого-нить тут много правильных решений.


ПС:  Уважаемые Alexx44ru  и Jones,  посмотрите плиз мой предыдущий пост - там есть ответы-вопросы..)
По поводу стажа. А как же условие: При решении задачи необходимо учитывать, что на момент начала ведения учета в информационной базе у сотрудника уже может быть стаж отличный от нуля.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Октябрь 30, 2015, 08:26:11 pm
Всем привет!) Моё. Рад конструктивной критике.

Мельком глянул, ОУ и БУ вроде без ошибок, только ИНДЕКСИРОВАТЬ надо бы в ВТ сделать, говорят смотрят и отнимают баллы ;)

Что касается ПР - тут явно ошибки, мелкая - это Стаж нужно брать просто разницей, без Начального стажа, т.к. там сказано что Стаж на Данном Предприятии, хватит Даты Приёма в справочнике...

А крупная и фатальная ошибка - это не учитывается условие "В одном документе могут быть данные за разные расчётные периоды".  И "Оклад может меняться".  Вы берёте СрезПоследних на одну дату, (почему то на дату документа?)  - а нужно брать СрезПоследних на Начало Расчётного Периода - для КАЖДОЙ записи, а он у них может быть разный ;))  Посмотрите как сделано, я недавно выкладывал(но там косяки но другие) или у кого-нить тут много правильных решений.


ПС:  Уважаемые Alexx44ru  и Jones,  посмотрите плиз мой предыдущий пост - там есть ответы-вопросы..)
Спасибо, что посмотрел. Про вторую ошибку только сейчас вкурил. Со вторым билетом разобрался?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Quantum81 от Октябрь 30, 2015, 08:36:43 pm
сотрудник уволился потом принялся снова. Вот и начальный стаж отличный от нуля.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Октябрь 31, 2015, 08:06:40 am
сотрудник уволился потом принялся снова. Вот и начальный стаж отличный от нуля.
В условии сказано: на момент начала ведения учета в информационной базе у сотрудника уже может быть стаж отличный от нуля. Значит еще никаких приемов и увольнений не было.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Октябрь 31, 2015, 08:52:10 am
..Нда..мелочь вроде, не должны особо придираться) на очном можно спросить у препода - заводить Начальный Стаж или нет. На удалёнке пояснить.
В случае увольнения и принятия снова...на это же предприятие...)) да будет уже стаж, согласен. Значит по-хорошему дату приёма нужно  в Регистр Сведений...и брать Срез Первых )))

Venvlad    - второй билет пока не начинал по ПР, по ОУ и БУ делал да.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Октябрь 31, 2015, 08:54:38 am
Ох, спасибо alex44ru  и Jones !

Очищать не очищать в тонком клиенте значения не имеет набор пуст, но поскольку большинство программистов работали на обычных формах, то у них уже привычка очищать наборы, поэтому и решения в большинстве своем такие. (набор может быть не пуст если у набора в форме стоит галка использовать всегда как пример документ операция или запущен толстый клиент обычное приложение)
Да! Щас протестировал - именно так и есть, везде наборы пустые. Протестировал и в оперативном режиме - наборы ПУСТЫЕ. Смысла нет очищать, ни в ОУ ни в БУ ни в ПР. Но!  В примере от создателей Сборника - в решении ОУ и БУ стоят
Движения.Основной.Очистить();
Движения.Основной.Записать();

 с комментарием про остатки при оперативном режиме. Значит, на всякий случай(с галочкой или обычные формы) -очищаем всё таки в ОУ и БУ, и записываем.  Где-то видел что тут же делают Блокировать для изменения=Истина перед Записать().   Есть ли смысл в нём?...загвоздка.  Если после записи пустого набора(т.е. старые движения стираем) - кто-то параллельно сделает движение "расход", украдут наши остатки, а у нас отменяется транзакция  - значит мы старые движения возвращем на место, а товар уже списал кто-то ...получаем бардак в остатках? (слава богу что всё это может быть только с галочкой или обычные формы).

В задачах на ПР алгоритм в корне отличается. Там нет ни старой ни новой методики, там все, в принципе, по другому.
Сначала, в ОбрПроведения док Начисление формируются движения, тут же записываются, а после этого выполняется их Расчет (в идеале в общем модуле). Т.е. предварительно очищать и записывать движения по РР смысла нет.
- Да я понял, ведь вся эта заваруха связана только с КОНТРОЛЕМ ОТРИЦАТЕЛЬНЫХ ОСТАТКОВ, чтобы не уйти в МИНУС.,т.е. продать то, чего УЖЕ или ЕЩЁ нет. К Расчётам это не имеет никакого отношения.  Допустить что если бы мы ничего не продавали, а только покупали(нереально конеш) - то вообще не нужны были бы блокировки и различные очистки движений, всё в плюс хоть 100 док-ов в один момент )))но это фантастика...

В задаче внизу идет ключевая фраза: "В одном документе могут быть данные за разные расчетные периоды"
Она означает, что ПерРег у каждой записи может быть своим, то есть заполнять его из ДатыДон - это упрощение задачи.
Значит ПерРег надо делать в ТЧ и расчеты начислений выполнять от него.
Мдааа, проанализировал, ... условия задач кончено странноватые, и это специально сделано !- а подвох в данной задаче в Стаже. Все берут его как ПериодРегистрации - ДатаПриёма ! Это в принципе-правильно.  Но если зарегили ЗП за январь, например ПерРег 10 февраля, а 5-го февраля у чувака стаж стал больше 3-х лет, а 1-го он уволился ))) посчитает неверно)) Тут либо Период Регистрации ставить всегда = конец ПериодаДействия(что не реально), либо Стаж нужно считать от ПериодаДействияКонец - что есть СОВСЕМ правильно! Тогда и авансом премию правильно расчитает)))!хотя премия авансом-это фантастика))) .. Только как технически это реализовать...получается что из Дополнительных Начислений мы никак не вытянем инфу ПериодаДействияКонец, значит нужно в данной задаче Премию сувать в Осн.Начисления??? Период действия Премии бессмыслен, заполнять просто ПериодомДействия Оклада. Базовый период у оклада  пустой а у премии нужен....  Тогда ПерРег выносить в ТЧ или брать от ДатыДок - дело хозяйское, бывает же например регим одной датой начисления за прошлые три месяца, или у этих трёх начислений поставить разный ПерРег - от него тут ничего уже не зависит! )) 
Но конечно же Создатели подразумевали именно такое решение - Стаж от ПерРег, поэтому его в ТЧ...для каждой записи... Поправьте пожалуйста, если ошибаюсь..я ещё другие не видел в глаза задачи...Голова кругом !!!)))

В начале задачи сказано: "Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается". В этом случае Подразделение должно быть реквизитом, а измерением его надо делать когда совместительство допускается.
- Как уже писал alex44ru   - если сделать его реквизитом - легко засунуть Иванова в 2 разных подразделения и за один и тот же период начислять Оклад, т.е. совместительство будет, и База будет за оба Подразделения. Вопрос как исключить совместительство без извращений(как предлагал alex44ru), скорее всего НЕ УКАЗЫВАТЬ Подразделение вовсе... ни там ни там)  Вообще это скорее задача расчётчика следить за этим, ведь он может ввести Иванова 2 раза в одном периоде но ПО разным Графикам. Получится совместительство графиков-что далеко от реальности )) Как быть пока не ясно - на экзамене явно не успеть извращаться ..или всё таки придётся???

"ПД является базовым периодом" можно включить только у ВР, имеющего ПД. У Премии не может быть ПД, так как это ВР не протяженный во времени (поэтому он находится в ДН, а не в ОН)

Спасибо, здесь полностью согласен!!!

Бытует мнение, что задачи на ПР на экзамене  смотрят особым образом, тщательнее придираются..поэтому имхо они требуют досконального разбора...!?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 31, 2015, 09:29:16 am
Но конечно же Создатели подразумевали именно такое решение - Стаж от ПерРег, поэтому его в ТЧ...для каждой записи... Поправьте пожалуйста, если ошибаюсь..я ещё другие не видел в глаза задачи...Голова кругом !!!)))
В начале задачи сказано: "Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается". В этом случае Подразделение должно быть реквизитом, а измерением его надо делать когда совместительство допускается.
- Как уже писал alex44ru   - если сделать его реквизитом - легко засунуть Иванова в 2 разных подразделения и за один и тот же период начислять Оклад, т.е. совместительство будет, и База будет за оба Подразделения. Вопрос как исключить совместительство без извращений(как предлагал alex44ru), скорее всего НЕ УКАЗЫВАТЬ Подразделение вовсе... ни там ни там)  Вообще это скорее задача расчётчика следить за этим, ведь он может ввести Иванова 2 раза в одном периоде но ПО разным Графикам. Получится совместительство графиков-что далеко от реальности )) Как быть пока не ясно - на экзамене явно не успеть извращаться ..или всё таки придётся???
Можно сказать честно, что я думаю по поводу этого?
Вы заморачиваетесь над вопросами, которые не являются целью проверки на экзамене. Если так искать, что еще надо бы в идеальном случае проверять, то найти можно не только этот момент, а в каждой задаче по десятку, и в итоге экзамен не сдадите наверняка, поскольку за выполнение того, что не требовалось, баллы не добавят. Попробуйте аккуратно и четко отработать то, что перечислено  в перечне ошибок, и будет вам положительный результат. Конечно же желательно задачу не упрощать, но в том случае, если формулировка выглядит неоднозначной, а вы сделали задачу в рамках данной формулировки максимально просто (просто - не значит неправильно), есть довольно высокий шанс что ваше пояснение будет принято экзаменатором (исключением является случай, когда при очной сдаче экзаменатор "перечисляет ошибки", а сдающий лишь хлопает глазками от удивления  :D, но в этом случае экзамен не сдается, не зависимо от фактического наличия / отсутствия ошибок в решении). В любом случае, если упрощение не слишком грубое, то снятие за него от 0,25 балла - не самое суровое наказание.
В частности, защита от дурака не проверяется, кроме тех случаев, когда в задаче конкретно сказано, например, так "пользователь не должен иметь возможности", т.е. таковой возможности его надо лишить. Если же говорится просто, что "делается так", значит, всё решение можно строить на том, что делаться юзером будет именно так, и  для этого не нужен никакой дополнительный контроль.
По поводу стажа - конечно же, не надо даже думать ни о каких вариантах, когда сотрудник уволился, потом вернулся (хотя бы потому, что об этом в условии не сказано). Если вас этот момент всё же смущает, при дистанционке пишите в пояснительной записке (при очной сдаче шансы на то, что у экзаменатора хватит времени на такую ерунду, практически равны нулю).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: HRom от Октябрь 31, 2015, 12:30:49 pm
ОУ - "Использование менее эффективной методики проведения документов" (как же так? ведь об этом столько говорят), в отчете убрать итог количество по складу.

alex1248, хотите сказать, здесь можно контролировать остатки по НОВОЙ МЕТОДИКЕ?
Но ведь для формирования движений необходимо сначала получить Себестоимость.
Не понял Вас. Можете выложить решение с новой методикой? А то я прямо усомнился, может я чего не догоняю ))
Хм ... не понимаю, почему может быть нельзя. Бывают ситуации, что нет смысла, потому что уже предварительно нужно запросом получить какую-то информацию. В данном случае склад в шапке, номенклатура и количество в ТЧ, больше ничего не надо.
Да, прикрепляю.
Только там ОУ без всего остального. Может быть, имеет значение увязка с БУ? Этого я пока не делал.
Тем не менее, по отдельности у меня почти все ОУ из решенных - по новой методике.

А остаток количества по складу зачем из запроса убирать? Проверяю по нему, есть ли достаточное количество товара на этом складе.
Из отчета.
Не надо суммировать майонез с холодильниками.  :D

В вашем случае (новая методика по ОстаткиНоменклатуры) не надо ли одновременно блокировать оба регистра и ОстаткиНоменклатуры и ПартииНоменклатуры? Чтобы не получилось так пока мы списываем товар по "ОстаткиНоменклатуры" кто-нибудь списал партии?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Октябрь 31, 2015, 06:34:23 pm
В начале задачи сказано: "Каждый сотрудник может работать одновременно только в одном подразделении компании, то есть совместительство не допускается". В этом случае Подразделение должно быть реквизитом, а измерением его надо делать когда совместительство допускается.
- Как уже писал alex44ru   - если сделать его реквизитом - легко засунуть Иванова в 2 разных подразделения и за один и тот же период начислять Оклад, т.е. совместительство будет, и База будет за оба Подразделения. Вопрос как исключить совместительство без извращений(как предлагал alex44ru), скорее всего НЕ УКАЗЫВАТЬ Подразделение вовсе... ни там ни там)  Вообще это скорее задача расчётчика следить за этим, ведь он может ввести Иванова 2 раза в одном периоде но ПО разным Графикам. Получится совместительство графиков-что далеко от реальности )) Как быть пока не ясно - на экзамене явно не успеть извращаться ..или всё таки придётся???
Не должно быть двух баз. Фактический период действия только у одной записи будет при пересечении.

Будет, щас ещё раз проверил )   

Вообщем окончательный вариант Задачи ПР 1 билета:
-Подразделение в реквизит всё же засунул, сначала хотел вообще убрать из РР и из Дока, ведь он есть в Сведениях о Сотрудниках, - и там сказано в каком подразделение кто на данный момент. Но всё таки решил оставить в Доке и в РР...
-Стаж - окончательно решил брать как разницу БазовыйПериодКонец - ДатаПриёма, ведь для премии берётся база от оклада в этом же периоде, мы базовый период сами вбиваем, думаю это самое правильное решение ;))
Поскольку в условии "Стаж на ДАННОМ предприятии" - Начальный стаж делать не буду.
Тот случай, когда сотрудник увольнялся и был принят заново с начальным стажем -  пусть разбирает начальство этой воображаемой конторы.
в отчёте сделал вычисляемые поля(так для тренировки) ..ну и вроде всё. Следующая задача 2 билета по ПР.

Гляньте, кто ПР разбирает.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Zeskord от Октябрь 31, 2015, 07:03:37 pm
Всем привет!) Моё. Рад конструктивной критике.
Часто вижу в решениях подчиненные подсистемы:
Документы, справочники, регистры это не подсистемы. Для этого существуют группы команд. Для приведенного примера должно быть две подсистемы и три группы команд, и никаких подчиненных подсистем. Понятно, что визуальный эффект такой же, но (на мой взгляд) это неправильное использование объектов.

В приходной накладной проверка на услугу происходит при проведении. Правильнее ограничить ввод, настроив реквизит Номенклатуа табличной части.
Субконто Дата имеет тип Дата. До недавнего времени я сам думал, что так надо делать, но нет. В книге об этом написано в трех местах. СрокГодности должен быть справочник.
В БУ не настроен вид учета субконто, счет Товары не будет закрываться по сумме.

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

Отчет БУ выглядит страшно. Соединение двух таблиц остатков, оно вообще работает? Мой текст запроса
ВЫБРАТЬ
РегистрБухгалтерииОстатки.Субконто1 КАК Товар,
РегистрБухгалтерииОстатки.Субконто2 КАК СрокГодности,
РегистрБухгалтерииОстатки.СуммаОстаток КАК Сумма,
РегистрБухгалтерииОстатки.КоличествоОстаток КАК Количество
ИЗ
РегистрБухгалтерии.РегистрБухгалтерии.Остатки({(&Период)}, Счет = ЗНАЧЕНИЕ(Плансчетов.Управленческий.Товары), , ) КАК РегистрБухгалтерииОстатки
и формула ресурса для группировки СрокГодности:
Цитировать
ВычислитьВыражение("Сумма(Сумма)/Сумма(Количество)", "Товар") * Сумма(Количество)

В отчете по ОУ у вас вообще не настроены ресурсы.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 31, 2015, 07:29:02 pm
В приходной накладной проверка на услугу происходит при проведении. Правильнее ограничить ввод, настроив реквизит Номенклатуа табличной части.
Зачем ограничивать ввод, если "Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке. И услуги и товары указываются в одной табличной части."?
Другое дело, что при проведении стоит обратить внимание на то, чтобы не допускать неявного запроса в цикле при проверке на услуги.
Субконто Дата имеет тип Дата. До недавнего времени я сам думал, что так надо делать, но нет. В книге об этом написано в трех местах. СрокГодности должен быть справочник.
А я наоборот, сначала делал справочник, потом перешел-таки в экз задачах на тип Дата, в рамках экз это разрешается (только для экономии времени).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Zeskord от Октябрь 31, 2015, 07:35:12 pm
Зачем ограничивать ввод, если "Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке. И услуги и товары указываются в одной табличной части."?
Я о приходной накладной. В рамках задачи мы не покупаем услуги, значит в табличной части приходной накладной настроить Параметр выбора: Отбор.ВидНоменклатуры(Товар). (или для этого решения Отбор.Услуга(Ложь) )
В решении
Запрос.Текст = "ВЫБРАТЬ
| ПриходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад,
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| ПриходнаяНакладнаяСписокНоменклатуры.Ссылка КАК Регистратор,
| ПриходнаяНакладнаяСписокНоменклатуры.Количество,
| ПриходнаяНакладнаяСписокНоменклатуры.Ссылка КАК Партия,
| ПриходнаяНакладнаяСписокНоменклатуры.Количество КАК Колво,
| ПриходнаяНакладнаяСписокНоменклатуры.Сумма КАК Себестоимость,
| ПриходнаяНакладнаяСписокНоменклатуры.Ссылка.Дата КАК Период,
| ПриходнаяНакладнаяСписокНоменклатуры.СрокГодности
|ИЗ
| Документ.ПриходнаяНакладная.СписокНоменклатуры КАК ПриходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура.Услуга = ЛОЖЬ
| И ПриходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
услуги игнорируются, так не лучше ли запрещать их выбирать?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 31, 2015, 07:59:14 pm
Зачем ограничивать ввод, если "Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке. И услуги и товары указываются в одной табличной части."?
Я о приходной накладной.
Сорри, как обычно, смотрел на монитор, а думал о своем.  :D
Я в этом случае вообще ничего не делал бы - услуги для приходной накладной не предусмотрены, значит, в рамках экза пусть юзер их туда не вводит.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Октябрь 31, 2015, 10:30:22 pm
Зачем ограничивать ввод, если "Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке. И услуги и товары указываются в одной табличной части."?
Я о приходной накладной.
Сорри, как обычно, смотрел на монитор, а думал о своем.  :D
Я в этом случае вообще ничего не делал бы - услуги для приходной накладной не предусмотрены, значит, в рамках экза пусть юзер их туда не вводит.  :)
Если их не ограничить они будут накапливать движения по регистру. А списываем мы только товары.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Октябрь 31, 2015, 11:39:24 pm
Всем привет!) Моё. Рад конструктивной критике.
Часто вижу в решениях подчиненные подсистемы:
  • Оперативный учет
    • Документы
    • Справочники
    • Регистры
  • Бухгалтерский учет
    • Документы
    • Справочники
    • Регистры
Документы, справочники, регистры это не подсистемы. Для этого существуют группы команд. Для приведенного примера должно быть две подсистемы и три группы команд, и никаких подчиненных подсистем. Понятно, что визуальный эффект такой же, но (на мой взгляд) это неправильное использование объектов.

В приходной накладной проверка на услугу происходит при проведении. Правильнее ограничить ввод, настроив реквизит Номенклатуа табличной части.
Субконто Дата имеет тип Дата. До недавнего времени я сам думал, что так надо делать, но нет. В книге об этом написано в трех местах. СрокГодности должен быть справочник.
В БУ не настроен вид учета субконто, счет Товары не будет закрываться по сумме.

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

Отчет БУ выглядит страшно. Соединение двух таблиц остатков, оно вообще работает? Мой текст запроса
ВЫБРАТЬ
РегистрБухгалтерииОстатки.Субконто1 КАК Товар,
РегистрБухгалтерииОстатки.Субконто2 КАК СрокГодности,
РегистрБухгалтерииОстатки.СуммаОстаток КАК Сумма,
РегистрБухгалтерииОстатки.КоличествоОстаток КАК Количество
ИЗ
РегистрБухгалтерии.РегистрБухгалтерии.Остатки({(&Период)}, Счет = ЗНАЧЕНИЕ(Плансчетов.Управленческий.Товары), , ) КАК РегистрБухгалтерииОстатки
и формула ресурса для группировки СрокГодности:
Цитировать
ВычислитьВыражение("Сумма(Сумма)/Сумма(Количество)", "Товар") * Сумма(Количество)

В отчете по ОУ у вас вообще не настроены ресурсы.
С услугами согласен. Ограничение в таблице будет правильней. Отчет БУ поправил. С регистрами не согласен.  Первый регистр нужен для хранения остатков по складам, а второй для расчета себестоимости по партиям. Здесь вопрос стоит в количестве и размере запросов. Если делать по новой методике - проводим движение, записываем. Если бы нам нужно было получить только остаток, тогда по новой подходит больше. но нам нужна еще и себестоимость по партиям.
По поводу субконто. В платформе индексируются первые 16 полей. В нашем билете поле 1 - период, поле 2 - счет, измерений нет,  2 субконто * 4 поля(если вместо примитивного "Дата" использовать справочник "Сроки годности" вместо 4 полей будет 3). Получается: если субконто=Дата, 10<16, если субконто=СрокГодности 8<16. Поэтому и так и так в нашем билете будет правильно. Просто в реальной практике, если делать справочник срокигодности, как рад будет оператор объему дополнительной работы по заполнению датами этого справочника. Главное если у экзаменатора возникнет вопрос, аргументировать свою позицию. Хотя в реальной практике на мой взгляд всё-таки в субконто вставлять составные типы. Потому что поле примитивного висит мертвым грузом на остальных составных.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Ноябрь 01, 2015, 01:02:08 pm
Зачем ограничивать ввод, если "Помимо продажи товара, могут оказываться дополнительные услуги, например по доставке. И услуги и товары указываются в одной табличной части."?
Я о приходной накладной.
Сорри, как обычно, смотрел на монитор, а думал о своем.  :D
Я в этом случае вообще ничего не делал бы - услуги для приходной накладной не предусмотрены, значит, в рамках экза пусть юзер их туда не вводит.  :)
Если их не ограничить они будут накапливать движения по регистру. А списываем мы только товары.
Здесь как раз та ситуация, о которой я писал выше (Ответ 66). Хотя, конечно же,  решение принимать вам.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Zeskord от Ноябрь 01, 2015, 10:59:42 pm
Прошу покритиковать мое решение.
ОУ и БУ проведение расходной накладной по новой методике.
БУ использование справочника СрокГодности без непосредственной работы с этим справочником и без запросов в цикле. Пользователь выбирает дату в ТЧ документа Приходная накладная.
В ПР выполнено условие
Цитировать
Все сотрудники работают по пятидневному графику работы, однако в решении необходимо предусмотреть возможность работы по нескольким различным графикам.
с использованием функциональной опции. Расчет производится с возвратом данных в табличные части документа для последующего проведения.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Ноябрь 02, 2015, 02:16:47 pm
Прошу покритиковать мое решение.
ОУ и БУ проведение расходной накладной по новой методике.
БУ использование справочника СрокГодности без непосредственной работы с этим справочником и без запросов в цикле. Пользователь выбирает дату в ТЧ документа Приходная накладная.
В ПР выполнено условие
Цитировать
Все сотрудники работают по пятидневному графику работы, однако в решении необходимо предусмотреть возможность работы по нескольким различным графикам.
с использованием функциональной опции. Расчет производится с возвратом данных в табличные части документа для последующего проведения.
В идеале при добавлении движения в приходной накладной, можно найти срок годности в справочнике срок годности, если его там нет - создать новый элемент справочника. Тогда не нужно его руками заполнять.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Zeskord от Ноябрь 02, 2015, 02:28:47 pm
В идеале при добавлении движения в приходной накладной, можно найти срок годности в справочнике срок годности, если его там нет - создать новый элемент справочника. Тогда не нужно его руками заполнять.
А у меня так и сделано. Причем, нельзя искать для каждой строки, иначе это будет запрос в цикле. Сначала делается запрос по табличной части, где даты соединяются с элементами справочника СрокГодности. А потом при обходе результата запроса Если Выборка.СрокГодностиСсылка = NULL Тогда
Движение.СубконтоДт.СрокГодности = СоздатьПолучитьНовыйЭлементСправочникаСрокГодности(Выборка.СрокГодностиДата)
КонецЕсли;
как-то так. И времени занимает немного. И самое главное, это всегда можно оправдать при защите.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Ноябрь 02, 2015, 02:45:56 pm
В идеале при добавлении движения в приходной накладной, можно найти срок годности в справочнике срок годности, если его там нет - создать новый элемент справочника. Тогда не нужно его руками заполнять.
А у меня так и сделано. Причем, нельзя искать для каждой строки, иначе это будет запрос в цикле. Сначала делается запрос по табличной части, где даты соединяются с элементами справочника СрокГодности. А потом при обходе результата запроса Если Выборка.СрокГодностиСсылка = NULL Тогда
Движение.СубконтоДт.СрокГодности = СоздатьПолучитьНовыйЭлементСправочникаСрокГодности(Выборка.СрокГодностиДата)
КонецЕсли;
как-то так. И времени занимает немного. И самое главное, это всегда можно оправдать при защите.
Сорри не заметил)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Ноябрь 02, 2015, 02:48:41 pm
В идеале при добавлении движения в приходной накладной, можно найти срок годности в справочнике срок годности, если его там нет - создать новый элемент справочника. Тогда не нужно его руками заполнять.
А у меня так и сделано. Причем, нельзя искать для каждой строки, иначе это будет запрос в цикле. Сначала делается запрос по табличной части, где даты соединяются с элементами справочника СрокГодности. А потом при обходе результата запроса Если Выборка.СрокГодностиСсылка = NULL Тогда
Движение.СубконтоДт.СрокГодности = СоздатьПолучитьНовыйЭлементСправочникаСрокГодности(Выборка.СрокГодностиДата)
КонецЕсли;
как-то так. И времени занимает немного. И самое главное, это всегда можно оправдать при защите.
Ко второму билету уже приступал?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Zeskord от Ноябрь 02, 2015, 02:50:31 pm
Ко второму билету уже приступал?
Сегодня запланировал делать его с секундомером :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Ноябрь 02, 2015, 02:57:03 pm
Ко второму билету уже приступал?
Сегодня запланировал делать его с секундомером :)
На мой взгляд, это имеет смысл, только если уже знаешь все нюансы, которые могут возникнуть при решении. И даже в таких случаях я при подготовке почему-то не успевал делать с такой скоростью, как в итоге получилось при сдаче (возможно, постоянно пытался дорабатывать, а на экз решил, что прежде всего сделаю по минимуму, чем в итоге ограничился, и этого вполне хватило для сдачи).  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: venvlad от Ноябрь 02, 2015, 03:06:29 pm
Ко второму билету уже приступал?
Сегодня запланировал делать его с секундомером :)
По моему опыту это имеет смысл только если уже знаешь все нюансы, которые могут возникнуть при решении. И даже в таких случаях я не успевал делать так, как получилось при сдаче.  :)
Какой билет попался?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Ноябрь 02, 2015, 03:09:23 pm
Ко второму билету уже приступал?
Сегодня запланировал делать его с секундомером :)
По моему опыту это имеет смысл только если уже знаешь все нюансы, которые могут возникнуть при решении. И даже в таких случаях я не успевал делать так, как получилось при сдаче.  :)
Какой билет попался?
Сборная солянка. Кстати, точно такой же набор был и до моей сдачи, и после.
Я вот тут отчитался.  :)
http://forum.chistov.pro/index.php?topic=993.msg41978#msg41978
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Jones от Ноябрь 06, 2015, 10:29:45 am
Jones,
Не посоветуешь как лучше реализовывать условие на услугу на твой взгляд?

Допустимо ли делать так?

...   

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

Т.е. сначала ТЗ, потом выборка из одного и того же запроса

ХитрО )) Может тогда в запросе сделать два запроса пакета?
Результат первого загружать в движения ОУ, а Результат второго - в Движения БУ
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Quantum81 от Ноябрь 10, 2015, 12:53:16 am
моя версия. Делал в цейтноте.

СПР. Сначала сделал Премию всегда за месяц. потом все же переделал на любой дипазон в пределах месяца. 
   РС стаж сделал с одним измерение "До".
  Разные расчетные периоды.

ОУ. Два РН новая методика
БУ. Неожиданно запутался в трех соснах. Вот что цейтнот делает! В итоге по времени не уложился.
   Сделал лишнее списание Дт Покупатели КТ ПрибИУбиток по частям. Но править назад  бы не стал .т.к. по времени не уложился.
БП стандартно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: pewit от Ноябрь 10, 2015, 04:35:15 pm
Посмотрите билетик, пожалуйста. Первый раз всё в кучу собрала. Буду рада любой критики и замечаниям! Заранее большое спасибо!
Название: Re: Билет 1. Спец по платформе V8
Отправлено: mrWinders от Ноябрь 10, 2015, 07:26:40 pm
я за Итоги в  запросе по БУ при проведении РасхНакладной на сдаче получил... лишние они там
по Номенклатуре общий итог , а в других остатках кол-во по 2-му субконто. вопрос зачем тебе итоги ?

А почему МассивСубконто и для общих остатков1 (по номенклатуре) и для остатков2 (Номенклатура,Срок)  - совпадают? - аяяй

Движения.Основной.Записать(); - Что это такое ??? я так понимаю за это вообще сапогами по лицу.
?(Режим = РежимПроведенияДокумента.Оперативный, Неопределено, МоментВремени())); - какой момент времени? Границу Исключай и не надо записывать, может я конечно чтото не догоняю, но ты же прям движуху чистишь и записываешь, а вдруг отказ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Bor от Декабрь 02, 2015, 05:39:57 pm
Часто вижу в решениях подчиненные подсистемы:
  • Оперативный учет
    • Документы
    • Справочники
    • Регистры
  • Бухгалтерский учет
    • Документы
    • Справочники
    • Регистры
Документы, справочники, регистры это не подсистемы. Для этого существуют группы команд. Для приведенного примера должно быть две подсистемы и три группы команд, и никаких подчиненных подсистем. Понятно, что визуальный эффект такой же, но (на мой взгляд) это неправильное использование объектов.
Так (через подсистемы) сделано в примере решения задачи в официальном сборнике задач.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Random4Fun от Январь 26, 2016, 05:51:28 pm
Выкладываю мое решение расчетной задачи.
Буду рад критике и отвечу на любые вопросы.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Random4Fun от Январь 28, 2016, 11:33:42 am
Выкладываю исправленное решение расчетной задачи.
В прошлой версии доп начисления не удовлетворяли условию "В одном документе могут быть данные за разные расчетные периоды." Добавил в ТЧ доп начисления реквизиты по базовому периоду.

Буду рад критике и отвечу на любые вопросы готовящихся.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: АСБ от Февраль 21, 2016, 07:56:11 am
Проверьте пожалуйста, подсматривал другие примеры, но старался всё сделать как можно стандартнее и менее запутано (по крайней мере для себя :) )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Odines от Февраль 22, 2016, 09:46:01 pm
Первый решенный билет.
Очень важно мнение опытных готовящихся.
Если не сложно прошу пройтись одним глазком.

Обратил внимание что задачи проще чем в сборнике. Или это первый билет только проще? Или все?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Silverman от Февраль 26, 2016, 11:26:08 am
Всем привет. Сделал ОУ из первого билета. Есть один небольшой вопрос. При контроле остатков по партиям по способу Чистова возникает такая ситуация: в параметре виртуальной таблицы остатков используется значение параметра МоментВремени(), но т.к. разрешено оперативное проведение, то при проведении дата все время сдвигается и в остатки попадают движения самого документа. Я убрал возможность проводить документ оперативно и проблема исчезла. Может есть более правильный способ это обойти.
Может кто-то заодно покритикует решение.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Daria от Февраль 28, 2016, 03:24:05 pm
Всем привет. Сделал ОУ из первого билета. Есть один небольшой вопрос. При контроле остатков по партиям по способу Чистова возникает такая ситуация: в параметре виртуальной таблицы остатков используется значение параметра МоментВремени(), но т.к. разрешено оперативное проведение, то при проведении дата все время сдвигается и в остатки попадают движения самого документа. Я убрал возможность проводить документ оперативно и проблема исчезла. Может есть более правильный способ это обойти.
Может кто-то заодно покритикует решение.

Добрый день!
Замечания по док. "Расходная накладная" следующие:
1) Правильней делать группировку по таб. части и потом её уже обходить выборкой, отобрав только нужные товары и далее с помощью менеджера временных таблиц использовать эти данные во всех последующих запросах.
2)Учетную политику необходимо проверять в начале обработки проведения, если же она не заполнена, то выполнять дальнейшие действия нет смысла. Если она не заполнена необходимо выводить сообщение пользователю.
3) У Вас дублирование текста при проверки метода списания, это плохой тон программирования. Достаточно один раз прописать, а с помощью функции СтрЗаменить менять упорядочивание в зависимости от результата метода списания.
4) Нет блокировок по регистру себестоимости.
5) В запросе себестоимости неправильно установлен параметр период. Необходимо проверять на режим проведения.
6) По рег. себестоимости нет очистки и записи пустого набора движений, для того чтобы можно было перепровести документ.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Silverman от Февраль 29, 2016, 03:24:33 pm
Всем привет. Сделал ОУ из первого билета. Есть один небольшой вопрос. При контроле остатков по партиям по способу Чистова возникает такая ситуация: в параметре виртуальной таблицы остатков используется значение параметра МоментВремени(), но т.к. разрешено оперативное проведение, то при проведении дата все время сдвигается и в остатки попадают движения самого документа. Я убрал возможность проводить документ оперативно и проблема исчезла. Может есть более правильный способ это обойти.
Может кто-то заодно покритикует решение.

Добрый день!
Замечания по док. "Расходная накладная" следующие:
1) Правильней делать группировку по таб. части и потом её уже обходить выборкой, отобрав только нужные товары и далее с помощью менеджера временных таблиц использовать эти данные во всех последующих запросах.
2)Учетную политику необходимо проверять в начале обработки проведения, если же она не заполнена, то выполнять дальнейшие действия нет смысла. Если она не заполнена необходимо выводить сообщение пользователю.
3) У Вас дублирование текста при проверки метода списания, это плохой тон программирования. Достаточно один раз прописать, а с помощью функции СтрЗаменить менять упорядочивание в зависимости от результата метода списания.
4) Нет блокировок по регистру себестоимости.
5) В запросе себестоимости неправильно установлен параметр период. Необходимо проверять на режим проведения.
6) По рег. себестоимости нет очистки и записи пустого набора движений, для того чтобы можно было перепровести документ.

Спасибо за комментарии! Поправил. Надеюсь теперь все верно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Февраль 29, 2016, 11:06:30 pm
Всем привет. Сделал ОУ из первого билета. Есть один небольшой вопрос. При контроле остатков по партиям по способу Чистова возникает такая ситуация: в параметре виртуальной таблицы остатков используется значение параметра МоментВремени(), но т.к. разрешено оперативное проведение, то при проведении дата все время сдвигается и в остатки попадают движения самого документа. Я убрал возможность проводить документ оперативно и проблема исчезла. Может есть более правильный способ это обойти.
Может кто-то заодно покритикует решение.

Добрый день!
Замечания по док. "Расходная накладная" следующие:
1) Правильней делать группировку по таб. части и потом её уже обходить выборкой, отобрав только нужные товары и далее с помощью менеджера временных таблиц использовать эти данные во всех последующих запросах.
2)Учетную политику необходимо проверять в начале обработки проведения, если же она не заполнена, то выполнять дальнейшие действия нет смысла. Если она не заполнена необходимо выводить сообщение пользователю.
3) У Вас дублирование текста при проверки метода списания, это плохой тон программирования. Достаточно один раз прописать, а с помощью функции СтрЗаменить менять упорядочивание в зависимости от результата метода списания.
4) Нет блокировок по регистру себестоимости.
5) В запросе себестоимости неправильно установлен параметр период. Необходимо проверять на режим проведения.
6) По рег. себестоимости нет очистки и записи пустого набора движений, для того чтобы можно было перепровести документ.

Спасибо за комментарии! Поправил. Надеюсь теперь все верно.

Доброго времени суток!
Silverman, взял за основу Ваше решение и слегка его "оптимизировал"  :D
Если где то ошибся, прошу строго не судить - сам только начал готовиться, пока разбираюсь на чужих решениях. Любые вопросы и критика приветствуется.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Ads666sda от Март 02, 2016, 04:42:41 pm
Здравствуйте, уважаемые специалисты.
Решил таки начать подготовку к экзамену. И начал с самого начала.
При решении задачи ОУ и БУ, возникла проблема. Не пойму почему не списывается толком количество, может я что-то не так понял.
Если у кого время будет, подскажите пожалуйста, что сделал не так.
Спасибо
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Марк от Март 02, 2016, 08:09:24 pm
Здравствуйте, уважаемые специалисты.
Решил таки начать подготовку к экзамену. И начал с самого начала.
При решении задачи ОУ и БУ, возникла проблема. Не пойму почему не списывается толком количество, может я что-то не так понял.
Если у кого время будет, подскажите пожалуйста, что сделал не так.
Спасибо

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

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

1) Не добавлены объекты в состав подсистем. Было очень не удобно смотреть Ваше решение, приходилось заходить во "Все функции".
2) Процедура для создания движений в бух.рег. в Приходной накладной пустая. Пришлось допилить, что бы посмотреть как списывается количество.
3) В ресурсе Количество в рег. Управленческий не выбран признак учета, галку Балансовый нужно было убрать. Признак учета Вы создали а про остальное забыли.
4) "&МоментВремени" в виртуальных таблицах. На мой взгляд нужно  использовать следующие приемы:
если "старый" метод списания тогда
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
      МоментИтогов = '00010101';
Иначе   
      МоментИтогов = МоментВремени();
КонецЕсли;

а если "новая" методика списания тогда

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

или же

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

и так же по "новой" методике списания.

5) В запросах для документа Расходная накладная Вы создаете лишние таблицы.  За это снимаю баллы.
6) Нет массива с субконтами для рег.Управленческий.
7) Количество в ОУ не правильно списывалось из за отсутствия условия в запросе (в котором проверяется не ушли ли в минус) "ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) < 0".

Вроде все. Может есть что то еще но я заметил только такие нюансы.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Ads666sda от Март 03, 2016, 08:51:56 am
Здравствуйте, уважаемые специалисты.
Решил таки начать подготовку к экзамену. И начал с самого начала.
При решении задачи ОУ и БУ, возникла проблема. Не пойму почему не списывается толком количество, может я что-то не так понял.
Если у кого время будет, подскажите пожалуйста, что сделал не так.
Спасибо

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

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

1) Не добавлены объекты в состав подсистем. Было очень не удобно смотреть Ваше решение, приходилось заходить во "Все функции".
2) Процедура для создания движений в бух.рег. в Приходной накладной пустая. Пришлось допилить, что бы посмотреть как списывается количество.
3) В ресурсе Количество в рег. Управленческий не выбран признак учета, галку Балансовый нужно было убрать. Признак учета Вы создали а про остальное забыли.
4) "&МоментВремени" в виртуальных таблицах. На мой взгляд нужно  использовать следующие приемы:
если "старый" метод списания тогда
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
      МоментИтогов = '00010101';
Иначе   
      МоментИтогов = МоментВремени();
КонецЕсли;

а если "новая" методика списания тогда

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

или же

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

и так же по "новой" методике списания.

5) В запросах для документа Расходная накладная Вы создаете лишние таблицы.  За это снимаю баллы.
6) Нет массива с субконтами для рег.Управленческий.
7) Количество в ОУ не правильно списывалось из за отсутствия условия в запросе (в котором проверяется не ушли ли в минус) "ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) < 0".

Вроде все. Может есть что то еще но я заметил только такие нюансы.

Спасибо большое за такой подробный разбор, постараюсь всё привести в порядок.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Марк от Март 04, 2016, 05:14:58 am
Здравствуйте, уважаемые специалисты.
Решил таки начать подготовку к экзамену. И начал с самого начала.
При решении задачи ОУ и БУ, возникла проблема. Не пойму почему не списывается толком количество, может я что-то не так понял.
Если у кого время будет, подскажите пожалуйста, что сделал не так.
Спасибо

Нашел еще одну ошибку. В задаче по БУ не правильно настроен ресурс Сумма. Так как в задаче есть фраза "Себестоимость определяется как средняя по товару по всем срокам годности" то необходимо было еще создать "признак учета субконто" при этом галочка балансовый остается включенной. В связи с этим ваш запрос с получение остатков не подходит.

Скачайте решения Sae в разделе Актуальные билеты на странице 58. Они могут вам помочь в подготовке.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Ads666sda от Март 04, 2016, 10:05:41 am
Здравствуйте, уважаемые специалисты.
Решил таки начать подготовку к экзамену. И начал с самого начала.
При решении задачи ОУ и БУ, возникла проблема. Не пойму почему не списывается толком количество, может я что-то не так понял.
Если у кого время будет, подскажите пожалуйста, что сделал не так.
Спасибо

Нашел еще одну ошибку. В задаче по БУ не правильно настроен ресурс Сумма. Так как в задаче есть фраза "Себестоимость определяется как средняя по товару по всем срокам годности" то необходимо было еще создать "признак учета субконто" при этом галочка балансовый остается включенной. В связи с этим ваш запрос с получение остатков не подходит.

Скачайте решения Sae в разделе Актуальные билеты на странице 58. Они могут вам помочь в подготовке.

Спасибо за рекомендации.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Кирилл от Март 12, 2016, 12:25:41 am
Здравствуйте, уважаемые специалисты.
Решил таки начать подготовку к экзамену. И начал с самого начала.
При решении задачи ОУ и БУ, возникла проблема. Не пойму почему не списывается толком количество, может я что-то не так понял.
Если у кого время будет, подскажите пожалуйста, что сделал не так.
Спасибо

Добрый день.
Работоспособность не проверял. Посмотрел только код (в оперативном учете):
1. В качестве субконто "Срок годности" вы используете не ссылочный тип данных. Это явная ошибка.
2. В приходной накладной в табличной части можно выбрать услугу. Явно ни где сказано, но на мой взгляд то же косяк. Тем более, что отбор легко настраивается через Параметры выбора в свойствах Номенклатуры.
3. Документ "Приходная"  Обработка проведения ОУ:
Зачем так усложнять? Все движения конструктором строятся. Гораздо быстрее получается. Тем более, как правильно было сказано, за создание дополнительных таблиц значений снижают баллы.

Документ "Расходная" Обработка проведения ОУ:
4. Не очищаются записи документа в регистре - после первых трех строк нужно записать пустые движения. аналогично и с движениями регистра "Себестоимость номенклатуры" Вы пишите, что очищаете, только при оперативном проведении. А если пользователь решит изменить дату на большую у уже проведенного документа? Тогда ваши движения будут учитываться при проведении, хотя и не должны.
5. Нет блокировки записей таблицы регистра в момент записи движений в рамках новой методики проведения.
6. В качестве источника данных для блокировки можно использовать результат запроса. Не обязательно таблицу значений для этого создавать.
7. Когда выводите сообщение пользователю о нехватке товара используете ссылку на справочник, а не строку.  - гарантировано минус балл.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Ads666sda от Март 17, 2016, 09:05:12 am
Спасибо Кирилл за поправки, очень ценные.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: axel_work от Март 26, 2016, 10:23:19 pm
Доброго дня, коллеги!

Про получение стажа.

Заметил интересную вещь - РАЗНОСТЬДАТ(х, y, ГОД) возвращает разницу алгебраическую, то есть эквивалентно Год(у) - Год(х), что есть не гуд, так как разность например 01.10.2015 и 01.02.2016 - возвращает 1. Пришлось делать через месяцы и округление.

Второй момент - про данные разных расчетных периодов в одном документе. Очень неприятная вещь. В сборнике задач таких вообще не попадалось. Обычно период регистрации один на документ. Там с этим все понятно.

А тут как правильно решать? Указывать период регистрации в ТЧ или брать НачалоМесяца(НачалоПериода). Но самое плохое - как получать данные регистров (процент премии например, стаж)? На один какой-то период, или на каждый указанный период регистрации в ТЧ?

Название: Re: Билет 1. Спец по платформе V8
Отправлено: axel_work от Март 27, 2016, 11:34:15 am
Мое решение.  Плиз критика.

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

Название: Re: Билет 1. Спец по платформе V8
Отправлено: Гакусей от Март 27, 2016, 01:59:32 pm
Мое решение.  Плиз критика.

Хз насколько правильно сделал СПР с этим условием про разные периоды. Начало и конец оклада можно ввести любой месяц, добавил только месяц базы в доп. начисления.
Посмотрел только СПР, и без  учета условия по периоды. В целом понравилось, есть некоторые моменты по-мелочи.
1.В процедуре проведения
   Движения.ОсновныеНачисления.Записать();
   Движения.ДополнительныеНачисления.Записать();
можно было заменить на Движения.Записать() и сэкономить немного времени, благо что вариант через название регистра тут не нужен, т.к. тут не нужно указывать параметры.
2.Расчет нужно перенести в общий модуль, вот за это могут немного снизить оценку.
3. Насколько я понимаю, в подобных констукциях тоже должна быть проверка на null после функции, ведь теоретически в итоге тут тоже может получится null. Или нет?
   |      МАКСИМУМ(ШкалаПроцентов.Стаж) КАК Стаж,                           МАКСИМУМ(isnull(ШкалаПроцентов.Стаж,0)) КАК Стаж,
4.При записи рассчитанных доп.начислений не нужно писать параметр Истина, ведь у них нет ФПД,не? Движения.ДополнительныеНачисления.Записать(, Истина);
И вопрос по проектированию: А можно ли со стажем и датой приема поступить было несколько проще - указать их в справочнике Сотрудников и брать их оттуда? По этому поводу что-то слышно было по информации с экзаменов?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Март 27, 2016, 05:01:33 pm
Мое решение.  Плиз критика.

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

Доброго дня!

Несколько предложений по Вашему решению:
1. Я бы сделал сначала проверку на Метод списания. В вашем варианте, если не установлен, то получается зря движения по РН "ОстаткиНоменклатуры" делали, а в документе может быть много записей.

2. Зачем таскать признак услуги? Почему в первом же пакете запроса не поставить условие
"ГДЕ НЕ РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)" ?

3. Есть ли смысл делать проверку при списании партий? Уже проверили по ОстаткиТоваров, что товара хватает.

4. Во многих решениях видел - в документе Операция при установке пометки удаления на документ для набора записей снимается активность (и наоборот). Это примерно такой код в модуле документа:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Проводки = Движения.Управленческий;
Проводки.Записывать = Истина;
Если НЕ Проводки.Модифицированность() И НЕ ЭтоНовый() Тогда
           Проводки.Прочитать();
КонецЕсли;

Для каждого Проводка Из Проводки Цикл
           Проводка.Период = Дата;

 Если НЕ ЭтоНовый() И ПометкаУдаления <> Ссылка.ПометкаУдаления Тогда
                     Проводка.Активность = НЕ ПометкаУдаления;
 КонецЕсли;
КонецЦикла;

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

5. Соглашусь с Гакусеем - начальный стаж и дата приема на работу скорее всего неизменяемая информация и их можно хранить в реквизитах справочника ФизическиеЛица.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Good_Smile от Апрель 05, 2016, 10:52:23 am
Всем привет! Опять начала подготовку)
Моё решение, прошу посмотреть

ОУ - 2 рн Остатки и Себестоимость с суммой
добавила немного кода с проведением ОУ и БУ в РН
получаю втДанныеДокумента в начале и потом передаю запрос в процедуры ОУ и БУ

БУ - счет Товары, пу Количественный, суб1 Номенклатура (пус Суммовой), суб2 СрокГодности
в проводке Дт Покупатели - Кт ПрибылиУбытки сумму по документу использовать нельзя, так как в тч могут быть услуги от ОУ, хотя может быть я сильно заморачиваюсь) и на экзамене это смотреть не будут
кстате услуги в этом билете совсем не используются, отсекаю их когда получаю втДанныеДокумента

по поводу Операции вопрос, код в модуле объекта
Цитировать
   Движения.Управленческий.Записывать = Истина;
   Движения.Управленческий.Прочитать();
   Движения.Управленческий.УстановитьАктивность(НЕ ПометкаУдаления);
   Движения.Записать();
будет работать всегда или лучше использовать отбор по регистратору?

также прошу посмотреть отчет, а именно параметры вт

СПР - стаж храню в спр ФизЛица (реквизит ДатаПриема)

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

в решении ориентировалась на решения SAE (актуальные билеты, 58 стр)
и последний вопрос по поводу флага Разрешить разделение итогов, SAE его проставляет везде (рн и рр), как вы думаете, нужно ли его проставлять всегда, а если нет, то почему?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Апрель 07, 2016, 11:01:56 pm
Доброго времени суток! Наконец то осилил первый билет, прошу посмотреть и раскритиковать.

По ходу решения возникло несколько вопросов:
1. Нужно ли индексировать существующие и добавляемые измерения в регистрах накопления?

2. Нужно ли на эти же измерения накладывать запрет на незаполненные значения?

3. Насколько критично в СПР выносить расчет в общий модуль? Сделал все в процедуре проведения НачислениеЗарплаты, могут снять баллы за это?

4. В ОУ в Приходной не ставлю проверку на Услуги, так как в тексте задачи не сказано явно, что Услуги поступают, вроде бы только оказываются фирмой. Но, если возможно поступление Услуг, то они будут накапливаться в регистре, т.е. проверку надо делать. Кто как считает?

5. Просьба особо проверить параметры виртуальных таблиц в запросах к регистрам бухгалтерии (отчет и проведение расходной накладной), все ли параметры правильно указаны?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Апрель 10, 2016, 10:07:27 pm
Доброго времени суток! Наконец то осилил первый билет, прошу посмотреть и раскритиковать.

По ходу решения возникло несколько вопросов:
1. Нужно ли индексировать существующие и добавляемые измерения в регистрах накопления?

2. Нужно ли на эти же измерения накладывать запрет на незаполненные значения?

3. Насколько критично в СПР выносить расчет в общий модуль? Сделал все в процедуре проведения НачислениеЗарплаты, могут снять баллы за это?

4. В ОУ в Приходной не ставлю проверку на Услуги, так как в тексте задачи не сказано явно, что Услуги поступают, вроде бы только оказываются фирмой. Но, если возможно поступление Услуг, то они будут накапливаться в регистре, т.е. проверку надо делать. Кто как считает?

5. Просьба особо проверить параметры виртуальных таблиц в запросах к регистрам бухгалтерии (отчет и проведение расходной накладной), все ли параметры правильно указаны?

Бегло глянул, пару моментов:   по БУ  - делайте Если Отказ Тогда Продолжить, за условием о нехватке, иначе у вас к примеру 100000 позиций, 1-ая не хватает, всё, Отказ = истина, а остальные все норм хватает, и у вас за зря 99999 итераций пройдёт с расчетом себестоимости.
Ну и пресловутая "проблема копеек" не реализована.
в рамках экзамена:
1) не нужно
2)не нужно
3) критично, т.к. в этой задаче изменение 100%. Будете делать форму, получать объект, его движения , и  вызывать Общий Модуль расчета, грузить в ТЧ результат. (по кнопке Рассчитать результат д.б. в ТЧ документа появится.)
4)  Отсеивайте в параметрах выбора: Отбор.ВидНоменклатуры(Товар)
5) почему массив субконто не заполняете? нужно, влияет на скорость запроса к РБ
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Апрель 11, 2016, 12:52:27 pm
Доброго времени суток! Наконец то осилил первый билет, прошу посмотреть и раскритиковать.

По ходу решения возникло несколько вопросов:
1. Нужно ли индексировать существующие и добавляемые измерения в регистрах накопления?

2. Нужно ли на эти же измерения накладывать запрет на незаполненные значения?

3. Насколько критично в СПР выносить расчет в общий модуль? Сделал все в процедуре проведения НачислениеЗарплаты, могут снять баллы за это?

4. В ОУ в Приходной не ставлю проверку на Услуги, так как в тексте задачи не сказано явно, что Услуги поступают, вроде бы только оказываются фирмой. Но, если возможно поступление Услуг, то они будут накапливаться в регистре, т.е. проверку надо делать. Кто как считает?

5. Просьба особо проверить параметры виртуальных таблиц в запросах к регистрам бухгалтерии (отчет и проведение расходной накладной), все ли параметры правильно указаны?

Бегло глянул, пару моментов:   по БУ  - делайте Если Отказ Тогда Продолжить, за условием о нехватке, иначе у вас к примеру 100000 позиций, 1-ая не хватает, всё, Отказ = истина, а остальные все норм хватает, и у вас за зря 99999 итераций пройдёт с расчетом себестоимости.
Ну и пресловутая "проблема копеек" не реализована.
в рамках экзамена:
1) не нужно
2)не нужно
3) критично, т.к. в этой задаче изменение 100%. Будете делать форму, получать объект, его движения , и  вызывать Общий Модуль расчета, грузить в ТЧ результат. (по кнопке Рассчитать результат д.б. в ТЧ документа появится.)
4)  Отсеивайте в параметрах выбора: Отбор.ВидНоменклатуры(Товар)
5) почему массив субконто не заполняете? нужно, влияет на скорость запроса к РБ

Спасибо за ответ и критику. Насчет "Если Отказ Тогда Продолжить" сначала не понял, в чем подвох, потом дошло, логичное замечание, поправлю.
Насчет "проблемы копеек" не соглашусь - у меня с последней партии всегда списывается остаток суммы, завел тестовый пример - 3шт. общей себестоимостью 1000 р., все списалось нормально. Либо я что-то не понимаю, прошу пояснить подробнее.

Расчет СПР в общем модуле - надо посмотреть, как это реализовано в других решениях. Ориентировался на SAE, у него все было в обработке проведения.

По остальным пунктам замечания/советы понятны, будем исправлять. Спасибо!
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Апрель 11, 2016, 10:22:31 pm


По остальным пунктам замечания/советы понятны, будем исправлять. Спасибо!

ага с проблемой копеек проглядел, всё верно реализовано)
весьма неплохое решение билета, и все таки СПР выносите в общий модуль;-)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Good_Smile от Апрель 12, 2016, 09:42:45 am
весьма неплохое решение билета, и все таки СПР выносите в общий модуль;-)

Zorky, спасибо, что остались на форуме и комментируете решения после того как сдали
прошу прокомментируйте моё решение или хотя бы ответьте на вопросы в моём сообщении

на счет ПериодаРегистрации в тч документа НачислениеЗарплаты я видела, что это не очень приветствуется на экзамене, и нужно делать для ВР, используемых ПериодДействия, ПериодДействияНачало и ПериодДействияКонец, и правильно ли я поняла, что для Премии можно делать ПериодРегистрации в тч?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Апрель 12, 2016, 08:19:21 pm
весьма неплохое решение билета, и все таки СПР выносите в общий модуль;-)

Zorky, спасибо, что остались на форуме и комментируете решения после того как сдали
прошу прокомментируйте моё решение или хотя бы ответьте на вопросы в моём сообщении

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

нет, период регистрации берите начало месяца  Даты документа, или можно в шапке. Для премии заведите реквизит типа Дата и назовите как нибудь, типа Месяц начисления, ну или по другому. Он не будет влиять на ПР, ПР всегда один у всего Дока, а он нужен для условия "разные расчетные периоды", и от него уже и отсчитывайте базовый период.

ПС:  скоро времени совсем не будет....)))
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Good_Smile от Апрель 15, 2016, 10:54:57 am

нет, период регистрации берите начало месяца  Даты документа, или можно в шапке. Для премии заведите реквизит типа Дата и назовите как нибудь, типа Месяц начисления, ну или по другому. Он не будет влиять на ПР, ПР всегда один у всего Дока, а он нужен для условия "разные расчетные периоды", и от него уже и отсчитывайте базовый период.


спасибо за ответ, всё стало гораздо понятней в этих СЛОЖНЫХ периодических расчетах))

Цитировать
ПС:  скоро времени совсем не будет....)))
Начали подготовку к другой аттестации?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Апрель 16, 2016, 10:59:18 am

нет, период регистрации берите начало месяца  Даты документа, или можно в шапке. Для премии заведите реквизит типа Дата и назовите как нибудь, типа Месяц начисления, ну или по другому. Он не будет влиять на ПР, ПР всегда один у всего Дока, а он нужен для условия "разные расчетные периоды", и от него уже и отсчитывайте базовый период.


спасибо за ответ, всё стало гораздо понятней в этих СЛОЖНЫХ периодических расчетах))

Цитировать
ПС:  скоро времени совсем не будет....)))
Начали подготовку к другой аттестации?

можно и так сказать, и параллельно с работой...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Апрель 16, 2016, 05:12:29 pm
можно и так сказать, и параллельно с работой...
К какой, если не секрет? Я бух планирую, в перспективе - ЗУП.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: zorky от Апрель 16, 2016, 09:11:05 pm
можно и так сказать, и параллельно с работой...
К какой, если не секрет? Я бух планирую, в перспективе - ЗУП.

да, тоже скорее бух! для начала) без Бухи никуда ))))  тока ещё не начинал даже к профу готовится ))))
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pathfi от Апрель 25, 2016, 01:31:24 pm
Привет! Посмотрите, пожалуйста, мое решение 1 билета:
ОУ - новая методика, 2 регистра накопления (Остатки и Себестоимость)
БУ - тип субконто "срок годности" - дата, для экзамена пойдет
СПР - сделал с учетом нового условия: "сделать на форме кнопу "рассчитать" при нажатии которой будет производится расчёт и сразу же результаты должны отображаться в ТЧ документа."
БП - стандартно
Название: Re: Билет 1. Спец по платформе V8
Отправлено: axel_work от Апрель 28, 2016, 08:31:33 am
Мое решение.  Плиз критика.

Хз насколько правильно сделал СПР с этим условием про разные периоды. Начало и конец оклада можно ввести любой месяц, добавил только месяц базы в доп. начисления.
Посмотрел только СПР, и без  учета условия по периоды. В целом понравилось, есть некоторые моменты по-мелочи.
1.В процедуре проведения
   Движения.ОсновныеНачисления.Записать();
   Движения.ДополнительныеНачисления.Записать();
можно было заменить на Движения.Записать() и сэкономить немного времени, благо что вариант через название регистра тут не нужен, т.к. тут не нужно указывать параметры.
2.Расчет нужно перенести в общий модуль, вот за это могут немного снизить оценку.
3. Насколько я понимаю, в подобных констукциях тоже должна быть проверка на null после функции, ведь теоретически в итоге тут тоже может получится null. Или нет?
   |      МАКСИМУМ(ШкалаПроцентов.Стаж) КАК Стаж,                           МАКСИМУМ(isnull(ШкалаПроцентов.Стаж,0)) КАК Стаж,
4.При записи рассчитанных доп.начислений не нужно писать параметр Истина, ведь у них нет ФПД,не? Движения.ДополнительныеНачисления.Записать(, Истина);
И вопрос по проектированию: А можно ли со стажем и датой приема поступить было несколько проще - указать их в справочнике Сотрудников и брать их оттуда? По этому поводу что-то слышно было по информации с экзаменов?

Извините, что долго не отвечал.
По этим моментам:

1. Я обычно не использую Движения.Записать(). Во-первых для увеличения скорости и уменьшения кол-ва ошибок все действия стараюсь максимально делать однотипными. Поэтому использую запись Движения.ОсновныеНачисления.Записать(). Потому что в коде надо будет писать второй раз тоже самое, но с параметрами. Второй момент - а разве для ДвиженияЗаписать() не надо предварительно выставлять флаги Движения.ОН.Записывать = Истина? Если надо - тогда получается дольше.

2. Это согласен. Грешен, ленюсь :)

3. В запросе свертки стажей null не будет - там внутреннее соединение.

4. Насчет Движения.ДопНач.Записать(, Истина) - да, возможно вы правы. Можно и не писать. Тут частично мои аргументы из п.1 (однотипность = скорость и меньше ошибок), ведь ошибкой данное написание точно не является и не надо запоминать - какие именно наборы мы сейчас записываем. Второй момент - в справке про этот пункт еще про перерасчеты упоминалось, а перерасчеты могут быть и у доп. начислений. Хотя сильно я не разбирался в этом вопросе.

5. Можно и в справочнике задать - разницы нет, у меня РС непериодический.  Думаю, не настолько принципиальный вопрос, чтобы экзаменатор обращал на него внимание.

Название: Re: Билет 1. Спец по платформе V8
Отправлено: axel_work от Апрель 28, 2016, 09:05:37 am
Мое решение.  Плиз критика.

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

Доброго дня!

Несколько предложений по Вашему решению:
1. Я бы сделал сначала проверку на Метод списания. В вашем варианте, если не установлен, то получается зря движения по РН "ОстаткиНоменклатуры" делали, а в документе может быть много записей.

2. Зачем таскать признак услуги? Почему в первом же пакете запроса не поставить условие
"ГДЕ НЕ РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)" ?

3. Есть ли смысл делать проверку при списании партий? Уже проверили по ОстаткиТоваров, что товара хватает.

4. Во многих решениях видел - в документе Операция при установке пометки удаления на документ для набора записей снимается активность (и наоборот). Это примерно такой код в модуле документа:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Проводки = Движения.Управленческий;
Проводки.Записывать = Истина;
Если НЕ Проводки.Модифицированность() И НЕ ЭтоНовый() Тогда
           Проводки.Прочитать();
КонецЕсли;

Для каждого Проводка Из Проводки Цикл
           Проводка.Период = Дата;

 Если НЕ ЭтоНовый() И ПометкаУдаления <> Ссылка.ПометкаУдаления Тогда
                     Проводка.Активность = НЕ ПометкаУдаления;
 КонецЕсли;
КонецЦикла;

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

5. Соглашусь с Гакусеем - начальный стаж и дата приема на работу скорее всего неизменяемая информация и их можно хранить в реквизитах справочника ФизическиеЛица.

Спасибо за комментарий!

1. По методу списания каюсь, забыл про него - поэтому он в середине. Согласен, надо вынести вперед, или в ПередЗаписью.

2. Если не обратили внимание - там МенеджерВременныхТаблиц. Признак ЭтоУслуга используется далее в коде БУ части.

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

4. Про код в Операции спасибо. Обычно в целях экономии времени я ничего туда не пишу, так как считается, что пользователь сам там все контролирует. Кроме того, в видео бонусе от Гилева - решении бух. задачи он тоже только движения вывел на форму и этим ограничился.

5. В общем разницы нет,  просто как-то проскочило предположение, что сотрудника могут несколько раз принимать и увольнять, соот-но она все таки изменяемая, но нечасто :).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: aevdovin от Апрель 28, 2016, 05:16:17 pm
Посмотрите билетик, пожалуйста. Первый раз всё в кучу собрала. Буду рада любой критики и замечаниям! Заранее большое спасибо!
Нет признака учета субконто "Суммовой". Он требуется в этой задаче по условию ("Себестоимость определяется как средняя по товару по всем срокам годности.
Т.е. например если 1 пачка йогурта со сроком годности 10.01.2010 поступила по цене 90 рублей
и еще 1 пачка того же йогурта, но со сроком годности 30.01.2010 поступила по цене 110 рублей,
то при списании себестоимость одной пачки данного йогурта равна 100 рублей.
")
Название: Re: Билет 1. Спец по платформе V8
Отправлено: aevdovin от Апрель 29, 2016, 02:19:07 pm
мое решение. Если кто  прокомментирует, буду признателен. Есть сомнения по поводу расчета средней себестоимости в БУ. (скрин прилагаю).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Июнь 03, 2016, 01:59:04 pm
Здравствуйте! Решил задача ОУ

Посмотрите, кто может пжл  :-[
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Июнь 06, 2016, 09:20:16 am
Выгрузка в dt
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Июнь 06, 2016, 12:15:22 pm
Выгрузка в dt

Добрый день!
Вы неверно новую методику проведения используете, ошибка в модуле Расходной накладной, строка 14:
Движения.ОстаткиНоменклатуры.Записать(); //очищаем движения (нужно для перепроведения)не нужна. Почитайте статью Павла Чистова http://1c.chistov.pro/2013/07/blog-post_25.html  там все понятно и доступно про проведение по разным методикам. И запрос по остаткам весьма оригинальный - зачем в запрос передавать массив с номенклатурой, когда в БД есть сам документ?

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

Также есть неявный запрос к базе в цикле, когда к реквизиту Номенклатуры через точку обращаетесь.
И вот здесь Сообщение.Текст = "Недостаточно номенклатуры "+ВыборкаДетальныеЗаписи.Номенклатура+" "+(-ВыборкаДетальныеЗаписи.Остаток); неявный запрос, лучше взять Представление от Номенклатуры в запросе и его выводить в Сообщении.

В расходной накладной рекомендовал бы проведение сделать по следующей схеме:
1. сначала смотрите значение Учетной политики - может быть вообще не заполнено, тогда отказ.
2. Запросом группируем табличную часть документа, в запросе же исключаем услуги
3. формируем из результата запроса движения по РН "ОстаткиНоменклатуры", записываем, не забываем про блокировку
4. проверяем на отрицательные остатки
5. если не отказ, то очищаем и записываем движения по регистру с партиями, накладываем Блокировку, читаем и делаем списание.

В проведении Приходной накладной строки:
Цитировать
Движения.ОстаткиНоменклатуры.Записать();
Движения.ПартииНоменклатуры.Записать();
не нужны. Главное флаги "Записывать=Истина" не забыть выставить.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Июнь 06, 2016, 12:48:03 pm
SAM, спасибо! Всё понятно, кроме
3. формируем из результата запроса движения по РН "ОстаткиНоменклатуры", записываем, не забываем про блокировку
Можете поподробнее раскрыть? Я думал, что блокировки для старой и новой методик выглядят след. образом:

1 - Новая методика (сначала пишем, потом читаем)
Движения.Регистр.Записывать = Истина;
Движения.Регистр.БлокироватьДляИзменения = Истина; //используем БлокироватьДляИзменения

//Дальше код по записи движений и контролю остатков

2 - Старая методика (сначала читаем, потом пишем)
Движения.Регистр.Записывать = Истина;

Блокировка = Новый БлокировкаДанных; //накладываем явную блокировку

//Дальше стандартный запрос к БД по партиям, контроль остатков, расчет себестоимости и запись движений

P.S. по поводу Движения.Регистр.Записать(), действительно, в голове каша была. В статье написано следуюущее:
Цитировать
При установленном свойстве "Удалять автоматически" в самом начале транзакции проведения система автоматически записывает пустые наборы записей в регистры, тем самым очищая старые движения. Это физически происходит, запись, со всеми вытекающими транзакциями и блокировками.
Видимо это ещё с 8.1 у меня привычка всегда руками очищать движения. Спасибо Вам большое

UPD.: убрал
Движения.ПартииНоменклатуры.Записать();Теперь при перепроведении система подцепляет предыдущие движения документа по данному регистру... Что-то я совсем запустался.
Как при старой методике при перепроведении документа очищать предыдущие движения без Записать() ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Июнь 06, 2016, 02:59:05 pm
SAM, спасибо! Всё понятно, кроме
3. формируем из результата запроса движения по РН "ОстаткиНоменклатуры", записываем, не забываем про блокировку
Можете поподробнее раскрыть? Я думал, что блокировки для старой и новой методик выглядят след. образом:

P.S. по поводу Движения.Регистр.Записать(), действительно, в голове каша была. В статье написано следуюущее:
Цитировать
При установленном свойстве "Удалять автоматически" в самом начале транзакции проведения система автоматически записывает пустые наборы записей в регистры, тем самым очищая старые движения. Это физически происходит, запись, со всеми вытекающими транзакциями и блокировками.
Видимо это ещё с 8.1 у меня привычка всегда руками очищать движения. Спасибо Вам большое

UPD.: убрал
Движения.ПартииНоменклатуры.Записать();Теперь при перепроведении система подцепляет предыдущие движения документа по данному регистру... Что-то я совсем запустался.
Как при старой методике при перепроведении документа очищать предыдущие движения без Записать() ?

Прошу прощения, если запутал  ;D
Во-первых, в документах Удаление движений ставим в "Удалять автоматически при отмене проведения" (так установлено изначально). Если укажем, что "Удалять автоматически" - движения будут очищаться автоматом перед началом проведения, но это лишняя запись в базу, которая не всегда нам нужна.

При новой методике проведения:
1.Движения.Регистр.Очистить(); - можно очистить набор движений, но не обязательно, в описании Аттестации указано, что формы управляемые. Если движения не читать заранее, то набор будет пуст. Но можно и очистить, вряд ли это будет ошибкой, главное не записывать!
2. Формируем набор движений.
3. Движения.Регистр.БлокироватьДляИзменения = Истина; - блокируем для изменений.Важно, чтобы у Регистра стоял флаг разделения итогов, иначе БлокироватьДляИзменения не работает!
4. Далее на выбор:
Движения.Регистр.Записать(); - пишем набор движений по регистру
либо
Движения.Регистр.Записывать = Истина; - устанавливаем флаг, затем
Движения.Записать();  - будут записаны только те движения, у которых выставили Записывать = Истина

что важно Движения.Регистр.Записать() оказывается не сбрасывает флаг, поэтому такая конструкция:
Цитировать
Движения.Регистр.Записывать = Истина;
Движения.Регистр.Записать();
будет ошибкой для новой методики, т.к. мы пишем движения явно, а затем, по окончанию транзакции, платформой будут писаться все движения с установленным флагом, т.е. запись еще раз.

При записи новые движения заместят старые, если идет перепроведение.

5. проверка на отрицательные остатки и т.д.

При старой методике:
1. Я использовал такую конструкцию:
Движения.Регистр.Очистить();
Движения.Регистр.БлокироватьДляИзменения = Истина;
Движения.Регистр.Записать();

Павел Чистов в своей статье предлагает использовать такой код только для оперативного проведения, обернуть в Если РежимПроведения=РежимПроведенияДокумента.Оперативный Тогда
...
КонецЕсли;
однако на форуме я видел сообщения, что на аттестации такой вариант не понравился принимающему.
Т.к. сдавал дистанционно, и не было возможности поспорить, оставил только эти три строки, т.е. очищаем набор, блокируем, если вдруг это перепроведение и какие то движения там уже были, и записываем пустой набор.

Далее Блокировка = Новый БлокировкаДанных;
читаем, формируем набор движений и ставим флаг Записывать=Истина; чтобы движения записались при окончании транзакции. И все  :D

Еще замечание - при оперативном проведении запрос выполнять не на пустую дату, а в качестве момента времени передавать Неопределено.
Т.е. при новой методике
Запрос.УстановитьПараметр("Момент",?(РежимПроведение=РежимПроведенияДокумента.Оперативный,Неопределено,Новый Граница(МоментВремени(),ВидГраницы.Включая)));
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Июнь 06, 2016, 04:32:50 pm
Да, сейчас почитал про БлокироватьДляИзменения и тоже пришёл к таким же выводам.
Для новой методики:
Движения.Регистр.БлокироватьДляИзменения = Истина; //Блокируем старые движения

//Формируем новые движения

Движения.Регистр.Записать(); //Явно записываем их

//Делаем проверки

Для старой методики:
Движения.Регистр.Записывать = Истина; //устанавливаем маркер записи, в принципе неважно где, можно хоть в самом конце после формирования движений
Движения.Регистр.БлокироватьДляИзменения = Истина; //Блокируем старые движения
Движения.Регистр.Записать() //Очищаем движения, чтобы они не попадали в запрос

//Формируем движения и проверки

Цитировать
Еще замечание - при оперативном проведении запрос выполнять не на пустую дату, а в качестве момента времени передавать Неопределено.
Т.е. при новой методике
Запрос.УстановитьПараметр("Момент",?(РежимПроведение=РежимПроведенияДокумента.Оперативный,Неопределено,Новый Граница(МоментВремени(),ВидГраницы.Включая)));
А почему? Разве для платформы есть какая-то существенная разница? Ведь всё равно Неопределено будет преобразовано в пустую дату
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 07, 2016, 10:49:42 am
Доброго времени всем )
посмотрите плз мой вариант. Буду признателен за комменты
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Гакусей от Июнь 07, 2016, 11:32:51 am
Доброго времени всем )
посмотрите плз мой вариант. Буду признателен за комменты
Посмотрел бегло,
isnull в запросах отсутствует
В БУ отключают ПУС Суммовой по срокам годности, из-за этого меняются запросы и прочее. В БУ отчете не учтено условие, что сумма должна формироваться специфически.
Отключать всегда Оперпроведение у НЗ
Подразделение в РР не нужно, галка Базовое не проставлено
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 08, 2016, 09:43:43 am
В БУ отключают ПУС Суммовой по срокам годности, из-за этого меняются запросы и прочее. В БУ отчете не учтено условие, что сумма должна формироваться специфически.
так ведь если оставить только обороты на сроках годности, то остатка в разрезе этого субконто не видно будет. Не понятно что списывать и как строить отчет в таком случае
и про флажок - Базовое. В РР измерение одно, смысл то от него какой будет? Если бы было 2 и больше - тогда можно было бы подумать какой индекс нужен и расставить этот флажок и порядок измерений в РР. А так - не понимаю зачем его выставлять? Наоброт - это увеличит время записи наборов.
И кстати, давно хотел спросить - на индексирование реквизитов смотрят на экзамене? (я про измерения РН в частности)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Гакусей от Июнь 08, 2016, 10:25:21 am
ПУС и только обороты - совершенно разные вещи.
Насколько я понял на индексирование смотрят на уровне "чтобы было" . Ну а если хошь подискутировать с преподом, то такая возможность у тебя будет конечно ;D
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 08, 2016, 10:45:54 am
ПУС и только обороты - совершенно разные вещи.
Насколько я понял на индексирование смотрят на уровне "чтобы было" . Ну а если хошь подискутировать с преподом, то такая возможность у тебя будет конечно ;D
я из региона, так что подискутировать не смогу )) буду сдавать дистанционно )
зы хм, ПУС - не понял я что это такое. Признак учета субконто, по-другому как еще расшифровать?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Гакусей от Июнь 08, 2016, 10:50:27 am
ПУС и только обороты - совершенно разные вещи.
Насколько я понял на индексирование смотрят на уровне "чтобы было" . Ну а если хошь подискутировать с преподом, то такая возможность у тебя будет конечно ;D
Признак учета субконто, по-другому как еще расшифровать?
Да, к только оборотам не имеют отношения. Самостоятельная фенька
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Июнь 08, 2016, 10:51:02 am
ПУС и только обороты - совершенно разные вещи.
Насколько я понял на индексирование смотрят на уровне "чтобы было" . Ну а если хошь подискутировать с преподом, то такая возможность у тебя будет конечно ;D
я из региона, так что подискутировать не смогу )) буду сдавать дистанционно )
зы хм, ПУС - не понял я что это такое. Признак учета субконто, по-другому как еще расшифровать?

ПУС - это признак учета субконто. В этой задаче нужен признак учета субконто "суммовой" и признак учета "количественный", плюс разобраться как это работает и зачем это нужно. Как только разберетесь в этом моменте - сразу решать бух.задачи становится проще.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 08, 2016, 12:41:58 pm
с признаками учета вроде все понятно. Непонятно как избавиться от копеек:
Если брать формулу
Себестоимость = Выборка.СуммаОст * Списывать/ Выборка.КолВоОст;где Выборка.СуммаОст - общая стоимость, Списывать - колво к списанию в тек. партии, а Выборка.КолВоОст - общий остаток
Название: Re: Билет 1. Спец по платформе V8
Отправлено: rds92 от Июнь 08, 2016, 04:23:21 pm
с признаками учета вроде все понятно. Непонятно как избавиться от копеек:
Если брать формулу
Себестоимость = Выборка.СуммаОст * Списывать/ Выборка.КолВоОст;где Выборка.СуммаОст - общая стоимость, Списывать - колво к списанию в тек. партии, а Выборка.КолВоОст - общий остаток
По этой формуле ни разу копейки не зависали, все в 0 всегда уходило. Или я как то не так тестировал?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 08, 2016, 04:39:06 pm
По этой формуле ни разу копейки не зависали, все в 0 всегда уходило. Или я как то не так тестировал?
приложил скрины. Сумма по партиям - 3350, куплено 12 шт. Продаем 12. В итоге 1 копейки не хватает до полной суммы себестоимости
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Гакусей от Июнь 08, 2016, 04:47:25 pm
см. последние решения, по-моему это почти в каждом решении реализовано
Название: Re: Билет 1. Спец по платформе V8
Отправлено: rds92 от Июнь 08, 2016, 04:56:48 pm
По этой формуле ни разу копейки не зависали, все в 0 всегда уходило. Или я как то не так тестировал?
приложил скрины. Сумма по партиям - 3350, куплено 12 шт. Продаем 12. В итоге 1 копейки не хватает до полной суммы себестоимости


Хм, что я делаю не так? Почему у меня нормально списывает?
Движение.Количество = Мин(Списать, ВыборкаДетальные.КоличествоОстаток);
Движение.Сумма = Движение.Количество * ВыборкаДетальные.СуммаОстаток / ВыборкаДетальные.КоличествоОстаток;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Гакусей от Июнь 08, 2016, 04:58:27 pm
как раз пишу эту часть в другой задаче:   
         Ксписанию=мин(Списать,Выборка.Количество);

   
   Если Ксписанию=Выборка.Количество Тогда
         СС=Выборка.Сумма;
      Иначе
            
         СС=Ксписанию/Выборка.Количество*Выборка.Сумма;
      КонецЕсли;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: rds92 от Июнь 08, 2016, 05:00:25 pm
как раз пишу эту часть:     
   Если Ксписанию=Выборка.Количество Тогда
            СС=Выборка.Сумма;
         Иначе
           
            СС=Ксписанию/Выборка.Количество*Выборка.Сумма;
         КонецЕсли;

Ксписанию = 1
Выборка.Количество = 1

Получаем

 Если 1=1 Тогда
           СС=Выборка.Сумма;
 Иначе
           СС=1/1*Выборка.Сумма; Это равнозначно 1 * Выборка.Сумма
КонецЕсли;

Не вижу смысла городить это условие, если эотт код отрабатывает нормально:
Движение.Количество = Мин(Списать, ВыборкаДетальные.КоличествоОстаток);
Движение.Сумма = Движение.Количество * ВыборкаДетальные.СуммаОстаток / ВыборкаДетальные.КоличествоОстаток;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 08, 2016, 05:01:52 pm
с копейками разобрался. спасибо, ребят.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: rds92 от Июнь 08, 2016, 05:02:34 pm
с копейками разобрался. спасибо, ребят.
В чем косяк был?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 08, 2016, 05:19:53 pm
с копейками разобрался. спасибо, ребят.
В чем косяк был?
косяк мой был в том, что от остатка суммы к списанию отнимал рассчитанную себестоимость. А надо отнимать сумму, которая уже в проводке. На всякий случай код

СебестоимостьСредняя = ?(НЕ Выборка.КолвоОст, 0, Выборка.СуммаОст / Выборка.КолВоОст);
ОсталосьСписатьКолво = Выборка.КоличествоДок;
ОсталосьСписатьСумма = ?(Выборка.КоличествоДок = Выборка.КолВоОст, Выборка.СуммаОст, СебестоимостьСредняя * Выборка.КоличествоДок);

ВыборкаНоменклатура = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ОсталосьСписатьКолво > 0 И ВыборкаНоменклатура.Следующий() Цикл
Проводка = Движения.РегистрБухгалтерии.Добавить();
Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Проводка.СчетКт = ПланыСчетов.Управленческий.Товары;
Проводка.СубконтоКт.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Проводка.СубконтоКт.СрокГодности = ВыборкаНоменклатура.СрокГодности;
Списывать = Мин(ОсталосьСписатьКолво, ВыборкаНоменклатура.КолвоОст);
Себестоимость = ?(ОсталосьСписатьКолво = ВыборкаНоменклатура.КолвоОст, ОсталосьСписатьСумма, СебестоимостьСредняя * Списывать);

Проводка.КоличествоКт = Списывать;
Проводка.Сумма   = Себестоимость;

ОсталосьСписатьКолво = ОсталосьСписатьКолво - Списывать;
ОсталосьСписатьСумма = ОсталосьСписатьСумма - Проводка.Сумма;

           КонецЦикла;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 09, 2016, 10:43:55 am
контрольный. гляньте кому не сложно, плз.
остался один вопрос - не формируются задачи автоматически. 2 раза перенастроил все. не понимаю почему
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Гакусей от Июнь 09, 2016, 11:06:56 am
В реквизите Адресации коряво связано- Пдоразделение с должностью. Наверное из-за этого нет задач
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Июнь 09, 2016, 11:09:36 am
контрольный. гляньте кому не сложно, плз.
остался один вопрос - не формируются задачи автоматически. 2 раза перенастроил все. не понимаю почему

Ошибка в настройке адресации в задаче, для подразделения указано - Измерение адресации: Должность
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 09, 2016, 11:18:20 am
спасибо. все взлетело ))
да эж, каркас билета сделал за полдня а на допиливание ушло еще 2 дня, правда отвлекался, но все же. Надеюсь, что к 6 билету будет попроще уже )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Михаил Проходцев от Июнь 21, 2016, 09:08:46 am
Ну вот и пришло время решать билеты на время. Первый пошел)) 4 часа 20 минут - на все задания, включая внесение тестовых данных, настройка отображения отчетов как в задании - считаю справился неплохо по времени, хотя билет, конечно, не самый трудный. Был бы очень признателен за конструктивную критику моего решения!
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Июнь 21, 2016, 01:45:53 pm
Ну вот и пришло время решать билеты на время. Первый пошел)) 4 часа 20 минут - на все задания, включая внесение тестовых данных, настройка отображения отчетов как в задании - считаю справился неплохо по времени, хотя билет, конечно, не самый трудный. Был бы очень признателен за конструктивную критику моего решения!

На мой взгляд, в целом все ок. Два момента только бросились в глаза:

1. В проведении расходной накладной строка 19 Движения.Записать(); точно не нужна. Она и не запишет ничего.

2. Зачем из модуля документа "Начисление зарплаты" в общий модуль передавать ссылку, а потом от ссылки читать из базы движения? Лишнее чтение из базы, в модуле документа есть универсальная коллекция Движения, имхо, лучшее эту коллекцию и передать (и из нее же взять ссылку на документ)

И самое главное - не сделали кнопку "Рассчитать" в документе НачислениеЗ/п, советую сделать - я попал на 2 балла из-за этой кнопки.
 
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freez1301 от Июнь 21, 2016, 03:59:43 pm
2SAM
видел пишут про эту кнопку на форуме, но ни в одном задании не встречал еще такого требования, да и в решениях ни у кого тоже не видел. В моем понимании она должна показать в таб. части результат? Грубо говоря провести документ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Михаил Проходцев от Июнь 21, 2016, 06:01:56 pm
Ну вот и пришло время решать билеты на время. Первый пошел)) 4 часа 20 минут - на все задания, включая внесение тестовых данных, настройка отображения отчетов как в задании - считаю справился неплохо по времени, хотя билет, конечно, не самый трудный. Был бы очень признателен за конструктивную критику моего решения!

На мой взгляд, в целом все ок. Два момента только бросились в глаза:

1. В проведении расходной накладной строка 19 Движения.Записать(); точно не нужна. Она и не запишет ничего.

2. Зачем из модуля документа "Начисление зарплаты" в общий модуль передавать ссылку, а потом от ссылки читать из базы движения? Лишнее чтение из базы, в модуле документа есть универсальная коллекция Движения, имхо, лучшее эту коллекцию и передать (и из нее же взять ссылку на документ)

И самое главное - не сделали кнопку "Рассчитать" в документе НачислениеЗ/п, советую сделать - я попал на 2 балла из-за этой кнопки.
SAM, во-первых, спасибо что и после сдачи появляетесь на этом форуме и помогаете тем, кто еще не получил сертификат.
По поводу замечаний, действительно в коде должен был указываться конкретный набор записей Движения.ТоварыНаСкладах.Записать(); Передача ссылки а не коллекции движений в общий модуль - в принципе так видел во многих решениях + Чистов именно так реализовывает в своих курсах, думаю это не принципиальный вопрос, буду уже делать так как набил руку.
А вот по поводу расчета интересное замечание, уточните, у Вас было прямо в условии задания текст про кнопку расчета  в форме документа? Или теперь это общее требование ко всем расчетным задачам?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Июнь 21, 2016, 07:15:49 pm
Движения.ТоварыНаСкладах.Записать();так тем более не нужно делать - это противоречит новой методике проведения, которую вы применяете. В данном случае надо сформировать движения, записать их и потом проверить на отрицательные остатки. Предварительно записывать пустые (очищенные) движения не нужно - это лишняя запись в базу.

По поводу кнопки "Рассчитать": у меня был на аттестации именно 1-й билет и в расчетной задаче был примерно такой текст (насколько вспомню):
Цитировать
В документе Начисление зарплаты на форме реализовать кнопку "Рассчитать" для предварительного заполнения результатов расчета в форме...
. Должен ли проводиться документ по этой кнопке, или нужно как то провести вычисления и заполнить столбец "Результат" на форме - тут я не могу подсказать, если бы знал - сделал бы на аттестации  ;D
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Михаил Проходцев от Июнь 22, 2016, 06:43:37 am
Движения.ТоварыНаСкладах.Записать();так тем более не нужно делать - это противоречит новой методике проведения, которую вы применяете. В данном случае надо сформировать движения, записать их и потом проверить на отрицательные остатки. Предварительно записывать пустые (очищенные) движения не нужно - это лишняя запись в базу.
Осмелюсь с Вами поспорить.
Перед записью пустого набора устанавливается свойство БлокироваДляИзмерения в Истина.
Движения.ОстаткиТоваров.БлокироватьДляИзменения=Истина;
Движения.ОстаткиТоваров.Очистить();

Здесь на одной из веток шло бурное обсуждение установки свойства БлокироватьДляИзменения в Истина и дальнейшая запись пустого набора. Это делается для того чтобы заблокировать регистр по тем позициям, что были в документе ранее (так как транзация может завершиться неуспешно и движения в регистре остануться старые, мы должны обеспечить блокировку и этих позиций)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: SAM от Июнь 22, 2016, 09:32:15 am
Движения.ТоварыНаСкладах.Записать();так тем более не нужно делать - это противоречит новой методике проведения, которую вы применяете. В данном случае надо сформировать движения, записать их и потом проверить на отрицательные остатки. Предварительно записывать пустые (очищенные) движения не нужно - это лишняя запись в базу.
Осмелюсь с Вами поспорить.
Перед записью пустого набора устанавливается свойство БлокироваДляИзмерения в Истина.
Движения.ОстаткиТоваров.БлокироватьДляИзменения=Истина;
Движения.ОстаткиТоваров.Очистить();

Здесь на одной из веток шло бурное обсуждение установки свойства БлокироватьДляИзменения в Истина и дальнейшая запись пустого набора. Это делается для того чтобы заблокировать регистр по тем позициям, что были в документе ранее (так как транзация может завершиться неуспешно и движения в регистре остануться старые, мы должны обеспечить блокировку и этих позиций)

Я руководствовался статьей Павла Чистова http://1c.chistov.pro/2013/07/blog-post_25.html (http://1c.chistov.pro/2013/07/blog-post_25.html) явно в статье нет ответа на Ваш вопрос, но есть ниже в комментариях. 
Вкратце: очищать движения, блокировать для изменения и записывать нужно в начале проведения по старой методике. По новой методике - формируете движения, устанавливаете БлокироватьДляИзменения=Истина и пишите. Движения, которые возможно были в базе до записи набора, тоже заблокируются.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Михаил Проходцев от Июнь 23, 2016, 10:03:10 am
Я руководствовался статьей Павла Чистова http://1c.chistov.pro/2013/07/blog-post_25.html (http://1c.chistov.pro/2013/07/blog-post_25.html) явно в статье нет ответа на Ваш вопрос, но есть ниже в комментариях. 
Вкратце: очищать движения, блокировать для изменения и записывать нужно в начале проведения по старой методике. По новой методике - формируете движения, устанавливаете БлокироватьДляИзменения=Истина и пишите. Движения, которые возможно были в базе до записи набора, тоже заблокируются.
Не нашел подтверждение своих слов. Так что судя по всему Вы правы - для новой методики проведения, не следуют записывать пустой набор записей, блокировка по удаленным позициям из документа будет осуществляться в дальнейшем при записи набора записей. Спасибо!
Название: Re: Билет 1. Спец по платформе V8
Отправлено: roxy_ от Август 05, 2016, 02:09:15 pm
Добрый день !
делала по материалам чистова контроль остатков , вроде бы все нормально , ошибок нет
но , при проведении документа нет предупреждений о том , что товара нет
хотя пытаюсь продать несуществующий товар
мб кто-то сталкивался с такой проблемой ?
прикладываю файл dt
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 05, 2016, 02:33:20 pm
Добрый день, roxy_ !
Посмотрел твое решение.
Ошибка была в том, что ты пишешь в регистр с видом движения "Приход" - а надо "Расход".
Название: Re: Билет 1. Спец по платформе V8
Отправлено: misev от Август 05, 2016, 03:24:40 pm
Ребят, проверьте, если кому не сложно, вроде бы все правильно работает, но вот эти вечные ньюансы все портят. (Нет кнопки рассчитать) Делала ее, когда решала задачи из билета по отдельности, с легкостью сделала, поэтому второй раз делать было просто влом)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: roxy_ от Август 05, 2016, 08:49:26 pm
Спасибо , freemaestro , что откликнулся
я поменяла , как ты советуешь
но , к сожалению у меня теперь ни один документ не проводится , в сообщениях ошибки числа намного больше , чем в приходной накладной   :(
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Август 05, 2016, 10:58:23 pm
Спасибо , freemaestro , что откликнулся
я поменяла , как ты советуешь
но , к сожалению у меня теперь ни один документ не проводится , в сообщениях ошибки числа намного больше , чем в приходной накладной   :(
Странно, прежде, чем добраться до сообщений, пришлось исправлять ошибки в коде.
Цитировать
Сообщение.Текст = "Не хватает товара" + Выборка.Материал.Представление +" не хватает "+ (-Выборка.КоличествоОстаток);
Что это такое у вас - Выборка.Материал.Представление? Как у вас вообще что-то проводится с таким кодом?  :-\
А когда ошибку поправил, и исправил в расходе вид движения на Расход, вроде бы недостача указывается верно, за исключением - расходная накладная 1 по времени раньше приходной, а недостаток выдает с учетом прихода. Подозреваю, что дело в оперативном проведении - поскольку расход сегодняшней датой, то программа пытается провести документ текущим временем.
Но плохо не это  :D , а то, что вы обрабатываете оперативное проведение, а на экзамене этого делать НЕ НАДО.
Недавно в "Результатах сдачи ..." писали, что, по крайней мере, за это делают замечание, т.к. по условиям экзамена остатки надо получать на момент проведения документа. Некоторые, кроме того, вообще запрещают оперативное проведение всех документов.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 06, 2016, 10:18:40 am
Добрый день, alex1248 !

Но плохо не это  :D , а то, что вы обрабатываете оперативное проведение, а на экзамене этого делать НЕ НАДО.
Недавно в "Результатах сдачи ..." писали, что, по крайней мере, за это делают замечание, т.к. по условиям экзамена остатки надо получать на момент проведения документа. Некоторые, кроме того, вообще запрещают оперативное проведение всех документов.  :)

Вот я хотел уточнить насчет оперативного проведения - это где-то прописано в официальных правилах, что оперативное проведение вообще не нужно обрабатывать ? Я к примеру, не увидел этого. И в курсах 1С по подготовке к экзамену этого нет, там обрабатывают преподаватели оперативное проведение.

На самом деле, я за то, чтобы его не обрабатывать, а вообще запретить - это упростило бы жизнь.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Август 06, 2016, 03:59:15 pm
Добрый день, alex1248 !

Но плохо не это  :D , а то, что вы обрабатываете оперативное проведение, а на экзамене этого делать НЕ НАДО.
Недавно в "Результатах сдачи ..." писали, что, по крайней мере, за это делают замечание, т.к. по условиям экзамена остатки надо получать на момент проведения документа. Некоторые, кроме того, вообще запрещают оперативное проведение всех документов.  :)

Вот я хотел уточнить насчет оперативного проведения - это где-то прописано в официальных правилах, что оперативное проведение вообще не нужно обрабатывать ? Я к примеру, не увидел этого. И в курсах 1С по подготовке к экзамену этого нет, там обрабатывают преподаватели оперативное проведение.

На самом деле, я за то, чтобы его не обрабатывать, а вообще запретить - это упростило бы жизнь.
Вот сообщение, где сказано (в самом конце), что за это делали замечания:
http://forum.chistov.pro/index.php?topic=993.msg47005#msg47005
Дальше обсуждали - это замечание основано на ошибке из перечня: "Если при проведении документа используются каким-то образом данные, считываемые из регистров, обязательно требуется предусмотреть получение таких данных на момент проведения документа". Эта ошибка = -1 балл. При обработке оперативного проведения как раз получаются данные НЕ на момент проведения документа.
По поводу запрета оперативного проведения - идея не нова, так делают много лет, я ее нарыл в сообщениях 2011-2012 годов; не читал, чтобы за это были замечания. Я сам на экз опер проведение запрещал во всех доках, но, по-моему, на это Гончаров просто не смотрел; в коде оперативное проведение я не обрабатывал, это Гончаров, естественно, видел, замечаний не было.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 06, 2016, 10:34:07 pm
Спасибо за ответ, alex1248 !

Полезная информация !
Название: Re: Билет 1. Спец по платформе V8
Отправлено: roxy_ от Август 08, 2016, 09:51:48 am
Спасибо за консультацию
поняла и исправила )
а можете какую-нибудь литературу или уроки подсказать , чтобы лучше в 1с разобраться ??
половину Радченко прорешала , но мало что запоминается  :(
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 08, 2016, 12:55:26 pm
Добрый день, roxy_ !

Ну такого специфического ничего и не посоветуешь здесь.

Первое - это учебная платформа 1С.
Там есть не только платформа, но и учебные материалы, книги.
Тот же Радченко там есть, "Руководство разработчика", "Руководство администратора".

Если брать конкретно подготовку к спецу по платформе -
то есть специализированные курсы от 1С именно по подготовке к этому экзамену.
Очно и дистанционно.

Ну и, конечно, продолжать решать задачи из сборника.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Noxie41 от Август 08, 2016, 01:56:15 pm
Спасибо за консультацию
поняла и исправила )
а можете какую-нибудь литературу или уроки подсказать , чтобы лучше в 1с разобраться ??
половину Радченко прорешала , но мало что запоминается  :(

1. 1C:Предприятие 8.3. Практическое пособие разработчика http://v8.1c.ru/metod/books/book.jsp?id=441
2. Реализация прикладных задач в системе «1С:Предприятие 8.2» http://v8.1c.ru/metod/books/book.jsp?id=268
3. Профессиональная разработка в системе 1С:Предприятие 8 http://v8.1c.ru/metod/books/book.jsp?id=401
4. Курсы от Евгения Гилева и компании. Иногда решение от Евгения не совпадает с решение принимающих экзамен. Там можно будет и отыскать бесплатные курсы по 1С (Программирование в 1С - за 21 день).
5. Читать статьи на ИТС
6. Курсы от 1С (очные, веб) никто не отменял.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Август 16, 2016, 04:56:19 pm
Посмотрел последние решение задач по БУ.
Вопрос: Для чего 2 левых соединения используются?
(В одном получение себестоимости, а во втором количество и сумму в разрезе номенклатуры и срока годности?)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 17, 2016, 07:54:09 am
Посмотрел последние решение задач по БУ.
Вопрос: Для чего 2 левых соединения используются?
(В одном получение себестоимости, а во втором количество и сумму в разрезе номенклатуры и срока годности?)


Добрый день, xXeNoNx!

А ты можешь текст запроса привести?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Август 17, 2016, 10:53:53 am
А ты можешь текст запроса привести?

Вот

ВЫБРАТЬ
   ПРЕДСТАВЛЕНИЕ(ВТ_Товары.Номенклатура),
   ВТ_Товары.Номенклатура КАК Номенклатура,
   РБОстатокКолво.Субконто2 КАК СрокГодности,
   ВТ_Товары.Количество КАК КоличествоДок,
   ЕСТЬNULL(РБОстатокКолво.КоличествоОстатокДт, 0) КАК КолвоОст,
   ЕСТЬNULL(РБОстатокСумма.СуммаОстатокДт, 0) КАК СуммаОст
ИЗ
   ВТ_Товары КАК ВТ_Товары
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Остатки(
            &Момент,
            Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары),
            &ВидыСубконто,
            Субконто1 В
               (ВЫБРАТЬ
                  ВТ_Товары.Номенклатура
               ИЗ
                  ВТ_Товары КАК ВТ_Товары)) КАК РБОстатокКолво
      ПО ВТ_Товары.Номенклатура = РБОстатокКолво.Субконто1
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Остатки(
            &Момент,
            Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары),
            &ВидыСубконто,
            Субконто1 В
               (ВЫБРАТЬ
                  ВТ_Товары.Номенклатура
               ИЗ
                  ВТ_Товары КАК ВТ_Товары)) КАК РБОстатокСумма
      ПО (ВТ_Товары.Номенклатура = РБОстатокКолво.Субконто1)

УПОРЯДОЧИТЬ ПО
   СрокГодности
ИТОГИ
   МАКСИМУМ(КоличествоДок),
   СУММА(КолвоОст),
   МАКСИМУМ(СуммаОст)
ПО
   Номенклатура
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 17, 2016, 11:44:44 am
Посмотрел последние решение задач по БУ.
Вопрос: Для чего 2 левых соединения используются?
(В одном получение себестоимости, а во втором количество и сумму в разрезе номенклатуры и срока годности?)


Добрый день, xXeNoNx!

А ты можешь текст запроса привести?

Если честно, xXeNoNx, не вижу причин делать 2 левых соединения - можно обойтись и одним. А почему бы не спросить автора решения, может, у него был какой-то "хитрый план" ? :-) Но в любом случае, если можно обойтись одним левым соединением вместо двух - надо обходиться одним.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 17, 2016, 02:34:40 pm
Это делается потому что на Субконто2 нет суммового учета. Хотя можно все сделать одним соединением. Система создаст еще одну строчку и там будет сумма. Правда потом в обработке проведения придется писать Если ВЫборкаДетЗап.КолвоОстаток=0 Тогда Продолжить. В плане эффективности без понятия, что быстрее. Наверное все таки одно соединение. Хотя почему то многие делают двумя. Даже те кто все сдал и помогают советами здесь.
Этот экзамен очень странный
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Август 17, 2016, 02:45:33 pm
Правда потом в обработке проведения придется писать Если ВЫборкаДетЗап.КолвоОстаток=0 Тогда Продолжить.

Зачем? Все итогами решается..
Вот мое решение.
ОУ + БУ(пока без отчета)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 17, 2016, 03:13:10 pm
косячно сделано. зачем итоги по срокамгодности? у вас в приходе со сроком годности 2 августа 1 шт товара, а списывается две.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 17, 2016, 03:22:43 pm
есть тут профи? кто в курсе почему все соединяются с двумя таблицами, а не с одной? Не хотелось бы чтоб ответ на этот вопрос мне сказали на экзамене
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 18, 2016, 09:28:20 am
есть тут профи? кто в курсе почему все соединяются с двумя таблицами, а не с одной? Не хотелось бы чтоб ответ на этот вопрос мне сказали на экзамене

Анатолий, скажите, зачем профи ходить на этот форум?  :)
Здесь в основном такие же готовящиеся.
Наша задача - помочь друг другу, так как в одиночку вообще некому "ткнуть носом"
даже в явные ошибки.

Вы имеете в виду решение xXeNoNx, которое он выложил?
Посмотрю, постараюсь ответить.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Noxie41 от Август 18, 2016, 09:37:49 am
есть тут профи? кто в курсе почему все соединяются с двумя таблицами, а не с одной? Не хотелось бы чтоб ответ на этот вопрос мне сказали на экзамене

Как мне кажется, здесь лишнее одно Левое соединение.  КоличествоОстатокДт, СуммаОстатокДт можно получить используя только одно соединение с РегистрБухгалтерии.Остатки(). Параметры для таблиц остатков одинаковые, смысл тогда использовать 2 соединения я не вижу.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Август 18, 2016, 09:48:17 am
 
есть тут профи? кто в курсе почему все соединяются с двумя таблицами, а не с одной? Не хотелось бы чтоб ответ на этот вопрос мне сказали на экзамене

Анатолий, xXeNoNx одно соединение в своем решении использовал. Значит, надо смотреть только на запрос, который выше приводился на этом форуме.

Там соединение с двумя виртуальными таблицами, у которых одинаковые параметры.

Тут я согласен с Noxie41, и тоже, не вижу смысла делать 2 левых соединения.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Август 18, 2016, 09:48:46 am
Посмотрел в "запасниках" - одно соединение и Итоги. Вроде, всё считалось корректно.
Не вижу смысла использовать 2 соединения.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Август 18, 2016, 04:48:21 pm
Собственно прошлый вариант был не очень удачным.
Вот исправленная версия. Просьба прокомментировать.
Использую одно левое соединение.
Остается вопрос в корректности решения
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 18, 2016, 05:21:13 pm
я щас подумал, тут вроде практически все задачи можно решить одним соединением, все делают двумя. и пятый билет и шестой. Двумя таблица проще получается итоговая. на экзамене смотрят два соединения или одно?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 18, 2016, 05:36:43 pm
1)автоупорядочивание не стоит.
2)попробуйте ввести срок годности 05.01.2015 и 01.01.2016. Что раньше спишется.
Расчет себестоимости для меня тяжеловато написан, лень разбирать
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Август 18, 2016, 05:56:00 pm
1)автоупорядочивание не стоит.
2)попробуйте ввести срок годности 05.01.2015 и 01.01.2016. Что раньше спишется.
Расчет себестоимости для меня тяжеловато написан, лень разбирать

Списывает корректно, разные даты пробовал(точки спасают).
Не понимаю для чего делать автоупорядочивание?
Мне кажется что сортировать по ссылке не совсем корректно, ведь эти сроки могут вводится в произвольном виде, особенно близлежащие.
Максимум что можно сделать, это упорядочить по вложенной дате (сроку годности).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 18, 2016, 06:04:33 pm
проделайте это:
1в расходной накладной товар водка сделайте 1шт количество.
посмотрите товар с каким сроком списался.
2в приходной накладной там где срок 02.08.16 (тот который списался) поменяйте (не выбрать другой, а изменить этот срок - наименование и дату) на 07.08.16. P.s. Наименование короч поменяйте у 02.08.16 на 07.08.16.
перепроведите приходную и расходную. посмотрите что какой срок спишется
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 18, 2016, 06:06:35 pm
за 2 соединения вместо одного на экзамене наказывают?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Август 18, 2016, 07:01:05 pm
Про наименование согласен, я выше предложил сортировку по дате, которая в этом элементе.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 18, 2016, 07:21:05 pm
зачем??? надо поставить галочку автоупорядочивание - чтоб сортировался по наименованию, а не по ссылке. и даты вводить надо не 01.12.2016, а 2016,12,01. в Справочник СрокиГодности создать форму и в модуле формы:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
   Объект.Наименование = Формат(Объект.СрокГодности,"ДФ=yyyy-MM-dd");
КонецПроцедуры

Наименование сделать полеНадписи.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 18, 2016, 07:23:36 pm
меня больше интересует мнение экзаменаторов про 2 соединения вместо одного и
кто знает, что если более сложные задачи типа билет 5 и 6 решать одним соединением.
мне двумя проще, т.к. рука набита уже и таблица итоговая проще получается
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Август 18, 2016, 07:28:33 pm
Вроде как в рекомендации к сдаче экзамену есть пункт про упрощение решения...
И Гончаров об этом говорил.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Август 18, 2016, 07:35:47 pm
за 2 соединения вместо одного на экзамене наказывают?
На мой взгляд, в данном случае можно применить снижение оценки "за неэффективное решение" (если оно таково, я думаю, так и есть, но ошибаться могу).
А вообще, надо стараться делать лучше всё решение, потому что на экзамене может не хватить времени, что-то упустить, и т.д. и т.п., и минусы могут накопиться довольно быстро. Если на первый взгляд будет не очевидно, ставить троячок или нет, то экзаменатор вполне может принять решение на основании какого-то не очень существенного нюанса, на который не обратил бы внимание при почти идеальном решении, и на которое не было бы смысла смотреть при большом количестве грубых ошибок. В частности, его вопрос, и молчание в ответ сдающего будет трактоваться как повод для снижения оценки (а правильный ответ вы можете так и не узнать).
И еще, зачем смотрите все решения? Тут же большинство выкладывают не для образца, а чтобы их проверили, и ошибок там зачастую хватает на несколько двоек в каждой задаче.  :)
В этой ветке можно смотреть у зоркого (zorky), лучше в последних вариантах, еще кто-то был позже, но я не помню (редко бывал), а вы (Анатолий) можете помнить, кто недавно сдал быстро и успешно. А вот вспомнил одного из последних, как не помнить - Гакусей.  :)
Где-то выкладывал решения SAE, многие их хвалили одно время, наверное в Результатах сдачи, но наверняка не скажу.
Лично я разбирался с непонятками по решениям от sada. Он выкладывал примерно в 2012 году в ветках по соответствующим задачам из Сборника (на них есть ссылки в ветке Новый рубрикатор). Так вот, из того, что я смотрел, не помню вообще таких соединений, о каких вы пишете.

P.S.  И у Джонса, ТС всех этих веток, должно быть норм в последних вариантах.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Август 18, 2016, 07:41:07 pm
Вроде как в рекомендации к сдаче экзамену есть пункт про упрощение решения...
И Гончаров об этом говорил.
В данном случае имеется ввиду упрощение моделируемой ситуации.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Август 18, 2016, 07:42:26 pm
что думаете если билет 5 решать одним соединением с бух.регистром, а не двумя?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: MadRave от Сентябрь 05, 2016, 03:26:54 pm
Буду рад критике :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Сентябрь 09, 2016, 04:41:51 pm
попался этот билет. все сделал кроме з/п. Никак не хотела проводиться НачислениеЗарплаты.
Вылезла ошибка :
-Недопустимое значение параметра (параметр номер '2') (Необходим пересчет фактического периода действия)'
на: Движения.ДопНачисления.Записать(,Истина);

Я так и не успел разобраться что ей нужно. Первоначальную запись сделал. Вроде все как обычно
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Alyx Ruby от Сентябрь 09, 2016, 05:55:36 pm
Анатолий, ты про экзамен? Если да, то и у меня в 1 билете была ошибка с пустой партией, с которой я боролась , потеряв драгоценное время (хотя все заполнялось прекрасно, видимо глючная база или платформа)...  :D В итоге не зачет!  :-\ Такое впечатление, что это делается специально! А люди от нервов теряются и тратят драгоценное время и деньги впустую!  >:(
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Сентябрь 09, 2016, 06:36:16 pm
у меня тоже все рассчиталось норм. В режиме отладки через "Вычислить выражение" проверял - все нормально заполнено. НО не проводится. Выше названная ошибка. До сих пор не пойму из-за чего. Может хоть когда результат экзамена пришлют, скажут что это. Хотя вряд ли. Там конвейер - не работает - два, дальше думаю причины смотреть даже не будут.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Сентябрь 28, 2016, 01:05:39 am
почему все используют в запросе:
РАЗНОСТЬДАТ(НачислениеЗарплатыДопНачисления.Сотрудник.ДатаПриема, &ПериодРегистрации, ГОД)
//если от 2016.01.01 вычесть 2015.12.31 то вернется 1 год.
//////////////////////////////////////////////////////
Никто не знает:
-В условии сказано что отчет должен быть строго за месяц определенного года (январь,февраль). Никак попроще это нельзя решить, не создавая формуОтчета и реквизитов? Нет же никаких хитрых настроек?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: lanky от Сентябрь 28, 2016, 01:24:51 pm
попался этот билет. все сделал кроме з/п. Никак не хотела проводиться НачислениеЗарплаты.
Вылезла ошибка :
-Недопустимое значение параметра (параметр номер '2') (Необходим пересчет фактического периода действия)'
на: Движения.ДопНачисления.Записать(,Истина);

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

Из синтакс-помощника

"<ТолькоЗапись> (необязательный)

Тип: Булево.
Определяет режим записи набора. Истина - производится только запись набора; Ложь - производится пересчет фактического периода действия и ввод записей перерасчетов.
По умолчанию при записи набора производится не только собственно запись, но и пересчет периода действия (для регистров расчета с поддержкой периода действия) и ввод записей перерасчета (если необходимо).
Внимание! Значение Истина для параметра можно задавать только при записи уже записанного набора записей и только в том случае, если в наборе записей изменялись только ресурсы и реквизиты. Если в наборе записей изменялись любые другие поля записей набора, то запись набора с параметром, равным Истина не выполняется и выдается сообщение об ошибке.
Значение по умолчанию: Ложь. "

Необходимо было писать так
Движения.ДопНачисления.Записать();
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Сентябрь 28, 2016, 02:45:00 pm
почему все используют в запросе:
РАЗНОСТЬДАТ(НачислениеЗарплатыДопНачисления.Сотрудник.ДатаПриема, &ПериодРегистрации, ГОД)
//если от 2016.01.01 вычесть 2015.12.31 то вернется 1 год.
че сразу все-то? я наверное дни/365 использовал с округлением куда надо. Или месяцы / 12, т.к. в днях может быть проблема с 365/366
Никто не знает:
-В условии сказано что отчет должен быть строго за месяц определенного года (январь,февраль). Никак попроще это нельзя решить, не создавая формуОтчета и реквизитов? Нет же никаких хитрых настроек?
Ни в одном отчете не создавал форму отчета, отчеты в этих задачах все простые. Сложные вот только начал делать, по спецзаказам от бухов )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Сентябрь 28, 2016, 08:06:21 pm
да не. я все правильно написал. просто в одном месте невнимательно код напечатал, и даже мысли не возникло что там косяк может быть. Я когда набор заполнял в цикле: вместо Движение.Результат написал Движение.Регистратор и из-за этого такая ошибка вылетела. Там времени совсем мало. Монитор маленький, неудобный.


попался этот билет. все сделал кроме з/п. Никак не хотела проводиться НачислениеЗарплаты.
Вылезла ошибка :
-Недопустимое значение параметра (параметр номер '2') (Необходим пересчет фактического периода действия)'
на: Движения.ДопНачисления.Записать(,Истина);

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

Из синтакс-помощника

"<ТолькоЗапись> (необязательный)

Тип: Булево.
Определяет режим записи набора. Истина - производится только запись набора; Ложь - производится пересчет фактического периода действия и ввод записей перерасчетов.
По умолчанию при записи набора производится не только собственно запись, но и пересчет периода действия (для регистров расчета с поддержкой периода действия) и ввод записей перерасчета (если необходимо).
Внимание! Значение Истина для параметра можно задавать только при записи уже записанного набора записей и только в том случае, если в наборе записей изменялись только ресурсы и реквизиты. Если в наборе записей изменялись любые другие поля записей набора, то запись набора с параметром, равным Истина не выполняется и выдается сообщение об ошибке.
Значение по умолчанию: Ложь. "

Необходимо было писать так
Движения.ДопНачисления.Записать();
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Сентябрь 28, 2016, 09:19:13 pm
никто не смог сделать чтоб отчет только за месяц формировался? Можно еще один параметр добавить Месяц. и его подставлять в параметры которые в запросе. Как сделать чтоб в отчете 01.05.2016 заменялось на май 2016.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Сентябрь 28, 2016, 09:20:19 pm
а все. не надо. разобрался
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Анатолий от Сентябрь 29, 2016, 01:14:13 am
интересно на практике бизнес-процессы кто-нибудь применяет? Ясно же что этого недостаточно для практического применения. Что еще нужно доработать (например необходимо чтоб Жупиков не мог нажать "Выполнено,закрыть" на задаче для Лоханкиной и т.д.)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Пётр от Сентябрь 29, 2016, 02:43:43 pm
Добрый день!
Прошу пояснить кто знает)) Что за волшебная кнопка рассчитать о которой пишут?

Я думал что это кнопка, должна пере провести документы которые влияют на сформированную премию. В задание (Механизм перерасчетов в рамках данной задачи использовать не надо) 
Название: Re: Билет 1. Спец по платформе V8
Отправлено: GH0STexe от Сентябрь 29, 2016, 02:55:48 pm
Добрый день!
Прошу пояснить кто знает)) Что за волшебная кнопка рассчитать о которой пишут?

Я думал что это кнопка, должна пере провести документы которые влияют на сформированную премию. В задание (Механизм перерасчетов в рамках данной задачи использовать не надо)
А как между собой связаны кнопка "Рассчитать" и механизм перерасчетов? Я что то не понял мысли
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Пётр от Сентябрь 29, 2016, 03:09:27 pm
Добрый день!
Прошу пояснить кто знает)) Что за волшебная кнопка рассчитать о которой пишут?

Я думал что это кнопка, должна пере провести документы которые влияют на сформированную премию. В задание (Механизм перерасчетов в рамках данной задачи использовать не надо)
А как между собой связаны кнопка "Рассчитать" и механизм перерасчетов? Я что то не понял мысли

Ну я думал получить данные для перерасчета, и пере провести доки..
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 06, 2016, 02:56:08 pm
Хотел бы поделиться своими соображениями по поводу использования Старого или Нового метода учета остатков при списании.

Структура для ОУ:
2 Регистра:
1. "Остатки товаров"
изм: Номенклатура, склад
рес: Количество

2. "Стоимость товаров"
изм: Номенклатура, Партия
Рес: Количество, Стоимость
(Из условия задачи, себестоимость не учитывается в разрезе складов т.е. Остатки списываем со склада а себестоимость по учетной политике, даже если склад получается разным)


Мой листинг модуля документа РасходнаяНакладная для ОУ:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Метод = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Новый Граница(МоментВремени())).МетодСписания; // быстрее в 2 раза чем через запрос

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

//- Получить учетную политику



//+ Получаем номенклатуру без услуг Делаем движения по отаткам

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
| РасходнаяНакладнаяТовар.Номенклатура,
| СУММА(РасходнаяНакладнаяТовар.Количество) КАК Количество
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
| Документ.РасходнаяНакладная.Товар КАК РасходнаяНакладнаяТовар
|ГДЕ
| РасходнаяНакладнаяТовар.Ссылка = &Ссылка                     
| И НЕ РасходнаяНакладнаяТовар.Номенклатура.Услуга
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовар.Номенклатура,
| РасходнаяНакладнаяТовар.Ссылка.Склад
|
| ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Номенклатура,
| ДокТЧ.Количество КАК Количество
|ИЗ
| ДокТЧ КАК ДокТЧ";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.ВыполнитьПакет();
СписатьОстатки = РезультатЗапроса[1].Выбрать();

Движения.ОстаткиТоваров.Записывать = Истина;
Движения.ОстаткиТоваров.Очистить();
Пока СписатьОстатки.Следующий() Цикл
Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = СписатьОстатки.Номенклатура;
Движение.Количество = СписатьОстатки.Количество;
КонецЦикла;

Движения.ОстаткиТоваров.БлокироватьДляИзменения = Истина;
Движения.Записать();

//- Получаем номенклатуру без услуг Делаем движения по отаткам


//+ Проверяем отриц остатки

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

Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ТочкаИтогов", Новый Граница(МоментВремени(), ВидГраницы.Включая));

ПакетРезультатов = Запрос.ВыполнитьПакет();
РезультатЗапроса = ПакетРезультатов[0];

Если НЕ РезультатЗапроса.Пустой() Тогда
Отказ = Истина;

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Мало товара " + Выборка.НаименованиеПолное + " на складе - "+ Склад +" нужно еще " + (-Выборка.КоличествоОстаток);
Сообщение.Сообщить();
КонецЦикла; 
КонецЕсли;

Если Отказ Тогда
Возврат;
КонецЕсли;

//- Проверяем отриц остатки


//+ Блокировка Создаем движения в регистре партий

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.СтоимостьТоваров");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = ПакетРезультатов[1] ;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();

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

Запрос.Текст = "ВЫБРАТЬ
| ДокТЧ.Номенклатура КАК Номенклатура,
| ДокТЧ.Количество КАК Количество,
| СтоимостьТоваров.Партия,
| СтоимостьТоваров.КоличествоОстаток,
| СтоимостьТоваров.СтоимостьОстаток
|ИЗ
| ДокТЧ КАК ДокТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьТоваров.Остатки(
| &ТочкаИтоговДляСебестоимости,
| Номенклатура В
| (ВЫБРАТЬ
| ДокТЧ.Номенклатура
| ИЗ
| ДокТЧ КАК ДокТЧ)) КАК СтоимостьТоваров
| ПО ДокТЧ.Номенклатура = СтоимостьТоваров.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| СтоимостьТоваров.Партия.МоментВремени " + Порядок +"
|ИТОГИ
| МИНИМУМ(Количество)
|ПО
| Номенклатура";

Запрос.УстановитьПараметр("ТочкаИтоговДляСебестоимости", МоментВремени());

Движения.СтоимостьТоваров.Очистить();

РезультатЗапроса = Запрос.Выполнить();
ВыборкаТовар = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаТовар.Следующий() Цикл

ОсталосьСписать = ВыборкаТовар.Количество;

ВыборкаПартия = ВыборкаТовар.Выбрать();
Пока ВыборкаПартия.Следующий() И ОсталосьСписать <> 0 Цикл

Списать = МИН(ОсталосьСписать, ВыборкаПартия.КоличествоОстаток);

Движение = Движения.СтоимостьТоваров.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаПартия.Номенклатура;
Движение.Партия = ВыборкаПартия.Партия;
Движение.Количество = Списать;
Движение.Стоимость = Списать / ВыборкаПартия.КоличествоОстаток * ВыборкаПартия.СтоимостьОстаток;

ОсталосьСписать = ОсталосьСписать - Списать;
КонецЦикла;

КонецЦикла;

Движения.СтоимостьТоваров.Записывать = Истина;

//- Блокировка Создаем движения в регистре партий
КонецПроцедуры

Короткий план:
1. Получаем учетную политику на тек момент.
2. Запросом получаем список номенклатуры без услуг. А так же сразу же создаем индексированную временную таблицу для последующих запросов. Делаем движения по остаткам товаров.
3. Получаем из Регистра Остатки товаров записи с отрицательными остатками, если записи есть - отмена транзакции иначе продолжаем
4. Блокируем регистр Стоимость товаров по номенклатуре. Читаем регистр по учет политике, делаем движения, записываемся.

Теперь нюансы:
1. В этой задаче обязателен запрос на выборку номенклатуры без услуг.
Обращение через точку в цикле - ошибка! При получении значения через точку мы не только получаем нужное значение но и все другие реквизиты.
2. По совету коллег – не использовать метод "Сообщить("")" т.к. он плохо работает в Web интерфейсе, использовать "СообщениеПользователю"

3. А теперь самое интересное, почему новая методика а не старая.
За образец "Старого" решения я взял решение от Alex1248, убрал в нем все движения/блокировки, все что относится к бухгалтерским задачам и начал замеры производительности.
Результаты:
Производительность моего решения показала лучший результат при 600+ записей в Табличной части документа (600+ одинаковых номенклатур в ТЧ). Что дает нам понять, при росте заполнености базы мое решение будет работать в разы быстрее. (При 1000 записей в ТЧ производительность различалась на 40% в мою пользу).
Как итог: Запись происходит быстрее, блокировки короче.

Код Alex1248 с которым сравнивал:
Процедура ОбработкаПроведения(Отказ, Режим)

Метод = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Дата).Метод;

Если ЗначениеЗаполнено(Метод) Тогда
Если Метод = Перечисления.УчетнаяПолитика.ЛИФО Тогда
Порядок = " Убыв";
Иначе
Порядок = "";
КонецЕсли;
Иначе
Сообщить("Заполните метод списания!");
Отказ = Истина;
Возврат;
КонецЕсли;

// регистр ОстаткиНоменклатуры Расход
Движения.ОстаткиНоменклатуры.Записывать = Истина;

// регистр Себестоимость Расход
Движения.Себестоимость.Записывать = Истина;

// регистр бухгалтерии
//Движения.РегистрБухгалтерии.Записывать = Истина;

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

ЭлБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
ЭлБлокировки.УстановитьЗначение("Склад", Склад);
Блокировка.Заблокировать();


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад,
| СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
| СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
|ПОМЕСТИТЬ ТчДок
|ИЗ
| Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
| И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Услуга = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТчДок.Склад,
| ТчДок.Номенклатура КАК Номенклатура,
| СебестоимостьОстатки.Партия,
| ТчДок.Количество КАК КолДок,
| ЕСТЬNULL(СебестоимостьОстатки.КолвоОстаток, 0) КАК КолОст,
| ЕСТЬNULL(СебестоимостьОстатки.СебестоимостьОстаток, 0) КАК СумОст,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КолСклад
|ИЗ
| ТчДок КАК ТчДок
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &Момент,
| (Склад, Номенклатура) В
| (ВЫБРАТЬ
| ТчДок.Склад,
| ТчДок.Номенклатура
| ИЗ
| ТчДок КАК ТчДок)) КАК ОстаткиНоменклатурыОстатки
| ПО ТчДок.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
| И ТчДок.Склад = ОстаткиНоменклатурыОстатки.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Себестоимость.Остатки(
| &Момент,
| Номенклатура В
| (ВЫБРАТЬ
| ТчДок.Номенклатура
| ИЗ
| ТчДок КАК ТчДок)) КАК СебестоимостьОстатки
| ПО ТчДок.Номенклатура = СебестоимостьОстатки.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| СебестоимостьОстатки.Партия.МоментВремени"  + Порядок + "
|ИТОГИ
| МАКСИМУМ(КолДок)
|ПО
| Номенклатура";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Момент", МоментВремени());

//Движения по регистрам накопления
Пакет = Запрос.ВыполнитьПакет();
Результат = Пакет[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Результат.Следующий() Цикл

Выборка = Результат.Выбрать();
Остаток = Результат.КолДок;

Пока Выборка.Следующий() И Остаток > 0 Цикл

Если Выборка.КолДок > Выборка.КолСклад Тогда
Сообщить("Товара не хывтает");
Отказ = Истина;
Возврат;
КонецЕсли;

//Остатки
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = мин(Выборка.КолОст,Остаток);

//Себестоимость
Движение = Движения.Себестоимость.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Колво = мин(Выборка.КолОст,Остаток);
Движение.Себестоимость = ?(Выборка.КолОст = 0,0, Движение.Колво * Выборка.СумОст / Выборка.КолОст);

Остаток = Остаток - Движение.Колво;
КонецЦикла;

КонецЦикла;
КонецПроцедуры


Кстати
РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Новый Граница(МоментВремени())).МетодСписания;Работает быстрее чем через запрос в 2 раза. но разница в 0.0015 секунды (0.0030 против 0.0015).

Готов услышать критику и замечания.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kuzyara от Октябрь 06, 2016, 05:22:34 pm
1. В этой задаче обязателен запрос на выборку номенклатуры без услуг.
интересно, зачем тогда про них в условии говорится ;)
Обращение через точку в цикле - ошибка!
а если еще и понимать отличия объектной модели данных от табличной... ???
2. По совету коллег – не использовать метод "Сообщить("")"
ох уж эти вредные советы :D
плохо работает в Web интерфейсе
1с вообще плохо работает в веб-интерфейсе  ;D
Производительность моего решения показала лучший результат
только преподу этого не ляпни ???
Готов услышать критику и замечания.
комментарии повторяешь по два раза, по два раза :-X
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 06, 2016, 05:45:00 pm
плохо работает в Web интерфейсе
1с вообще плохо работает в веб-интерфейсе  ;D
Производительность моего решения показала лучший результат
только преподу этого не ляпни ???

1. В целом она неплохо справляется с Web интерфейсом для определенных задач. Только одно но, самая стабильная и функциональная 1с в Вебе получается при запуске в IE. (К примеру для работы(загрузки) файлов необходимо использовать только IE)

2. Как я понял из комментариев сдававших то главная их ошибка при сдаче, они не уверены в своей правоте потому что сделали "Как все", "Так нам на курсах говорили" и т.д. Здесь я конкретно взял два решения, и сделал замер производительности. И, пока что, я уверен что мое решение получилось более эффективным.

Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 06, 2016, 06:04:59 pm
И, пока что, я уверен что мое решение получилось более эффективным.
Поскольку сделано на основе моего решения, тоже прокомментирую. Увы, но новая методика в этой задаче получит -1 балл, почти наверняка. Уверенность нужна не в тех вопросах, по которым у экзаменаторов есть однозначное мнение (именно поэтому мне пришлось позже поменять своё отношение к этому пунктику).

По поводу Сообщить, даже не знаю, откуда оно в моем решении ). Видимо решение было выложено в начале подготовлено. Да, крайне нежелательно его использовать. Именно под несоответствие веб-интерфейсу и будет подведено, и штрафные баллы конкретно указаны за это. Так что только СообщениеПользователю.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Октябрь 06, 2016, 11:32:02 pm
И, пока что, я уверен что мое решение получилось более эффективным.
Поскольку сделано на основе моего решения, тоже прокомментирую. Увы, но новая методика в этой задаче получит -1 балл, почти наверняка. Уверенность нужна не в тех вопросах, по которым у экзаменаторов есть однозначное мнение (именно поэтому мне пришлось позже поменять своё отношение к этому пунктику).

По поводу Сообщить, даже не знаю, откуда оно в моем решении ). Видимо решение было выложено в начале подготовлено. Да, крайне нежелательно его использовать. Именно под несоответствие веб-интерфейсу и будет подведено, и штрафные баллы конкретно указаны за это. Так что только СообщениеПользователю.

Добрый день, alex1248 !

Поясните, пожалуйста, про -1 балл. За что?



Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Октябрь 07, 2016, 05:26:11 am
Поясните, пожалуйста, про -1 балл. За что?
За "использование менее эффективной методики проведения документов".
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kuzyara от Октябрь 07, 2016, 07:18:58 am
Читаю методику.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Мало товара " + Выборка.НаименованиеПолное + " на складе - "+ Склад +" нужно еще " + (-Выборка.КоличествоОстаток);
Сообщение.Сообщить();
Без ключа данных эти три строки абсолютно идентичны методу:
Сообщить("Мало товара " + Выборка.НаименованиеПолное + " на складе - "+ Склад +" нужно еще " + (-Выборка.КоличествоОстаток));, а по сему использовать этот объект для такого сообщения бессмысленно, не?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kuzyara от Октябрь 07, 2016, 11:24:30 am
Код Alex1248:
Процедура ОбработкаПроведения(Отказ, Режим)
// ...

// регистр ОстаткиНоменклатуры Расход
Движения.ОстаткиНоменклатуры.Записывать = Истина;

// регистр Себестоимость Расход
Движения.Себестоимость.Записывать = Истина;

// регистр бухгалтерии
//Движения.РегистрБухгалтерии.Записывать = Истина;

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

ЭлБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
ЭлБлокировки.УстановитьЗначение("Склад", Склад);
Блокировка.Заблокировать();


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ остатки";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Момент", МоментВремени());

//Движения по регистрам накопления
Пакет = Запрос.ВыполнитьПакет();
Почему нет Движения.ОстаткиНоменклатуры.Записать() перед блокировкой, ведь тогда на момент запроса в итогах мешаются старые движения документа?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 07, 2016, 11:43:19 am
Код Alex1248:
Процедура ОбработкаПроведения(Отказ, Режим)
// ...

// регистр ОстаткиНоменклатуры Расход
Движения.ОстаткиНоменклатуры.Записывать = Истина;

// регистр Себестоимость Расход
Движения.Себестоимость.Записывать = Истина;

// регистр бухгалтерии
//Движения.РегистрБухгалтерии.Записывать = Истина;

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

ЭлБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
ЭлБлокировки.УстановитьЗначение("Склад", Склад);
Блокировка.Заблокировать();


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ остатки";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Момент", МоментВремени());

//Движения по регистрам накопления
Пакет = Запрос.ВыполнитьПакет();
Почему нет Движения.ОстаткиНоменклатуры.Записать() перед блокировкой, ведь тогда на момент запроса в итогах мешаются старые движения документа?

Не обращайте внимания на код Алекса, он не эталонный, тем более он "устаревший". Я брал его решение просто для примера "Старого" метода что бы провести замер производительности.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Октябрь 11, 2016, 12:42:51 pm
моё решение
Буду рад критике
 :D

Обновлено: http://forum.chistov.pro/index.php?topic=3638.msg48933#msg48933
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 11, 2016, 03:28:47 pm
Все, на этом я собираюсь остановиться.

Потратил еще 2 дня на разбор и поиск информации по вопросы Старый/Новый метод учета.
В прошлом, я ошибся, положившись на решение от Алекса которое нашел. И толком его не проверял на "оптимальность". И вот, Индексация не сделана, движения не чистятся, в общем доработал все по новой. Вынес запрос на Номенклатуру без услуг до блокировок, что бы Услуги в регистрах не блокировать.

Результаты оказались менее впечатляющими   :-[ .

Производительность Старого метода:
Кол-во записей в документе: 3
Время выполнения: ~0.048 секунды.

Кол-во записей в документе: 1000
Время выполнения: ~1.2 секунды

Производительность Нового метода:
Кол-во записей в документе: 3
Время выполнения: ~0.040 секунды.

Кол-во записей в документе: 1000
Время выполнения: ~1.1 секунда

Т.е. "новый" метод работает на 10-20% быстрее чем "Старый".
Однако, хотел бы сделать акцент на следующем моменте (если я все правильно понимаю):
В новом методе, не блокируются записи в регистре Бухгалтерии и в Регистре с себестоимостью пока не пройдет проверка на остатки. А, между прочим, проверка на остатки занимает ~15% Времени проведения документа.
Т.е. Мало того что метод работает на 10-20% быстрее так еще на дополнительные 15% уменьшается время блокировки 2-х ключевых регистров системы.
А в случае отказа транзакции из-за отсутствия товара, эти регистры не блокируются вовсе.

Представляю на суд 2 модуля которые я сравнивал:

Пример "Нового" метода ОП/БУ Документ Расходник
Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Метод = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Новый Граница(МоментВремени())).МетодСписания; // быстрее в 2 раза чем через запрос

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

//- Получить учетную политику

//+ Получаем номенклатуру без услуг Делаем движения по отаткам

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
              | РасходнаяНакладнаяТовар.Номенклатура,
              | СУММА(РасходнаяНакладнаяТовар.Количество) КАК Количество,
              | СУММА(РасходнаяНакладнаяТовар.Сумма) КАК Сумма
              |ПОМЕСТИТЬ ДокТЧ
              |ИЗ
              | Документ.РасходнаяНакладная.Товар КАК РасходнаяНакладнаяТовар
              |ГДЕ
              | РасходнаяНакладнаяТовар.Ссылка = &Ссылка
              | И НЕ РасходнаяНакладнаяТовар.Номенклатура.Услуга
              |
              |СГРУППИРОВАТЬ ПО
              | РасходнаяНакладнаяТовар.Номенклатура
              |
              |ИНДЕКСИРОВАТЬ ПО
              | РасходнаяНакладнаяТовар.Номенклатура
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | ДокТЧ.Номенклатура,
              | ДокТЧ.Количество КАК Количество
              |ИЗ
              | ДокТЧ КАК ДокТЧ";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса1 = Запрос.ВыполнитьПакет();
СписатьОстатки = РезультатЗапроса1[1].Выбрать();

Движения.ОстаткиТоваров.Записывать = Истина;
Движения.ОстаткиТоваров.Очистить();

Пока СписатьОстатки.Следующий() Цикл
Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = СписатьОстатки.Номенклатура;
Движение.Количество = СписатьОстатки.Количество;
КонецЦикла;

Движения.ОстаткиТоваров.БлокироватьДляИзменения = Истина;
Движения.Записать();

//- Получаем номенклатуру без услуг Делаем движения по отаткам


//+ Проверяем отриц остатки

Запрос.Текст = "ВЫБРАТЬ
| Остатки.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| Остатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(
| &ТочкаИтогов,
| Номенклатура В
| (ВЫБРАТЬ
| ДокТЧ.Номенклатура
| ИЗ
| ДокТЧ КАК ДокТЧ)
| И Склад = &Склад) КАК Остатки
|ГДЕ
| Остатки.КоличествоОстаток < 0
|";

Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ТочкаИтогов", Новый Граница(МоментВремени(), ВидГраницы.Включая));

ПакетРезультатов = Запрос.ВыполнитьПакет();
РезультатЗапроса = ПакетРезультатов[0];

Если НЕ РезультатЗапроса.Пустой() Тогда
Отказ = Истина;

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Мало товара " + Выборка.НаименованиеПолное + " на складе - "+ Склад +" нужно еще " + (-Выборка.КоличествоОстаток);
Сообщение.Сообщить();
КонецЦикла; 
КонецЕсли;

Если Отказ Тогда
Возврат;
КонецЕсли;

//- Проверяем отриц остатки

//+ Блокировка Создаем движения в регистре партий

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.СтоимостьТоваров");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = РезультатЗапроса1[1] ;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");

ЭлБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Основной");
ЭлБлокировки.УстановитьЗначение("Счет", ПланыСчетов.Управленческий.Товары);
ЭлБлокировки.ИсточникДанных = РезультатЗапроса1[1];
ЭлБлокировки.ИспользоватьИзИсточникаДанных(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура, "Номенклатура");


Блокировка.Заблокировать();

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

Движения.Основной.Очистить();
Движения.Основной.БлокироватьДляИзменения = Истина;
движения.Основной.Записать();
КонецЕсли;

Запрос.Текст = "ВЫБРАТЬ
               | ДокТЧ.Номенклатура КАК Номенклатура,
               | ДокТЧ.Количество КАК Количество,
               | СтоимостьТоваров.Партия,
               | СтоимостьТоваров.КоличествоОстаток,
               | СтоимостьТоваров.СтоимостьОстаток
               |ИЗ
               | ДокТЧ КАК ДокТЧ
               | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьТоваров.Остатки(
               | &Момент,
               | Номенклатура В
               | (ВЫБРАТЬ
               | ДокТЧ.Номенклатура
               | ИЗ
               | ДокТЧ КАК ДокТЧ)) КАК СтоимостьТоваров
               | ПО ДокТЧ.Номенклатура = СтоимостьТоваров.Номенклатура
               |
               |УПОРЯДОЧИТЬ ПО
               | СтоимостьТоваров.Партия.МоментВремени " + Порядок +"
               |ИТОГИ
               | МИНИМУМ(Количество)
               |ПО
               | Номенклатура
               |;
               |
 |////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Номенклатура КАК Номенклатура,
| ДокТЧ.Количество КАК КолДок,
| ДокТЧ.Сумма КАК Сумма,
| РегистрБухгалтерииОстатки.КоличествоОстаток КАК КолОст,
| РегистрБухгалтерииОстатки.СуммаОстаток КАК СумОст,
  | РегистрБухгалтерииОстатки.Субконто2 КАК Дата
|ИЗ
               | ДокТЧ КАК ДокТЧ
               | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.Остатки(
               | &Момент,
               | Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары),
               | &ВидыСубконто,
               | Субконто1 В
               | (ВЫБРАТЬ
               | ДокТЧ.Номенклатура
               | ИЗ
               | ДокТЧ КАК ДокТЧ)) КАК РегистрБухгалтерииОстатки
               | ПО ДокТЧ.Номенклатура = РегистрБухгалтерииОстатки.Субконто1
               |
               |УПОРЯДОЧИТЬ ПО
               | РегистрБухгалтерииОстатки.Субконто2
               |ИТОГИ
               | МАКСИМУМ(КолДок),
               | МАКСИМУМ(Сумма),
               | СУММА(КолОст)
               |ПО
               | Номенклатура";
   
   ВидыСубконто = Новый Массив;
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.СрокГодности);

Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);

Запрос.УстановитьПараметр("Момент", МоментВремени());

Движения.СтоимостьТоваров.Очистить();
Движения.Основной.Очистить();


РезультатЗапроса = Запрос.ВыполнитьПакет();
ВыборкаТовар = РезультатЗапроса[0].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаТовар.Следующий() Цикл

ОсталосьСписать = ВыборкаТовар.Количество;

ВыборкаПартия = ВыборкаТовар.Выбрать();
Пока ВыборкаПартия.Следующий() И ОсталосьСписать <> 0 Цикл

Списать = МИН(ОсталосьСписать, ВыборкаПартия.КоличествоОстаток);

Движение = Движения.СтоимостьТоваров.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаПартия.Номенклатура;
Движение.Партия = ВыборкаПартия.Партия;
Движение.Количество = Списать;
Движение.Стоимость = Списать / ВыборкаПартия.КоличествоОстаток * ВыборкаПартия.СтоимостьОстаток;

ОсталосьСписать = ОсталосьСписать - Списать;
КонецЦикла;

КонецЦикла;

Движения.СтоимостьТоваров.Записывать = Истина;

//- Блокировка Создаем движения в регистре партий

//+ Движения по регистру бухгалтерии
Результат = РезультатЗапроса[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Результат.Следующий() Цикл

Если Результат.КолДок > Результат.КолОст Тогда
Сообщить("Товара не хватает!");
Отказ = Истина;
Возврат;
КонецЕсли;

Выборка = Результат.Выбрать();
Остаток = Результат.КолДок;

Пока Выборка.Следующий() И Остаток > 0 Цикл

Движение = Движения.Основной.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
Движение.СубконтоКт.Номенклатура = Выборка.Номенклатура;
Движение.СубконтоКт.СрокГодности = Выборка.Дата;
Движение.КоличествоКТ = мин(Остаток,Выборка.КолОст);
Движение.Период = Дата;
Движение.Сумма = ?(Выборка.КолОст =0,0, Движение.КоличествоКТ * Выборка.СумОст / Выборка.КолОст);

Остаток = Остаток - Движение.КоличествоКТ;
КонецЦикла;

Движение = Движения.Основной.Добавить();
Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
Движение.Период = Дата;
Движение.Сумма = Результат.Сумма;

КонецЦикла;

Движения.Основной.Записывать = Истина;

//- Движения по регистру бухгалтерии
КонецПроцедуры



Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 11, 2016, 03:29:05 pm
Пример "Старого" метода ОП/БУ Документ Расходник
Процедура ОбработкаПроведения(Отказ, Режим)

Метод = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Новый Граница(МоментВремени())).Метод;

Если ЗначениеЗаполнено(Метод) Тогда
Если Метод = Перечисления.УчетнаяПолитика.ЛИФО Тогда
Порядок = " Убыв";
Иначе
Порядок = "";
КонецЕсли;
Иначе
Сообщить("Заполните метод списания!");
Отказ = Истина;
Возврат;
КонецЕсли;

Движения.ОстаткиНоменклатуры.Записывать = Истина;
Движения.Себестоимость.Записывать = Истина;
Движения.РегистрБухгалтерии.Записывать = Истина;

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
               | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
               | РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад КАК Склад,
               | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
               | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
               |ПОМЕСТИТЬ ТчДок
               |ИЗ
               | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
               |ГДЕ
               | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
               | И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Услуга = ЛОЖЬ
               |
               |СГРУППИРОВАТЬ ПО
               | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
               | РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад
               |
               |ИНДЕКСИРОВАТЬ ПО
               | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               | ТчДок.Номенклатура
               |ИЗ
               | ТчДок КАК ТчДок";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗап = Запрос.ВыполнитьПакет();
СписокНомБезУсл = РезультатЗап[1];
   
Блокировка = Новый БлокировкаДанных;

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

ЭлБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлБлокировки.ИсточникДанных = СписокНомБезУсл;
ЭлБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
ЭлБлокировки.УстановитьЗначение("Склад", Склад);

ЭлБлокировки = Блокировка.Добавить("РегистрБухгалтерии.РегистрБухгалтерии");
ЭлБлокировки.УстановитьЗначение("Счет", ПланыСчетов.Управленческий.Товары);
ЭлБлокировки.ИсточникДанных = СписокНомБезУсл;
ЭлБлокировки.ИспользоватьИзИсточникаДанных(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура, "Номенклатура");

Блокировка.Заблокировать();

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

Движения.Себестоимость.Очистить();
Движения.Себестоимость.БлокироватьДляИзменения = Истина;
Движения.Себестоимость.Записать();

Движения.РегистрБухгалтерии.Очистить();
Движения.РегистрБухгалтерии.БлокироватьДляИзменения = Истина;
Движения.РегистрБухгалтерии.Записать();
КонецЕсли;


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


ВидыСубконто = Новый Массив;
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Дата);

Запрос.УстановитьПараметр("Момент", МоментВремени());
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);

//Движения по регистрам накопления
Пакет = Запрос.ВыполнитьПакет();
Результат = Пакет[0].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Результат.Следующий() Цикл

Выборка = Результат.Выбрать();
Остаток = Результат.КолДок;

Пока Выборка.Следующий() И Остаток > 0 Цикл

Если Выборка.КолДок > Выборка.КолСклад Тогда
Сообщить("Товара не хывтает");
Отказ = Истина;
Возврат;
КонецЕсли;

//Остатки
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = мин(Выборка.КолОст,Остаток);

//Себестоимость
Движение = Движения.Себестоимость.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Колво = мин(Выборка.КолОст,Остаток);
Движение.Себестоимость = ?(Выборка.КолОст = 0,0, Движение.Колво * Выборка.СумОст / Выборка.КолОст);

Остаток = Остаток - Движение.Колво;
КонецЦикла;

КонецЦикла;

//Движения по регистру бухгалтерии
Результат = Пакет[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Результат.Следующий() Цикл

Если Результат.КолДок > Результат.КолОст Тогда
Сообщить("Товара не хватает!");
Отказ = Истина;
Возврат;
КонецЕсли;

Выборка = Результат.Выбрать();
Остаток = Результат.КолДок;

Пока Выборка.Следующий() И Остаток > 0 Цикл

Движение = Движения.РегистрБухгалтерии.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
Движение.СубконтоКт.Номенклатура = Выборка.Номенклатура;
Движение.СубконтоКт.Дата = Выборка.Дата;
Движение.КолвоКт = мин(Остаток,Выборка.КолОст);
Движение.Период = Дата;
Движение.Сумма = ?(Выборка.КолОст =0,0, Движение.КолвоКт * Выборка.СумОст / Выборка.КолОст);

Остаток = Остаток - Движение.КолвоКт;
КонецЦикла;

Движение = Движения.РегистрБухгалтерии.Добавить();
Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
Движение.Период = Дата;
Движение.Сумма = Результат.Сумма;

КонецЦикла;

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

Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 11, 2016, 03:47:26 pm
моё решение
Буду рад критике
 :D

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

2. Списываться товар должен со склада в шапке, никаких отборов по складу в запросе - нет.

3. Решение на 1 регистре – как по мне - ошибка. Потом этот регистр обзаведется кучей записей и проверять наличие остатков он будет довольно долго. Да и чем больше измерений, тем регистр медленнее.

4. "Избыточная" (как по мне) блокировка записей регистров. Номенклатуру - услуги блокировать в регистре ни к чему. (Хотя. мне кажется это я уже излишне заморачиваюсь)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kuzyara от Октябрь 11, 2016, 05:10:20 pm
Все, на этом я собираюсь остановиться.
Рано. Рекомендую вам пока отложить этот билет и разобрать остальные 5.

Хорошие программисты пишут код, понятный людям. (с) С.Макконнелл «Совершенный код»
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 11, 2016, 07:02:23 pm
Все, на этом я собираюсь остановиться.
Рано. Рекомендую вам пока отложить этот билет и разобрать остальные 5.

Хорошие программисты пишут код, понятный людям. (с) С.Макконнелл «Совершенный код»

5?
Почему 5? билетов же 15?))
В целом да, просто для себя я поставил точку в этом билете по ОУ
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kuzyara от Октябрь 12, 2016, 06:17:26 am
5?
Мне казалось сдающим из регионов нужно готовиться только к первым 6 билетам.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: GH0STexe от Октябрь 12, 2016, 07:46:44 am
5?
Мне казалось сдающим из регионов нужно готовиться только к первым 6 билетам.
Интересно с чего бы это вдруг?  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: EgSneg от Октябрь 12, 2016, 10:47:31 am
Интересно с чего бы это вдруг?  :)

Это связано со статистикой отчетов о сдаче на этом сайте за последний год-полтора.
Как-то так выходит, что дистанционникам достаются первые 6 билетов, причем как правило целиком (все три задачи из одного билета, как в Актуальных).
В то же время сдающим в УЦ1 попадаются задачи вразнобой, из разных билетов, и разброс шире. Хотя все равно, первые 10 встречаются гораздо чаще, нежели последние 5.
Однако, это лишь наблюдение, к тому же отписываются не все 100% сдающих.
Так что решение чего учить и как готовить каждый принимает на свой страх и риск.
Лично я прорешал почти весь сборник задач, потом все 15 билетов. Сдавал в УЦ1. Мне попалась ОУ-10, БУ-5, и СПР-2.
Если бы я сдавал дистанционно, я бы наверное все равно прорешал бы все 15 билетов, но на первые 6 сделал бы особый упор...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Октябрь 12, 2016, 12:25:03 pm
моё решение
Буду рад критике
 :D

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

2. Списываться товар должен со склада в шапке, никаких отборов по складу в запросе - нет.

3. Решение на 1 регистре – как по мне - ошибка. Потом этот регистр обзаведется кучей записей и проверять наличие остатков он будет довольно долго. Да и чем больше измерений, тем регистр медленнее.

4. "Избыточная" (как по мне) блокировка записей регистров. Номенклатуру - услуги блокировать в регистре ни к чему. (Хотя. мне кажется это я уже излишне заморачиваюсь)

У вас точно МОЙ дтшник?
По-внимательней, пожалуйста:
1. Себестоимость списывается в разрезе партий. Из условия задания: "Списание себестоимости товаров должно быть организовано по партиям, в зависимости от метода списания (FIFO или LIFO), принятого в учетной политике" - склады при расчете себестоимости не нужны.
2. Есть в параметрах виртуальной таблицы после даты в строке 83 модуля объекта документа "Расходная накладная". Применен новый метод контроля остатков, сначала списываем, а затем проверяем отрицательные остатки, при списывании указывается склад из шапки документа. Всё вроде верно.
3. Два регистра: ОстаткиНоменклатуры и Партии.
4. Тут, да, можно было результат запроса выгрузить и по нему блокировку делать.

Вы только оперативный учет смотрели?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fundo0rin от Октябрь 12, 2016, 02:34:09 pm
моё решение
Буду рад критике
 :D

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

2. Списываться товар должен со склада в шапке, никаких отборов по складу в запросе - нет.

3. Решение на 1 регистре – как по мне - ошибка. Потом этот регистр обзаведется кучей записей и проверять наличие остатков он будет довольно долго. Да и чем больше измерений, тем регистр медленнее.

4. "Избыточная" (как по мне) блокировка записей регистров. Номенклатуру - услуги блокировать в регистре ни к чему. (Хотя. мне кажется это я уже излишне заморачиваюсь)

У вас точно МОЙ дтшник?
По-внимательней, пожалуйста:
1. Себестоимость списывается в разрезе партий. Из условия задания: "Списание себестоимости товаров должно быть организовано по партиям, в зависимости от метода списания (FIFO или LIFO), принятого в учетной политике" - склады при расчете себестоимости не нужны.
2. Есть в параметрах виртуальной таблицы после даты в строке 83 модуля объекта документа "Расходная накладная". Применен новый метод контроля остатков, сначала списываем, а затем проверяем отрицательные остатки, при списывании указывается склад из шапки документа. Всё вроде верно.
3. Два регистра: ОстаткиНоменклатуры и Партии.
4. Тут, да, можно было результат запроса выгрузить и по нему блокировку делать.

Вы только оперативный учет смотрели?

Да... действительно не ваше решение смотрел  ;D ;D ;D

1. Небольшое замечание: "   Запрос.УстановитьПараметр("ВидТовар", Перечисления.ВидыНоменклатуры.Товар);"
Лучше установить такой параметр сразу в условии "РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = Значение( Перечисления.ВидыНоменклатуры.Товар)
2. В бух учете при списании делаются проводки и по Услугам ;)
3. Блокировки на регистрах накопления - автоматические
4. Документ Операция не должен иметь возмоность проведения. Почему - хз))
По остальным вопросам не компетентен, но как начну заниматься расчетными если найду чего - напишу)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Октябрь 13, 2016, 04:05:53 am
Да... действительно не ваше решение смотрел  ;D ;D ;D

1. Небольшое замечание: "   Запрос.УстановитьПараметр("ВидТовар", Перечисления.ВидыНоменклатуры.Товар);"
Лучше установить такой параметр сразу в условии "РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = Значение( Перечисления.ВидыНоменклатуры.Товар)
2. В бух учете при списании делаются проводки и по Услугам ;)
3. Блокировки на регистрах накопления - автоматические
4. Документ Операция не должен иметь возмоность проведения. Почему - хз))
По остальным вопросам не компетентен, но как начну заниматься расчетными если найду чего - напишу)

Спасибо!  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Andronav от Октябрь 24, 2016, 07:30:49 am
Однако, хотел бы сделать акцент на следующем моменте (если я все правильно понимаю):
В новом методе, не блокируются записи в регистре Бухгалтерии и в Регистре с себестоимостью пока не пройдет проверка на остатки. А, между прочим, проверка на остатки занимает ~15% Времени проведения документа.
Т.е. Мало того что метод работает на 10-20% быстрее так еще на дополнительные 15% уменьшается время блокировки 2-х ключевых регистров системы.

Вот и у меня такое впечатление складывается, хоть я и не измерял но по логике так и должно быть. Я как бы тоже к новой методике склоняюсь. Но говорят что за доп.регистр снимут бал. Хотелось бы конечно услышать официальную позицию по этому вопросу от преподавателей и близких к ним.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Hypnosis от Ноябрь 01, 2016, 05:59:25 pm
Добрый день! Подскажите, пожалуйста, в задаче по БУ нужен признак учета субконто "Суммовой потому, что "себестоимость определяется как средняя по товару по всем срокам годности"? Если бы и в разрезе сроков годности было бы, то не нужен был бы?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: ComradeKite от Ноябрь 02, 2016, 12:09:47 pm
Добрый день! Подскажите, пожалуйста, в задаче по БУ нужен признак учета субконто "Суммовой потому, что "себестоимость определяется как средняя по товару по всем срокам годности"? Если бы и в разрезе сроков годности было бы, то не нужен был бы?

Да.
Надо "убить" остатки по сроку годности по сумме. Иначе в таблице остатков по одному СрокуГ будет +10 руб и по другому СрокуГ -10 руб. Не закроется в ноль.


Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 07, 2016, 11:43:56 am
Обновленное моё решение.
Сразу отмечу что в расчетах нужно было использовать два плана видов расчета ОсновныеНачисления (оклад) и ДополнительныеНачисления (премия), а у меня в одном ОсновныеНначисления. (поленился)  :(
Буду рад критике.
 :)

Обновлено: http://forum.chistov.pro/index.php?topic=3638.msg48933#msg48933
Название: Re: Билет 1. Спец по платформе V8
Отправлено: ComradeKite от Ноябрь 07, 2016, 03:06:58 pm
Обновленное моё решение.
Сразу отмечу что в расчетах нужно было использовать два плана видов расчета ОсновныеНачисления (оклад) и ДополнительныеНачисления (премия), а у меня в одном ОсновныеНначисления. (поленился)  :(
Буду рад критике.
 :)

Посмотрел одним глазом))
Вам надо читать вот этот файл
http://1c.ru/rus/partners/training/files/ATT83PL.rtf
Ну и исправлять у себя после прочтения.

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

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

В СПР у вас настройки тоже не совсем верны.
У оклада нет базы, а вы поставили зависит по периоду действия.

Предполагаю, это далеко не сдал.

В плюс, регистр бух вроде  настроен правильно.




Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 08, 2016, 07:14:32 am
Обновленное моё решение.
Сразу отмечу что в расчетах нужно было использовать два плана видов расчета ОсновныеНачисления (оклад) и ДополнительныеНачисления (премия), а у меня в одном ОсновныеНначисления. (поленился)  :(
Буду рад критике.
 :)
Обновил, исправил.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 08, 2016, 07:15:43 am

Посмотрел одним глазом))
Вам надо читать вот этот файл
http://1c.ru/rus/partners/training/files/ATT83PL.rtf
Ну и исправлять у себя после прочтения.

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

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

В СПР у вас настройки тоже не совсем верны.
У оклада нет базы, а вы поставили зависит по периоду действия.

Предполагаю, это далеко не сдал.

В плюс, регистр бух вроде  настроен правильно.

Вроде всё учёл.  :)

UPD:  http://forum.chistov.pro/index.php?topic=3638.msg49160#msg49160
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Lois от Ноябрь 09, 2016, 12:40:48 am

Вроде всё учёл.  :)

Здравствуйте. Хотела спросить, а нужно ли решать проблему копеек при записи в РБ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 09, 2016, 05:21:52 am
Здравствуйте. Хотела спросить, а нужно ли решать проблему копеек при записи в РБ?
Да, конечно, нужно.
НО, в данной задаче "Себестоимость определяется как средняя по товару по всем срокам годности" - поэтому у счета товары отключил суммовой итог по срокам годности, т.е. он должен сойтись в ноль.
 :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: filiMike от Ноябрь 10, 2016, 03:40:49 pm
Господа и дамы.

СПР:

Как правильнее получить в запросе базовый оклад из РС СведенияОСотрудниках: в задаче сказано
1)"Первоначальное значение оклада может изменяться не чаще, чем один раз в день, но берется на начало расчетного периода. В информационной базе необходимо хранить историю его изменения."
но
2) "В одном документе могут быть данные за разные расчетные периоды".

Значит, как считает один 1С Специалист:

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

НО

Что, если в РС СведенияОСотрудниках нет записей на 01.месяц. Результата не будет, если я не ошибаюсь, по крайнер мере так выходит у SAE, решения которого авторитетны.

Есть идеи?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Ноябрь 10, 2016, 03:50:40 pm
Что, если в РС СведенияОСотрудниках нет записей на 01.месяц.
Проверять. И если по какому-то из сотрудников информации нет, отказывать в проведении документа.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: filiMike от Ноябрь 10, 2016, 03:59:28 pm
Что, если в РС СведенияОСотрудниках нет записей на 01.месяц.
Проверять. И если по какому-то из сотрудников информации нет, отказывать в проведении документа.

Правильно понимаю, что наличие на первое число в РС СведенияОСотрудниках обязательно?

"Первоначальное значение оклада может изменяться не чаще, чем один раз в день, но берется на начало расчетного периода"

Формально начало месяца не обязательно первое число месяца.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: filiMike от Ноябрь 10, 2016, 05:28:48 pm
Посмотрел повнимательнее- я  был неправ, вводил 2016 год, а расчеты  в 2015. Всем кого смутил, прошу прощения.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Ноябрь 10, 2016, 06:29:39 pm
Формально начало месяца не обязательно первое число месяца.
А какие еще варианты?
Правильно понимаю, что наличие на первое число в РС СведенияОСотрудниках обязательно?
Сделайте обязательным.
Хотя, для реальной задачи надо конечно учитывать приемы в течение месяца.
Но для экз, думаю, можно сделать точно как написано - раз на начало, значит, обязуем юзера вводить оклады именно на начало месяца, в котором принят сотрудник, и для решения это будет проще.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 11, 2016, 05:13:55 am
Моё обновленное решение.
В предыдущем был не верным запрос по окладу в НачислениеЗарплаты.

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


UPD: http://forum.chistov.pro/index.php?topic=3638.msg49160#msg49160
Название: Re: Билет 1. Спец по платформе V8
Отправлено: veleeh от Ноябрь 20, 2016, 03:01:51 pm
Моё обновленное решение.

Посмотрел, сам прорешиваю пока только ОУ и расчеты, по ним есть вопросы:

ОУ:
1. Отчет ОсткаткиТоваров у Вас неправильный. Надо: тип отчета - список, РасположениеПолейГруппировок - Отдельно и только в итогах, РасположениеОбщихИтоговПоВертикали/горизонтале - нет.

Расчеты:
1. В регистре ГрафикиРаботы ресурс значение число (5,2), я считаю должно быть (1,0).
2. Совместительства нет, в отчете подразделений нет. Зачем в регистре расчета реквизит подразделение?
3. Вложенные запросы - это плохо, лучше все делать виртуальными таблицами в пакете.
4. Измерения регистров по которым будут соединения таблиц надо интексировать.
5. Почему нет реквизита Оклад в регистре основных начислений? Он не используется для отчета, но все равно все параметры по которым был расчет конкретного документа должны быть где-то в базе - или в документе или в регистре.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 21, 2016, 10:21:44 am
Моё обновленное решение.

Посмотрел, сам прорешиваю пока только ОУ и расчеты, по ним есть вопросы:

ОУ:
1. Отчет ОсткаткиТоваров у Вас неправильный. Надо: тип отчета - список, РасположениеПолейГруппировок - Отдельно и только в итогах, РасположениеОбщихИтоговПоВертикали/горизонтале - нет.

Расчеты:
1. В регистре ГрафикиРаботы ресурс значение число (5,2), я считаю должно быть (1,0).
2. Совместительства нет, в отчете подразделений нет. Зачем в регистре расчета реквизит подразделение?
3. Вложенные запросы - это плохо, лучше все делать виртуальными таблицами в пакете.
4. Измерения регистров по которым будут соединения таблиц надо интексировать.
5. Почему нет реквизита Оклад в регистре основных начислений? Он не используется для отчета, но все равно все параметры по которым был расчет конкретного документа должны быть где-то в базе - или в документе или в регистре.

ОУ:
1: Да, на время решения не знал, что отчет один-в-один должен быть как в задании.
 Расчеты:
1: Да, вы правы. У меня излишняя длина и точность для (почти всегда) значения=1.
2: Для соединения с регистром сведений СведенияОСотрудниках по сотруднику и подразделению.
3: Да, плохо. В дальнейшем пострараюсь без них обойтись.
4: Думал, если установить галку "Базовое" система итак проиндексирует. Нет?
5: Оклад хранится в регистре сведений СведенияОСотрудниках. Зачем его копировать в регистр расчета? дублирование информации получится...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kimskiysanya от Ноябрь 21, 2016, 03:46:51 pm
Где то встречал что к этому билету есть изменение в СПР. Необходимо предусмотреть возможность ввода новых видов расчет в режиме предприятия с сохранением возможности их расчета по реализованным алгоритмам. Кто нибудь может встречал реализацию этой задачи хотя бы примерно?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Вася от Ноябрь 21, 2016, 04:18:54 pm
Где то встречал что к этому билету есть изменение в СПР. Необходимо предусмотреть возможность ввода новых видов расчет в режиме предприятия с сохранением возможности их расчета по реализованным алгоритмам. Кто нибудь может встречал реализацию этой задачи хотя бы примерно?

В план видов расчета добавляете реквизит к примеру "МетодРасчета" - это перечисление, добавляете туда значения вроде "ПроцентОтПремии" или "БазаОтОклада", вообщем те алгоритмы которые вы реализовали в СПР. И дальше в обработке проведения документа "Начисление зп" и в модуле где идет собственно расчет, отталкиваетесь от значения этого реквизита. Неплохо бы еще добавить туда реквизит порядок, чтобы расчет начислений не сбился (сначала оклад, а потом премия с базой от него).

Только это условие по моему попадается в 4 билете. 
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kimskiysanya от Ноябрь 23, 2016, 02:29:19 pm
В план видов расчета добавляете реквизит к примеру "МетодРасчета" - это перечисление, добавляете туда значения вроде "ПроцентОтПремии" или "БазаОтОклада", вообщем те алгоритмы которые вы реализовали в СПР. И дальше в обработке проведения документа "Начисление зп" и в модуле где идет собственно расчет, отталкиваетесь от значения этого реквизита. Неплохо бы еще добавить туда реквизит порядок, чтобы расчет начислений не сбился (сначала оклад, а потом премия с базой от него).

Только это условие по моему попадается в 4 билете.

Спасибо, в целом понятно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xvip007 от Ноябрь 28, 2016, 04:10:52 pm
В итоге на данный момент какая методика проведения в этом билете на экзамене зачитывается ?

По хорошему: здесь и так для решения 2 регистра используется и очень удобно новой методикой решать, думаю так даже оптимальней.
Но в старых решениях, которые ещё SAE выкладывал - старая методика, хотя те же 2 регистра (остатки по складам, и стоимости партий).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alrodk от Ноябрь 28, 2016, 05:28:51 pm
Подскажите, пожалуйста, так можно использовать функцию МАКСИМУМ(Склад)? (Задача ОУ):

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

УПОРЯДОЧИТЬ ПО
СебестоимостьНоменклатурыОстатки.Партия.МоментВремени УБЫВ
ИТОГИ
МАКСИМУМ(Количество),
МАКСИМУМ(Склад),
МАКСИМУМ(КоличествоСклад)
ПО
Номенклатура
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 29, 2016, 12:46:49 pm
Подскажите, пожалуйста, так можно использовать функцию МАКСИМУМ(Склад)? (Задача ОУ):

а для чего склад в итогах нужен?
если сначала нужно списать по складу указанному в строке документа (и если не хватает по остальным складам), тогда сделай еще поле ПОРЯДОК где проверив равенство склада на склад из строки документа установишь его 0 а остальное 1, затем сортируй по этому полю.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alrodk от Ноябрь 29, 2016, 02:57:38 pm
Подскажите, пожалуйста, так можно использовать функцию МАКСИМУМ(Склад)? (Задача ОУ):

а для чего склад в итогах нужен?
если сначала нужно списать по складу указанному в строке документа (и если не хватает по остальным складам), тогда сделай еще поле ПОРЯДОК где проверив равенство склада на склад из строки документа установишь его 0 а остальное 1, затем сортируй по этому полю.

Все понял убрал склад из запроса.
При формировании движений хотел не разбивать по партиям движения регистра ОстаткиНоменклатуры.
Сделал вот так:
Пока ВыборкаНоменклатура.Следующий() Цикл

НадоСписать = ВыборкаНоменклатура.КоличествоДок;

Нехватка = Выборка.КоличествоДок - Выборка.КоличествоСклад;

Если Нехватка > 0 Тогда
Сообщить("На складе "+Склад+" не хватает товара "+Выборка.Номенклатура+" в количестве "+Нехватка);
Отказ = Истина;
Возврат;
КонецЕсли;

Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = НадоСписать;

Выборка = ВыборкаНоменклатура.Выбрать();

Пока Выборка.Следующий() И НадоСписать > 0 Цикл

Списываем = Мин(НадоСписать, Выборка.СебестоимостьКоличество);

Движение = Движения.СебестоимостьНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Количество = Списываем;
Движение.Сумма = ?(Списываем = Выборка.СебестоимостьКоличество, Выборка.СебестоимостьСумма, Списываем*Выборка.СебестоимостьСумма/Выборка.СебестоимостьКоличество);

НадоСписать = НадоСписать - Списываем;

КонецЦикла;

КонецЦикла;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Ноябрь 30, 2016, 04:12:22 am
Сделал вот так:
Пока ВыборкаНоменклатура.Следующий() Цикл

НадоСписать = ВыборкаНоменклатура.КоличествоДок;

Нехватка = Выборка.КоличествоДок - Выборка.КоличествоСклад;

Если Нехватка > 0 Тогда
Сообщить("На складе "+Склад+" не хватает товара "+Выборка.Номенклатура+" в количестве "+Нехватка);
Отказ = Истина;
Возврат;
КонецЕсли;

Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = НадоСписать;

Выборка = ВыборкаНоменклатура.Выбрать();

Пока Выборка.Следующий() И НадоСписать > 0 Цикл

Списываем = Мин(НадоСписать, Выборка.СебестоимостьКоличество);

Движение = Движения.СебестоимостьНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Партия = Выборка.Партия;
Движение.Количество = Списываем;
Движение.Сумма = ?(Списываем = Выборка.СебестоимостьКоличество, Выборка.СебестоимостьСумма, Списываем*Выборка.СебестоимостьСумма/Выборка.СебестоимостьКоличество);

НадоСписать = НадоСписать - Списываем;

КонецЦикла;

КонецЦикла;

Не правильно в текст сообщения заталкивать ссылку, каждый раз подзапрос к базе идет ради представления. В запросе вытащи ПРЕДСТАВЛЕНИЕ(Номенклатура) и перед циклом представление(Склад). Почему по регистру "ОстаткиНоменклатуры" не применил новую методику? Думаю можно это сделать.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alrodk от Ноябрь 30, 2016, 11:22:36 am
Цитировать
Не правильно в текст сообщения заталкивать ссылку, каждый раз подзапрос к базе идет ради представления. В запросе вытащи ПРЕДСТАВЛЕНИЕ(Номенклатура) и перед циклом представление(Склад).
Спасибо, учту.
Цитировать
Почему по регистру "ОстаткиНоменклатуры" не применил новую методику? Думаю можно это сделать.
Не совсем понял преимущества нового метода. Только то что не надо делать явную блокировку по регистру "ОстаткиНоменклатуры"?
По регистру "СебестоимостьНоменклатуры" все равно надо делать блокировку. Плюс еще запросов к базе вместо одного будет три.
Может я и не прав, по быстродействию не проверял.
Разве снижают оценку если использовал старую методику? Везде по разному говорят.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Декабрь 01, 2016, 04:24:39 am
Не совсем понял преимущества нового метода. Только то что не надо делать явную блокировку по регистру "ОстаткиНоменклатуры"?
По регистру "СебестоимостьНоменклатуры" все равно надо делать блокировку. Плюс еще запросов к базе вместо одного будет три.
Может я и не прав, по быстродействию не проверял.
Разве снижают оценку если использовал старую методику? Везде по разному говорят.
По быстродействию как раз таки лучше получается по новой методике. По РН "СебестоимостьНоменклатуры" делать блокировку после списания остатков и только в случае отсутствия отрицательных остатков.
Если не применил новую методику где можно и нужно снимут балл, в требованиях это есть: "Использование менее эффективной методики проведения документов   1,0".
Название: Re: Билет 1. Спец по платформе V8
Отправлено: erdem.badluev от Декабрь 01, 2016, 05:56:36 am
мой обновленный вариант.
буду рад критике.
Добавил командировку, зависит от оклада и премии.
Реализовал расчет в НачисленииЗарплаты по периодам регистрации.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Головлев Владислав от Декабрь 02, 2016, 06:56:01 am
Не совсем понял преимущества нового метода. Только то что не надо делать явную блокировку по регистру "ОстаткиНоменклатуры"?
По регистру "СебестоимостьНоменклатуры" все равно надо делать блокировку. Плюс еще запросов к базе вместо одного будет три.
Может я и не прав, по быстродействию не проверял.
Разве снижают оценку если использовал старую методику? Везде по разному говорят.
По быстродействию как раз таки лучше получается по новой методике. По РН "СебестоимостьНоменклатуры" делать блокировку после списания остатков и только в случае отсутствия отрицательных остатков.
Если не применил новую методику где можно и нужно снимут балл, в требованиях это есть: "Использование менее эффективной методики проведения документов   1,0".

а разве не нужно ставить блокировку перед тем, как будем получать остатки? Ведь во время получения остатков кто то может провести приход, либо расход и уже остатки совсем другие будут
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alrodk от Декабрь 02, 2016, 12:32:33 pm
Не совсем понял преимущества нового метода. Только то что не надо делать явную блокировку по регистру "ОстаткиНоменклатуры"?
По регистру "СебестоимостьНоменклатуры" все равно надо делать блокировку. Плюс еще запросов к базе вместо одного будет три.
Может я и не прав, по быстродействию не проверял.
Разве снижают оценку если использовал старую методику? Везде по разному говорят.
По быстродействию как раз таки лучше получается по новой методике. По РН "СебестоимостьНоменклатуры" делать блокировку после списания остатков и только в случае отсутствия отрицательных остатков.
Если не применил новую методику где можно и нужно снимут балл, в требованиях это есть: "Использование менее эффективной методики проведения документов   1,0".

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

Блокировку ставить нужно, но другим способом:
Движения.ТоварыНаСкладах.БлокироватьДляИзменения = Истина; // НАБОР БУДЕТ ЗАБЛОКИРОВАН СРАЗУ ПОСЛЕ ЗАПИСИ
Движения.ТоварыНаСкладах.Записать();
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Головлев Владислав от Декабрь 13, 2016, 03:50:18 pm
Есть еще один вопрос: если я в оу делал списание по новой методике, то обязательно ли потом проверять остатки в регистре бухгалтерии? Ведь по идее остатки в регистре бухгалтерии должны совпадать с остатками в регистре накопления
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Головлев Владислав от Декабрь 14, 2016, 07:04:37 am
Смотрю еще решения и ни у кого нет проверки на остатки в регистре бухгалтерии в документе операция, а в билете написано "При проведении документа анализируется наличие этого товара в организации. Если товара не достаточно документ не проводится." (предпоследний абзац перед примером отчета)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Декабрь 14, 2016, 07:52:52 am
Есть еще один вопрос: если я в оу делал списание по новой методике, то обязательно ли потом проверять остатки в регистре бухгалтерии? Ведь по идее остатки в регистре бухгалтерии должны совпадать с остатками в регистре накопления
Не должны совпадать.
В ПН и РН используются 2 дополнительных реквизита ОУ и БУ типа булево, и документ проводится по ОУ и БУ только если соотв реквизит равен ИСТИНА, в этом же случае делается проверка остатков в соотв регистрах.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Декабрь 14, 2016, 07:56:57 am
Смотрю еще решения и ни у кого нет проверки на остатки в регистре бухгалтерии в документе операция, а в билете написано "При проведении документа анализируется наличие этого товара в организации. Если товара не достаточно документ не проводится." (предпоследний абзац перед примером отчета)
Уже не помню, где об этом говорится (в актуальных билетах нет, возможно, в тексте самих экз билетов всё же есть), но ответственность за корректность проводок в "Операции", в т.ч. и за остатки, несет юзер.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Головлев Владислав от Декабрь 14, 2016, 01:30:53 pm
Есть еще один вопрос: если я в оу делал списание по новой методике, то обязательно ли потом проверять остатки в регистре бухгалтерии? Ведь по идее остатки в регистре бухгалтерии должны совпадать с остатками в регистре накопления
Не должны совпадать.
В ПН и РН используются 2 дополнительных реквизита ОУ и БУ типа булево, и документ проводится по ОУ и БУ только если соотв реквизит равен ИСТИНА, в этом же случае делается проверка остатков в соотв регистрах.
а где в условии сказано про доп реквизиты? Почему нельзя сделать без данных реквизитов?  Можно ведь сразу по всем регистрам провести и всё, просто вроде как в условии об этом ничего, я стараюсь все по минимуму делать, только то, что есть в условии, что бы успеть сделать
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Декабрь 14, 2016, 01:37:47 pm
а где в условии сказано про доп реквизиты? Почему нельзя сделать без данных реквизитов?
Я написал, как делается обычно. Данный способ снимает все проблемы. Именно так рекомендуют и без лишних вопросов принимают экзаменаторы.
А вы можете делать, как угодно. Но для других вариантов тут будет сложнее получить ответ на ваши вопросы.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Декабрь 14, 2016, 01:39:32 pm
Можно ведь сразу по всем регистрам провести и всё, просто вроде как в условии об этом ничего, я стараюсь все по минимуму делать, только то, что есть в условии, что бы успеть сделать
В большинстве билетов сложно совместить ОУ и БУ. А добавить 2 рекв, и в коде строки Если ОУ Тогда и Если БУ Тогда - делов на полминуты.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: МарияЮ от Декабрь 15, 2016, 01:39:18 pm
Цитировать
В большинстве билетов сложно совместить ОУ и БУ. А добавить 2 рекв, и в коде строки Если ОУ Тогда и Если БУ Тогда - делов на полминуты.
Добрый день! Скажите, а где можно почитать, что экзаменаторы положительно относятся к данным реквизитам? Это было бы хорошим вариантом, но не могу найти однозначного ответа
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Декабрь 15, 2016, 02:05:49 pm
Цитировать
В большинстве билетов сложно совместить ОУ и БУ. А добавить 2 рекв, и в коде строки Если ОУ Тогда и Если БУ Тогда - делов на полминуты.
Добрый день! Скажите, а где можно почитать, что экзаменаторы положительно относятся к данным реквизитам? Это было бы хорошим вариантом, но не могу найти однозначного ответа
Мой ответ и есть однозначный.  :D
До меня так сдавали, я так сдавал, после сдачи многим так советовал, ни к кому никаких вопросов не было.
Где впервые сам прочитал о таком варианте, уже не помню, но не сам придумал, и уже до экзамена точно знал, что такой вариант рекомендуется.
Возможно, по одной из ссылок, что у меня в подписи - среди них есть 2 или 3 ссылки на комментарии тех, кто посещал курсы Белоусова - написано, что он на своих курсах предлагает такой способ; можете почитать, там столько полезной инфы, что 2/3 на первый взгляд неразрешимых вопросов получают элементарное решение.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Головлев Владислав от Декабрь 15, 2016, 03:03:44 pm
а где в условии сказано про доп реквизиты? Почему нельзя сделать без данных реквизитов?
Я написал, как делается обычно. Данный способ снимает все проблемы. Именно так рекомендуют и без лишних вопросов принимают экзаменаторы.
А вы можете делать, как угодно. Но для других вариантов тут будет сложнее получить ответ на ваши вопросы.
Спасибо! По поводу документа операция: Т.е. проверять на наличие остатков регистр бухгалтерии не нужно?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Декабрь 15, 2016, 03:11:47 pm
Добрый день, Владислав!

Никаких проверок в документе "Операция" делать не нужно.
За проводки в этом документе несет ответственность тот, кто делает этот
документ. В том смысл, чтобы можно было ввести любые проводки.
И в типовых конфигурациях точно также - никаких проверок.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Головлев Владислав от Декабрь 16, 2016, 09:19:29 am
Добрый день, Владислав!

Никаких проверок в документе "Операция" делать не нужно.
За проводки в этом документе несет ответственность тот, кто делает этот
документ. В том смысл, чтобы можно было ввести любые проводки.
И в типовых конфигурациях точно также - никаких проверок.
Спасибо! Этот вопрос больше всего интересовал, просто в условии написано, что проверять остатки, в случае нехватки не проводить документ (предпоследний абзац перед примером отчета)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alrodk от Декабрь 19, 2016, 11:41:02 am
Мое решение, все задачи. Покритикуйте пожалуйста.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Rinat от Декабрь 20, 2016, 12:43:42 pm
Мое решение, все задачи. Покритикуйте пожалуйста.
Ну самое первое что могу сказать, это в Приходной накладной Обработка проведения. Там в цикле проверку на ВидыНоменклатуры делать нельзя, нужно сначала запросом из документа получить номенклатуру определенного вида который тебе нужен, затем уже выборкой бежишь по результату запроса.
Это мне как ошибку на сдаче посчитали, я сначала так же как и ты сделал,в цикле проверял, затем уже на пересдаче сделал норм, это у них как грубая ошибка считается.  :)
Остальное пока не смотрел.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alrodk от Декабрь 20, 2016, 12:59:33 pm
Спасибо, исправлю. Честно говоря думал что это не принципиально :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Rinat от Декабрь 20, 2016, 01:11:33 pm
Спасибо, исправлю. Честно говоря думал что это не принципиально :)

Я так же думал, думал что работает же, и результат верный получается, а потом как ошибки пришли, понял то что они на это смотрят  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: dgchar от Декабрь 21, 2016, 12:38:22 pm
Хм....а смысл в приходной смотреть вид номенклатуры, ведь сказано что "Помимо продажи товара, могут оказываться дополнительные услуги, например, по доставке. " тобиш в расходной :o
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Rinat от Декабрь 21, 2016, 12:55:16 pm
Хм....а смысл в приходной смотреть вид номенклатуры, ведь сказано что "Помимо продажи товара, могут оказываться дополнительные услуги, например, по доставке. " тобиш в расходной :o

Например у тебя в Приходной помимо Товара будет еще и Доставка, дак вот чтобы Доставку не оприходовать выдергиваешь только товар.
На проверку когда отправишь тебе как за ошибку посчитают если проверки на вид номенклатуры не будет.Она обязательно должна быть в приходной.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: verbatium80 от Декабрь 26, 2016, 05:58:08 pm
Всем привет! Мое решение 1 билета. Покритикуйте пожалуйста.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alrodk от Декабрь 29, 2016, 03:31:17 pm
kuzyara, поясни пожалуйста эти пункты:

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

Цитировать
е) не устанавливаешь ключ данных сообщению (не привязывается к объекту)
Это обязательно? За это снижают баллы?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: GloryToGod от Декабрь 31, 2016, 04:51:49 am
Привет всем! Почему во всех решениях В ПР за план берут часы??? Хотя явно сказано:
Дневная ставка рассчитывается как начальное значение оклада, деленное на количество рабочих дней в том же периоде. Нигде не сказано про количество рабочих часов.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Декабрь 31, 2016, 08:49:29 am
Привет всем! Почему во всех решениях В ПР за план берут часы??? Хотя явно сказано:
Дневная ставка рассчитывается как начальное значение оклада, деленное на количество рабочих дней в том же периоде. Нигде не сказано про количество рабочих часов.
Делайте правильно. Кажется, отличие будет только в заполнении графика, на код это никак не влияет?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: GloryToGod от Январь 01, 2017, 07:13:53 am
Привет всем! Почему во всех решениях В ПР за план берут часы??? Хотя явно сказано:
Дневная ставка рассчитывается как начальное значение оклада, деленное на количество рабочих дней в том же периоде. Нигде не сказано про количество рабочих часов.
Делайте правильно. Кажется, отличие будет только в заполнении графика, на код это никак не влияет?
Если считать только по пятидневке, то разницы никакой не будет. Но в условии также говориться: "Все сотрудники работают по пятидневному графику работы, однако в решении необходимо предусмотреть возможность работы по нескольким различным графикам."
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Январь 01, 2017, 08:35:42 am
Привет всем! Почему во всех решениях В ПР за план берут часы??? Хотя явно сказано:
Дневная ставка рассчитывается как начальное значение оклада, деленное на количество рабочих дней в том же периоде. Нигде не сказано про количество рабочих часов.
Делайте правильно. Кажется, отличие будет только в заполнении графика, на код это никак не влияет?
Если считать только по пятидневке, то разницы никакой не будет. Но в условии также говориться: "Все сотрудники работают по пятидневному графику работы, однако в решении необходимо предусмотреть возможность работы по нескольким различным графикам."
Хм. Что значит "если считать только по пятидневке"? Ваш код при другом графике даст неверный результат?
А вообще, процитированное вами условие, если я не ошибаюсь, предполагает лишь создание справочника "Графики", в который, при необходимости, можно добавить те самые "различные графики".
Название: Re: Билет 1. Спец по платформе V8
Отправлено: atukat от Январь 09, 2017, 12:28:47 pm
Коллеги, приветствую
Прошу оценить решение билета № 1.

Жду конструктивной критики.

ОУ: В приходную накладную в обработке проведения использовал не конструктор, а запросом получал ТЧ документа без услуг с группировками. Это важно, т.к оприходование услуг возможно, но в таком случае регистр не будет закрываться в 0.
Запись по новой методике
Название: Re: Билет 1. Спец по платформе V8
Отправлено: JohnSilver от Январь 09, 2017, 09:24:16 pm
Добрый вечер, джентльмены.
Посмотрите, пожалуйста мое решение 1 билета по оперативному учету.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: JohnSilver от Январь 10, 2017, 10:40:51 am
Добрый вечер, джентльмены.
Посмотрите, пожалуйста мое решение 1 билета по оперативному учету.
Пардон, это задача 1.1, не знаю к какому билету относится.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Ирина88 от Январь 12, 2017, 11:56:24 am
Мой вариант решения билета№1. Готова выслушивать критику:)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Expert012 от Январь 18, 2017, 05:45:42 pm
Всем добрый вечер. Подскажите пожалуйста зачем нужен Признак учета субконто -Суммовой.?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Январь 18, 2017, 06:21:59 pm
Всем добрый вечер. Подскажите пожалуйста зачем нужен Признак учета субконто -Суммовой.?
Он нужен в том случае, когда хотя бы на одном из субконто его надо отключить (т.е. чтобы не вести суммовой учет в определенных разрезах).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Expert012 от Январь 20, 2017, 10:40:30 am
Всем добрый вечер. Подскажите пожалуйста зачем нужен Признак учета субконто -Суммовой.?
Он нужен в том случае, когда хотя бы на одном из субконто его надо отключить (т.е. чтобы не вести суммовой учет в определенных разрезах).

Спасибо)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Январь 24, 2017, 11:31:00 am
Ребзя, проверьте пжл задачу по СПР. Только начинаю въезжать, всё ли правильно сделал?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: e9953 от Январь 26, 2017, 09:19:19 pm
Ребзя, проверьте пжл задачу по СПР. Только начинаю въезжать, всё ли правильно сделал?

Не то, чтобы проверила... Сама готовлюсь к экзамену, сверяю свои решения с другими. Мне кажется неправильным, что у Вас стаж хранится в виде статичного реквизита. Явно ведь храниться должна дата приема на работу, а уж от неё должен определяться стаж, и конечно же,  отдельно для каждой строки начисления.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Январь 27, 2017, 01:05:17 pm
Ребзя, проверьте пжл задачу по СПР. Только начинаю въезжать, всё ли правильно сделал?

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

Да, вы правы. В задаче указано:
Цитировать
Процент премии зависит от стажа работы сотрудника на данном предприятии. Шкала значений процента премии вводится пользователем в режиме 1С:Предприятия. При решении задачи необходимо учитывать, что на момент начала ведения учета в информационной базе у сотрудника уже может быть стаж отличный от нуля.
Я упростил задачу. - 0.5-3.0 балла на усмотрение преподавателя. Я гавно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: e9953 от Январь 27, 2017, 01:59:12 pm
Ребзя, проверьте пжл задачу по СПР. Только начинаю въезжать, всё ли правильно сделал?

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

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

Что ж так резко-то :)? Мысль насчет "упростить" интересная. Мне в голову не приходила )))
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Bennington от Январь 27, 2017, 07:07:15 pm
Товарищи, по какой причине, в данном билете, из 5 скачанных решений пользователей по ОУ используются 2 регистра накопления? В одном склад, в другом партия? Это вроде как избыточность? ведь те же самые данные для данного условия задачи можно получить используя один регистр с измерениями: номенклатура,склад,партия. Ресурсы- Количество, сумма.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Январь 27, 2017, 07:45:59 pm
Товарищи, по какой причине, в данном билете, из 5 скачанных решений пользователей по ОУ используются 2 регистра накопления? В одном склад, в другом партия? Это вроде как избыточность? ведь те же самые данные для данного условия задачи можно получить используя один регистр с измерениями: номенклатура,склад,партия. Ресурсы- Количество, сумма.
Ответ на ваш вопрос в этой фразе
Цитировать
Для расчета себестоимости при списании товара необходимо учитывать только момент поступления товара в компанию, вне зависимости от того, на какой склад он пришел.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Февраль 02, 2017, 09:01:15 am
Видео по решению БУ: http://xn----1-bedvffifm4g.xn--p1ai/news/2016-12-20-how-to-do-fefo/
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pro100KoT от Февраль 10, 2017, 01:37:40 pm
Всем привет!
Прошу оценить моё решение,буду рад всем комментариям и замечаниям.
Спасибо.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Karasik от Февраль 12, 2017, 09:17:56 pm
Коллеги, приветствую
Прошу оценить решение билета № 1.

Жду конструктивной критики.

ОУ: В приходную накладную в обработке проведения использовал не конструктор, а запросом получал ТЧ документа без услуг с группировками. Это важно, т.к оприходование услуг возможно, но в таком случае регистр не будет закрываться в 0.
Запись по новой методике
Задача по ОУ же 1.7 из сборника? Они же пишут
"Расчет себестоимости списанного
товара должен происходить позднее с помощью регламентной обработки «Расчет
себестоимости». Запуск этой обработки должен происходить автоматически с
использованием регламентного задания, но может быть произведен и вручную по
желанию пользователя. Обработка должна автоматически определять самый
первый документ, нуждающийся в расчете себестоимости, и рассчитывать
себестоимость для всех остальных документов начиная с него. "
А у вас он прям в обработке проведения. Да и еще в паре билетов все так же сделано. Почему?
Или я что то путаю?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Февраль 12, 2017, 09:36:22 pm
Задача по ОУ же 1.7 из сборника?
Если хотите только сдать экз, забейте на сборник.  :)
Полные совпадения достаточно редки. Поэтому можете прорешивать задачи из сборника, если не ставите цели быстро получить сертификат.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: dendzu от Февраль 16, 2017, 12:27:52 pm
Всем привет!
Прошу оценить моё решение,буду рад всем комментариям и замечаниям.
Спасибо.

|      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки
   |      ПО ТЧ.Номенклатура = УправленческийОстатки.Субконто1
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки1
   |      ПО ТЧ.Номенклатура = УправленческийОстатки1.Субконто1

В вашем запросе два одинаковых РегистрБухгалтерии.Управленческий с одинаковыми параметрами виртуальной таблицы. Зачем? Если можно обойтись одним РегистрБухгалтерии.Управленческий - ведь получается Вы две абсолютно одинаковые таблицы соединяете или я ошибаюсь?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pro100KoT от Февраль 16, 2017, 04:01:55 pm
Всем привет!
Прошу оценить моё решение,буду рад всем комментариям и замечаниям.
Спасибо.

|      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки
   |      ПО ТЧ.Номенклатура = УправленческийОстатки.Субконто1
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки1
   |      ПО ТЧ.Номенклатура = УправленческийОстатки1.Субконто1

В вашем запросе два одинаковых РегистрБухгалтерии.Управленческий с одинаковыми параметрами виртуальной таблицы. Зачем? Если можно обойтись одним РегистрБухгалтерии.Управленческий - ведь получается Вы две абсолютно одинаковые таблицы соединяете или я ошибаюсь?

Там по-другому никак не вытащить сумму с выключенными суммовыми итогами по субконто "срок годности".
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Февраль 16, 2017, 10:25:27 pm
Там по-другому никак не вытащить сумму с выключенными суммовыми итогами по субконто "срок годности".
Думаю, для вас не было бы лишним посмотреть этот момент в чужих решениях.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: dendzu от Февраль 17, 2017, 07:59:42 am
....Там по-другому никак не вытащить сумму с выключенными суммовыми итогами по субконто "срок годности"....
Попробуйте следующим образом:
|ВЫБРАТЬ
   |   ТЧ.Номенклатура КАК Номенклатура,
   |   ТЧ.НоменклатураПредставление КАК НоменклатураПредставление,
   |   ТЧ.Количество КАК Количество,
   |   ЕСТЬNULL(УправленческийОстатки.Субконто2, ДАТАВРЕМЯ(1, 1, 1)) КАК СрокГодности,
   |   ЕСТЬNULL(УправленческийОстатки1.СуммаОстаток, 0) КАК СуммаОстаток,
   |   УправленческийОстатки.КоличествоОстаток
   |ИЗ
   |   ТЧ КАК ТЧ
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто1,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки
   |      ПО ТЧ.Номенклатура = УправленческийОстатки.Субконто1
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто2,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки1
   |      ПО ТЧ.Номенклатура = УправленческийОстатки1.Субконто1

ГДЕ
&ВидыСубконто1 - это массив из 2-ух элементов субконто номенклатура и срок годности
&ВидыСубконто2 - это массив из 1-го элемента субконто номенклатура

В этом запросе кстати убирается строка с нулевым количеством - которую потом в некоторых решениях убирают в цикле через условие типа
Если Выборка.КоличествоОстаток = 0 Тогда
Продолжить;
КонецЕсли

Писал я что принципе можно одним запросом, но почитал вчера по признак субконто, признак учета субконто и
и понял что одним левым соединением может и решить но правильнее 2-умя по рег. бух. Очень хорошо (но для меня еще мало) об этом написано в Профессиональная разработка в системе 1с ч1 стр 641 - 643, ну и тут http://forum.chistov.pro/index.php?topic=2670.msg41984;topicseen#msg41984
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pro100KoT от Февраль 17, 2017, 09:48:16 am
Там по-другому никак не вытащить сумму с выключенными суммовыми итогами по субконто "срок годности".
Думаю, для вас не было бы лишним посмотреть этот момент в чужих решениях.  :)

Других вариантов решений к сожалению не видел) Если не сложно,напишите другой.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pro100KoT от Февраль 17, 2017, 09:49:53 am
....Там по-другому никак не вытащить сумму с выключенными суммовыми итогами по субконто "срок годности"....
Попробуйте следующим образом:
|ВЫБРАТЬ
   |   ТЧ.Номенклатура КАК Номенклатура,
   |   ТЧ.НоменклатураПредставление КАК НоменклатураПредставление,
   |   ТЧ.Количество КАК Количество,
   |   ЕСТЬNULL(УправленческийОстатки.Субконто2, ДАТАВРЕМЯ(1, 1, 1)) КАК СрокГодности,
   |   ЕСТЬNULL(УправленческийОстатки1.СуммаОстаток, 0) КАК СуммаОстаток,
   |   УправленческийОстатки.КоличествоОстаток
   |ИЗ
   |   ТЧ КАК ТЧ
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто1,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки
   |      ПО ТЧ.Номенклатура = УправленческийОстатки.Субконто1
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
   |            &МоментВремени,
   |            Счет = &Товары,
   |            &ВидыСубконто2,
   |            Субконто1 В
   |               (ВЫБРАТЬ
   |                  ТЧ.Номенклатура
   |               ИЗ
   |                  ТЧ КАК ТЧ)) КАК УправленческийОстатки1
   |      ПО ТЧ.Номенклатура = УправленческийОстатки1.Субконто1

ГДЕ
&ВидыСубконто1 - это массив из 2-ух элементов субконто номенклатура и срок годности
&ВидыСубконто2 - это массив из 1-го элемента субконто номенклатура

В этом запросе кстати убирается строка с нулевым количеством - которую потом в некоторых решениях убирают в цикле через условие типа
Если Выборка.КоличествоОстаток = 0 Тогда
Продолжить;
КонецЕсли

Писал я что принципе можно одним запросом, но почитал вчера по признак субконто, признак учета субконто и
и понял что одним левым соединением может и решить но правильнее 2-умя по рег. бух. Очень хорошо (но для меня еще мало) об этом написано в Профессиональная разработка в системе 1с ч1 стр 641 - 643, ну и тут http://forum.chistov.pro/index.php?topic=2670.msg41984;topicseen#msg41984

У Вас здесь разница с моим вариантом только в разных видах субконто,при том,что остаются те же 2 левых соединений)Какой смысл менять?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: dendzu от Февраль 17, 2017, 11:41:13 am
смысл как раз в том что будет соединение двух разных таблиц из одного регистра. В одной таблице идет  суммовой подсчет по номенклатуре а в другой количественный подсчет по номенклатуре и сроку годности.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Февраль 17, 2017, 07:13:39 pm
Других вариантов решений к сожалению не видел) Если не сложно,напишите другой.
Посмотрите моё решение. Как образец не рассматривать.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: dendzu от Февраль 20, 2017, 08:18:23 am
Проверьте и мое, но есть такой вопрос. В ПУС добавил еще количественный учет. а также еще этот учет прикрепил к ресурсу РБ количество. Вот и получается что ресурс количество имеет признак учета количественный и признак учета субконто также количественный без галочки балансовый. Правильно это или нет? Основывался на данные из книги Радченко и Профессиональная разработка в системе 1с. При вводе движений в РБ не заметил никаких изменений.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fizk_11 от Февраль 20, 2017, 09:26:54 pm
Сегодня добил первый билет, времени угробил неприлично много... а он ведь простой). Если кто осилит посмотреть и раскритиковать, буду очень рад.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Февраль 20, 2017, 10:05:35 pm
... времени угробил неприлично много...
Совсем не обязательно с первых попыток делать быстро. Гораздо важнее - правильно и с пониманием, скорость придет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: dendzu от Февраль 21, 2017, 07:04:48 am
Сегодня добил первый билет, времени угробил неприлично много... а он ведь простой). Если кто осилит посмотреть и раскритиковать, буду очень рад.
Думал полностью билет - а там у вас только Периодические расчеты
Название: Re: Билет 1. Спец по платформе V8
Отправлено: andrig от Февраль 21, 2017, 09:03:58 am
Здравствуйте друзья. Решил разобраться и в старой и новой методике. Сделал 2 варианта ОУ 1 билета.
Просьба посмотреть и прокомментить.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: dendzu от Февраль 21, 2017, 10:41:42 am
Здравствуйте друзья. Решил разобраться и в старой и новой методике. Сделал 2 варианта ОУ 1 билета.
Просьба посмотреть и прокомментить.
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(

может ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(

просто чаще используется ЛЕВОЕ СОЕДИНЕНИЕ, да и вроде проверил также выдает результат
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Fizk_11 от Февраль 21, 2017, 11:42:12 am

Думал полностью билет - а там у вас только Периодические расчеты
:-[ :-[ :-[ Вот же незадача, я свое решение профуфукал...и найти не могу.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: andrig от Февраль 22, 2017, 08:39:41 am
Здравствуйте друзья. Решил разобраться и в старой и новой методике. Сделал 2 варианта ОУ 1 билета.
Просьба посмотреть и прокомментить.
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(

может ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(

просто чаще используется ЛЕВОЕ СОЕДИНЕНИЕ, да и вроде проверил также выдает результат


Да. там одна таблица исправил
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Февраль 23, 2017, 12:22:30 am
Добрый день, Andrig!

Смотрел твоё решение по новой методике.

1. Как верно заметил dendzu, соединение в запросе должно быть ЛЕВОЕ, а не ВНУТРЕННЕЕ.

2.   // А. БЛОКИРОВКА Загрузка таблицы значений в набор записей   
   Движения.ОстаткиНоменклатуры.Загрузить(РезультатЗапроса.Выгрузить());

В правилах приема экзамена есть такой пункт: выгрузка результата запроса в таблицу значений без необходимости.
Если уверены - делайте так. Но будьте готовы доказать на экзамене, что это действительно необходимо.
 
3. Далее, перед запросом по регистру Себестоимость не делается блокировка по нему - вот это уже серьезная
ошибка. Регистр надо блокировать с помощью объекта БлокировкаДанных.

4. В цикле по списанию партий есть код:

         Если выборкаПартии = 0  Тогда
            Продолжить;
         КонецЕсли;

выборкаПартии - это объект типа ВыборкаИзРезультатаЗапроса, он нулю не может быть равен никогда.

5. Движение.Сумма = Движение.Количество * выборкаПартии.СуммаОстаток/выборкаПартии.КоличествоОстаток;

    перед делением надо анализировать выборкаПартии.КоличествоОстаток на ноль.

6. В списание партий неплохо бы добавить код что-то типа:

            Если Списать = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
               Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток
            Иначе
               Сумма = Списать * ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;   
            КонецЕсли;   
   
     Смысл такой - чтобы не "зависали" копейки сумм на остатках, надо всю сумму досписывать, если мы видим,
     что всё количество списывается в ноль.

Ну вот как-то так.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: andrig от Февраль 24, 2017, 04:52:47 pm
Добрый день, Andrig!

Смотрел твоё решение по новой методике.

1. Как верно заметил dendzu, соединение в запросе должно быть ЛЕВОЕ, а не ВНУТРЕННЕЕ.

2.   // А. БЛОКИРОВКА Загрузка таблицы значений в набор записей   
   Движения.ОстаткиНоменклатуры.Загрузить(РезультатЗапроса.Выгрузить());

В правилах приема экзамена есть такой пункт: выгрузка результата запроса в таблицу значений без необходимости.
Если уверены - делайте так. Но будьте готовы доказать на экзамене, что это действительно необходимо.
 
3. Далее, перед запросом по регистру Себестоимость не делается блокировка по нему - вот это уже серьезная
ошибка. Регистр надо блокировать с помощью объекта БлокировкаДанных.

4. В цикле по списанию партий есть код:

         Если выборкаПартии = 0  Тогда
            Продолжить;
         КонецЕсли;

выборкаПартии - это объект типа ВыборкаИзРезультатаЗапроса, он нулю не может быть равен никогда.

5. Движение.Сумма = Движение.Количество * выборкаПартии.СуммаОстаток/выборкаПартии.КоличествоОстаток;

    перед делением надо анализировать выборкаПартии.КоличествоОстаток на ноль.

6. В списание партий неплохо бы добавить код что-то типа:

            Если Списать = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
               Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток
            Иначе
               Сумма = Списать * ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;   
            КонецЕсли;   
   
     Смысл такой - чтобы не "зависали" копейки сумм на остатках, надо всю сумму досписывать, если мы видим,
     что всё количество списывается в ноль.

Ну вот как-то так.
Здравствуй freemaestro!
Спасибо за подробный разбор.
Я делал 2 файла, по новой и старой методике. Указывай, пожалуйста в каком ошибка.
В свое оправдание могу пояснить следующее :).

1.Исправил, ответ выше по ветке.
2.В этом вопросе не спец, но..
Это все теория. Зависит от экзаменатора. Доказывать что-то профессору – самоубийство.
Я действовал по методике Евгения Гилева.
По моему мнению. Выгружается временная таблица. Срок ее жизни – не долог. Можете «добить» ее в конце запроса.
3.Не согласен по ошибке.
РН «себестоимость» «работает» после РН «Остатки номенклатуры». Блокировка первого не позволяет делать записи во второй, только после записи движений в первый.
4. Моя ошибка - исправил.
Если выборкаПартии. КоличествоОстаток= 0  Тогда
5. Отпадает по П4.
6. Все списывается в 0.
Списать  = 3
ВыборкаДетальныеЗаписи.СуммаОстаток  = 10,33
ВыборкаДетальныеЗаписи.КоличествоОстаток = 3   
3*10,33/3 =10,33
Х*Y/X = Y   
СуммаОстаток  Y списывается полностью.
 
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Февраль 24, 2017, 06:00:28 pm
... Зависит от экзаменатора. Доказывать что-то профессору – самоубийство.
Я действовал по методике Евгения Гилева.
По моему мнению. Выгружается временная таблица...
На сколько я помню, на экзамене нет задач, в которых есть необходимость использовать выгрузку.
И ни в коем случае не ссылайтесь на Гилева, это точно не будет плюсом к вашему решению.
А доказывать надо, но только тогда, когда точно знаешь, что прав ("профессора" иногда так шутят - говорят, что есть ошибка там, где на самом деле ее нет - проверяют понимание).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: andrig от Февраль 24, 2017, 06:49:17 pm
... Зависит от экзаменатора. Доказывать что-то профессору – самоубийство.
Я действовал по методике Евгения Гилева.
По моему мнению. Выгружается временная таблица...
На сколько я помню, на экзамене нет задач, в которых есть необходимость использовать выгрузку.
И ни в коем случае не ссылайтесь на Гилева, это точно не будет плюсом к вашему решению.
А доказывать надо, но только тогда, когда точно знаешь, что прав ("профессора" иногда так шутят - говорят, что есть ошибка там, где на самом деле ее нет - проверяют понимание).
остальное в порядке?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Февраль 24, 2017, 09:58:27 pm

3.Не согласен по ошибке.
РН «себестоимость» «работает» после РН «Остатки номенклатуры». Блокировка первого не позволяет делать записи во второй, только после записи движений в первый.



Доброго дня, andrig!

Поясни, пожалуйста, что ты имел в виду.

Вообще говоря, "новая методика" работает так: мы пишем в регистр остатков с "БлокироватьДляИзмененения" - и регистр блокируется. А далее, мы делаем запрос к регистру себестоимости - но предварительно надо его заблокировать с помощью объекта БлокировкаДанных.


Вот статья Павла Чистова на сайте Инфостарт:
http://expert.chistov.pro/public/195591/
Название: Re: Билет 1. Спец по платформе V8
Отправлено: andrig от Февраль 25, 2017, 08:06:43 am

3.Не согласен по ошибке.
РН «себестоимость» «работает» после РН «Остатки номенклатуры». Блокировка первого не позволяет делать записи во второй, только после записи движений в первый.



Доброго дня, andrig!

Поясни, пожалуйста, что ты имел в виду.

Вообще говоря, "новая методика" работает так: мы пишем в регистр остатков с "БлокироватьДляИзмененения" - и регистр блокируется. А далее, мы делаем запрос к регистру себестоимости - но предварительно надо его заблокировать с помощью объекта БлокировкаДанных.


Вот статья Павла Чистова на сайте Инфостарт:
http://expert.chistov.pro/public/195591/
Здравствуй,freemaestro!
На самом деле при свойство БлокироватьДляИзменения не устанавливает управляемую блокировку, оно лишь выключает режим разделения итогов регистра при записи. 
Важно. Мы не накладываем блокировку на регистр «Себестоимость». Почему? Такая блокировка являлась бы излишней (а это определенная нагрузка на сервер 1С), поскольку движения в регистры «Остатки номенклатуры» и «Себестоимость» выполняются всегда синхронно, то есть последовательно друг за другом. Поэтому, заблокировав товары из «Остатки номенклатуры», мы не допустим другие транзакции до этих товаров и в регистре «Себестоимость».
http://курсы-по-1с.рф/articles/2017-02-13-realtimeposting-and-datalock/
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Февраль 25, 2017, 02:32:58 pm
Доброго времени суток, andrig !

Про "БлокироватьДляИзмененения"  - точнее было бы сказать - для нас важно, что никто параллельно с нами читать данные из регистра по тем товарам, движения по которым были сформированы, не сможет. Это из статьи Павла Чистова, ссылку на которую я тебе дал. Но, блокировка всё-таки устанавливается - открываем синтакс-помощник:
"Устанавливает режим, при котором в процессе записи набора будет установлена управляемая блокировка для всех комбинаций измерений в соответствии с записями набора записей. Имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи. В этом случае можно не использовать объект БлокировкаДанных.
".

Хотел поблагодарит тебя за ссылку.
Для меня информация оказалась новой и полезной.

Но моё мнение - на экзамене так делать не стоит, т.к. не факт, что проверяющий ожидает увидеть и услышать такое объяснение. Ещё посмотри комментарии к этой статье. Обрати внимание на комментарий mrvaldem и ответ Гилева на этот комментарий.
mrvaldem:
"Добрый день. В примечании Вы говорите о том, что не требуется накладывать блокировку на РН «Себестоимость», т.к. блокировки для РН «Свободные остатки» достаточно. Но это если допустить, что в системе все документы двигают эти оба регистра одновременно. Но это врядли. Поэтому, наверное, блочить «Свободные остатки и если проверка на отрицательность прошла, то блочить «Себестоимость» и проводить.   Источник: ©Курсы-по-1С.рф"
Евгений Гилев (Мастер-тренер):
"Добрый день! Разумеется, могут быть случаи, когда нужно будет накладывать блокировки на регистр «Себестоимость товаров». Но, например, в типовой УТ 11 блокировка на этот регистр не накладывается. Почему? Разработчики облегчили себе жизнь — работу с себестоимостью они вынести за рамки проведения документов, в регламентные операции закрытия месяца."   Источник: ©Курсы-по-1С.рф

И по проблеме копеек такая же песня - может, и не надо ставить отдельное условие при списании количества в ноль, но люди пишут  - преподаватели придираются к этому. В комментариях к этой же статье посмотри.

Так что используй всё это так, как посчитаешь нужным, удачи на экзамене.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: andrig от Февраль 27, 2017, 06:56:22 am
Доброго времени суток, andrig !

Про "БлокироватьДляИзмененения"  - точнее было бы сказать - для нас важно, что никто параллельно с нами читать данные из регистра по тем товарам, движения по которым были сформированы, не сможет. Это из статьи Павла Чистова, ссылку на которую я тебе дал. Но, блокировка всё-таки устанавливается - открываем синтакс-помощник:
"Устанавливает режим, при котором в процессе записи набора будет установлена управляемая блокировка для всех комбинаций измерений в соответствии с записями набора записей. Имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи. В этом случае можно не использовать объект БлокировкаДанных.
".

Хотел поблагодарит тебя за ссылку.
Для меня информация оказалась новой и полезной.

Но моё мнение - на экзамене так делать не стоит, т.к. не факт, что проверяющий ожидает увидеть и услышать такое объяснение. Ещё посмотри комментарии к этой статье. Обрати внимание на комментарий mrvaldem и ответ Гилева на этот комментарий.
mrvaldem:
"Добрый день. В примечании Вы говорите о том, что не требуется накладывать блокировку на РН «Себестоимость», т.к. блокировки для РН «Свободные остатки» достаточно. Но это если допустить, что в системе все документы двигают эти оба регистра одновременно. Но это врядли. Поэтому, наверное, блочить «Свободные остатки и если проверка на отрицательность прошла, то блочить «Себестоимость» и проводить.   Источник: ©Курсы-по-1С.рф"
Евгений Гилев (Мастер-тренер):
"Добрый день! Разумеется, могут быть случаи, когда нужно будет накладывать блокировки на регистр «Себестоимость товаров». Но, например, в типовой УТ 11 блокировка на этот регистр не накладывается. Почему? Разработчики облегчили себе жизнь — работу с себестоимостью они вынести за рамки проведения документов, в регламентные операции закрытия месяца."   Источник: ©Курсы-по-1С.рф

И по проблеме копеек такая же песня - может, и не надо ставить отдельное условие при списании количества в ноль, но люди пишут  - преподаватели придираются к этому. В комментариях к этой же статье посмотри.

Так что используй всё это так, как посчитаешь нужным, удачи на экзамене.

Здравствуй, freemaestro!
спасибо за дискуссию. Я и сделал по 2-м методам, чтобы обсудить, потому,что все делают по-разному.
Если тебе не сложно, то просьба сделать свой вариант. Можно прямо в моем файле только РН.
Будет интересно посмотреть. 
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Февраль 27, 2017, 08:07:29 am
Доброго времени суток, andrig!

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

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

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

   Запрос.Текст =
      "ВЫБРАТЬ
      |   ПРЕДСТАВЛЕНИЕ(ОстаткиНоменклатурыОстатки.Номенклатура) КАК ПредставлениеНоменклатуры,
      |   ОстаткиНоменклатурыОстатки.КоличествоОстаток
      |ИЗ
      |   РегистрНакопления.ОстаткиНоменклатуры.Остатки(
      |         &МоментВремени,
      |         Склад = &Склад
      |            И Номенклатура В
      |               (ВЫБРАТЬ
      |                  ДокТЧ.Номенклатура
      |               ИЗ
      |                  ДокТЧ КАК ДокТЧ)) КАК ОстаткиНоменклатурыОстатки
      |ГДЕ
      |   ОстаткиНоменклатурыОстатки.КоличествоОстаток < 0";
      
   Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(),ВидГраницы.Включая));
   Запрос.УстановитьПараметр("Склад",Склад);
   
   РезультатЗапроса = Запрос.Выполнить();
      
   Если НЕ РезультатЗапроса.Пустой() Тогда
      Отказ = Истина;
      ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         Сообщить("Оперативный учет. Номенклатуры "+""""+ ВыборкаДетальныеЗаписи.ПредставлениеНоменклатуры+ """"+" не хватает в нужном количестве. Количество с учетом движений документа: "+ВыборкаДетальныеЗаписи.КоличествоОстаток);
      КонецЦикла;
   КонецЕсли;
   
   Если Отказ Тогда
      Возврат;
   КонецЕсли;
   
   МетодСписания = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Дата).Значение;
   СтрокаПорядка = ?(МетодСписания=Перечисления.УчетнаяПолитика.ФИФО,"","УБЫВ");
   
   БД = Новый БлокировкаДанных;
    ЭлементБД = БД.Добавить("РегистрНакопления.СебестоимостьНоменклатуры");
   ЭлементБД.Режим = РежимБлокировкиДанных.Исключительный;
   ЭлементБД.ИсточникДанных = СписокНоменклатуры;
   ЭлементБД.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");
   БД.Заблокировать();
   
   Движения.СебестоимостьНоменклатуры.Записывать = Истина;
   Движения.СебестоимостьНоменклатуры.Очистить();
   Движения.СебестоимостьНоменклатуры.Записать();
   
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ДокТЧ.Номенклатура КАК Номенклатура,
      |   ПРЕДСТАВЛЕНИЕ(ДокТЧ.Номенклатура) КАК ПредставлениеНоменклатуры,
      |   ДокТЧ.Количество КАК Количество,
      |   ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК Партия,
      |   ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
      |   ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток
      |ИЗ
      |   ДокТЧ КАК ДокТЧ
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьНоменклатуры.Остатки(
      |            &МоментВремени,
      |            Номенклатура В
      |               (ВЫБРАТЬ
      |                  ДокТЧ.Номенклатура
      |               ИЗ
      |                  ДокТЧ КАК ДокТЧ)) КАК СебестоимостьНоменклатурыОстатки
      |      ПО ДокТЧ.Номенклатура = СебестоимостьНоменклатурыОстатки.Номенклатура
      |
      |УПОРЯДОЧИТЬ ПО
      |   СебестоимостьНоменклатурыОстатки.Партия.МоментВремени " + СтрокаПорядка +
      "ИТОГИ
      |   МИНИМУМ(Количество)
      |ПО
      |   Номенклатура";
   
   Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(),ВидГраницы.Исключая));
   
   РезультатЗапроса = Запрос.Выполнить();
   
   Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   Пока Выборка.Следующий() Цикл
          ОсталосьСписать = Выборка.Количество;
         
         ВыборкаДетальныеЗаписи = Выборка.Выбрать();
         Пока ВыборкаДетальныеЗаписи.Следующий() И ОсталосьСписать <> 0 Цикл
            Списать = МИН(ОсталосьСписать, ВыборкаДетальныеЗаписи.КоличествоОстаток);
            
            Если Списать = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
               Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток
            Иначе
               Сумма = Списать * ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;   
            КонецЕсли;   
                  
            ОсталосьСписать = ОсталосьСписать - Списать;
            
            Движение = Движения.СебестоимостьНоменклатуры.Добавить();
            Движение.Период = Дата;
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
            Движение.Партия = ВыборкаДетальныеЗаписи.Партия;
            Движение.Количество = Списать;
            Движение.Сумма = Сумма;
         
         КонецЦикла;

   КонецЦикла;

    Движения.СебестоимостьНоменклатуры.Записывать = Истина;

Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Февраль 27, 2017, 08:22:58 am
Andrig, а ты бух. учет делать будешь?
Можно тоже обсудить.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: vaasec от Февраль 27, 2017, 11:33:13 am
   Движения.ОстаткиНоменклатуры.Записывать = Истина;
   Движения.ОстаткиНоменклатуры.Очистить();

Зачем это делать? Движения и так пустые при оперативном проведении. Белоусов в курсе говорит, что это делать не надо.

   
Движения.СебестоимостьНоменклатуры.Записывать = Истина;
   Движения.СебестоимостьНоменклатуры.Очистить();
   Движения.СебестоимостьНоменклатуры.Записать();


Зачем так сложно?
 Достаточно
 Движения.СебестоимостьНоменклатуры.Записать(); // так как новых движений нет то система перезапишет РН.СебестоимостьНоменклатуры пустыми стоками
 или
Движения.СебестоимостьНоменклатуры.Записывать = Истина;
Движения.Записать();

Почему Движения.Записать() а не Движения.СебестоимостьНоменклатуры.Записать(), так как могут возникнуть взаимоблокировки см http://курсы-по-1с.рф/articles/2017-02-13-realtimeposting-and-datalock/ (http://курсы-по-1с.рф/articles/2017-02-13-realtimeposting-and-datalock/)

   
 |   ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК Партия,

В РН.СебестоимостьНоменклатуры измерение Партия обязательная к заполнению. Следовательно не будет у вас случая когда Партия Null. Следовательно проверять не надо на Null.


Все что сказано это мое мнение. В данный момент сам готовлюсь.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Февраль 27, 2017, 01:27:21 pm
Доброго времени суток, vaasec!



Движения.ОстаткиНоменклатуры.Записывать = Истина;
   Движения.ОстаткиНоменклатуры.Очистить();

Зачем это делать? Движения и так пустые при оперативном проведении. Белоусов в курсе говорит, что это делать не надо.



Я вообще оперативное проведение отключаю в документах.
В правилах приема экзамена сказано:
"Если при проведении документа используются каким-то образом данные,
считываемые из регистров, обязательно требуется предусмотреть получение
таких данных на момент проведения документа" - минус 1 балл на экзамене.
Почитай здесь же на форуме это обсуждают.
Но это - на свой страх и риск, лично я буду так делать.



Почему Движения.Записать() а не Движения.СебестоимостьНоменклатуры.Записать(),
так как могут возникнуть взаимоблокировки см
 http://курсы-по-1с.рф/articles/2017-02-13-realtimeposting-and-datalock/



Я готовлюсь по курсу Дмитрия Гончарова.
Он говорит о том, что при Движения.Записать()
соблюдается гарантированная системная последовательность записи движений,
что минимизирует шанс появления блокировок.



|   ЕСТЬNULL(СебестоимостьНоменклатурыОстатки.Партия, ЗНАЧЕНИЕ(Документ.ПриходнаяНакладная.ПустаяСсылка)) КАК Партия,

В РН.СебестоимостьНоменклатуры измерение Партия обязательная к заполнению.
Следовательно не будет у вас случая когда Партия Null. Следовательно проверять не надо на Null.



Партия может и не может быть пустым - это как ты регистр накопления настроил.
Есть такое правило при приеме экзамена:
"Отсутствие проверки на NULL" - минус 1 балл на экзамене.
А так как здесь левое соединение, то NULL может быть,
хотя бы теоретически.
Поэтому проверка далеко не лишняя.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: vaasec от Февраль 27, 2017, 03:04:24 pm
Доброго времени суток, vaasec!
....

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

На счет  Движения.Записать() согласен, но Очищать движения считаю лишним. А что за курс и какого он года?

Все измерения в РН должны быть заполнены, так говорит Белоусов, и в билете 3 нельзя записывать пустую партию , а надо использовать документ Учетная Политика (см. комментарии).
В вашем случае это будет лишнее использование NULL, либо думаю спросят в каком случае у вас партия будет не заполнена.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: andrig от Февраль 27, 2017, 05:33:44 pm
Andrig, а ты бух. учет делать будешь?
Можно тоже обсудить.
Хочу добить сначала ОУ.
Или думаешь, что лучше параллельно?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Февраль 27, 2017, 09:25:24 pm
Делай как тебе удобно, Andrig. я просто тоже хочу выложить своё решение и обсудить.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 08:26:13 am
Посмотрите пожалуйста мое решение ОУ+БУ. Не знаю, может с БУ я перемудрила...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 09:03:23 am
Посмотрите пожалуйста мое решение ОУ+БУ. Не знаю, может с БУ я перемудрила...

а при чем тут серии если задача про сроки годности или это они и есть?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 09:08:57 am
Цитировать
а при чем тут серии если задача про сроки годности или это они и есть?

Добавлять Субконто примитивного типа Дата это не очень правильно с точки зрения последующей индексации таблицы регистра, поэтому сделала справочник Серии, в котором храню сроки годности. Где-то выше скидывала ссылку о сроках годности, Гилев рассказывал.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 09:29:12 am
просто я назвал справочник просто "Сроки годности", а "Серии"  немножко другое и сбивает с толку.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 09:43:47 am
Цитировать
просто я назвал справочник просто "Сроки годности", а "Серии"  немножко другое и сбивает с толку.
Кто на что гаразд)
Вариант решения №2 с признаком учета субконто "Суммовой", так наверное будет более правильно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 09:51:51 am
Посмотрите пожалуйста мое решение ОУ+БУ. Не знаю, может с БУ я перемудрила...

У вас в плане счетов есть признак учета субконто "Количественный", и субконто "Серия" отмечено галочкой количественный, это почему вы так сделали? Думаю в этой задаче нужно добавить признак учета количественный для счета товары, и признак учета субконто Суммовой.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 10:11:24 am
Цитировать
У вас в плане счетов есть признак учета субконто "Количественный", и субконто "Серия" отмечено галочкой количественный, это почему вы так сделали? Думаю в этой задаче нужно добавить признак учета количественный для счета товары, и признак учета субконто Суммовой.

Да, это как один из вариантов. Просто я потом остатки читаю не из остатков, а из оборотов. Не очень хороший вариант, уже выложила другой выше) Спасибо большое!
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 10:40:38 am
Цитировать
У вас в плане счетов есть признак учета субконто "Количественный", и субконто "Серия" отмечено галочкой количественный, это почему вы так сделали? Думаю в этой задаче нужно добавить признак учета количественный для счета товары, и признак учета субконто Суммовой.

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

ввел свои данные в бухгалтерскую задачу, там копейка застряла на счете Товары.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 11:19:27 am
Цитировать
Цитата: olchik от Сегодня в 10:11:24 am
Цитировать
У вас в плане счетов есть признак учета субконто "Количественный", и субконто "Серия" отмечено галочкой количественный, это почему вы так сделали? Думаю в этой задаче нужно добавить признак учета количественный для счета товары, и признак учета субконто Суммовой.

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

ввел свои данные в бухгалтерскую задачу, там копейка застряла на счете Товары.
* 1Cv8.dt (208.92 КБ - загружено 0 раз.)

* копейка потерялася.jpg (123.29 КБ, 1136x561 - просмотрено 2 раз.)

Это в новом решении или в старом? То есть у того, которого есть признак учета Субконто Суммовой или где нет?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 11:23:54 am
Цитировать
Цитата: olchik от Сегодня в 10:11:24 am
Цитировать
У вас в плане счетов есть признак учета субконто "Количественный", и субконто "Серия" отмечено галочкой количественный, это почему вы так сделали? Думаю в этой задаче нужно добавить признак учета количественный для счета товары, и признак учета субконто Суммовой.

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

ввел свои данные в бухгалтерскую задачу, там копейка застряла на счете Товары.
* 1Cv8.dt (208.92 КБ - загружено 0 раз.)

* копейка потерялася.jpg (123.29 КБ, 1136x561 - просмотрено 2 раз.)

Это в новом решении или в старом? То есть у того, которого есть признак учета Субконто Суммовой или где нет?

в новом и от плана счетов не зависит, проблема в этом месте
       СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;

Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 11:27:47 am
Цитировать
в новом и от плана счетов не зависит, проблема в этом месте
       СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;
Есть предложение решения проблемы копеек?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 11:38:15 am
Цитировать
в новом и от плана счетов не зависит, проблема в этом месте
       СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;
Есть предложение решения проблемы копеек?

Если списываем всю партию тогда в качестве себестоимости списываем всю стоимость партии (или весь остаток по счету)

            
            Списать = Мин(ОсталосьСписать, Выборка.КоличествоОстаток);
            Если Списать = Выборка.КоличествоОстаток Тогда
               Себестоимость = Выборка.СуммаОстаток;
            Иначе
               Себестоимость = Списать / Выборка.КоличествоОстаток * Выборка.СуммаОстаток;
            КонецЕсли;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 11:41:02 am
Цитировать
Цитировать
в новом и от плана счетов не зависит, проблема в этом месте
       СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;
Есть предложение решения проблемы копеек?

Да, согласна. Только здесь не по партии (серии,сроку годности), а в целом по номенклатуре.
То есть как то так
КолСписать = МИН(НеобходиомСписать,ВыборкаСерия.КоличествоОстатокПоСерии);
         Если КолСписать = ВыборкаНоменклатура.КоличествоОстаток Тогда
            СуммаСебастоимость =  ВыборкаНоменклатура.СуммаОстаток;
         Иначе   
             СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;         
         КонецЕсли;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 12:46:32 pm
Цитировать
Цитировать
в новом и от плана счетов не зависит, проблема в этом месте
       СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;
Есть предложение решения проблемы копеек?

Да, согласна. Только здесь не по партии (серии,сроку годности), а в целом по номенклатуре.
То есть как то так
КолСписать = МИН(НеобходиомСписать,ВыборкаСерия.КоличествоОстатокПоСерии);
         Если КолСписать = ВыборкаНоменклатура.КоличествоОстаток Тогда
            СуммаСебастоимость =  ВыборкаНоменклатура.СуммаОстаток;
         Иначе   
             СуммаСебастоимость = ВыборкаСерия.СуммаОстаток * КолСписать / ВыборкаСерия.КоличествоОстаток;         
         КонецЕсли;

проблема осталась
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 12:47:56 pm
Цитировать
проблема осталась
Может тогда обратно выгрузку с примером скинете, с копейками )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 12:50:26 pm
Цитировать
проблема осталась
Может тогда обратно выгрузку с примером скинете, с копейками )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 02, 2017, 01:10:11 pm
Не знаю на сколько это правильно и можно ли сделать лучше...



ОбщаяСуммаСписания = 0;
      Пока ВыборкаСерия.Следующий() и НеобходиомСписать>0 Цикл
         КолСписать = МИН(НеобходиомСписать,ВыборкаСерия.КоличествоОстатокПоСерии);
         Если КолСписать = ВыборкаНоменклатура.КоличествоОстаток Тогда
            СуммаСебастоимость =  ВыборкаНоменклатура.СуммаОстаток;
         Иначе   
             СуммаСебастоимость = Окр(КолСписать / ВыборкаСерия.КоличествоОстаток * ВыборкаСерия.СуммаОстаток, 2);         
         КонецЕсли;
         ОбщаяСуммаСписания = ОбщаяСуммаСписания + СуммаСебастоимость;
         Проводка = Движения.РегистрБухгалтерии.Добавить();
         Проводка.Период = Дата;
         Проводка.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
         Проводка.СчетКт = ПланыСчетов.Управленческий.Товары;
         Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Серия] = ВыборкаСерия.Серия;
         Проводка.КоличествоКт = КолСписать;
         Проводка.Сумма = СуммаСебастоимость;
         НеобходиомСписать = НеобходиомСписать - КолСписать;
      
      КонецЦикла;
      Если ВыборкаНоменклатура.КоличествоОстаток = ВыборкаНоменклатура.КоличествоОстатокПоСерии Тогда
         Копейка = ВыборкаНоменклатура.СуммаОстаток - ОбщаяСуммаСписания;
         Проводка.Сумма = Проводка.Сумма + Копейка;
      КонецЕсли;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Alyx Ruby от Март 02, 2017, 02:54:37 pm
Все правильно, проверка тоже правильна: Если КолСписать = КоличествоОстаток, то просто списываем СуммаОстаток, только это выражение:

 СуммаСебестоимость = Окр(КолСписать / ВыборкаСерия.КоличествоОстаток * ВыборкаСерия.СуммаОстаток, 2);
лучше писать так:

СуммаСебестоимость = КолСписать * ВыборкаСерия.СуммаОстаток / ВыборкаСерия.КоличествоОстаток;

То есть из-за особенностей компьютерного округления сначала умножаем, потом делим. Округлять не обязательно, разрядность поля само позаботится об округлении.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 02, 2017, 06:56:02 pm
Все правильно, проверка тоже правильна: Если КолСписать = КоличествоОстаток, то просто списываем СуммаОстаток, только это выражение:

 СуммаСебестоимость = Окр(КолСписать / ВыборкаСерия.КоличествоОстаток * ВыборкаСерия.СуммаОстаток, 2);
лучше писать так:

СуммаСебестоимость = КолСписать * ВыборкаСерия.СуммаОстаток / ВыборкаСерия.КоличествоОстаток;

То есть из-за особенностей компьютерного округления сначала умножаем, потом делим. Округлять не обязательно, разрядность поля само позаботится об округлении.  :)

Можете решить проблему копеек в прикрепленном примере в бухгалтерской задачи? там данные забиты. У меня не получилось.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 03, 2017, 09:01:59 am
Цитировать
Можете решить проблему копеек в прикрепленном примере в бухгалтерской задачи? там данные забиты. У меня не получилось.

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

ОбщаяСуммаСписания = 0;
      Пока ВыборкаСерия.Следующий() и НеобходиомСписать>0 Цикл
         КолСписать = МИН(НеобходиомСписать,ВыборкаСерия.КоличествоОстатокПоСерии);
         Если КолСписать = ВыборкаНоменклатура.КоличествоОстаток Тогда
            СуммаСебастоимость =  ВыборкаНоменклатура.СуммаОстаток;
         Иначе   
             СуммаСебастоимость = КолСписать * ВыборкаСерия.СуммаОстаток / ВыборкаСерия.КоличествоОстаток ;         
         КонецЕсли;
         ОбщаяСуммаСписания = ОбщаяСуммаСписания + СуммаСебастоимость;
         Проводка = Движения.РегистрБухгалтерии.Добавить();
         Проводка.Период = Дата;
         Проводка.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
         Проводка.СчетКт = ПланыСчетов.Управленческий.Товары;
         Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаНоменклатура.Номенклатура;
         Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Серия] = ВыборкаСерия.Серия;
         Проводка.КоличествоКт = КолСписать;
         Проводка.Сумма = СуммаСебастоимость;
         НеобходиомСписать = НеобходиомСписать - КолСписать;
     
      КонецЦикла;
      Если ВыборкаНоменклатура.КоличествоОстаток = ВыборкаНоменклатура.КоличествоОстатокПоСерии Тогда
         Копейка = ВыборкаНоменклатура.СуммаОстаток - ОбщаяСуммаСписания;
         Проводка.Сумма = Проводка.Сумма + Копейка;
      КонецЕсли;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 14, 2017, 12:22:31 pm
Всем доброго дня! У меня проблема с выполнением бух.задачи - когда провожу Приходную накладную с одним товаром в виртуальную таблицу "УправленческийОстатки" на счет "Товары" создается одна запись. Хотя в плане счетов сделал "Признак учета субконто" суммовой и назначил его на Субконто1 "Номенклатура". За образец брал решение SAE, у него делается две записи в виртуальную таблицу - сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию". Подскажите, что может быть не так в моем решении? На всякий случай прикреплю выгрузку свою.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 14, 2017, 01:27:07 pm
сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию".

Что то даже представить такое не могу, сделайте сриншоты, может понятнее будет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 14, 2017, 01:33:36 pm
сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию".

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

Прикрепил
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 14, 2017, 02:11:22 pm
Прикрепил

Это действительно странно, у меня тоже одна запись получается. На конечный результат вроде не влияет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Dmitri-Dmitrich от Март 14, 2017, 03:16:12 pm
Я решил проблему копеек в БУ немного по другому, просто из общей суммы вычитал сумму списания, а если списываем последнюю партию списывал результат вычитания. Прикрепляю решение. Кто может, посмотрите пожалуйста мое решение, найдите недочеты
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 14, 2017, 04:02:59 pm
Тут много кто пишет о проблеме копеек. Можно поподробнее?
Пример:
Йогурт 20.03.17 - 10 шт цена 500,13
Йогурт 25.03.17 - 10 шт цена 700

СрокГодности 20.03.17
продаем 9 шт - по 50,01 = 450,12
остаток 1 шт - по 50,01

продаем еще 5 шт.
смотрим что у нас есть остаток ранней партии в размере 1шт, соответственно списываем остаточную себестоимость, т.е. 50,01(т.е. все что есть)
а так же списываем 4шт по 70 = 280

Вопрос: откуда проблемы с копейками?



Название: Re: Билет 1. Спец по платформе V8
Отправлено: olchik от Март 14, 2017, 04:12:53 pm
Тут много кто пишет о проблеме копеек. Можно поподробнее?
Пример:
Йогурт 20.03.17 - 10 шт цена 500,13
Йогурт 25.03.17 - 10 шт цена 700

СрокГодности 20.03.17
продаем 9 шт - по 50,01 = 450,12
остаток 1 шт - по 50,01

продаем еще 5 шт.
смотрим что у нас есть остаток ранней партии в размере 1шт, соответственно списываем остаточную себестоимость, т.е. 50,01(т.е. все что есть)
а так же списываем 4шт по 70 = 280

Вопрос: откуда проблемы с копейками?
Я тоже никак не могла смоделировать. Посмотрите выгрузки баз и какой там пример приведен.
Цитировать
проблема осталась
Может тогда обратно выгрузку с примером скинете, с копейками )
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Dmitri-Dmitrich от Март 14, 2017, 04:16:38 pm
Тут много кто пишет о проблеме копеек. Можно поподробнее?
Пример:
Йогурт 20.03.17 - 10 шт цена 500,13
Йогурт 25.03.17 - 10 шт цена 700

СрокГодности 20.03.17
продаем 9 шт - по 50,01 = 450,12
остаток 1 шт - по 50,01

продаем еще 5 шт.
смотрим что у нас есть остаток ранней партии в размере 1шт, соответственно списываем остаточную себестоимость, т.е. 50,01(т.е. все что есть)
а так же списываем 4шт по 70 = 280

Вопрос: откуда проблемы с копейками?
Проблема с копейками возникает, т.к. суммовой учет ведется в разрезе всей номенклатуры, соответственно в регистре не хранятся данные о себестоимости конкретной партии. И соответственно мы не можем списать остаток по партии, т.к. нет данных для этого, а если списывать как (общая стоимость по номенклатуре)/(общее количество по нменклатуре)*(количествоСписания) то зависнут копейки из за округления. Соответственно нужно накапливать сколько осталось списать в отдельной переменной и списывать это, если партия последняя. Возможно я заблуждаюсь, но я решил эту проблему так. Пример можете посмотреть в выгрузке, прикрепленной к моему предыдущему сообщению
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 14, 2017, 05:00:48 pm
Вопрос: откуда проблемы с копейками?
Проблема если и есть, то не копеек, а неумения "готовить" списание.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 15, 2017, 08:05:56 am
Тут много кто пишет о проблеме копеек. Можно поподробнее?
Пример:
Йогурт 20.03.17 - 10 шт цена 500,13
Йогурт 25.03.17 - 10 шт цена 700

СрокГодности 20.03.17
продаем 9 шт - по 50,01 = 450,12
остаток 1 шт - по 50,01

продаем еще 5 шт.
смотрим что у нас есть остаток ранней партии в размере 1шт, соответственно списываем остаточную себестоимость, т.е. 50,01(т.е. все что есть)
а так же списываем 4шт по 70 = 280

Вопрос: откуда проблемы с копейками?

Добрый день, xXeNoNx !

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

Твой пример:
Приход: 
Йогурт 20.03.17 - 10 шт на сумму 500,13
Йогурт 25.03.17 - 10 шт на сумму 700

продаем 9 шт - цену считаем как среднюю ПО ВСЕЙ НОМЕНКЛАТУРЕ: 1200,13*9/20 = 540,06
списываем со срока годности  20.03.17: 9 шт.

Остаток:
Йогурт 20.03.17 - 1 шт
Йогурт 25.03.17 - 10 шт
Суммовой остаток: 1200,13 - 540,06 = 660,07

продаем еще 5 шт. : 660,07*5/11 = 300,03
списываем со срока годности  20.03.17: 1 шт.
списываем со срока годности  25.03.17: 4 шт.

Остаток:
Йогурт 25.03.17 - 6 шт
Суммовой остаток: 660,07 - 300,03 = 360,04

                       
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 15, 2017, 10:10:43 am
Да, точно, суммовой остаток ведется только по субконто номенклатуры, т.е. там вся накопленная себестоимость, проблема с копейками возникнет когда будет списана последняя штука товаров, но когда мы списываем последнюю  штуку, не важно из какой партии, мы списываем остаточную стоимость по конкретной номенклатуре в полном размере
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 15, 2017, 11:21:23 am
вот мой модуль обработки проведения в txt-файле во вложении, прошу покритиковать.

Если кто желает, могу скинуть dt.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 17, 2017, 06:16:27 am
Всем доброго дня! У меня проблема с выполнением бух.задачи - когда провожу Приходную накладную с одним товаром в виртуальную таблицу "УправленческийОстатки" на счет "Товары" создается одна запись. Хотя в плане счетов сделал "Признак учета субконто" суммовой и назначил его на Субконто1 "Номенклатура". За образец брал решение SAE, у него делается две записи в виртуальную таблицу - сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию". Подскажите, что может быть не так в моем решении? На всякий случай прикреплю выгрузку свою.

Долго бился, но разобрался почему так получается!
В решении SAE Субконто2 - Срок годности имеет "примитивный тип" Дата. Я же использовал справочник "Серии".
На своей шкуре убедился, что записи с Субконто имеющие ссылочный тип в виртуальной таблице хранятся оптимальней.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 17, 2017, 07:10:34 am
Долго бился, но разобрался почему так получается!
В решении SAE Субконто2 - Срок годности имеет "примитивный тип" Дата. Я же использовал справочник "Серии".
На своей шкуре убедился, что записи с Субконто имеющие ссылочный тип в виртуальной таблице хранятся оптимальней.  :)
:)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 17, 2017, 07:25:08 am
Рано радовался  :(
Сделал приход 1шт за 500р с одной серией, затем второй приход 1шт за 600р с другой. Продал 1шт одной расходной(списалось 550руб), затем еще раз продал 1шт другой(списалось еще 550руб). В результате в виртуальном регистре остатки следующая картина. Это же не правильно? Как считаете?

Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 17, 2017, 07:59:19 am
Рано радовался  :(
Сделал приход 1шт за 500р с одной серией, затем второй приход 1шт за 600р с другой. Продал 1шт одной расходной(списалось 550руб), затем еще раз продал 1шт другой(списалось еще 550руб). В результате в виртуальном регистре остатки следующая картина. Это же не правильно? Как считаете?

Не знаю у меня все норм
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 17, 2017, 09:00:58 am
Рано радовался  :(
Сделал приход 1шт за 500р с одной серией, затем второй приход 1шт за 600р с другой. Продал 1шт одной расходной(списалось 550руб), затем еще раз продал 1шт другой(списалось еще 550руб). В результате в виртуальном регистре остатки следующая картина. Это же не правильно? Как считаете?

Не знаю у меня все норм

И правда, у вас все норм показывает. Буду сравнивать настройки, искать различия.
А что за интересная каркасная конфигурация у вас? режим совместимости отключен, консоль запросов запускается. Это сейчас такая новая каркасная?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 17, 2017, 09:38:59 am
И правда, у вас все норм показывает. Буду сравнивать настройки, искать различия.
А что за интересная каркасная конфигурация у вас? режим совместимости отключен, консоль запросов запускается. Это сейчас такая новая каркасная?
Каркасная все та же, просто так настроил.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 17, 2017, 12:57:57 pm
Подскажите, пожалуйста, след.моменты:

При решении задач БУ у нас всегда есть один ресурс регистра бухгалтерии "Сумма", он является балансовым.
Больше балансовых ресурсов в РБ по условиям задач быть не должно.
 Дальше, в условии может быть сказано, что ведётся учёт в валюте или количестве. Значит нам необходимо завести признак учёта "Суммовой" (или "Количественный" соответственно) и указать его в соответствующем ресурсе и на счетах в плане счетов. ОК, тоже понятно.

Но в каких случаях исполльовать признак учёта субконто? Я как-то упустил этот момент, а в решениях у SAE в билетах 1 и 5 используются ПУС (признаки учёта субконто). Никак не могу допетрить :(
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Dmitri-Dmitrich от Март 17, 2017, 01:24:02 pm
Но в каких случаях исполльовать признак учёта субконто? Я как-то упустил этот момент, а в решениях у SAE в билетах 1 и 5 используются ПУС (признаки учёта субконто). Никак не могу допетрить :(
Как я понимаю, в первом билете ПУС используется чтобы сумма накапливалась в разрезе всей номенклатуры, чтобы рассчитывать потом себестоимость по ней. А по сроку годности она списываться не должна, иначе будут либо отрицательные остатки по сроку годности, либо не спишется себестоимость полностью. Поэтому у сукбонто нужно снять ПУС суммовой, в итоге по срокам годности система будет запоминать только количество.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 17, 2017, 01:27:32 pm
Суммовой - это признак учета по субконто, т.к. сумма не нужна в разрезе сроков годности, но нужна в разрезе номенклатуры. При настройке, сумма по сроку годности будет выключаться признаком учета по субконто.
Признак учета - показывает нужно ли вести на данном счете учет по ресурсу, привязанному к данному признаку учета
Признак учета по субконто - показывает нужно ли вести по данному субконто учет по привязанному ресурсу.

т.е: счет товары с субконто: Номенклатура, Склад.

Вариант1. Определяем и включаем признак учета Количественный, в регистре бухгалтерии определяем ресурс - "Количество" и делаем связку с признаком учета "Количественный", с этих пор у нас будет накапливаться ресурс "Количество" на данном счете
Вариант2. Определяем и включаем у субконто - номенклатура признак учета "Суммовой" и выключаем его у субконто "Склады", в регистре бухгалтерии определяем ресурс "Сумма" и привязываем его с признаком учета по субконто "Суммовой", с этих пор у нас будет накапливаться сумма по Номенклатуре и не будет по складу.

Это можно будет увидеть в виртуальной таблице регистра бухгалтерии, а именно, если будем брать остатки в разрезе Номенклатура и склад: то записи будут следующего вида:

Товары         Склады          Количество               Сумма
Т1                     с1                  10
Т1                     с2                  10

А если По номенклатуре, то

Товары         Количество               Сумма
Т1                   10                              100(стоимость всех товаров на разных складах)

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

Ну как-то так..
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 17, 2017, 03:45:22 pm
Спасибо большое за рязъяснения! Но я всё равно нихрена не понял!

Есть ли какое-то деревянное условие-объяснение, типа как в СПР если "совместительство допускается", значит подразделение пихаем в измерение, а если нет, то в реквизит?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 17, 2017, 05:29:48 pm
Речь идет о каком регистре?
Плохая идея добавлять подразделение в ресурсы... и не за чем.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 17, 2017, 09:22:24 pm
Подскажите, пожалуйста, след.моменты:

При решении задач БУ у нас всегда есть один ресурс регистра бухгалтерии "Сумма", он является балансовым.
Больше балансовых ресурсов в РБ по условиям задач быть не должно.
 Дальше, в условии может быть сказано, что ведётся учёт в валюте или количестве. Значит нам необходимо завести признак учёта "Суммовой" (или "Количественный" соответственно) и указать его в соответствующем ресурсе и на счетах в плане счетов. ОК, тоже понятно.

Но в каких случаях исполльовать признак учёта субконто? Я как-то упустил этот момент, а в решениях у SAE в билетах 1 и 5 используются ПУС (признаки учёта субконто). Никак не могу допетрить :(


Доброго времени суток, CeHbKA !

Попробую объяснить про признаки учета и признаки учета субконто .
Ты верно заметил, что:
"При решении задач БУ у нас всегда есть один ресурс регистра бухгалтерии "Сумма", он является балансовым.
Больше балансовых ресурсов в РБ по условиям задач быть не должно."

С ресурсом "Сумма", я думаю, всё понятно - он должен быть всегда и должен быть балансовым.
Попробуй создать признак учета "Суммовой". Не признак учета субконто, а именно признак учета.
И попробуй не включить его по некоторым счетам.  При попытке сделать проводку с таким счетом,
платформа будет ругаться, что сумма должна быть заполнена обязательно!
Оно и понятно - это балансовый ресурс.
Таким образом, признак учета "Суммовой" на экзамене исключается.
Может быть только признак учета субконто "Суммовой", если мы не хотим вести суммовой учет по какому-либо субконто.
В типовой "Бухгалтерии", кстати, тоже нет признака учета "Суммовой", есть признак учета субконто "Суммовой".
Если у кого есть мысли по этому поводу, буду рад услышать комментарии.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 17, 2017, 09:55:11 pm
Ребята, посмотрите, пожалуйста, обработку проведения по БУ.
Столько времени потратил, хотелось бы выслушать хоть какую-то  критику.

Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 18, 2017, 12:21:05 pm
Подскажите, пожалуйста, след.моменты:

При решении задач БУ у нас всегда есть один ресурс регистра бухгалтерии "Сумма", он является балансовым.
Больше балансовых ресурсов в РБ по условиям задач быть не должно.
 Дальше, в условии может быть сказано, что ведётся учёт в валюте или количестве. Значит нам необходимо завести признак учёта "Суммовой" (или "Количественный" соответственно) и указать его в соответствующем ресурсе и на счетах в плане счетов. ОК, тоже понятно.

Но в каких случаях исполльовать признак учёта субконто? Я как-то упустил этот момент, а в решениях у SAE в билетах 1 и 5 используются ПУС (признаки учёта субконто). Никак не могу допетрить :(


Доброго времени суток, CeHbKA !

Попробую объяснить про признаки учета и признаки учета субконто .
Ты верно заметил, что:
"При решении задач БУ у нас всегда есть один ресурс регистра бухгалтерии "Сумма", он является балансовым.
Больше балансовых ресурсов в РБ по условиям задач быть не должно."

С ресурсом "Сумма", я думаю, всё понятно - он должен быть всегда и должен быть балансовым.
Попробуй создать признак учета "Суммовой". Не признак учета субконто, а именно признак учета.
И попробуй не включить его по некоторым счетам.  При попытке сделать проводку с таким счетом,
платформа будет ругаться, что сумма должна быть заполнена обязательно!
Оно и понятно - это балансовый ресурс.
Таким образом, признак учета "Суммовой" на экзамене исключается.
Может быть только признак учета субконто "Суммовой", если мы не хотим вести суммовой учет по какому-либо субконто.
В типовой "Бухгалтерии", кстати, тоже нет признака учета "Суммовой", есть признак учета субконто "Суммовой".
Если у кого есть мысли по этому поводу, буду рад услышать комментарии.
В примере у SAE признак учёта субконто (ПУС) стоит для обязательного балансового ресурса "Сумма". Далее, этот ПУС указан для субконто "Номенклатура", а для "Срок годности" нет. Далее, при партионном списании используется 2 левых соединения к остаткам - первое для получения остатков и себестоимости по всей номенклатуре без срока годности, второе для получения остатков по номенклатуре в разрезе сроков годности.

Получается, данный ПУС позволяет нам не заполнять обязательный ресурс "Сумма" и не хранить по нему остатки (и движения вообще) по опр.субконто.

Вопрос в том, если я не создам данный ПУС вообще и буду хранить остатки с суммой по номенклатуре и по срокам годности - это будет ошибкой? Ведь я точно также получу общее кол-во, рассчитаю среднюю себестоимость, и результат будет один и тот же.
И что если у меня будет счёт с одним субконто, для которого не указан ПУС "Суммовой" (допустим, "Срок годности") - система тогда не будет хранить остатки на обязательном балансовом ресурсе "Сумма" по этому счету по этому субконто и это будет норм?

UPD: Вопрос решён, нашёл ответ ранее. Действительно, если я буду списывать суммы, как предлагал выше без ПУСа, то у меня по номенклатуре всё будет ОК, а вот по срокам годности останутся висеть хвосты. Опять я гавно :(
Добрый день! Подскажите, пожалуйста, в задаче по БУ нужен признак учета субконто "Суммовой потому, что "себестоимость определяется как средняя по товару по всем срокам годности"? Если бы и в разрезе сроков годности было бы, то не нужен был бы?

Да.
Надо "убить" остатки по сроку годности по сумме. Иначе в таблице остатков по одному СрокуГ будет +10 руб и по другому СрокуГ -10 руб. Не закроется в ноль.
UPD2: твою ж мать, там даже специально чёрным по-белому написано:
Цитировать
Сумма для срока годности должна получаться расчетным образом как средняя цена по данному товару умноженная на количество с данным сроком. Средняя цена рассчитывается как общая сумма данного товара поделенная на общее количество данного товара
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 18, 2017, 12:22:00 pm
И ещё в догонку вопрос - обязательно ли в задаче с регламентным заданием создавать обработку для выполнения заданий?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 18, 2017, 03:10:57 pm
Доброго времени суток, CeHbKA !

В билете № 1 я не увидел ничего про регламентные задания.

Но раз уж спросил, попробую ответить.

Дмитрий Гончаров в своем курсе по подготовке к экзамену 1С Специалист по платформе
обращает внимание на 2 момента при работе с регламентными заданиями:
1. Регламентные задания "комфортно" работают только в клиент-серверном варианте.
    В файловом варианте, по идее, надо писать обработку для инициализации менеджера заданий.
    Но на экзамене этим заниматься не нужно.
2. В конфигураторе надо обязательно в свойствах регламентного задания поставить флаг "Предопределенное",
    иначе в режиме 1С Предприятие никакого регламентного задания не создастся.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 18, 2017, 03:15:03 pm
freemaestro, спасибо вам большое за помощь
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pumba от Март 19, 2017, 08:49:13 am
Всем добрый день!
Мое первое сообщение на данном форуме и первая решенная задача по ОУ, огромная просьба покритиковать.
Постарался учесть всё: никаких запросов в цикле, лишних очисток движений, проблема копеек, проведение по остаткам по новой методике, по партиям - по старой.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 19, 2017, 11:46:37 am
...проведение по остаткам по новой методике, по партиям - по старой.
-1 балл. Использование неэффективной методики контроля остатков (вы используете новую, а надо старую).
Дополнительные регистры и ресурсы в существующих регистрах ради новой методики на экз не приветствуются.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pumba от Март 19, 2017, 01:56:14 pm
...проведение по остаткам по новой методике, по партиям - по старой.
-1 балл. Использование неэффективной методики контроля остатков (вы используете новую, а надо старую).
Дополнительные регистры и ресурсы в существующих регистрах ради новой методики на экз не приветствуются.
Спасибо за ответ, но я тогда вообще ничего не понимаю... Прочитал всю тему раз 5, просмотрел все решения, вроде же в итоге сошлись на том варианте, как я написал. За основу брал, если не ошибаюсь, как раз Ваше решение с первых страниц темы.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 19, 2017, 02:57:48 pm
В данном случае, в регистр по остаткам товаров нужна новая методика, т.к. нам не нужно ничего считать(себестоимость), в случае же с партиями товаров нужно знать по какой себестоимости нужно списать, т.е. необходима старая методика..., на мой взгляд ход мысли верный...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 19, 2017, 06:56:18 pm
...проведение по остаткам по новой методике, по партиям - по старой.
-1 балл. Использование неэффективной методики контроля остатков (вы используете новую, а надо старую).
Дополнительные регистры и ресурсы в существующих регистрах ради новой методики на экз не приветствуются.

Текст задания:
Цитировать
При проведении документа «Расходная накладная» необходимо производить списание товара со склада. В том случае, когда товара не хватает, документ проводиться не должен.
и
Цитировать
Для расчета себестоимости при списании товара необходимо учитывать только момент поступления товара в компанию, вне зависимости от того, на какой склад он пришел. Предположим, для метода списания FIFO первое поступление портсигара произошло на склад «Основной» документом «Приходная накладная №1», а потом на склад «Транзитный» документом «Приходная накладная №2». В этом случае при продаже товара со склада «Транзитный» в первую очередь должна быть списана себестоимость портсигара по документу «Приходная накладная №1», так как она пришла раньше

Почему тут нужна только старая митодига?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 19, 2017, 07:44:50 pm
Доброго времени суток, Pumba!

посмотрел твоё решение - логика правильная,
2 регистра накопления, всё как положено,
сначала пишем, потом читаем, проверяем остатки,
если хватает - тогда уже списываем по партиям и т.д.

Хотел спросить у тебя - зачем выставлять свойство "БлокироватьДляИзменения"
в "Истина" для регистра "Партии" ?
Ты же его блокируешь через объект "БлокировкаДанных" ?

Вот фрагмент твоего кода:

   Движения.ПартииНоменклатуры.Записывать = Истина;
   ///Записываем пустой набор, чтобы если документ оперативно перепроводится в остатки не попали его же движения
   ///Блокируем для чтения по тем измерениям, по которым были движения
   Движения.ПартииНоменклатуры.БлокироватьДляИзменения  = Истина;
   Движения.ПартииНоменклатуры.Записать();
   
   ///Накладываем блокировку на чтение на регистр по номенклатуре из ТЧ
   Блокировка = Новый БлокировкаДанных;
   ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ПартииНоменклатуры");
   ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
   ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
   ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
   Блокировка.Заблокировать();

Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 19, 2017, 08:17:41 pm

Хотел спросить у тебя - зачем выставлять свойство "БлокироватьДляИзменения"
в "Истина" для регистра "Партии" ?
Ты же его блокируешь через объект "БлокировкаДанных" ?


Есть предположение: Когда чистишь старые записи в регистре, необходимо их заблокировать, что бы в случае отмены транзакции не оказалось что их кто-то списал во время попытки проведения дока...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 19, 2017, 08:41:55 pm
...проведение по остаткам по новой методике, по партиям - по старой.
-1 балл. Использование неэффективной методики контроля остатков (вы используете новую, а надо старую).
Дополнительные регистры и ресурсы в существующих регистрах ради новой методики на экз не приветствуются.
Спасибо за ответ, но я тогда вообще ничего не понимаю... Прочитал всю тему раз 5, просмотрел все решения, вроде же в итоге сошлись на том варианте, как я написал. За основу брал, если не ошибаюсь, как раз Ваше решение с первых страниц темы.
Я при подготовке делал неправильно - всё подгонял под новую методику - именно так, как сейчас делаете вы. На экз мне повезло - попалась одна из редких задач, в которых ничего рассчитывать не надо было, т.е. однозначно новая. Позже был целый ряд отзывов о замечаниях за использование новой методики там, где для проведения требуется сначала, например, получить себестоимость.

Всем, кто писал дальше - нет новой и старой методик в одной задаче. Остатки мы контролируем один раз - как контролируем, такая методика и есть. Новая только тогда, когда сразу записали данные, и либо отказ, либо провели - и обработка завершена.
Если записать все данные сразу нельзя, а надо предварительно получить из базы дополнительную информацию (т.о. у вас будет 2 обращения к базе!!!), то не создаем новых регистров ради новой методики, а получаем данные и используем старую методику.

В последнем предложении в формулировке могут быть погрешности  :), но суть верна.

ПС. Пофиг на то, на чем сошлись при обсуждении. Имеет значение, только то, что не принимают экзаменаторы (и это как раз новая методика, где нужны расчеты/доп. регистры/доп. ресурсы; и старая там, где можно сразу записать данные в регистры).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 19, 2017, 08:52:52 pm
ППС. Еще более конкретный признак использования новой/старой методик в неоднозначных ситуациях. Как только у вас получается 2 методики - новую в топку.  :D
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 19, 2017, 09:15:31 pm
ППС. Еще более конкретный признак использования новой/старой методик в неоднозначных ситуациях. Как только у вас получается 2 методики - новую в топку.  :D
спасибо за разъяснения
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pumba от Март 19, 2017, 09:40:21 pm
Доброго времени суток, Pumba!

посмотрел твоё решение - логика правильная,
2 регистра накопления, всё как положено,
сначала пишем, потом читаем, проверяем остатки,
если хватает - тогда уже списываем по партиям и т.д.

Хотел спросить у тебя - зачем выставлять свойство "БлокироватьДляИзменения"
в "Истина" для регистра "Партии" ?
Ты же его блокируешь через объект "БлокировкаДанных" ?

Вот фрагмент твоего кода:

   Движения.ПартииНоменклатуры.Записывать = Истина;
   ///Записываем пустой набор, чтобы если документ оперативно перепроводится в остатки не попали его же движения
   ///Блокируем для чтения по тем измерениям, по которым были движения
   Движения.ПартииНоменклатуры.БлокироватьДляИзменения  = Истина;
   Движения.ПартииНоменклатуры.Записать();
   
   ///Накладываем блокировку на чтение на регистр по номенклатуре из ТЧ
   Блокировка = Новый БлокировкаДанных;
   ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ПартииНоменклатуры");
   ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
   ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
   ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
   Блокировка.Заблокировать();

насколько я понимаю, блокировать для изменения и последующая запись пустого набора блокируют по тем измерениям, которые были. А Блокировка данных блокирует по тем измерениям, по которым мы будем писать. Информацию взял отсюда http://expert.chistov.pro/public/195591/
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pumba от Март 19, 2017, 09:45:41 pm
ППС. Еще более конкретный признак использования новой/старой методик в неоднозначных ситуациях. Как только у вас получается 2 методики - новую в топку.  :D
Огромное спасибо, вот этим и предыдущим сообщением вы внесли полную ясность!
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 19, 2017, 10:07:09 pm
насколько я понимаю, блокировать для изменения и последующая запись пустого набора блокируют по тем измерениям, которые были. А Блокировка данных блокирует по тем измерениям, по которым мы будем писать. Информацию взял отсюда http://expert.chistov.pro/public/195591/

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

Если мы, к примеру,  удалили из документа строку с какой-то номенклатурой и перепроводим документ,
то зачем нам блокировать записи в регистре по этой номенклатуре?

Ребята, кто что думает по этому вопросу ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 19, 2017, 11:29:41 pm
Вот мой вариант ОУ + БУ.
Комменты?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 20, 2017, 06:00:58 am
Вот мой вариант ОУ + БУ.
Комменты?
Вроде в оперативной части ошибка, но по txt не гадаю, выкладывай dt
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 20, 2017, 07:18:14 am
Вот мой вариант ОУ + БУ.
Комменты?
Вроде в оперативной части ошибка, но по txt не гадаю, выкладывай dt

Спасибо! Вот dt-шка
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Pumba от Март 20, 2017, 08:35:18 am
насколько я понимаю, блокировать для изменения и последующая запись пустого набора блокируют по тем измерениям, которые были. А Блокировка данных блокирует по тем измерениям, по которым мы будем писать. Информацию взял отсюда http://expert.chistov.pro/public/195591/

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

Если мы, к примеру,  удалили из документа строку с какой-то номенклатурой и перепроводим документ,
то зачем нам блокировать записи в регистре по этой номенклатуре?

Ребята, кто что думает по этому вопросу ?
Блокировать надо, потому что иначе после нашей записи пустого набора эту номенклатуру может списать другой документ. И если наше проведение не состоится и транзакция откатится, то возникнет ошибка  - эта номенклатура будет списана двумя документами сразу.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 20, 2017, 08:47:06 am
насколько я понимаю, блокировать для изменения и последующая запись пустого набора блокируют по тем измерениям, которые были. А Блокировка данных блокирует по тем измерениям, по которым мы будем писать. Информацию взял отсюда http://expert.chistov.pro/public/195591/

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

Если мы, к примеру,  удалили из документа строку с какой-то номенклатурой и перепроводим документ,
то зачем нам блокировать записи в регистре по этой номенклатуре?

Ребята, кто что думает по этому вопросу ?
Блокировать надо, потому что иначе после нашей записи пустого набора эту номенклатуру может списать другой документ. И если наше проведение не состоится и транзакция откатится, то возникнет ошибка  - эта номенклатура будет списана двумя документами сразу.

Доброго времени суток, Pumba !

Логика в твоих словах определенная есть.
Я, к примеру, делал проведение, исходя из этой статьи Павла Чистова:
http://expert.chistov.pro/public/195591/

Там ничего про блокировку старых движений не нашел...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 21, 2017, 09:11:56 am

Вот мой вариант ОУ + БУ.
Комменты?


В бухгалтерской задаче заполнил свои данные, посмотрите dt файл, там поступило товара на 20.00, а  списалось 20.01 - одна копейка зависла, как так?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 21, 2017, 09:33:16 am

Вот мой вариант ОУ + БУ.
Комменты?


В бухгалтерской задаче заполнил свои данные, посмотрите dt файл, там поступило товара на 20.00, а  списалось 20.01 - одна копейка зависла, как так?

Спасибо!
Но это не моя конфа. Продублирую еще раз ОУ+БУ+ЧастичноСПР
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 21, 2017, 09:36:40 am
Вопрос, про БлокироватьДляИзменения и очистку движений обсуждался вот тут, может быть поможет кому:
http://forum.chistov.pro/index.php?topic=1999.msg22182#msg22182
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 21, 2017, 09:55:49 am
еще раз ОУ+БУ+ЧастичноСПР

Зачем в модуле приходной запрос? можно же просто обойти строки табличной части?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 21, 2017, 10:12:04 am
еще раз ОУ+БУ+ЧастичноСПР

Зачем в модуле приходной запрос? можно же просто обойти строки табличной части?
Да можно, это как вариант решения, к тому же избавился от условия в цикле проверки что это услуга, а именно обращение через точку:
Если Номенклатура.ЭтоУслуга Тогда продолжить КонецЕсли;
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 21, 2017, 10:52:57 am
еще раз ОУ+БУ+ЧастичноСПР

Зачем в модуле приходной запрос? можно же просто обойти строки табличной части?

Еще запросом можно сгруппировать строки, чтобы избавиться от дублей и в регистре было бы меньше записей.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 21, 2017, 11:02:53 am
еще раз ОУ+БУ+ЧастичноСПР

Зачем в модуле приходной запрос? можно же просто обойти строки табличной части?

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

В данном случае есть срок годности, поэтому группировка тут не особо поможет, а так, да, в том числе и для группировки.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 21, 2017, 11:11:14 am
еще раз ОУ+БУ+ЧастичноСПР

Зачем в модуле приходной запрос? можно же просто обойти строки табличной части?

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

В данном случае есть срок годности, поэтому группировка тут не особо поможет, а так, да, в том числе и для группировки.
А ещё можно просто ограничить выбор услуг через параметр выбора. Вообще говоря в приходной услуги не забиваются и не понятно нужно ли контролировать это в приходной, в расходной понятно что обязательно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 21, 2017, 11:53:50 am
еще раз ОУ+БУ+ЧастичноСПР

Зачем в модуле приходной запрос? можно же просто обойти строки табличной части?

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

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

Да, согласен, можно так, вариантов реализации несколько. Тут, наверное, вопрос удобства реализации.
Наверное, это как использовать каркасную конфигурацию или разрабатывать с нуля при экзаменации.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 23, 2017, 02:01:07 pm
Мой вариант решения, прошу проверить - прокомментировать.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 23, 2017, 02:12:16 pm
на 8.3.9 - не работает...
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 23, 2017, 02:21:04 pm
разрабатывалось на 8.3.10, поставил режим совместимости 8.3.9
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 23, 2017, 03:21:41 pm

1. БУ: Индексы таб.списокНоменклатуры

2. Расходная БУ: нет смысла группировать ТЧ, т.к.  присутствует "Номер строки" и поэтому таблица не будет сгруппирована, лучше взять мин или макс значение, я так понимаю  что это для  указания строки, но и это не нужно, т.к. в задаче нет необходимости показывать позицию.
Я: Есть ли необходимость использования конструкции "СообщитьПользователю" для указания позиции ошибки?
Гончаров: Нет, если в задаче не указано обратное.

3.  ОУ: В запросе не указан метод сортировки (не сработает стрзаменить)
4.  ОУ: Не знаю, на сколько верно не использовать постпроверку по регистру "Себестоимость"


Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 24, 2017, 07:21:45 am

1. БУ: Индексы таб.списокНоменклатуры

2. Расходная БУ: нет смысла группировать ТЧ, т.к.  присутствует "Номер строки" и поэтому таблица не будет сгруппирована, лучше взять мин или макс значение, я так понимаю  что это для  указания строки, но и это не нужно, т.к. в задаче нет необходимости показывать позицию.
Я: Есть ли необходимость использования конструкции "СообщитьПользователю" для указания позиции ошибки?
Гончаров: Нет, если в задаче не указано обратное.

3.  ОУ: В запросе не указан метод сортировки (не сработает стрзаменить)
4.  ОУ: Не знаю, на сколько верно не использовать постпроверку по регистру "Себестоимость"

Большое спасибо за ценные комментарии!
1. Индексы! как я мог забыть про индексы!
2. ну да ну да всё так.
3. Точна! :o исправил.
4. Не понял что за постпроверка и зачем она нужна?
Проверял так:
приход 3 шт по 6, 6 и 8 рублей;
расход 3 штуки  одним документом себестоимость списывается правильно 20;
три расходника по 1 штуке - списывается 6,67 6,67 и 6,66 соответственно, в сумме тоже 20 - все правильно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 24, 2017, 07:52:55 am
4. я так понимаю что в этой задачи 2 методики: 1я- читаем-пишем - старая методика(списание себестоимости), 2я- пишем-читаем - новая методика(списание остатков). Хотя выше посты есть что этого не нужно делать, у меня всеравно есть сомнения.  Думаю что уточню этот момент у Белоусова. Но мне кажется, что проверку нужно делать, т.к. нужно показать что умеешь работать с блокировками. Но это мое мнение.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 24, 2017, 07:55:53 am
4.  ОУ: Не знаю, на сколько верно не использовать постпроверку по регистру "Себестоимость"

/quote]
Перепутал, по регистру остатки
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 24, 2017, 08:00:31 am
Метод списания себестоимости - так и должно быть: читаем, вычисляем среднюю, избавляемся от копеек пишем, установив блокировку перед этим. Списание остатков: пишем, с блокироватьдляизменения, потом проверяем не залезли ли в минус. Ну как-то так
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 24, 2017, 09:38:25 am
Метод списания себестоимости - так и должно быть: читаем, вычисляем среднюю, избавляемся от копеек пишем, установив блокировку перед этим. Списание остатков: пишем, с блокироватьдляизменения, потом проверяем не залезли ли в минус. Ну как-то так
Это Белоусов сказал?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 24, 2017, 10:27:26 am
Метод списания себестоимости - так и должно быть: читаем, вычисляем среднюю, избавляемся от копеек пишем, установив блокировку перед этим. Списание остатков: пишем, с блокироватьдляизменения, потом проверяем не залезли ли в минус. Ну как-то так
Это Белоусов сказал?
Нет, это мое мнение. Этот момент я уточню у него.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 24, 2017, 10:43:58 am
Этот момент я уточню у него.
Вы собираетесь на его курсы?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 24, 2017, 11:19:07 am
Этот момент я уточню у него.
Вы собираетесь на его курсы?
Да
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 24, 2017, 11:51:20 am
Сорри, кажется я всех слегка обманываю по поводу методик проведения. Но это касается только задачи ОУ из 1 билета.
Уже много забыл, и суть этой задачи подзабыл (сейчас перечитал).
Тут же 2-й регистр создается не ради новой методики, а из-за того, что себестоимость и количество учитываются в разных разрезах. Т.е. 2 регистра по-любому. И действительно похоже на новую методику контроля остатков, а уже затем - расчет себестоимости по 2-му регистру.

В тему. Вот что писали по поводу ответа Белоусова на тех же курсах на вопрос, имеющий отношение к данному: "БУ, ОУ: больная тема - количество регистров. Делайте сколько хотите, только вы должны обосновать почему у вас 2-3-4, а не один например. Плюсы, минусы: один хорошо, но есть ограничение по кол-ву измерений и индексированию. Два и больше плохо с точки зрения синхронизации, запись данных при проведении идет в несколько регистров и есть вероятность ошибиться в этом процессе. Грубо говоря, в один записали - в другой забыли, ну и прочее. Будьте готовы к вопросу: а можно обойтись одним регистром?.
Вот первоисточник (п. 6):
http://forum.chistov.pro/index.php?topic=2005.msg22307#msg22307

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

Еще раз всем сорри за ввод в заблуждение. Думаю, что теперь у тех, кто читал внимательно, по вопросу методики списания вопросов не должно быть вообще.
Разве что xXeNoNx подкинет новую инфу по результатам посещения курсов.  :)
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 24, 2017, 12:58:29 pm
Сорри, кажется я всех слегка обманываю по поводу методик проведения. Но это касается только задачи ОУ из 1 билета.
Уже много забыл, и суть этой задачи подзабыл (сейчас перечитал).
Тут же 2-й регистр создается не ради новой методики, а из-за того, что себестоимость и количество учитываются в разных разрезах. Т.е. 2 регистра по-любому. И действительно похоже на новую методику контроля остатков, а уже затем - расчет себестоимости по 2-му регистру.

В тему. Вот что писали по поводу ответа Белоусова на тех же курсах на вопрос, имеющий отношение к данному: "БУ, ОУ: больная тема - количество регистров. Делайте сколько хотите, только вы должны обосновать почему у вас 2-3-4, а не один например. Плюсы, минусы: один хорошо, но есть ограничение по кол-ву измерений и индексированию. Два и больше плохо с точки зрения синхронизации, запись данных при проведении идет в несколько регистров и есть вероятность ошибиться в этом процессе. Грубо говоря, в один записали - в другой забыли, ну и прочее. Будьте готовы к вопросу: а можно обойтись одним регистром?.
Вот первоисточник (п. 6):
http://forum.chistov.pro/index.php?topic=2005.msg22307#msg22307

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

Еще раз всем сорри за ввод в заблуждение. Думаю, что теперь у тех, кто читал внимательно, по вопросу методики списания вопросов не должно быть вообще.
Разве что xXeNoNx подкинет новую инфу по результатам посещения курсов.  :)
Вот те раз, почему же в решении SAE он сделал т.к. вы до этого говорили?
Т.е. там 2 регистра, один на количество, один на стоимость. Списание он делает по старой методике и в одном запросе считывает остатки по количеству и левым соединением стоимость подцепляет.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 24, 2017, 01:11:36 pm
совсем запутали  >:(
Мне кажется, что для первого регистра(с количеством который) используем новую методику. (БлокироватьДляИзменения=Истина)
А для регистра с себестоимостью используем старую методику.(Объект БлокировкаДанных)
Разве нет?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CyberGirl от Март 24, 2017, 01:40:30 pm
Да, в этой задаче нужно два регистра
1. ОстаткиНоменклатуры изм. Номенклатура, Склад рес. К-во Новая методика!
2. Себестоимость изм. Номенклатура, Партия рес. К-во, Сумма Старая методика.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 24, 2017, 04:10:57 pm
Вот те раз, почему же в решении SAE он сделал т.к. вы до этого говорили?
Т.е. там 2 регистра, один на количество, один на стоимость. Списание он делает по старой методике и в одном запросе считывает остатки по количеству и левым соединением стоимость подцепляет.
Думаю, тоже норм.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Kremlin от Март 27, 2017, 07:10:19 am
Всем доброго дня! У меня проблема с выполнением бух.задачи - когда провожу Приходную накладную с одним товаром в виртуальную таблицу "УправленческийОстатки" на счет "Товары" создается одна запись. Хотя в плане счетов сделал "Признак учета субконто" суммовой и назначил его на Субконто1 "Номенклатура". За образец брал решение SAE, у него делается две записи в виртуальную таблицу - сумма падает на Субконто1 Номенклатура, а Количество на субконто2 "Серию". Подскажите, что может быть не так в моем решении? На всякий случай прикреплю выгрузку свою.

Нашел, как обойти этот глюк.
Взял каркасную конфу, и перед настройкой плана счетов, регистра бух поставил в конфигурации режим совместимости 8.3.3.
После этого движения начали делаться верно, отрабатывает "Признак учета субконто".
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 27, 2017, 08:35:57 am
Делаю дополнительное задание билета 1. Отображение результатов расчета в форме начисления зарплаты  с целью редактирования. Сделал как здесь http://forum.chistov.pro/index.php?topic=3953.0. Но потом подумал и немножко упростил. Почему так делать не стоит?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Dmitri-Dmitrich от Март 27, 2017, 10:01:17 am
Делаю дополнительное задание билета 1. Отображение результатов расчета в форме начисления зарплаты  с целью редактирования. Сделал как здесь http://forum.chistov.pro/index.php?topic=3953.0. Но потом подумал и немножко упростил. Почему так делать не стоит?
Не могу открыть Вашу выгрузку чтобы посмотреть) Поставьте режим совместимости 8.3.9
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 27, 2017, 11:02:02 am
8.3.9
Название: Re: Билет 1. Спец по платформе V8
Отправлено: Dmitri-Dmitrich от Март 27, 2017, 11:16:22 am
8.3.9
Посмотрел Ваше решение, вот что выявил: в условии сказано, что кнопка "Рассчитать"сделана с целью редактирования результатов расчета. У Вас же, при проведении документа, независимо от того что находится в документе, в регистр попадают результаты авторасчета. То есть если пользователя не устроил расчет зарплаты, он мог его откорректировать, а он этого не может сделать. Я думаю нужно сделать, чтобы при проведении записывались результаты из формы, а при нажатии "рассчитать" просто рассчитывались записи и не попадали в регистр (для этого и нужна транзакция).
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 27, 2017, 11:47:22 am
8.3.9
Посмотрел Ваше решение, вот что выявил: в условии сказано, что кнопка "Рассчитать"сделана с целью редактирования результатов расчета. У Вас же, при проведении документа, независимо от того что находится в документе, в регистр попадают результаты авторасчета. То есть если пользователя не устроил расчет зарплаты, он мог его откорректировать, а он этого не может сделать. Я думаю нужно сделать, чтобы при проведении записывались результаты из формы, а при нажатии "рассчитать" просто рассчитывались записи и не попадали в регистр (для этого и нужна транзакция).



Ну можно и в транзакцию обернуть не суть важно.
Изначально функция рассчитать в модуле формы такая:

Процедура Рассчитать() Экспорт

НачатьТранзакцию();

Движения.ОсновныеНачисления.Очистить();
Движения.ОсновныеНачисления.Записывать=Истина;
Движения.ДопНачисления.Очистить();
Движения.ДопНачисления.Записывать=Истина;

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

Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ВидРасчетаОклад", ПланыВидовРасчета.ОсновныеНачисления.Оклад);
Запрос.УстановитьПараметр("ВидРасчетаПремия", ПланыВидовРасчета.ДополнительныеНачисления.Премия);
Запрос.УстановитьПараметр("ПериодРегистрации", НачалоМесяца(Дата));

Результаты=Запрос.ВыполнитьПакет();

Выборка = Результаты [1].Выбрать();
Пока Выборка.Следующий() Цикл
Движение=Движения.ОсновныеНачисления.Добавить();
ЗаполнитьЗначенияСвойств(Движение, Выборка);
КонецЦикла;

Выборка=Результаты[2].Выбрать();
Пока Выборка.Следующий() Цикл
Движение=Движения.ДопНачисления.Добавить();
ЗаполнитьЗначенияСвойств(Движение, Выборка);
КонецЦикла;

Движения.Записать();

Расчет.РассчитатьНачисления(Ссылка, ОсновныеНачисления, ДопНачисления);   

Движения.ОсновныеНачисления.Очистить();
Движения.ОсновныеНачисления.Записать();

Движения.ДопНачисления.Очистить();
Движения.ДопНачисления.Записать();

ЗафиксироватьТранзакцию();   

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



то что при расчете нет записей в регистре обеспечивается только строками
Движения.ОсновныеНачисления.Очистить();
Движения.ОсновныеНачисления.Записать();

Движения.ДопНачисления.Очистить();
Движения.ДопНачисления.Записать();


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

Мне непонятно зачем здесь этот гиганский запрос(который уж точно не успеешь сделать) который по сути делает то же самое что уже есть и вообще не нужен, достаточно вызвать    ОбработкаПроведения();
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Март 27, 2017, 03:41:59 pm
А как у Вас обрабатывается вот этот момент: "В одном документе могут быть данные за разные расчетные периоды"?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: kvt500 от Март 28, 2017, 06:32:16 am
все норм можно начисления за текущий, и за прошлый, и позапрошлый месяцы делать
Название: Re: Билет 1. Спец по платформе V8
Отправлено: POW от Март 28, 2017, 06:27:09 pm
А как у Вас обрабатывается вот этот момент: "В одном документе могут быть данные за разные расчетные периоды"?
все норм можно начисления за текущий, и за прошлый, и позапрошлый месяцы делать
Судя по сообщению от уже сдавшего ITshnik, то нужно в табличную часть Начисления добавить Реквизит "ПериодРегистрации".
http://forum.chistov.pro/index.php?topic=993.msg50586#msg50586
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 28, 2017, 09:00:01 pm
Судя по сообщению от уже сдавшего ITshnik, то нужно в табличную часть Начисления добавить Реквизит "ПериодРегистрации".
Так делать точно не "нужно". Но, поскольку экзаменаторы принимают, можно.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CyberGirl от Март 29, 2017, 10:03:08 am
Ребят, ну что за проблема с этим "данные за разные расчетные периоды". Уже множество раз писалось об этом. Период регистрации - это период, в котором делаются начисления. Не нужно его выносить в ТЧ. В ТЧ у нас уже есть ДатаНачала и ДатаОкончания - это будет Период Действия - период, за который выполняются начисления и вот он-то и может быть разными месяцами. Т.е. начисляем в марте зарплату за январь и февраль, например. Период регистрации - март, период действия - январь, февраль. Все, что нужно в связи с этим условием - обработать получение оклада на начало расчетного периода, т.к. если могут быть разные расчетные периоды, срез последних (для РС Сведения о сотрудниках, где хранится оклад) не подойдет; а также для премии указаать месяц начисления в ТЧ - от него будем считать ПериодДействияНачало и ПериодДействияКонец. 
Название: Re: Билет 1. Спец по платформе V8
Отправлено: CeHbKA от Март 29, 2017, 12:12:59 pm
Судя по сообщению от уже сдавшего ITshnik, то нужно в табличную часть Начисления добавить Реквизит "ПериодРегистрации".
Так делать точно не "нужно". Но, поскольку экзаменаторы принимают, можно.
проверьте, пожалуйста, свою почту
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Март 31, 2017, 10:26:34 am
Ребят, ну что за проблема с этим "данные за разные расчетные периоды". Уже множество раз писалось об этом. Период регистрации - это период, в котором делаются начисления. Не нужно его выносить в ТЧ. В ТЧ у нас уже есть ДатаНачала и ДатаОкончания - это будет Период Действия - период, за который выполняются начисления и вот он-то и может быть разными месяцами. Т.е. начисляем в марте зарплату за январь и февраль, например. Период регистрации - март, период действия - январь, февраль. Все, что нужно в связи с этим условием - обработать получение оклада на начало расчетного периода, т.к. если могут быть разные расчетные периоды, срез последних (для РС Сведения о сотрудниках, где хранится оклад) не подойдет; а также для премии указаать месяц начисления в ТЧ - от него будем считать ПериодДействияНачало и ПериодДействияКонец. 

Доброго времени суток, CyberGirl !

  Хотел сделать ещё уточнение и дополнение по сказанному тобой.
Текст задачи:

  "Считать, что все данные вводятся только в
пределах одного месяца, например, можно указать начисление оклада с 10.01 по 31.01, а запись
оклад: с 10.01 по 03.02 вводить нельзя. В одном документе могут быть данные за разные
расчетные периоды."

  Т.е. у нас получается, что в пределах одной строки в ТЧ не могут быть данные за разные месяца, т.е строки не надо разбивать при записи в регистр. А вот в разных строках могут быть данные за разные месяцы.
  А период регистрации - ты правильно говоришь, не надо в ТЧ выносить. Он у нас один - это тот месяц, когда мы делаем (регистрируем) начисления. Его можно получить как начало месяца на дату документа.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: YFred от Март 31, 2017, 04:15:37 pm
Добрый день,
Решил ОУ и БУ по первому билету.
Возник один вопрос. При формировании движений по БУ при продаже товара с разными сроками годности в 0. Могут оставаться копейки из-за округления. Я сделал проверку, но мне кажется не очень красиво получилось.
Прошу посмотреть мое решение.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: alex1248 от Март 31, 2017, 10:51:05 pm
Добрый день,
Решил ОУ и БУ по первому билету.
Возник один вопрос. При формировании движений по БУ при продаже товара с разными сроками годности в 0. Могут оставаться копейки из-за округления.
Если делать правильно, копейки не останутся.
Если по документу в сумме по всем срокам годности списывается всё количество, надо сразу списывать всю сумму, примерно так:
СумСписать = ? (ВыбИт.КолДок = ВыбИт.КолОст, ВыбИт.СумОст,  КолОстСписать / ВыбИт.КолОст * ВыбИт.СумОст);
Название: Re: Билет 1. Спец по платформе V8
Отправлено: freemaestro от Апрель 05, 2017, 10:49:35 pm
Кто знает, что означает условие в СПР:

"Документ в расчетном периоде может быть один (сразу для всех видов расчета), а может быть несколько (по
одному для каждого отдельного вида расчета)." ?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: strizhhh от Апрель 18, 2017, 01:59:43 pm
Просьба посмотреть и прокомментировать моё решение билета (решены все задачи). В решениях я писал пояснения и комментарии. Постарался собрать описание всех основных нюансов, на которые обращают внимание экзаменаторы, со слов тех, кто уже сдавал и со слов некоторых преподавателей.
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Апрель 18, 2017, 02:38:30 pm
Движения.Себестоимость.Записывать = Истина;
Движения.Себестоимость.Очистить();
Движения.Себестоимость.БлокироватьДляИзменения = Истина; // Отключаем разделитель итогов, блокировка набора записи осуществится непосредственно в момент записи.
Движения.Себестоимость.Записать();
Движения.Себестоимость.Записывать = Истина;

Что означает данная конструкция?
Название: Re: Билет 1. Спец по платформе V8
Отправлено: xXeNoNx от Апрель 18, 2017, 02:43:56 pm
Если имеется ввиду блокирование записей регистра по данному регистратору, что бы кто-нить не списал, пока мы будем пытаться перепроводить документ
Движения.Себестоимость.Очистить(); - нет смысла, если есть Движения.Себестоимость.Записать();
нет смысла  два раза у