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

Аттестация "1С:Специалист" => Аттестация "1С:Специалист по платформе 1С:Предприятие 8.3 и 8.2" => Тема начата: svp201 от Июль 17, 2010, 11:49:24 am

Название: Задача 1.02
Отправлено: svp201 от Июль 17, 2010, 11:49:24 am
Мое решение задачи 1.02 если кто может прокомментируйте?
Вложения:
Zadacha1.02_SVP.dt
Название: Задача 1.02
Отправлено: 1C_CoderVamp от Июль 19, 2010, 01:55:50 pm
Я тоже не останусь в стороне, мой вариант:

Добавлено (19.07.2010, 13:55)
---------------------------------------------

Quote
Мое решение задачи 1.02 если кто может прокомментируйте?

1) У меня эта задача из сборника на 8.1, там сказано, что в первую очередь списывается товар по партии указанной в шапке документа, у тебя я этого не увидел.... хотя возможно, что для 8.2 другие условия
 2) Два запроса в Расх.Накл - не есть гуд, можно все необходимое выбрать одним запросом

3) В Прих. накладной

Code
Движения.ОстаткиНоменклатуры.Очистить();
- это можно не писать, т.к. новые записи будут добавляться "поверх" старых, т.е. старые записи сами собой затрутся

4) В отчете ОстаткиТоваров "Количество" должно суммироваться только по номенклатуре, но не в общих итогах

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


Вложения:
1Cv8_102_1CCode.dt
Название: Задача 1.02
Отправлено: U2006 от Август 18, 2010, 01:29:21 pm
Quote (pershinsergei)
Решил задачу 1.2 из сборника по 8.2.
 Прошу покритиковать мое решение
 Вариант с поправками

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

Вот мое решение 1_2, гляньте может тоже чего подскажите.

Добавлено (18.08.2010, 13:29)
 ---------------------------------------------
 

Quote (1C_CoderVamp)
Кто может, проверьте мой вариант, свежим взглядом всегда лучше видно

 При приходе нет проверки, что номенклатура не является услугой, получается что можно оприходовать услугу ).
 При расходе нет проверки, что на текущий год задана политика списания, проверка идет на срез последних, но в срезе может быть значение прошлого века )
 В конфигурации стоит автоматический режим блокировок, хотя должен быть управляемый.
 Вроде усе.
Вложения:
1_2_u2006.dt
Название: Задача 1.02
Отправлено: ut2k5 от Сентябрь 08, 2010, 01:34:00 pm
Мое решение..., кому не лень покритикуйте. Сравнивал с U2006, почти одинаково, но вот я в задачах оперативного учета не заморачиваюсь со списанием копеек...
Вложения:
Quest_1_2.dt
Название: Задача 1.02
Отправлено: Amali от Сентябрь 08, 2010, 03:06:26 pm
ut2k5,

1) При выводе сообщение о нехватке товара, в задаче просят сообщить количество нехватки.
 2) Мне вот кажется что номенклатура с видом "Услуга" не должна появляться в отчете "Остатки Номенклатуры".

Название: Задача 1.02
Отправлено: ut2k5 от Сентябрь 08, 2010, 03:48:40 pm
Amali, а ты опытный тестер, сенькс smile
 это ж надо найти такие ошибки...
 а второй пункт ты как реализовал? наверное путем поступления услуги?...
Название: Задача 1.02
Отправлено: ut2k5 от Сентябрь 08, 2010, 03:54:40 pm
версия вторая, с исправлением ошибок от Amali,
Вложения:
9462459.dt
Название: Задача 1.02
Отправлено: Heckfy от Сентябрь 30, 2010, 03:06:31 pm
Аналогична примеру в сборнике, только партия в шапке + услуги.
Вложения:
1.02.dt
Название: Задача 1.02
Отправлено: Danan от Октябрь 14, 2010, 02:13:48 pm
Мое решение
Вложения:
Task_1_2.dt
Название: Задача 1.02
Отправлено: AndreiPiter от Декабрь 09, 2010, 03:29:20 pm
И мое решение задачи 1.02 если кто может прокомментируйте?
Вложения:
1.2.dt
Название: Задача 1.02
Отправлено: SINISTER_STAR от Декабрь 10, 2010, 08:30:14 am
AndreiPiter, в общем
 1) нет подсистем (входит в список ошибок)
 2) Вытаскиваешь учетную политику на дату а надо на МоментВремени() (входит в список ошибок,-0,5 бала)
 3) Незнаю зачем соединяешь две расходные между собой в 1 пакете, как я понял чтоб вытащить партию приоритетную,можно указать Партию как параметр (-балл, лишнее соединение)
 4) Ну собственно весь алгоритм усложнен, можно решить гораздо проще сначала по возрастанию приоритетную партию, а далее как обычно фифо лифо
 5) Регистр продажи на мой взгляд ресурс себестоимость лишний, его можно получить при соединении с остатками.
 6) Отчет ОСтаткиНоменклатуры В выбранных полях нужно только ресурсы оставить, т.к. по измерениям идет группировка, и вместо детальных записей партии группировка.
Название: Задача 1.02
Отправлено: AndreiPiter от Декабрь 10, 2010, 11:18:20 am
SINISTER_STAR, спасибо,
 1) подсистемы пока не создаю
 2) можно поподробней, я беру учётную полику на дату документа, что тут неправильного (в примере решения из задачника делается именно так)
 3) да,согласен, исправил. (убрал приоритетную партию).
 5) не очень понял, ведь себестоимость в Продажах это себестоимость списанного товара.
 6) можно на примере?
Вложения:
2860963.dt
Название: Задача 1.02
Отправлено: Gyd от Декабрь 17, 2010, 02:25:49 pm
Quote (AndreiPiter)
Прикрепления: 2860963.dt(155Kb)

 давайте будет правильно называть файлики, вы не против?
 Например так: АндрейПитер_20101210_11_18. Вы как-будто не программисты 1С smile что вот это значит: 2860963? С виду набор цифр. Это раз, а второе - у меня например ваших 666666-файлов уже штук 5, вот думаю как их запомнить-то где чей smile

По теме:
 2. SINISTER_STAR, а зачем учетную политику вытаскивать на МоментВремени() ? У нее значение меняется раз в год, как правило момент изменения ну никак не приходится на середину дня, когда один документ приходится на старое значение, а другой - на новое. Следовательно даты будет достаточно.
 5. AndreiPiter, регистр Продажи нужен для того чтобы там отражать продажи, как правило все продажи. Для продаж себестоимость не нужна, совершенно не важно за сколько вы купили товар. Важно за сколько вы его продали, и что еще вы продали вместе с ним (например, услуги: доставка, завертка, улыбки и т.д.). Я так понимаю вы это сделали для того чтобы при обращении к регистру Продажи заодно можно было вытащить и себестоимость? Тут я соглашусь с SINISTER_STAR, себестоимость нужно получать при соединении товара из регистра Продажи с регистром Остатки... Хотя ваш вариант конечно проще.
 6. С отчетом все нормально, только вот циферки у вас там зачем? 1 и 2 в колонке Партия. На примере там пустые ячейки должны быть smile

Название: Задача 1.02
Отправлено: sada от Декабрь 17, 2010, 03:06:44 pm
Gyd, имя файла 2860963, сайт сам сгенерировал, одна из причин этого - совпадение имени загружаемого файла с именем уже имеющимся на сайте.
Название: Задача 1.02
Отправлено: Gyd от Декабрь 17, 2010, 03:37:16 pm
Quote (sada)
имя файла 2860963, сайт сам сгенерировал

 да, похоже так и есть smile

ну-ка попробуем... есть ограничение по кол-ву символов.


Вложения:
AP_20101210.dt
Название: Задача 1.02
Отправлено: AndreiPiter от Декабрь 17, 2010, 09:52:58 pm
Gyd,
Quote (Gyd)
2. SINISTER_STAR, а зачем учетную политику вытаскивать на МоментВремени() ? У нее значение меняется раз в год, как правило момент изменения ну никак не приходится на середину дня, когда один документ приходится на старое значение, а другой - на новое. Следовательно даты будет достаточно.

 Однозначно будет достаточно.

Quote (Gyd)
5. AndreiPiter, регистр Продажи нужен для того чтобы там отражать продажи, как правило все продажи. Для продаж себестоимость не нужна, совершенно не важно за сколько вы купили товар. Важно за сколько вы его продали, и что еще вы продали вместе с ним (например, услуги: доставка, завертка, улыбки и т.д.). Я так понимаю вы это сделали для того чтобы при обращении к регистру Продажи заодно можно было вытащить и себестоимость? Тут я соглашусь с SINISTER_STAR, себестоимость нужно получать при соединении товара из регистра Продажи с регистром Остатки... Хотя ваш вариант конечно проще.

 Cм. пример решения из задачника, ситуция с отчётом по продажам аналогична.

Quote (Gyd)
6. С отчетом все нормально, только вот циферки у вас там зачем? 1 и 2 в колонке Партия. На примере там пустые ячейки должны быть

 Это колонка Номенклатура, там "Товар для проверки 1" и "Товар для проверки 2" biggrin
Название: Задача 1.02
Отправлено: Gyd от Декабрь 20, 2010, 09:32:27 am
Quote (AndreiPiter)
Это колонка Номенклатура

 я вам про колонку Партия говорил, а не про Номенклатура smile

Quote (AndreiPiter)
Cм. пример решения из задачника

 спасибо, уже посмотрел.
Название: Задача 1.02
Отправлено: uncle_Tompson от Январь 14, 2011, 10:08:09 am
мое решение задачи 1.2
Вложения:
8692373.dt
Название: Задача 1.02
Отправлено: rus от Январь 21, 2011, 07:23:14 am
Мое решение
Вложения:
1974096.dt
Название: Задача 1.02
Отправлено: Gulf_Stream от Январь 22, 2011, 02:51:20 pm
Моё решение, если не сложно прокомментируйте

Особенно для меня важна правильность работы с блокировками в расходной:

   
 

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

Добавлено (22.01.2011, 14:51)
---------------------------------------------
rus, что я заметил:
 1)В приходной накладной нет проверки на тип номенклатуры, и значит можем оприходывать услугу на склад, не знаю снижаются ли за это баллы.
 2)В карксной конфе есть специальное перечисление тип номенклатуры, его обязательно использовать? Или можно как у тебя Булевым ревизитом. Через булево удобней.
 3)В табличных частях автомат м не считается сумма
 4)Запрос в расходной - явно усложнено. Можно сделать намного проще.
 5)В расходной накладной не удаляешь остатки перед запросом - как следствие, при перепроведении документа будут некорректные остатки.
 6)Не используются блокировки.

Мож где не прав.


Вложения:
_1.02.dt
Название: Задача 1.02
Отправлено: AndreiPiter от Январь 23, 2011, 11:50:35 am
Quote (Gulf_Stream)
Блокировка = Новый БлокировкаДанных;
 ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
 ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
 ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
 Блокировка.Заблокировать();

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

Добавлено (23.01.2011, 11:50)
---------------------------------------------

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

 Снижаются.
 
Quote (Gulf_Stream)
2)В карксной конфе есть специальное перечисление тип номенклатуры, его обязательно использовать?

 По логике, если уже есть в каркасной то нужно использовать.
Название: Задача 1.02
Отправлено: Matcoder от Январь 23, 2011, 02:15:09 pm
Quote (AndreiPiter)
Quote (Gulf_Stream)1)В приходной накладной нет проверки на тип номенклатуры, и значит можем оприходывать услугу на склад, не знаю снижаются ли за это баллы. Снижаются.

Это достоверная информация? Из каких источников?

Название: Задача 1.02
Отправлено: AndreiPiter от Январь 23, 2011, 05:44:00 pm
Quote (Matcoder)
Это достоверная информация? Из каких источников?

 Последствия этого приводят к тому что регистр не выходит ноль - см.список ошибок до 2,0 балов.
Название: Задача 1.02
Отправлено: Matcoder от Январь 23, 2011, 07:15:34 pm
Причем тут это. Оприходовать услугу на склад можно только специально или по глупости. Я могу придумать еще десяток возможностей напортачить если задаться целью. Просто на экзамене времени делать защиту от дурака не будет, поймите вы это! Нужно реализовывать все по минимуму, только то, что написано в задании.
 Я по крайней мере этого делать не буду. Если останется свободное время, то лучше вон в приходной, табличную часть запросом сгруппировать. А нет - так и конструктором сгодится.
Название: Задача 1.02
Отправлено: rus от Январь 27, 2011, 12:23:51 pm
Все замечания справедливы.При решении задачи я основное внимание уделял модулю расходной накладной.На остальные моменты не уделял внимания.За основу алгоритма был взят пример из сборника задач по подготовке к экзамену.
Название: Задача 1.02
Отправлено: Helga от Март 28, 2011, 03:05:46 am
использую один запрос. в некоторых ответах видела,что используют два запроса (отдельно по товарам и отдельно по услугам). мне кажется,что одним запросом не так громоздко
Вложения:
1-02-.dt
Название: Задача 1.02
Отправлено: gr0ck от Апрель 14, 2011, 11:14:00 pm
Вот, уже вторую задачу решил. Надеюсь кто-нибудь посмотрит, а то и первую никто не посмотрел, боюсь вдруг чего неправильно:)
Вложения:
Gr0ck_Task_1_2.dt
Название: Задача 1.02
Отправлено: joky от Май 09, 2011, 10:24:26 pm
Вопрос следующий почему все обычно в начале проведения расходной затирают регистр остатки номенклатуры(Движения.ОстаткиНоменклатуры.Записать()), а регистр продажи не трогают .
Название: Задача 1.02
Отправлено: garden от Май 11, 2011, 11:17:11 pm
gr0ck,
 
Quote (joky)
Вот, уже вторую задачу решил. Надеюсь кто-нибудь посмотрит, а то и первую никто не посмотрел, боюсь вдруг чего неправильно:)

Я не специалист и к моему мнению прислушиваться нужно осторожно, но может чем помогу.
 Вот что я заметила:
 1. Не нашла блокировку на регистр Продажи Движения.Продажи.БлокироватьДляИзменения = Истина;
 2. В регистре Продажи нет себестоимости и соответственно в отчете ты получаешь её через соединение с регистром Остатки. Конечно в рамках данной задачи это правильно, но в одной из лекций Павла Чистова я слышала такую мысль (А если по-мимо документа расходной есть документ на списание товаров, тогда себестоимость меняется, но это не продажа или товар украли и т.д. Идея такова: Необходимо сделать движения по ОстаткамНоменклатуры, затем Движения.ОстаткиНоменклатуры.Записать(), а затем запрос к Остаткам с извлечением себестоимости с условием регистратор = Ссылка). Потом отчет вообще за 2 клика можно сделать. Это конечно не факт, что так надо на экзамене.
 3. Пытаюсь списать не существующий товар К примеру в приходной нет холодильника Атлант, а я его хочу продать и продаю!!! Он попадает в продажи хотя на складе его нет. (Предварительно установила, что Атлант Товар). Здесь должна быть ошибка, товара нет на складе. Я на том же споткнулась еще не поправила. Можно попробывать так Если Недостаток > 0 ИЛИ Выборка.КолОст = 0 Тогда
 4.Отбор = Новый Структура("Вид",1); Это очень правильно. Я так ещё не умею. 5+
 В остальном я ошибок не нашла biggrin .

Название: Задача 1.02
Отправлено: Ikem от Май 17, 2011, 01:43:36 am
Прошу опытных товарищей просмотреть мое решение. Буду рад любой критике. Заранее спасибо.
Вложения:
ikem_1_2.dt
Название: Задача 1.02
Отправлено: Gyd от Июнь 02, 2011, 11:28:31 am
Quote (Matcoder)
Причем тут это. Оприходовать услугу на склад можно только специально или по глупости. Я могу придумать еще десяток возможностей напортачить если задаться целью. Просто на экзамене времени делать защиту от дурака не будет, поймите вы это!

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

 ---------------------------------------------
 
Quote (Ikem)
Буду рад любой критике. Заранее спасибо.

 Очистить() не обязательно, достаточно - Движения.Продажи.Записать()

 ---------------------------------------------
 
Quote (garden)
1. Не нашла блокировку на регистр Продажи Движения.Продажи.БлокироватьДляИзменения = Истина;

 а зачем она нужна? вы же не будете к нему обращаться потом.
Название: Задача 1.02
Отправлено: karagiosis от Июнь 12, 2011, 11:42:32 pm
Доброго времени суток... Прошу специалистов уделить время на рассмотрение моего решения. Буду рад конструктивной критике. Спасибо.
Вложения:
karagi_1_2.dt
Название: Задача 1.02
Отправлено: Gyd от Июнь 14, 2011, 12:10:17 pm
Quote (karagiosis)
Буду рад конструктивной критике.

 ну поехали smile

 об этой ошибке уже говорили:
 
Code
Запрос.УстановитьПараметр("Период", Дата);


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

 или вы тренировались в использовании запроса для блокировки?

 а в остальном нормально.
Название: Задача 1.02
Отправлено: karagiosis от Июнь 15, 2011, 03:09:43 pm
Gyd, спасибо... На счет Даты - я уже понял, переделаю. А подобный запрос для определения номенклатуры в блокировке я видел в статье Павла Белоусова здесь: http://kb.1c.ru/articleView.jsp?id=30. Он делает так только для того, чтобы отсеивать дубли номенклатуры, наверное и иметь возможность наложить произвольное условие на выборку запроса...
Название: Задача 1.02
Отправлено: Gyd от Июнь 15, 2011, 03:43:50 pm
Quote (karagiosis)
А подобный запрос для определения номенклатуры в блокировке я видел в статье Павла Белоусова здесь: http://kb.1c.ru/articleView.jsp?id=30.

 Нам туда не попасть smile
 Вариант интересный конечно, но у него есть один минус - это время.

 
Quote (karagiosis)
Gyd, спасибо.

 Да не за что... вот если бы мне преподаватели в своё время отвечали как я вам... smile
Название: Задача 1.02
Отправлено: DoctorRoza от Июнь 19, 2011, 01:08:59 pm
Коллеги! Прошу посмотреть мое решение задачи 1.2. Заранее благодарю за критику!
Вложения:
DoctorRoza_1_2.dt
Название: Задача 1.02
Отправлено: kow1976 от Июль 07, 2011, 08:31:42 pm
Я бы выделили следующие ошибки, которые проверяют регламентно преподаватели:
 1. Построенная в решении учетная схема принципиально не позволяет одновременно вывести в ноль все ресурсы регистра накапливающего информацию об остатках. -2Бала
 Можно оприходовать Доставку в прих. Нак а расход не предусмотрен.

 2. В задачах получения данных из информационной базы установка отборов по неиндексированным полям -0,5
 В менеджере временных таб нужно индексировать измерения

 3. Не реализована возможность корректного перепроведения документов задним числом -1
 Наверно все таки нужно использовать штатный механизм последовательности

 4. Конфигурация должна устойчиво работать при наличии дублей строк (номенклатуры или сотрудников или т.п.) в документах.-0,5
 В прих нак нет группировки

 5. Использование автоматических блокировок в транзакции или неправильное использование управляемых блокировок данных в транзакции при проведения документов -1.
 В 8.2 только в модуле обработки проведения можно использовать БлокироватьДляИзменения
 Движения.СтоимостьНоменклатуры.БлокироватьДляИзменения

 6.Наличие ошибок в программном коде 0,25-3
 Получение учетной политики можно делать в запросе с списанием товара например пакетом. Повторяющийся код
 7. Если при проведении документа используются каким-то образом данные, считываемые из регистров, обязательно требуется предусмотреть получение таких данных на момент проведения документа -1
 Необходимо при оперативном проведении указывать неопределенно
 8. Нет отбора по номенклатуре в списке расх нак.

 Мне лично понравилось нестандартное решение отбора партии.

 Посмотрите мое, решение может, быть тоже что-то бросится в глаза
 Отбор постарался выполнить на уровне виртуальных таблиц, чтобы удовлетворить требованию.
 Использование механизма соединения таблиц вместо того, чтобы задать значения параметров виртуальных таблиц.
 На сколько, это эффективно не знаю
Название: Задача 1.02
Отправлено: kow1976 от Июль 07, 2011, 08:33:28 pm
База
Вложения:
kow19762.dt
Название: Задача 1.02
Отправлено: DoctorRoza от Июль 07, 2011, 09:13:29 pm
Ух! Большой запрос в расходной. smile
 Зачем в запросе добавлять кусок кода, по нахождению номенклатуры, которой нет в табчасти документа? Эт лишнее .. Вроде остальное логично ..
Название: Задача 1.02
Отправлено: kow1976 от Июль 07, 2011, 10:35:34 pm
Первый нахожу партии где есть заданная партия и заданная номенклатура- номенклатуру которая есть в партии из шапки
 Во втором нахожу есть заданная номенклатура и нет заданной партии - номенклатуру которая есть не в партии заданной в шапке.

 Если можно оттестируйте на разных наборах, данных на предмет работоспособности
Вложения:
0792685.sel
Название: Задача 1.02
Отправлено: Gyd от Июль 08, 2011, 10:29:33 am
Quote (kow1976)
4. Конфигурация должна устойчиво работать при наличии дублей строк (номенклатуры или сотрудников или т.п.) в документах.-0,5
 В прих нак нет группировки

 А зачем в приходной накладной группировки? Это разве критично?

 
Quote (kow1976)
3. Не реализована возможность корректного перепроведения документов задним числом -1
 Наверно все таки нужно использовать штатный механизм последовательности

 А вот про это можно по-подробнее? Не совсем понимаю назначение последовательности в этом случае, и что там (в базе) разве некорректно переводятся документы?
Название: Задача 1.02
Отправлено: kow1976 от Июль 08, 2011, 04:16:58 pm
Я имел ввиду что лишние записи в регистре лишняя работа для таб итогов.

 В 1с есть штатный механизм восстановления последовательности
 Определяет в режиме использования, что она нарушена и автоматически препроводит все доки.
 Программно код писать не надо. Нужно в конфигураторе определить объект последовательность, и какие доки входят.
 Я не утверждаю, что за эти ошибки снимут балы, но намой взгляд, они подходят под эти требования
Название: Задача 1.02
Отправлено: SergTH000 от Июль 09, 2011, 03:08:47 am
kow1976,Если явно в задаче не указано про последовательность, ее использовать не нужно на экзамене. Сам в свое время спрашивал, тех, кто сдавал..потом сдавал сам и претензий к "неиспользованию" последовательностей не было.
Название: Задача 1.02
Отправлено: Gyd от Июль 11, 2011, 05:01:36 pm
Quote (kow1976)
Не реализована возможность корректного перепроведения документов задним числом

 По-моему здесь речь не о последовательности. Подразумевается обычное перепроведение документа введенного ранее, либо введенного задним числом (у проведенного документа меняется дата). На момент проведения документ должен учесть итоги (остатки) которые были в тот момент, и исходя из этого сделать соответствующие проверки и движения.
Название: Задача 1.02
Отправлено: kow1976 от Июль 13, 2011, 10:41:28 pm
Возможно, вы правы. Но под одну «ошибку от 1с» можно подвести несколько ситуаций .
 Я не пойму такую неприязнь форумчан к последовательностям на их создание нужно ровно 15секунд. Зато появляется возможность видеть дату последнего неоперативно проведенного документа и автоматически перепроводить все неактуальные документы. Программно с ними можно неработать

Добавлено (13.07.2011, 22:41)
---------------------------------------------
Приведу пример
 Прих1 -2ед
 Прих2-3ед
 Прих3-2ед
 Расх 1 - 4ед
 Расх2 - 3 ед
 Пользователь открывает прих 2 и пишет неоперативно пришло 1ед.
 Все некорректное проведение задним числом (пришло 5 продали 7). Система не отслеживает данной ситуации.

Название: Задача 1.02
Отправлено: SergTH000 от Июль 14, 2011, 08:30:47 am
kow1976, Конечно, если ты введешь последовательность это не будет ошибкой. Просто это необязательно.
Название: Задача 1.02
Отправлено: Gyd от Июль 14, 2011, 12:41:38 pm
Quote (kow1976)
Я не пойму такую неприязнь форумчан к последовательностям

 Последовательность больше пользователям нужна чем нам. А нам - только если ее нужно явно использовать в решении.
Название: Задача 1.02
Отправлено: mkanaev от Июль 14, 2011, 03:22:22 pm
Появился такой вопрос как раз по этому заданию. Я решаю его так сначало нахожу номенклатуру из данной партии, потом номенклатуру без данной партии, объединяю их, упорядочить второй запрос я не могу!!! ибо упорядочить будет действовать для всего запроса, в виртуальную таблицу запихнуть нельзя, он требует "первые" когда пытаюсь упорядочить, в подзапросе тоже самое... я решил таким образом, создал в запросе поле "ДатаПорядка", для указаннойпартии сую туды либо "01.01.0001" либо "31.12.3999" в зависимости от метода списания, потом спокойно сортирую весь запрос, группирую и подбиваю итоги... вопрос: а на экзамене это не будет считаться ошибкой?
Название: Задача 1.02
Отправлено: sada от Июль 15, 2011, 07:45:34 am
mkanaev, Почему именно дата "ДатаПорядка", а не числовое поле "Порядок" 0,1,2... ? :)
Название: Задача 1.02
Отправлено: LEOON от Август 02, 2011, 12:38:43 am
Сегодня начал свою подготовку, опыта мало так что отвел себе 3-4 месяца.
 Помогите если не трудно с проверкой. Будет обидно с самого начала натаскивать себя на ошибки!

 И еще вопрос как быть решая несколько задач в одной базе? Закомментировать часть кода или мучиться
 со встраиванием. Т.е. два списания остатков по бух и опер учету как совмещать(к примеру)?! Если есть где подобное
 описание ткните в ссылку.

 С уважением LEOON! (Сергей)
Вложения:
Leoon_1.02.dt
Название: Задача 1.02
Отправлено: Gyd от Август 02, 2011, 11:25:10 am
Quote (LEOON)
Т.е. два списания остатков по бух и опер учету как совмещать(к примеру)?!

 Задачи у вас должны самостоятельно, независимо друг от друга работать. Бух и опер у вас пересекаться не будут, одна задача по одним регистрам, другая - по другим.
Название: Задача 1.02
Отправлено: DoctorRoza от Август 02, 2011, 05:30:51 pm
Quote (LEOON)
, опыта мало так что отвел себе 3-4 месяца.


 Однако .. Вы, значит, мегамозг, что 3-4 месяца отвели на решение 150 задач! smile Я вот заранее заложился на 8-9 месяцев!
 wacko
Название: Задача 1.02
Отправлено: Gyd от Август 02, 2011, 05:55:05 pm
Quote (DoctorRoza)
Я вот заранее заложился на 8-9 месяцев!

 Я тоже понял что это песня долгая, так что можно особо не спешить smile
Название: Задача 1.02
Отправлено: LEOON от Август 03, 2011, 03:04:28 pm
DoctorRoza,
 Я работаю в основном дома, да и начальник разгрузил максимально.
 Так что могу уделять подготовке, максимум времени. Тем более что, думаю если закладываться на 3-4 месяца в конце будешь немного не готов. И готовя себя к 8 месяцам все равно будешь не готов smile
 Подгоняю себе в основном я сам.
Название: Задача 1.02
Отправлено: Oliver от Август 04, 2011, 04:17:51 am
Вот мой вариант. Если Вам не сложно, Gyd взгляните пожалуйста. Меня интересует правильно ли я: Списываю себестоимость, и избавляюсь от пустых движений. Ну и кончено все другие помарки и недочёты, включая мелкие. Заранее спасибо!

 P.S. DoctorRoza, LEOON - счастливые Вы люди! у меня на подготовку 56 дней! Активно готовится тока начал.
Вложения:
1_2_Oliver.dt
Название: Задача 1.02
Отправлено: chilli от Август 29, 2011, 11:54:22 am
Спецы, в модуле расходной накладной есть у меня очевидные косяки?
Вложения:
1Cv8_ex1_2.dt
Название: Задача 1.02
Отправлено: mavlad от Август 29, 2011, 01:06:13 pm
Задач на экзамене пока намного меньше чем 150, они тут есть в списке актуальных билетов (на экзамене правда бывает отличаются немного но в сторону упрощения).
 Например, этой задачи в экзаменационных билетах сейчас нет.
Название: Задача 1.02
Отправлено: loky30 от Сентябрь 01, 2011, 03:11:01 pm
Добрый день.
 Вот решил взяться за подготовку к сдаче на специалиста у меня есть ровно месяц, остановился на задаче 1.2 ищу правильный вариант решения ))
 Рассмотрев работы других участников форума возникла каша в голове по поводу запросов в документе расчетная. Каким самым оптимальным способом необходимо построить запрос? Специалисты покажите решение т.к. эту задачу можно решать по разному но какой способ будет самым правильным не знаю.
 Заранее спасибо за ответ.
Название: Задача 1.02
Отправлено: Gyd от Сентябрь 01, 2011, 05:45:04 pm
Quote (loky30)
Специалисты покажите решение т.к. эту задачу можно решать по разному но какой способ будет самым правильным не знаю.

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

 А "каша в голове" - это нормально, у всех также smile
Название: Задача 1.02
Отправлено: loky30 от Сентябрь 02, 2011, 01:37:03 pm
Еще такой интересный вопрос:
 В регистр продажи должны ли попадать услуги?
 Я смотрел лекции Чистова там он показывает подобный пример, там услуги не попадают не в регистр не в отчет, является ли это ошибкой?
Название: Задача 1.02
Отправлено: Gyd от Сентябрь 02, 2011, 01:58:39 pm
Quote (loky30)
В регистр продажи должны ли попадать услуги?
 Я смотрел лекции Чистова там он показывает подобный пример, там услуги не попадают не в регистр не в отчет, является ли это ошибкой?

 
Code

 Пример отчета из задачи 1.2:

 Номенклатура    Кол-во    Себестоимость    Продажа    Прибыль
 Куртка замшевая    3              300                   620           320
 Портсигар                3               30                    50             20
 Доставка                 1                 -                     100           100
 

 Доставка - это услуга.

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

 Если сомневаетесь (это касается всех без исключения задач) - решите разными способами, лишним не будет.
Название: Задача 1.02
Отправлено: loky30 от Сентябрь 02, 2011, 03:25:25 pm
Gyd спасибо за ответ.
 Не внимательно я смотрел условия задачи. В следующий раз буду внимательней.
Название: Задача 1.02
Отправлено: Грейт от Сентябрь 23, 2011, 07:40:02 am
Выкладываю свое решение. Думаю, что оно довольно правильное
Вложения:
Great_1.2.dt
Название: Задача 1.02
Отправлено: Reiter от Сентябрь 29, 2011, 11:09:56 pm
Грейт, а то что у вас в продажи если с разных партий списывать попадает две записи по одноик и тому же товару.. это допустимо? .. они то в итоге сгруппируются но всё же.
 У меня вопрос, как лучше формировать движения .. 1) построчным добавлением в коллекцию движений 2) сформировать таблицу с движениями максимально сгруппированную и затем загрузить её в движения регистра.
Название: Задача 1.02
Отправлено: chilli от Октябрь 06, 2011, 02:37:47 am
Подправил
Вложения:
chili_1_2.dt
Название: Задача 1.02
Отправлено: aveego от Октябрь 13, 2011, 08:46:07 am
to chilli
 Не знаю ошибка это или нет, но что у вас что у других очень часто встречаю проверку на услугу реализованную вот так
 "ВыборкаИтоги.Номенклатура.Услуга"
 При обращении через точку система делает каждый раз неявный запрос по номенклатуре, что бы получить значение услуги.
 В "Сообщение.Текст = "Не хватает товара: " + ВыборкаИтоги.Номенклатура + " в количестве: "
 ВыборкаИтоги.Номенклатура тоже обращается к базе что бы получить представление номенклатуры.
 А это вроде как попадает под не оптимальное решение, лучше в запросе сразу получать значение услуги и представления.

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

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

 Ну и для организации движения по регистру ОстаткиНоменклатуры вы два раза обходите результат запроса, а для движения по регистру продаж еще раз создаете запрос и обходите не оптимально. Да и искать в выборке данные по партии тоже не кашерно, выборку нужно обходить.
Название: Задача 1.02
Отправлено: chilli от Октябрь 13, 2011, 09:45:12 am
aveego, Спасибо за Ваши мысли. Доведем программу до оргазма! lol
 Где то встречался список за что баллы снижают на аттестации...
Название: Задача 1.02
Отправлено: aveego от Октябрь 13, 2011, 11:54:32 am
вот официальный файл как проходит экзамен в нем есть информация и по ошибкам http://www.1c.ru/rus/partners/training/files/ATT82PL.zip
Название: Задача 1.02
Отправлено: aveego от Октябрь 13, 2011, 01:51:14 pm
Будьте любезны оцените, буду рад любой критике
Вложения:
aveego_1_2.dt
Название: Задача 1.02
Отправлено: Кенгуру от Октябрь 13, 2011, 02:16:37 pm
aveego,
 в общем понравилось, пару советов по кодингу

 Если ВыборкаНоменклатура.Услуга = 0 Тогда
 Если НЕ ВыборкаНоменклатура.Услуга Тогда
 аналогично Если "ВыборкаНоменклатура.Услуга" Вместо "Если ВыборкаНоменклатура.Услуга=что-то", за это люто бешенно казнят во всех языках,
 т.к синтаксис "Если (булево) Тогда" - ВыборкаНоменклатура.Услуга уже булево, не надо сравнивать с 1,0, истина, ложь

 Движение = Движения.Продажи.Добавить();
 Движение.Период = Дата;
 Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
 Движение.Количество = ВыборкаНоменклатура.КоличествоВдокументе;
 Движение.Себестоимость = Себестоимость;
 Движение.Продажа = ВыборкаНоменклатура.СуммаВдокументе;
 Иначе
 // добавляем услугу
 Движение = Движения.Продажи.Добавить();
 Движение.Период = Дата;
 Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
 Движение.Количество = ВыборкаНоменклатура.КоличествоВдокументе;
 Движение.Продажа = ВыборкаНоменклатура.СуммаВдокументе;
 КонецЕсли;

 для экономии места можно вынести запись продаж из условия и получится один блок

 Движение = Движения.Продажи.Добавить();
 Движение.Период = Дата;
 Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
 Движение.Количество = ВыборкаНоменклатура.КоличествоВдокументе;
 Движение.Продажа = ВыборкаНоменклатура.СуммаВдокументе;
 Движение.Себестоимость = ?(Выборка.НоменклатураУслуга, 0, Себестоимость);
Название: Задача 1.02
Отправлено: Romdavid от Октябрь 13, 2011, 02:32:22 pm
aveego

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

 А надо так:

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

 Иначе пустой набор не будет записан.
Название: Задача 1.02
Отправлено: aveego от Октябрь 14, 2011, 08:22:03 am
Кенгуру, Romdavid Огромное спасибо, ошибки понял советы взял на вооружение.

 Добавлено (14.10.2011, 08:22)
 ---------------------------------------------
 Romdavid по справке вы правы а вот на практике получается что можно записывать и так как у меня;
 Проверил.
 Во вложении простая конфигурация, начальный остаток 10 делаем реализацию 7 и при перепроведении если есть

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

 Система дает записать, если закомментировать
 Движения.ОстаткиНоменклатуры.Записать();
 То выдает сообщение о нехватке.
Вложения:
8145132.dt
Название: Задача 1.02
Отправлено: Romdavid от Октябрь 14, 2011, 10:19:45 am
aveego

 Действительно, если написать

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

 то работает аналогично. Хотя в справке написано:
 
Quote

 Записывать (Write)
 Использование:

 Чтение и запись.
 Описание:

 Тип: Булево.
 Ложь - не происходит записи набора в информационную базу при вызове Записать коллекции движений документа, которой принадлежит набор, а также при стандартной обработке проведения документа, если значение свойства метаданного документа "Запись движений при проведении" в Конфигураторе выставлено в "Записывать выбранные".


 А изначально Записывать установлено в "Ложь".
Название: Задача 1.02
Отправлено: Oliver от Октябрь 15, 2011, 01:19:07 pm
Движения.ОстаткиНоменклатуры.Записать(); - движения будут записаны всегда, при любых флагах.

 Движения.Записать() - будет записано только те наборы у которых свойство записывать установлено в истина.
Название: Задача 1.02
Отправлено: Romdavid от Октябрь 15, 2011, 01:39:15 pm
Oliver, спасибо за разъяснение
Название: Задача 1.02
Отправлено: bezplana от Октябрь 16, 2011, 04:36:12 pm
Я так понял, для добавления нужной партии из шапки добавляем в выборку новое поле и в первую очередь сортируем уже по нему. А есть ли способ сначала выбрать партии в нужном нам порядке (FIFO или LIFO) а затем уже через объектную модель поменять 2 элемента местами ?
Название: Задача 1.02
Отправлено: Oliver от Октябрь 19, 2011, 03:30:23 am
Моё решение задачи. Старался выполнить все условия, "до мелочей". Если что-то упустил - пишите. Ну а уж если что-то не верно решено то тем более!)

 В ходе решения у меня возникло два вопроса:
 1. В запросе для того чтоб избежать нулевых записей я делаю такое условие:
 //|ИМЕЮЩИЕ
 //|   СУММА(ВлЗапрос2.Количество) <> 0 И
 //|   СУММА(ВлЗапрос2.Сумма) <> 0
 У Вас появляются нулевые записи?

 2. Необходимо ли при решении оперативных задач выставлять свойство "Разрешить разделение итогов".

 P.S. Файл подцепился с именем из цифр, т.к. я уже выкладывал свое "сырое" решение ранее.
Вложения:
3949695.dt
Название: Задача 1.02
Отправлено: crabzzy от Октябрь 21, 2011, 04:23:19 pm
Мое решение
Вложения:
crabzzy_1.2.dt
Название: Задача 1.02
Отправлено: Teriban от Февраль 01, 2012, 01:55:35 am
Только начал подготовку к экзамену! Вот моя "проба пера". Решил сделать еще доп. РН "ПродажиСебестоимость", очень интересует критика на этот счет, ну и вообще по решению целиком.

 Заранее спасибо wink
Вложения:
Teriban_1.02.dt
Название: Задача 1.02
Отправлено: Alexander88_DK от Февраль 13, 2012, 05:13:17 pm
Teriban, почитай ветку форума по этой задаче и проанализируй свой код - найдешь достаточно мелких, но "косяков". смотрел у тебя только ОбработкаПроведения в расходной накладной.
 думаю, что отдельный регистр накопления для учета себестоимости имеет смысл только в практическом решении, но не для сдачи экзамена smile

 прокомментируйте, плиз, мое решение.
Вложения:
Alexander88_DK.dt
Название: Задача 1.02
Отправлено: Teriban от Февраль 13, 2012, 06:27:12 pm
Alexander88_DK, спасибо что посмотрел! Если не сложно, открой тайну про мелкие косяки.
Название: Задача 1.02
Отправлено: lubja от Февраль 13, 2012, 10:47:51 pm
Teriban, по мелочам:
 1) бросилось в глаза - это строка "Момент = ?(ЭтоНовый(),Дата,МоментВремени());" Метод ЭтоНовый() возвращает истину только когда документ еще не записан, а обработка проведения срабатывает уже после проведения.
 2) в проверке на нехватку товара вместо новой переменной КО можно было сразу присваивать Истина переменной Отказ.
 3) проходить 2 раза по одной и той же выборке - не айс. все тоже самое можно было сделать и в одном:

 Пока ВыборкаИтог.Следующий() Цикл
 // твоя проверка
 ...
 Если Отказ Тогда
 Продолжить;
 КонецЕсли;
 Выборка = ВыборкаИтог.Выбрать();
 Пока Выборка.Следующий() Цикл
 // движения
 КонецЦикла;
 КонецЦикла;

 это типа шаблона ))
 4) не суть важно наверно, но все же... гилев в видео-курсах говорил, что сначала должно производиться умножение, а потом деление. лично я это запомнила и теперь всегда так пишу. пример он привел простой: 10/3*3=9,(9) и 3*10/3=10

Добавлено (13.02.2012, 22:47)
---------------------------------------------
и да, про регистр ПродажиСебестоимость. в рамках экзамена он не обязательный, а время ты на него потеряешь )

Название: Задача 1.02
Отправлено: Teriban от Февраль 14, 2012, 02:31:06 am
lubja, спасибо!!! Но все же:

 1) Согласен!
 2) Согласен! Экзаменатору наверное не важно, но время на мелочах потерять можно.
 3) Ну почему, вот иду я по выборке пока все гуд делаю "чего-то", а тут бах и отказ=истина, а зачем тогда все то что я уже сделал и еще наделаю?

 4) Вот хрен их всех поймешь одни так другие этак. На инфостарте другое совсем написано!!! http://expert.chistov.pro/public/102366/
 ИМХО копейки так лучше побеждаются!

 5) Да, чем механизм проще тем он надежнее. smile
Название: Задача 1.02
Отправлено: hukola от Февраль 17, 2012, 03:30:37 pm
Приветы. Покритикуйте, пожалуйста. Специально не смотрел примеры предыдущие, хотел сам дойти до решения.
 Сейчас погляжу кто как сделал.
Вложения:
hukola_1.2.dt
Название: Задача 1.02
Отправлено: lubja от Февраль 17, 2012, 03:58:47 pm
Teriban, по третьему пункту: вот идешь ты по выборке, все хорошо. в какой-то момент все плохо, Отказ = Истина. и с этого моменты в детальную выборку уже не заходишь, т.к. стоит условие "Если Отказ Тогда Продолжить; КонецЕсли;" а только ходишь по итоговой выборке, проверяешь на наличие остатков товара по другим позициям. а так как Отказ истина, то и те движения, которые мы успели сделать, не запишутся, и все гуд у нас.

Добавлено (17.02.2012, 15:58)
---------------------------------------------
hukola, сильно не вдавалась, но главной ошибкой в запросе у тя будет то, что в параметрах виртуальных таблиц нет условия по номенклатуре. за это сколько-то баллов снимают. посмотри, как большинство написало этот запрос.

Название: Задача 1.02
Отправлено: hukola от Февраль 17, 2012, 04:01:04 pm
lubja, у меня соединение к табличной части документа таблицы остатков левое, там в любом случае выберется только то что есть в документе.
Название: Задача 1.02
Отправлено: Lazutin от Февраль 17, 2012, 04:02:05 pm
hukola,
 Установка параметров виртуальной таблицы необходима чтобы повысить быстродействие, так что это не будет лишним, даже если вы соединяетесь с ТЧ документа
Название: Задача 1.02
Отправлено: hukola от Февраль 17, 2012, 04:05:04 pm
Можно и выбрать, раз этого требуется.
 А кто нибудь может еще глянуть?
Название: Задача 1.02
Отправлено: Lazutin от Февраль 17, 2012, 04:06:39 pm
hukola,
 Сегодня я уже вряд ли посмотрю, может завтра или в понедельник...
Название: Задача 1.02
Отправлено: lubja от Февраль 17, 2012, 04:11:08 pm
hukola, к примеру в доке у тя 3 строки, а на остатках в регистре 1000 позиций. если в параметрах виртуальной таблицы остатков не отобрать сразу по номенклатуре, то 3 строки дока будут соединяться с 1000 строк из регистра... а потом лишние строки будут отсеиваться. а если сразу отобрать, то все будет намного быстрее ))
Название: Задача 1.02
Отправлено: hukola от Февраль 17, 2012, 04:22:39 pm
Я понял да. Переписал этот момент. Через менеджер временных таблиц.
 Интересует такой момент, вот суммы у меня не просчитывает по документу, не делал я этого - это ошибка?
 Не сделаны подсистемы - это ошибка?
Название: Задача 1.02
Отправлено: LEOON от Февраль 18, 2012, 02:20:25 pm
hukola,
 1. Про суммы я не, понял Вы имеете ввиду СуммаПоДокументу, если да то необязательно.
 Лично я уже руку набил...
 Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма");
 КонецПроцедуры

 Не сделаны подсистемы - это ошибка. Обязательно должен быть настроен интерфейс.
 У вас используется метод Сообщить(); нужно использовать СообщениеПользователю.
 //***
 З.Ы. Имхо перемудрили немножко в расходной
 Достаточно было в запросе создать поле Порядок:
 ВЫБОР
    КОГДА ОстаткиНоменклатурыОстатки.Партия = &Партия
       ТОГДА 1
    ИНАЧЕ 2
 КОНЕЦ
 Упорядочить по нему, а затем по партии, не соединяя с остатками 2 раза. Обойти все партии.
Название: Задача 1.02
Отправлено: Teriban от Февраль 18, 2012, 04:03:34 pm
Quote (lubja)
Teriban, по третьему пункту: вот идешь ты по выборке, все хорошо. в какой-то момент все плохо, Отказ = Истина. и с этого моменты в детальную выборку уже не заходишь, т.к. стоит условие "Если Отказ Тогда Продолжить; КонецЕсли;" а только ходишь по итоговой выборке, проверяешь на наличие остатков товара по другим позициям. а так как Отказ истина, то и те движения, которые мы успели сделать, не запишутся, и все гуд у нас.


 Ну можно и так. Но мне кажется что это не так принципиально, я привык делать сначала проверку потом движения.
Название: Задача 1.02
Отправлено: hukola от Февраль 20, 2012, 10:25:54 am
LEON
Quote (LEOON)
hukola,
 1. Про суммы я не, понял Вы имеете ввиду СуммаПоДокументу, если да то необязательно.
 Лично я уже руку набил...
 Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
 СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма");
 КонецПроцедуры

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

 Спасибо, учту.
Название: Задача 1.02
Отправлено: sv_mikh от Март 12, 2012, 08:21:12 pm
Мой вариант
Вложения:
sv_mikh_01_02.dt
Название: Задача 1.02
Отправлено: kow1976 от Март 12, 2012, 09:20:28 pm
sv_mikh,
 Хороший способ отсечь номенклатуру в приходной

Добавлено (12.03.2012, 21:20)
---------------------------------------------
Расходная в вашем решении делает движение по остаткам при продаже услуги.


Вложения:
s4499762.jpg
Название: Задача 1.02
Отправлено: sv_mikh от Март 12, 2012, 10:20:04 pm
Quote (kow1976)
sv_mikh,
 Хороший способ отсечь номенклатуру в приходной
 Добавлено (12.03.2012, 21:20)
 ---------------------------------------------
 Расходная в вашем решении делает движение по остаткам при продаже услуги.

 Спасибо smile Учел и исправил
Вложения:
sv_mikh_01_02_2.dt
Название: Задача 1.02
Отправлено: TTandrey от Март 22, 2012, 03:46:36 pm
Посмотрите пожалуйста и моё решение
Название: Задача 1.02
Отправлено: TTandrey от Март 22, 2012, 03:47:06 pm
Посмотрите пожалуйста и моё решение
Вложения:
TTandrey_1_2.dt
Название: Задача 1.02
Отправлено: poritskiy от Апрель 04, 2012, 05:07:34 pm
Посмотрите пожалуйста буду признательный за комментарии...

Добавлено (04.04.2012, 17:07)
---------------------------------------------
Сори не в ту тему добавил)


Вложения:
Zadacha1_1.dt
Название: Задача 1.02
Отправлено: TuMyP1985 от Апрель 10, 2012, 09:11:07 am
Здравствуйте. Предлагаю вариант решения данной задачи, буду благодарен за указание недочетов.

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

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

 )))
Вложения:
1Cv8-1_2-.dt
Название: Задача 1.02
Отправлено: RoMeL от Июль 31, 2012, 12:50:03 am
Вторая задача tongue
Вложения:
RoMeL_1.2.dt
Название: Задача 1.02
Отправлено: Oliver от Август 05, 2012, 07:56:58 am
Списал решение у sv_mikh.
 Нашёл такие недочёты:
 1. При продаже услуги списывается себестоимость прошлого товара.
 2. В запросе расчитываются итоги по сумме регистра остатков - не используются.
 Понравилось:
 В приходной отрезаются услуги с помощю параметров выбора.
Вложения:
7134653.dt
Название: Задача 1.02
Отправлено: Ettern0 от Август 10, 2012, 11:38:57 am
Не понимаю 1 момент. В Условиях задачи сказано, что в первую очередь должен списываться товар с партии ,указанной в шапке документа.Если товара не хватает(или нет), то в соотв. с текущей учетной политикой.
 
 В решениях выложенных здесь этот вопрос решается сортировкой по Партии

 ...
 ВЫБОР КОГДА ОстаткиНоменклатуры.Остатки.Партия = &ФлагПартия Тогда 0
 ИНАЧЕ 1
 КОНЕЦ как ФлагПартия
 ...
 Запрос.УстановитьПараметр("ФлагПартия", Партия); Партия = ПрихНак02

 Если до этой сортировки картина была след:
 ПрихНак01 (КолОст)-12 (СуммаОст) - 1000
 ПрихНак02 (КолОст)-13 (СуммаОст) - 1100
 ПрихНак03 (КолОст)-14 (СуммаОст) - 1200

 То теперь :
 ПрихНак02 (КолОст)-13 (СуммаОст) - 1100
 ПрихНак01 (КолОст)-12 (СуммаОст) - 1000
 ПрихНак03 (КолОст)-14 (СуммаОст) - 1200
 Так вот, надо списать 15 единиц товара..Так в приор.Партии не хватает товара. Народ берет и списывает до 0 приоритетную, потом ПрихНак01 2ост. единицы.

 А в условии, если не хватает, то в соотв. с учетной политикой. Не надо ли сортировать запрос заново, без учета ПриоритетнойПартии?
Название: Задача 1.02
Отправлено: RoMeL от Август 10, 2012, 07:25:08 pm
Quote (Ettern0)
Не надо ли сортировать запрос заново, без учета ПриоритетнойПартии?

 Не надо biggrin
Название: Задача 1.02
Отправлено: XilDen от Август 21, 2012, 10:02:56 pm
Посмотрите пожалуйста. Если есть косяки говорите ....
Вложения:
1-2_XilDen.dt
Название: Задача 1.02
Отправлено: Tsar от Октябрь 10, 2012, 07:28:13 pm
Доброго времени суток.

 Кому не сложно, посмотрите мой вариант.
Вложения:
0757277.dt
Название: Задача 1.02
Отправлено: Saint89 от Ноябрь 14, 2012, 02:33:49 pm
Tsar, как минимум обнаружил что не считаются суммы по документам что Расход, что Приход.
Название: Задача 1.02
Отправлено: GvH от Ноябрь 15, 2012, 03:02:50 pm
Saint89, в качестве повышения образованности... а где написано, что они должны считаться (я имею ввиду суммы по документам)?
Название: Задача 1.02
Отправлено: Istari от Ноябрь 28, 2012, 11:36:50 pm
Всем привет) вот мой вариант решения, если не тяжело гляньте на наличие ошибок)
Вложения:
Istari_1.2.dt
Название: Задача 1.02
Отправлено: Mar@tin от Декабрь 05, 2012, 08:04:07 pm
Quote (Istari)
Всем привет) вот мой вариант решения, если не тяжело гляньте на наличие ошибок)

 Временная таблица РН в принципе неправильно построена - только для того, чтобы реквизит Партия из шапки взять, да к реквизитам ТЧ добавить, две таблицы(да еще левым внешним соединением) связывать???!!! - экзаменаторы жирный минус поставят за такое, а то и вообще попрут с сертификации. Оставь только одну таблицу с ТЧ, а Партию возьми из Ссылка.Партия - из Шапки.
 Выше приведенный мой пример не совсем правильный, не-е-е, работает стопудово правильно, но избыточная сложность в нем для 1.2, экзаменаторы могут тоже балл снизить, мол недопонимает соискатель. Этот пример я сделал(слегка подправив) из задачи 1.4, там Партия находится в ТЧ( а в 1.2 - в Шапке документа). Эти задачи отличаются в реализации только Запросами. Для 1.4 этот Запрос в "самый раз" будет(и без избыточной сложности), только "Ссылка." из него в двух местах надо убрать. Ну и поле ввода Партия убрать из шапки и ввести в ТЧ.
 Добавил для сравнения 1.4
Вложения:
3793219.dt
_1.4.dt
Название: Задача 1.02
Отправлено: XKOPBUHX от Декабрь 09, 2012, 12:16:03 am
Привет всем, коллеги!
 Стало на одного готовящегося к экзамену больше =)
 Товарищи специалисты, посмотрите пожалуйста мое первое самостоятельное решение (до этого прочитал ветку по задаче 1.01 и попытался из нее что-то вынести biggrin ).

 Заранее благодарю!
Вложения:
XKOPBUHX_1.02.dt
Название: Задача 1.02
Отправлено: Mar@tin от Декабрь 10, 2012, 01:40:25 pm
Quote (XKOPBUHX)
XKOPBUHX

 А почему МоментВремени присваивается в РежимеПроведения НЕоперативный, в Оперативном - неопределено. Вроде бы наоборот, в неоперативном он не нужен. В Сборнике задач(в Примере к нему) этот Момент тупо присваивается функцией и все, никаких анализов не делается на Режим. Я этого не понимаю, вот и спрашиваю.
 Конфу еще пришлось отлаживать - не "пошла" с первого раза.
Название: Задача 1.02
Отправлено: XKOPBUHX от Декабрь 10, 2012, 02:22:43 pm
Mar      ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!     tin, благодарю, что нашли время глянуть!

 
Quote (Mar      ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!     tin)
А почему МоментВремени присваивается в РежимеПроведения НЕоперативный, в Оперативном - неопределено. Вроде бы наоборот, в неоперативном он не нужен.


 Наоборот -)
 В решениях экзаменационных задач при оперативном проведении момент времени лучше не указывать (узнал об этом, прочитав в какой-то ветке данного форума). Для неоперативного - обязательно!

 
Quote (Mar      ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!     tin)
Конфу еще пришлось отлаживать - не "пошла" с первого раза.


 Объясните пож-та, что было не так. Вроде у меня никаких ошибок не выдавалось, проверил все перед написанием здесь...
Название: Задача 1.02
Отправлено: Mar@tin от Декабрь 11, 2012, 06:41:59 am
Quote (XKOPBUHX)
Объясните пож-та, что было не так. Вроде у меня никаких ошибок не выдавалось, проверил все перед написанием здесь...

 Да ничего особенного, в запросе ЭтоТоварЭ(по-моему так) было... Забери свое вложение, если интересно, да сам посмотри, это недолго...
 А про Момент времени мне все-равно непонятно, как он может быть не нужен, если используется в качестве Периода в Запросе для виртуальной таблицы ...СрезПоследних - как можно получить правильный срез последних(обязательно на какую-то дату) без даты? Тогда давайте нигде даты не ставить в таблицах .СрезПоследних - нонсенс, однако... Посмотреть бы на ту ветку, где ты это видел, может там речь не о том шла, или нюансы какие есть...
Название: Задача 1.02
Отправлено: XKOPBUHX от Декабрь 11, 2012, 07:38:39 am
Quote (Mar      ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!     tin)
А про Момент времени мне все-равно непонятно, как он может быть не нужен, если используется в качестве Периода в Запросе для виртуальной таблицы ...СрезПоследних - как можно получить правильный срез последних(обязательно на какую-то дату) без даты? Тогда давайте нигде даты не ставить в таблицах .СрезПоследних - нонсенс, однако... Посмотреть бы на ту ветку, где ты это видел, может там речь не о том шла, или нюансы какие есть...


 Лови: http://forum.chistov.pro/index.php?topic=1746.msg1#msg1
Название: Задача 1.02
Отправлено: Mar@tin от Декабрь 11, 2012, 05:02:20 pm
Класс.
 А я то думал, почему это у меня проводится неоперативно расх.накл., хотя товара недостаточно из-за проведенной расх.накл чуть позже по времени, конфа не видела 2-ю проведенную накл. Дело в МоментеВремени было.
 Я эспериментально выяснил, что нужно проставить:
 Режим = Неоперативный ----- Неопределено, Режим = Оперативный ----- МоментВремени().
 Там в ветке они то так, то эдак пишут, сами видимо "слышали звон, да не знают откуда он", противоречат себе вовсю. Тебе тоже не советую слепо списывать с веток рекомендации, не проверив их у себя экспериментально, тем более, если там в ветке явные противоречия наставлены...Поправь у себя в проге, у тебя наоборот назначается.
 А вообще то, мне думается, что не надо везде это условие ставить, а только там, где это явно требуют, в задаче 1.5, например.

Добавлено (11.12.2012, 17:02)
---------------------------------------------
В какой-то ветке прочитал, что из задач 1.1-1.5 в билеты вошла только задача 1.5, первые 4 приведены так, "для общего развития".
 По-моему самый сложный Запрос в задаче 1.4...

Название: Задача 1.02
Отправлено: Istari от Декабрь 12, 2012, 06:58:29 pm
Quote (Mar      ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!     tin)
Временная таблица РН в принципе неправильно построена - только для того, чтобы реквизит Партия из шапки взять, да к реквизитам ТЧ добавить, две таблицы(да еще левым внешним соединением) связывать???!!!

 не знал просто что из табличной части можно получить доступ к реквизитам шапки документа. спасибо
Название: Задача 1.02
Отправлено: IlyaKo от Декабрь 30, 2012, 11:56:07 pm
Mar      ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!     tin, это решение зависит от того, каким образом у тебя документы пишут движения в регистры.

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

 В таком случае получается:
 Если документ проводится оперативно --- Неопределено, если неоперативный режим --- МоментВремени()
Название: Задача 1.02
Отправлено: vasv1 от Январь 15, 2013, 10:49:01 am
Выкладываю свое решение, может, кому пригодится. У кого-то на форуме подсмотрел интересное решение, как партию из шапки, которую надо списать первой, расположить первой, а остальные партии - по учетной политике. Для этого надо при формировании запроса передать в него эту партию и в запросе добавить дополнительный столбец, в который заносить 1, если партия из регистра совпала с партией из шапки документа. Далее отсортировать по номенклатуре, нашему столбцу с 1-ками в порядке убывания, и только потом по партиям.
 Из особенностей:
 1. При проведении расходной накладной вся информация получается одним запросом с двумя пакетами. Перебор этого запроса происходит один раз - делаются движения по регистрам остатков и продаж. Услуги движений по регистру остатков не формируют.
 2. Отчеты максимально приближены к той форме, которая приведена в задачнике.
 3. На мой взгляд, данные в документы лучше вводить реальные из отчетов задачи, чтоб экзаменаторам было легче проверять.
 4. Проведение приходной сделал конструктором (надо бы - запросом, но я поленился).
Вложения:
vasv1_1_02.dt
Название: Задача 1.02
Отправлено: Kot78 от Февраль 16, 2013, 10:27:48 pm
Посмотрите, кому интересно, может что не так.
Вложения:
1.2__7__.dt
Название: Задача 1.02
Отправлено: Odin777 от Февраль 20, 2013, 08:18:54 pm
Выполнил почти самостоятельно в отличии от первой задачи. vasv1, надо попробовать и тот способ который вы описали с запросом выполнить самостоятельно. Моя база прилагается, запрос у меня громоздкий получился, в текстовом файле краткое определение: 
 - Новой методики списания
 - Отличия между «БлокироватьДляИзменения» и «Блокировка данных»
 - Свойство документа Удаление движений
Вложения:
Odin777_1.2.dt
0340541.txt
Название: Задача 1.02
Отправлено: fimanich от Март 07, 2013, 03:59:32 pm
Odin777, в расходной удаление движений "Удалять автоматически" - для экзамена, слышал, это не айс. С запросом в расходной перемудрил, имхо, не надо 2 раза к остаткам обращаться...
 Если ВыборкаПартия.Номенклатура.ВидНоменклатуры - Вид номенклатуры надо было в запросе получать, а не через точку... Вообще, весь алгоритм списания упростить бы.
 В отчете по остаткам нет получения на конец дня. В отчете по продажам не предусмотрен вывод услуг после товаров.
 Выкладываю свое решение. Любая критика приветствуется.

Добавлено (07.03.2013, 15:59)
---------------------------------------------
Kot78, директива компиляции в общем модуле ни к чему. СебестоимостьИтого = 0 в расходной надо писать до того, как решил услуга это или нет, иначе если услуга окажется на первом месте в выборке, то к моменту создания движения там будет Неопределено. В отчете по остаткам нет получения на конец дня. В отчете по продажам не предусмотрен вывод услуг после товаров.


Вложения:
fimanich_01_02.dt
Название: Задача 1.02
Отправлено: Renegade от Март 13, 2013, 01:19:35 pm
Извините за тупой вопрос. Никак не могу понять эту конструкцию. Кому несложно объясните
 
Код
ВЫБОР
     КОГДА Список.Партия = ОстаткиНоменклатурыОстатки.Партия
         ТОГДА 1
     ИНАЧЕ 2
 КОНЕЦ
Допустим она приняла значение 1, какая связь между этой цифрой и партией которая указана в табл.части,почему первой списывается именно партия указанная в табл.части?
Название: Задача 1.02
Отправлено: fimanich от Март 13, 2013, 04:32:01 pm
Renegade, предполагаю, что потом по этому поле идет упорядочивание, поищи далее конструкцию Упорядочить По
Название: Задача 1.02
Отправлено: Odin777 от Март 13, 2013, 07:52:06 pm
fimanich, спасибо за то что нашли время посмотреть базу.

Добавлено (13.03.2013, 19:52)
---------------------------------------------
fimanich, посмотрите свой запрос, не указана связь временной таблицы с таблицей регистра остатков, также при проверке на нехватку товара в условии ЕСЛИ ТОГДА  надо добавить

Код
Если Отказ Тогда  
 Продолжить;
 КонецЕсли;
 для того что бы проверить всю номенклатуру из выборки на нехватку количество для списания в условии.
Название: Задача 1.02
Отправлено: fimanich от Март 14, 2013, 10:32:24 am
Odin777, большое спасибо.
Цитата (Odin777)
посмотрите свой запрос, не указана связь временной таблицы с таблицей регистра остатков
Да, грубейшая ошибка, всё спешка (хотя нет мне оправдания). Поправил.
 
Цитата (Odin777)
также при проверке на нехватку товара в условии ЕСЛИ ТОГДА надо добавить

 У меня тоже самое просто немного по-другому сделано, вместо Если Отказ Тогда Продолжить КонецЕсли; у меня Если НЕ Отказ Тогда ... Списание... КонецЕсли;
 Исправленную базу креплю.
Вложения:
fimanich_02_01_.dt
Название: Задача 1.02
Отправлено: fimanich от Март 14, 2013, 10:36:46 am
упс..  базу не с той задаче прикрепил, исправляю
Вложения:
fimanich_01_02_.dt
Название: Задача 1.02
Отправлено: Falcon от Апрель 28, 2013, 04:25:13 am
Мое решение
Вложения:
1_02.dt
Название: Задача 1.02
Отправлено: bilateral от Май 31, 2013, 05:03:59 pm
МоеРешение
Вложения:
bilateral_upr_2.dt
Название: Задача 1.02
Отправлено: karakym от Июнь 06, 2013, 07:54:55 pm
Посмотрите плз мой вариантик,
 особо интересно мнение по запросу в расходной накладной.
 Тоже сделал все в одном запросе, но другим способом.
Вложения:
2187326.dt
Название: Задача 1.02
Отправлено: patchwork от Июнь 09, 2013, 01:29:00 pm
bilateral у тебя в решении  фифо  это убыв .а должно наоборот быть

Добавлено (09.06.2013, 13:23)
---------------------------------------------

Цитата (Mar      ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!!     tin)
А почему МоментВремени присваивается в РежимеПроведения НЕоперативный, в Оперативном - неопределено

 В методичке 1с оперативный

Добавлено (09.06.2013, 13:29)
---------------------------------------------
ВЫБОР
 | КОГДА ОстаткиНоменклатурыОстатки.Партия = &Партия
 | ТОГДА 1
 | ИНАЧЕ 0
 | КОНЕЦ КАК Приоритет
 |ИЗ
 | Док КАК Док

Название: Задача 1.02
Отправлено: botokash от Июнь 17, 2013, 03:35:05 pm
Вот мое решение
Название: Задача 1.02
Отправлено: fortune от Июнь 19, 2013, 06:34:45 pm
Мое решение - критике буду рад
Вложения:
0830887.dt
Название: Задача 1.02
Отправлено: patchwork от Июнь 22, 2013, 01:08:42 pm
Мое решение - критике буду радПрикрепления: 0830887.dt(158Kb)

 приходная не пишет в регистр . расходная  потянет  .но нах в параметрах пустую дату указывать не врублюсь?
Название: Задача 1.02
Отправлено: fortune от Июнь 24, 2013, 11:08:07 am
patchwork, Спасибо, что нашли время глянуть мое решение! Насчет приходной - она пишет в регистр,если у номенклатуры ВидНоменклатуры - "Товар" стоит.Когда указываем пустую дату, то запрос строится к таблице основных итогов регистра, которые рассчитаны на 3999 год. Производительность системы будет быстрее,когда мы сразу обратимся к рассчитанным итогам,нежели будем пересчитывать итоги на МоментВремени() проведения документа.Это при оперативном проведении.При неоперативном - рассчитываем итоги на момент проведения документа.
Название: Задача 1.02
Отправлено: runner1 от Июль 12, 2013, 06:35:42 pm
Вот мое. Пожалуйста проверьте smile
Вложения:
Runner_01_02.dt
Название: Задача 1.02
Отправлено: artfa от Июль 25, 2013, 09:34:39 pm
подкорректированное решение
Вложения:
0521342.dt
Название: Задача 1.02
Отправлено: SanjaKaiser от Ноябрь 02, 2013, 11:18:27 am
Прокомментируйте пожалуйста решение задачи!
Вложения:
1Cv8__Kaiser_1..dt
Название: Задача 1.02
Отправлено: 32ops от Декабрь 28, 2013, 08:15:46 pm
Здавствуйте! Прокомментируйте решение, пожалуйста.
Название: Задача 1.02
Отправлено: 32ops от Декабрь 28, 2013, 08:17:18 pm
вложение
Вложения:
1Cv8_1_2.dt
Название: Задача 1.02
Отправлено: Pro100KoT от Январь 09, 2014, 05:40:00 pm
Всем привет! Прошу проверить моё решение
Вложения:
Pro100KoT_1.2.dt
Название: Задача 1.02
Отправлено: Chichiq от Март 05, 2014, 09:40:34 am
Привет всем. Посмотрите мое решение пожалуйста
Вложения:
4060178.dt
Название: Задача 1.02
Отправлено: giotto от Март 24, 2014, 10:41:10 am
Коллеги, прокомментируйте мое решение задачи 1,2
Вложения:
__1.2.dt
Название: Задача 1.02
Отправлено: ARMchair от Март 24, 2014, 02:46:10 pm
giotto,

 1. У Вас услуги не попадают в продажи, хотя по условию должны (см. отчёт "Продажи" в задании)

 2. В самом отчёте ("Продажи") период не доступен в пользовательских настройках.
 3. В цикле после проверки наличия товара я бы добавил:
 Если Отказ Тогда

     Продолжить;
 КонецЕсли;

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

 В остальном всё вроде бы нормально.
Название: Задача 1.02
Отправлено: giotto от Март 24, 2014, 02:55:51 pm
Цитата ARMchair ()
ARMchair, спасибо, я в принципе то же самое и думал

Добавлено (24.03.2014, 14:55)
---------------------------------------------
Емое, не научился ишшо с этим форумом разбираться

Название: Задача 1.02
Отправлено: CeHbKA от Март 27, 2014, 02:58:08 pm
Посмотрите, пожалуйста
 От 1.1 отличается только одним условием, которое является порядком сортировке в запросе
Вложения:
CeHbKA_1.2.dt
Название: Задача 1.02
Отправлено: YFred от Апрель 02, 2014, 08:28:10 am
Коллеги, прокомментируйте мое решение задачи
Вложения:
2489033.dt
Название: Задача 1.02
Отправлено: Solitar от Апрель 28, 2014, 11:42:18 am
мое решение задачи 1.2. Буду рад комментариям.
Вложения:
1.2_Solitar.dt
Название: Задача 1.02
Отправлено: Demy от Май 02, 2014, 10:13:33 pm
YFred, посмотрел твое решение. Ошибок не обнаружил, но есть два замечания:
 1. Слишком мудреное списание. Если в запросе добавить дополнительное поле сортировки:
 
Код
ВЫБОР
     КОГДА ОстаткиНоменклатурыОстатки.Партия = &Партия  
         ТОГДА 1
     ИНАЧЕ 2
 КОНЕЦ КАК Порядок
тогда все было бы проще.
 2. Зачем такое чудовище:
 
Код
?(ВыборкаПартий.КоличествоОстаток-Движение.Количество=0,ВыборкаПартий.СуммаОстаток, Окр(Движение.Количество*ВыборкаПартий.СуммаОстаток/ВыборкаПартий.КоличествоОстаток,2))
проще нужно быть!
 3. И вдогонку, сообщение о недостатке товаров не совсем корректно, ведь товар может измеряться не только в штуках. wink

Добавлено (02.05.2014, 22:13)
---------------------------------------------
Solitar, посмотрел твое решение.
 1. В приходной накладной можно сделать проще, если в свойствах реквизита "Номенклатура" установить "Параметры выбора" дабы выбирался только товар. Кстати, я уже как-то спорил на форуме о формировании движений запросом, что ты об этом думаешь? Тем не менее формирование движений конструктором сэкономит время.
 2. В расходной накладно я не понял создание менеджера временных таблиц и разделение запроса, зачем это?
 3. В запросе при определении вида номенклатуры:
 

Код
ВЫБОР
     КОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
         ТОГДА 1
     ИНАЧЕ 0
 КОНЕЦ КАК ВидНоменклатуры
можно заменить на:
 
Код
ВЫБОР
     КОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
         ТОГДА ИСТИНА
     ИНАЧЕ ЛОЖЬ
 КОНЕЦ КАК ЭтоУслуга
но это чисто с эстетической точки зрения, а то выглядит как в 7.7. smile
Название: Задача 1.02
Отправлено: Demy от Май 03, 2014, 01:54:04 am
Выкладываю свой вариант решения. Критикуйте. Заранее благодарен.
Вложения:
Demy_1_02.dt
Название: Задача 1.02
Отправлено: mulradik от Август 01, 2014, 05:02:52 am
Вид номенклатуры лучше вообще делать булевым реквизитом (Услуга), а не перечислением.
Название: Задача 1.02
Отправлено: prof-net от Август 04, 2014, 07:35:45 pm
ну и тут тоже выкладываю свое решение... тоже рад буду комментариям
 https://yadi.sk/d/edeP_TL1Z54yM
Название: Задача 1.02
Отправлено: EfKonstanin от Август 18, 2014, 08:24:24 pm
Для написания отчета по продажам в некоторых решениях используют 1 регистр накопления с 3 ресурсами: себестоимость, количество, СуммаПродажи, но есть и второй регистр накопления остатков в котором по сути есть уже информация о себестоимости и количестве. В первом случае мы увеличиваем таблицу оборотов, но упрощаем получение информации для построения отчета, а во втором случае (отказавшись от дублирования информации - удалили ресурсы из регистра продаж) уменьшили таблицу оборотов продажи, но увеличили время получения информации для отчета. Как в данной ситуации лучше поступать?
Название: Задача 1.02
Отправлено: Denis_D от Август 19, 2014, 01:34:02 pm
Регистр накопления с ресурсом сумма продажи - это ошибка. сумма продажи будет накапливаться в регистрах и не списываться никогда. За это снимут 2 балла. Продажи нужно хранить в оборотном регистре.
Название: Задача 1.02
Отправлено: alex1004 от Август 19, 2014, 02:51:10 pm
Denis_D
 "Регистр накопления с ресурсом сумма продажи - это ошибка."
 Позволю себе заметить, что что оборотный регистр, это тоже регистр накопления. :)

 EfKonstanin
 Пишите себестоимость в два регистра. Хотя вопрос не совсем однозначный, даже если не ошибаюсь Павел Чистов, в своих высказываниях не был категоричен, но рекомендовал делать именно таким образом. Запись уже рассчитанной (для регистра ОстаткиНоменклатуры) себестоимости в регистр Продажи практически не займет время, только место, а судя по тенденции для 1С сейчас важнее скорость работы, чем размер базы.
Название: Задача 1.02
Отправлено: Denis_D от Август 19, 2014, 03:11:36 pm
да, правильное замечание. я имел ввиду что в регистре накопления с видом остатки нельзя хранить продажи.
Название: Задача 1.02
Отправлено: EfKonstanin от Август 19, 2014, 04:43:25 pm
Да я собственно говоря и не предлагал хранить сумму продажи в регистре накопления с видом остатки, я имел ввиду, что в некоторых решениях встречал использование 2 регистров с одними и теми же ресурсами, а это означает, что в регистре накопления Остатки есть 2 измерения: номенклатура и партия с ресурсами количество и себестоимость, а в оборотном используются те же самые измерения, только уже 3 ресурса - как раз те которые нужны нам по заданию для вывода в отчет: количество, себестоимость и сумма продажи, но в 1 таблице с видом остатки уже есть вирт. таблица оборотов следовательно коло-во и себестоимость можно взять оттуда и связать это со 2 регистром и взять оттуда сумму продажи. Т.е. получается 2 решения со своими плюсами и минусами, и что использовать непонятно.
Название: Задача 1.02
Отправлено: alex1004 от Август 19, 2014, 05:20:22 pm
Еще два аргумента в пользу того, чтобы писать себестоимость в два регистра. Во-первых, если смотреть типовые конфигурации, то очевидно, что есть тенденция на дублирование информации, для того чтобы в последствии можно было легко получать отчеты. При этом конечно стоить отметить, что судя по всему, на экзамене аргумент "так делают в типовой" совсем не аргумент. Но тем не менее тенденция говорит именно о этом: каждый показатель - отдельный регистр. Во-вторых, на экзамене быстрее построить отчет при дублировании информации, т.к. нет необходимости делать соединения, соответственно меньше вероятность сделать ошибку.
Название: Задача 1.02
Отправлено: Denis_D от Август 19, 2014, 05:25:09 pm
Просто в оборотном не нужны Количество и Себестоимость.
Название: Задача 1.02
Отправлено: aramisov от Сентябрь 01, 2014, 04:14:02 pm
Цитата: Denis_D;35768
Просто в оборотном не нужны Количество и Себестоимость.


 Оборотный это Продажи? а как без количества и себестоимости?
 всё брать из регистра остатки? смотреть количество и сумма расход за период по регистру остатки плюс левым соединением залезать в продажи за суммой продаж?
 Зачем такое извращение? посмотрите регистр Продажи в типовой хотя бы УПП там всё пишется
Название: Задача 1.02
Отправлено: Odin777 от Сентябрь 11, 2014, 03:03:12 pm
Задание 1.2,  насколько я понял не особо отличается от 1.1 только запрос в Расходной накладной немного скорректировал.
Вложения:
0261000.dt
Название: Re: Задача 1.02
Отправлено: bro от Декабрь 11, 2014, 12:25:58 am
Подскажите пожалуйста, что делаю не так? После проведения документа, количество из одной и той же партии списывается 2 раза. Во вторую выборку почему-то попадает запись, которая уже должна быть списана. http://joxi.ru/EA4pdpYhOJ7YAb
З.Ы. В базе реализовано только списание по фифо\лифо, остальные механизмы пока что не реализовывал.
 
Название: Re: Задача 1.02
Отправлено: ksandr от Декабрь 11, 2014, 03:55:58 pm
Подскажите пожалуйста, что делаю не так? После проведения документа, количество из одной и той же партии списывается 2 раза. Во вторую выборку почему-то попадает запись, которая уже должна быть списана. http://joxi.ru/EA4pdpYhOJ7YAb
З.Ы. В базе реализовано только списание по фифо\лифо, остальные механизмы пока что не реализовывал.

Конкретно на этот вопрос, в параметрах РБ не задан момент времени, остатки надо брать на какое-то время, грубо говоря.
Второй запрос в выполняется в цикле, грубая ошибка, да и в целом сама обработка не совсем хороша, рекомендую Вам просмотреть пару выложенных уже решенных задач.
Название: Re: Задача 1.02
Отправлено: poritskiy от Январь 03, 2015, 01:48:28 pm
Прокомментируйте моё решение
Название: Re: Задача 1.02
Отправлено: ksandr от Январь 03, 2015, 04:42:31 pm
Прокомментируйте моё решение
Для определения вида номенклатуры лучше использовать уже имеющееся в системе перечисление.
В РН остатки не установлена галочка "Разрешить разделение итогов".
В ПН правильней будет запретить через параметры выбора услуги, чем отсекать их в ОП.
В РН, зачем из ТЧ брать номер строки?
Почему "Период" - граница и почему "Включая", это же не по новой методике проведение?
"Сообщение.Поле = "СписркНоменклатуры[ВыборкаНоменклатура.номерСтроки-1].Номенклатура";" - работает?
Итоги по СумОст можно не брать, там же номер строки опять.
Движение.Регистратор = Ссылка, это лишнее.
Название: Re: Задача 1.02
Отправлено: poritskiy от Январь 03, 2015, 10:03:06 pm
Прокомментируйте моё решение
Для определения вида номенклатуры лучше использовать уже имеющееся в системе перечисление.
В РН остатки не установлена галочка "Разрешить разделение итогов".
В ПН правильней будет запретить через параметры выбора услуги, чем отсекать их в ОП.
В РН, зачем из ТЧ брать номер строки?
Почему "Период" - граница и почему "Включая", это же не по новой методике проведение?
"Сообщение.Поле = "СписркНоменклатуры[ВыборкаНоменклатура.номерСтроки-1].Номенклатура";" - работает?
Итоги по СумОст можно не брать, там же номер строки опять.
Движение.Регистратор = Ссылка, это лишнее.


"Для определения вида номенклатуры лучше использовать уже имеющееся в системе перечисление."- читал на форуме что на экзамене это не считается ошибкой.
"В ПН правильней будет запретить через параметры выбора услуги, чем отсекать их в ОП."- расскажите как, так как я только начинаю разбираться
"Почему "Период" - граница и почему "Включая", это же не по новой методике проведение?"-согласен лишнее.
"В РН, зачем из ТЧ брать номер строки?"- для того что бы использовать при выводе сообщения Сообщение.Поле = "СписркНоменклатуры[ВыборкаНоменклатура.номерСтроки-1].Номенклатура система тогда определяет строку в которой введены неправильные данные, визуально прикольно выглядит.

"Движение.Регистратор = Ссылка, это лишнее." - согласен


 
Название: Re: Задача 1.02
Отправлено: ksandr от Январь 03, 2015, 10:33:24 pm
Это не ошибка, но при минимальных различиях в затратах времени на реализацию снимает вопрос - почему не используете уже имеющийся инструмент в каркасной конфигурации.
В свойствах реквизита номенклатура ТЧ есть "Параметры выбора", задать там отбор по Вашему решению "ЭтоУслуга = Ложь" или по моему "ВидНоменклатуры = Товар".
Про номер строки протупил, согласен, давно не расписывал по сообщению пользователю. А по Сообщение.Поле должно быть так       Сообщение.Поле  = "Таблица[" + Индекс + "].Количество"; Думаю Ваше строка не работает, СписркНоменклатуры ну и индекс вставлен неверно. В рамках решения задач если не сказано делать, то и не стоит делать, как и красивости в отчетах:).
Название: Re: Задача 1.02
Отправлено: poritskiy от Январь 05, 2015, 12:52:06 am
Думаю Ваше строка не работает, СписркНоменклатуры ну и индекс вставлен неверно. В рамках решения задач если не сказано делать, то и не стоит делать, как и красивости в отчетах:).

 СписркНоменклатуры  тут ошибка согласен исправил
а вот про индекс вы не правы, это новые возможности платформы 1с83
"СписокНоменклатуры[ВыборкаНоменклатура.номерСтроки-1].Номенклатура" - отработает правильно
Попробуйте сами и увидите...
Название: Re: Задача 1.02
Отправлено: ksandr от Январь 17, 2015, 01:49:02 pm
Дошли руки, проверил. Работает то оно работает, это хорошо, но если в ТЧ есть больше одной ошибки то при переходе по стрелкам в окне сообщения само сообщение не переходит на следующую строку, а вот по старой методике все норм, так что делаем все по старому. Проверял на  8.3.5.1383.
Название: Re: Задача 1.02
Отправлено: Muggsy от Январь 17, 2015, 08:16:34 pm
Добрый день! Взялась готовиться к спецу по платформе. прокомментируйте мое решение пожалуйста. Я постаралась сделать минимальный требуемый функционал по условиям задачи.  Может что-то стоит добавить? :)
Название: Re: Задача 1.02
Отправлено: ksandr от Январь 18, 2015, 04:15:35 pm
Добрый день! Взялась готовиться к спецу по платформе. прокомментируйте мое решение пожалуйста. Я постаралась сделать минимальный требуемый функционал по условиям задачи.  Может что-то стоит добавить? :)
В принципе все хорошо, есть пару мелочей.
Зачем это в цикле "Движения.Остатки.Записывать = истина;"?
В обоих отчетах не выведены в форму параметры дат.
В запросе РН из временной таблицы рекомендуют брать не "Номенклатура", а представление, хотя если брать "Номенклатура" как у Вас то можно не брать поле "Услуга" так как в запросе оно будет доступно через точку. Ну и партию думаю тоже стоит проиндексировать, так как дальше она используется. 
Название: Задача 1.02
Отправлено: Наталья Б от Март 15, 2015, 06:02:40 pm
Доброго вечера! Прокомментируйте мое решение, пожалуйста.
Название: Re: Задача 1.02
Отправлено: debova от Март 25, 2015, 01:26:31 pm
Вид номенклатуры лучше вообще делать булевым реквизитом (Услуга), а не перечислением.

Почему??? Если в стартовой  конфе уже даже есть нужные перечисления.
Название: Re: Задача 1.02
Отправлено: Energy_778 от Июнь 12, 2015, 10:28:29 am
<!--uzquote--><div class="bbQuoteBlock"><div class="bbQuoteName" style="padding-left:5px;font-size:7pt"><b>Quote</b> (<span class="qName"><!--qn-->Ettern0<!--/qn--></span>)</div><div class="quoteMessage" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');"><!--uzq-->Не надо ли сортировать запрос заново, без учета ПриоритетнойПартии?<!--/uzq--></div></div><!--/uzquote-->
 Не надо <img src="http://s10.ucoz.net/sm/10/biggrin.gif" border="0" align="absmiddle" alt="biggrin" />

Почему не надо?
У меня кстати такие же мысли, как у спрашивающего:
Если по партии, указанной в шапке товара не хватило, то нужно списывать в соответствии с учетной политикой, а ведь эта партия в общем случае не будет первой, а будет n-ой
Кому нибудь попадалась эта задача на экзамене? Действительно условие нужно трактовать так, как реализовали большинство на форуме?
Название: Re: Задача 1.02
Отправлено: АндрейМ от Июнь 16, 2015, 02:04:49 pm
Прошу прокомментировать мое решение
Название: Re: Задача 1.02
Отправлено: olegio от Июнь 18, 2015, 12:50:08 pm
Добрый день, уважаемые знатоки. Прокомментируйте пожалуйста мое решение.
Название: Re: Задача 1.02
Отправлено: timeforlive от Июнь 25, 2015, 03:04:18 pm
Ребята, у меня важный вопрос. Не знаю как у вас, но у меня и вот здесь (примеры решения задач):
http://v2.ax-online.ru/Exams/AttPlatf/Task-1.1.aspx
http://v2.ax-online.ru/Exams/AttPlatf/Task-1.2.aspx
есть крупная проблема, о которой, возможно никто не задумывался или не замечал.

По условию задачи можно выбирать партию в РН, а если не хватает товара для списания с партии, то списывается по учетной политике, например, по ФИФО.
По логике такая ситуация, если мы указали партию №1, а в ней не хватает товара, то по ФИФО должно начаться списание с партии №1, затем с партии №2 и т.д.
НО!
Запрос составляет все не так. Если указать УБЫВ при упорядочивании, то мы получим обратный эффект - наша партия будет в самом конце.
Я пока что изучаю этот маленький вопрос в перерыве с работой, если есть идеи, можете выкладывать, я напишу свои (но похоже уже завтра).

Вот код процедуры РН, важен сам запрос (УБЫВ):
Процедура ОбработкаПроведения(Отказ, Режим)

// объявление переменных
МоментИтогов = "";
Себестоимость = 0;
Выручка = 0;
Буфф = "";
ПорядокСортировки = "";

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

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

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

// работаем дальше:

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

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

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



// запрос

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

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

// Если ЛИФО, то ничего не изменяем в запросе
Буфф = УчетнаяПолитика = ЛИФО; // по УБЫВ
Текст1 = "ОстаткиНоменклатурыОстатки.Партия.МоментВремени УБЫВ";
Текст2 = "ОстаткиНоменклатурыОстатки.Партия.МоментВремени";
Запрос.Текст = ?(Буфф,Запрос.Текст,СтрЗаменить(Запрос.Текст, Текст1, Текст2));

РезультатЗапроса = Запрос.Выполнить();
////ТестТЗ = РезультатЗапроса.Выгрузить();
////Буфф = 0;

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

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

// АЛГОРИТМ
Пока Выборка.Следующий() Цикл

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

Если НЕ Выборка.ЭтоУслуга Тогда
Если Выборка.КоличествоПродажа > Выборка.КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст =
"Не хватает """ + Выборка.ПредставлениеНоменклатура +
""" в количестве: " + (Выборка.КоличествоПродажа - Выборка.КоличествоОстаток) +
". Всего в наличии имеется: " + Выборка.КоличествоОстаток;
Сообщение.Сообщить();
Отказ = Истина;
Продолжить;
КонецЕсли;

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

ТекСписание = мин(ВыборкаДетальныеЗаписи.КоличествоОстаток, ОсталосьСписать);

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

ТекСебестоимость = ТекСебестоимость + Движение.Сумма;
ОсталосьСписать = ОсталосьСписать - ТекСписание;

КонецЦикла;
КонецЕсли; // КОНЕЦ: НЕ Выборка.ЭтоУслуга //

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

КонецЦикла;
КонецПроцедуры
Название: Re: Задача 1.02
Отправлено: timeforlive от Июнь 26, 2015, 11:09:30 am
...
По условию задачи можно выбирать партию в РН, а если не хватает товара для списания с партии, то списывается по учетной политике, например, по ФИФО.
По логике такая ситуация, если мы указали партию №1, а в ней не хватает товара, то по ФИФО должно начаться списание с партии №1, затем с партии №2 и т.д.
НО!
Запрос составляет все не так. Если указать УБЫВ при упорядочивании, то мы получим обратный эффект - наша партия будет в самом конце.
Я пока что изучаю этот маленький вопрос в перерыве с работой, если есть идеи, можете выкладывать, я напишу свои (но похоже уже завтра).
...
Обещал - сделал.
Разбил на 3 запроса и использовал МенеджерВременныхТаблиц.
Логика следующая:
1 запрос - это ВТ, состоящая из Расходной накладной (РН)
2 запрос - это получение нашей партии и данных из РН
проверка количество в РН и остатков в партии
3 запрос - сбор всей информации по партиям, РН и т.д. (продолжение 1 запроса, другими словами).
В качестве параметра "Партия" в 3 запрос передается либо ссылка на ПН (приходную накладную), если по 2му запросу можно списывать, либо "1", если нельзя



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

// объявление переменных
МоментИтогов = "";
Себестоимость = 0;
Выручка = 0;
Буфф = "";
ПорядокСортировки = "";

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

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

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

// работаем дальше:

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

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

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

МенеджерВТ = Новый МенеджерВременныхТаблиц;

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


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

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

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

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


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

ПартияСсылка = ?(СписыватьВыбраннойПартии,Партия,"1"); // если с партии нельзя списать, то "отключаем" отбор по партиям
Запрос.УстановитьПараметр("МоментИтогов", МоментИтогов);
Запрос.УстановитьПараметр("Партия", ПартияСсылка);
Запрос.УстановитьПараметр("Ссылка", Ссылка);

// Если ЛИФО, то ничего не изменяем в запросе
Буфф = УчетнаяПолитика = ЛИФО; // по УБЫВ
Текст1 = "ОстаткиНоменклатурыОстатки.Партия.МоментВремени УБЫВ";
Текст2 = "ОстаткиНоменклатурыОстатки.Партия.МоментВремени";
Запрос.Текст = ?(Буфф,Запрос.Текст,СтрЗаменить(Запрос.Текст, Текст1, Текст2));

РезультатЗапроса = Запрос.Выполнить();
////ТестТЗ = РезультатЗапроса.Выгрузить();
////Буфф = 0;

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

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


// АЛГОРИТМ
Пока Выборка.Следующий() Цикл

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

Если НЕ Выборка.ЭтоУслуга Тогда
Если Выборка.КоличествоПродажа > Выборка.КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст =
"Не хватает """ + Выборка.ПредставлениеНоменклатура +
""" в количестве: " + (Выборка.КоличествоПродажа - Выборка.КоличествоОстаток) +
". Всего в наличии имеется: " + Выборка.КоличествоОстаток;
Сообщение.Сообщить();
Отказ = Истина;
Продолжить;
КонецЕсли;

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

ТекСписание = мин(ВыборкаДетальныеЗаписи.КоличествоОстаток, ОсталосьСписать);

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

ТекСебестоимость = ТекСебестоимость + Движение.Сумма;
ОсталосьСписать = ОсталосьСписать - ТекСписание;

КонецЦикла;
КонецЕсли; // КОНЕЦ: НЕ Выборка.ЭтоУслуга //

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

КонецЦикла;
КонецПроцедуры
Название: Re: Задача 1.02
Отправлено: DmitryZzz от Июнь 26, 2015, 11:17:02 am
Прошу прокомментировать и мое решение  :)
немного подправил решение
Название: Re: Задача 1.02
Отправлено: Kickout от Июнь 26, 2015, 05:59:47 pm
Тоже попытаю удачу с комментированием. Какие Есть недочеты?
Название: Re: Задача 1.02
Отправлено: DmitryZzz от Июнь 27, 2015, 11:52:31 am
Тоже попытаю удачу с комментированием. Какие Есть недочеты?

Бегло просмотрел:
1) При проведении приходной ошибка, нет регистра "ОбщиеОстатки"
2) Зачем усложнять приходную суммой? Если явно не указано в задании, то достаточно номенклатуры, количества и стоимости + нет отсечения услуги (как вариант - параметр выбора)
3) РН ОстаткиПоПартиям не проиндексированы измерения Номенклатура, Партия
4) Расходная: проверка на уч. политику - строку Если ПустаяСтрока(УЧТ.ВидУчета) Тогда я бы заменил на Если ЧТ.ВидУчета = Перечисления.ВидУчета.ПустаяСсылка() Тогда, но, кмк, лучше вообще запросом с проверкой.
5) Избегать обращения через точку, все заранее выбирать в запросе - Номенклатура.Услуга и Номенклатура.Представление (в сообщение при нехватке)
6) Не учитываете то, что форма может проводиться в толстом клиенте - необходимо очищать наборы записей всегда:
Движения.ОстаткиПоПартиям.Записывать = Истина;
Движения.ОстаткиПоПартиям.Очистить();
Движения.Продажи.Записывать = Истина;
Движения.Продажи.Очистить();
7) При оперативном проведении необходимо записывать пустой набор - Движения.ОстаткиПоПартиям.Записать()
8) Необходимо обнулять СебестоимостьИтого перед проверкой на услугу, иначе себестоимость может образоваться и у услуги. (как у вас сейчас)
9) В отчете "Остатки" можно обойтись без дополнительного параметра "ПериодКонец", существующего "Период" вполне достаточно.
10) В отчете "Продажи" следует добавить новый параметр, например "ПериодОтчета" с типом "СтандартныйПериод"  и завязать с "НачалоПериода" и "КонецПериода".
Название: Re: Задача 1.02
Отправлено: Kickout от Июнь 27, 2015, 04:34:53 pm
Тоже попытаю удачу с комментированием. Какие Есть недочеты?

Бегло просмотрел:
1) При проведении приходной ошибка, нет регистра "ОбщиеОстатки"
2) Зачем усложнять приходную суммой? Если явно не указано в задании, то достаточно номенклатуры, количества и стоимости + нет отсечения услуги (как вариант - параметр выбора)
3) РН ОстаткиПоПартиям не проиндексированы измерения Номенклатура, Партия
4) Расходная: проверка на уч. политику - строку Если ПустаяСтрока(УЧТ.ВидУчета) Тогда я бы заменил на Если ЧТ.ВидУчета = Перечисления.ВидУчета.ПустаяСсылка() Тогда, но, кмк, лучше вообще запросом с проверкой.
5) Избегать обращения через точку, все заранее выбирать в запросе - Номенклатура.Услуга и Номенклатура.Представление (в сообщение при нехватке)
6) Не учитываете то, что форма может проводиться в толстом клиенте - необходимо очищать наборы записей всегда:
Движения.ОстаткиПоПартиям.Записывать = Истина;
Движения.ОстаткиПоПартиям.Очистить();
Движения.Продажи.Записывать = Истина;
Движения.Продажи.Очистить();
7) При оперативном проведении необходимо записывать пустой набор - Движения.ОстаткиПоПартиям.Записать()
8) Необходимо обнулять СебестоимостьИтого перед проверкой на услугу, иначе себестоимость может образоваться и у услуги. (как у вас сейчас)
9) В отчете "Остатки" можно обойтись без дополнительного параметра "ПериодКонец", существующего "Период" вполне достаточно.
10) В отчете "Продажи" следует добавить новый параметр, например "ПериодОтчета" с типом "СтандартныйПериод"  и завязать с "НачалоПериода" и "КонецПериода".

1)Общие остатки я вначале сделал, потом удалил и забыл отредактировать ПНК
3)зачем партию индексировать? там же соединение по номенклатуре помоему и индексирвоать тоже надо по ней(просто с другого пк сейчас сижу) З.Ы. открыл конфигу запрос проиндексирован по номенклатуре
5) получается можно тогда взять из запроса представление и его выводить?
6,8)спасибо, учту
9) не совсем достаточно, если учитывать как я сделал (формат даты только дата без времени=> остатки будут считаться на начало дня а не на конец, а чтобы считалось на конец дня то надо вводить доп параметр(по другому не умею)), но можно оставить стандартный формат даты с указанием времени, но решил повыпендриваться)))))
10) а зачем? зачем привязывать к началу? он если не ошибаюсь привязан к концу(мой параметр) и сделан аналогично с пунктом 9.

Небольшой ньюанс, во 2 запросе у нас есть условие
ВЫБОР
   КОГДА ОстаткиПоПартиямОстатки.Партия = &ПартияСписания
      ТОГДА 1
   ИНАЧЕ 2
КОНЕЦ
что он нам дает? (это условие я подсмотрел и несовсем догоняю его), можете кто нить объяснить?






Название: Re: Задача 1.02
Отправлено: DmitryZzz от Июнь 28, 2015, 11:56:32 am
3)зачем партию индексировать? там же соединение по номенклатуре помоему и индексирвоать тоже надо по ней(просто с другого пк сейчас сижу) З.Ы. открыл конфигу запрос проиндексирован по номенклатуре
5) получается можно тогда взять из запроса представление и его выводить?
9) не совсем достаточно, если учитывать как я сделал (формат даты только дата без времени=> остатки будут считаться на начало дня а не на конец, а чтобы считалось на конец дня то надо вводить доп параметр(по другому не умею)), но можно оставить стандартный формат даты с указанием времени, но решил повыпендриваться)))))
10) а зачем? зачем привязывать к началу? он если не ошибаюсь привязан к концу(мой параметр) и сделан аналогично с пунктом 9.

Небольшой ньюанс, во 2 запросе у нас есть условие
ВЫБОР
   КОГДА ОстаткиПоПартиямОстатки.Партия = &ПартияСписания
      ТОГДА 1
   ИНАЧЕ 2
КОНЕЦ
что он нам дает? (это условие я подсмотрел и несовсем догоняю его), можете кто нить объяснить?

3) да, действительно, соединяем только по номенклатуре (перепутал с задачей 1.3), так что индексирования по номенклатуре достаточно;
5) ага;
9) если на конец дня и без времени, то вроде бы все ок. Но по условию задачи не сказано что на конец дня, поэтому, кмк, можно и не усложнять;
10) Тип СтандартныйПериод уже возьмет остатки на конец дня

По последнему:
Это условие задает порядок списания партий, сначала мы списываем партии из шапки, а уже потом все оставшиеся
Название: Re: Задача 1.02
Отправлено: malikov_pro от Июль 18, 2015, 11:59:44 am
Мой вариант решения задачи.
Буду благодарен за просмотр и указания на ошибки, недочеты.
Название: Re: Задача 1.02
Отправлено: физ от Сентябрь 11, 2015, 04:18:18 pm
И свой вариант выложу
Название: Re: Задача 1.02
Отправлено: iipobaji от Октябрь 16, 2015, 04:25:19 pm
На всеобщее обозрение ;)
Название: Re: Задача 1.02
Отправлено: ID443 от Ноябрь 25, 2015, 06:42:34 pm
На всеобщее обозрение ;)

При запросе остатков из виртуального регистра можно обращаться к временной таблице для установки параметра отбора номенклатуры, не стоит, наверное, повторно обращаться к документу. Кроме того не нужно ставить условие в этом параметре на отбор по типу товара, в остатках услуг нету.
Название: Re: Задача 1.02
Отправлено: GPetr от Декабрь 11, 2015, 09:26:59 am
На всеобщее обозрение ;)

При оперативном проведении МоментВремени = Неопределено;

Выкладываю свой вариант.
Плюсы и минусы в студию)
Спасибо.
Название: Re: Задача 1.02
Отправлено: pila86 от Декабрь 21, 2015, 11:48:38 pm
На всеобщее обозрение ;)

При оперативном проведении МоментВремени = Неопределено;

Выкладываю свой вариант.
Плюсы и минусы в студию)
Спасибо.

Попробуйте расходную накладную два раза подряд проведите по какому-нибудь товару на оставшееся количество. Первый раз проводится второй раз нет. Надо очищать движения по регистру остатков номенклатуры при оперативном проведении, а вот кстати при неоперативном наверное необязательно, если использовать границу с видом "исключая".
А вообще обязательно оставлять возможность оперативного проведения, кто-нибудь знает?
У меня вот вариант без оперативного проведения.
Название: Re: Задача 1.02
Отправлено: Odin777 от Февраль 03, 2016, 07:25:26 pm
Вот вариант решения в котором получаем в одном запросе все нужные данные а после проверяем в условии номенклатура = услуга и т.д. смотрите базу, жду вопросов и замечаний
Название: Re: Задача 1.02
Отправлено: Calibrio от Февраль 05, 2016, 10:47:27 am
В общем такая же задачка, как и первая, только выбор первой партии для списания добавляется пользователю
Если есть время - посмотрите
Название: Re: Задача 1.02
Отправлено: Calibrio от Февраль 05, 2016, 11:22:05 am
Вот вариант решения в котором получаем в одном запросе все нужные данные а после проверяем в условии номенклатура = услуга и т.д. смотрите базу, жду вопросов и замечаний
Привет!

1) Усложнили опять задачу созданием дока УстановкаУчетнойПолитики
    В доке Расходная:
2) Режим проведения так и не проверяете при установке параметра МоментВремени, здесь же МоментВремени это функция МоментВремени()
3) Зачем-то считаете себестоимость 2 раза, при первом подсчете можно кинуть себестоимость в переменную (как Вы делали с кол-м) и, проходя по партиям, складывать. Только надо будет не забыть ее обнулить при переходе на некст товар
4) ошибка с делением на 0 при расчете себестоимости для доставки
5) не чистите остатки в партии при списании под 0, могут залипнуть копейки
Название: Re: Задача 1.02
Отправлено: Odin777 от Февраль 09, 2016, 09:04:40 am
Вот вариант решения в котором получаем в одном запросе все нужные данные а после проверяем в условии номенклатура = услуга и т.д. смотрите базу, жду вопросов и замечаний
Привет!

1) Усложнили опять задачу созданием дока УстановкаУчетнойПолитики
    В доке Расходная:
2) Режим проведения так и не проверяете при установке параметра МоментВремени, здесь же МоментВремени это функция МоментВремени()
3) Зачем-то считаете себестоимость 2 раза, при первом подсчете можно кинуть себестоимость в переменную (как Вы делали с кол-м) и, проходя по партиям, складывать. Только надо будет не забыть ее обнулить при переходе на некст товар
4) ошибка с делением на 0 при расчете себестоимости для доставки
5) не чистите остатки в партии при списании под 0, могут залипнуть копейки
Постараюсь ответить по пунктам:
1) Напрямую с регистром чтобы пользователи не работали использую документ, считаю более обоснованным вариантом, для защиты от непреднамеренного изменения(удаления) записи;
2) Получаю только актуальные остатки по регистру. По условию задачи не "увидел" необходимости проверять по другому. МоментВремени у меня переменная со значением равным Неопределено;
3) В чем преимущество, не особо понял. Я думаю более читабельный код тот что есть, на это опираюсь;
4) Видимо от невнимательности возможно такой код будет достаточен:
// Движение.Себестоимость = ?(НоменклатураУслуга, 0, [расчет себестоимости если это не услуга] //
5) Не совсем понял. Может уточните? Постараюсь объяснить ту логику которую я представляю себе: мы получаем некий коэффициент когда делим количествоДокумента на количествоОстатокИзРегистра и умножаем на суммуОстатокВРегистре, пример
а)3/3 * 10
1) 3/3 = 1;Коэффициент = 100% (значит всю сумму спишем по номенклатуре)
2) 1 * 10 = 10
б)2/3*10
1)2/3 = 0,6666666666666667
2)0,6666666666666667 * 10 = 6,666666666666667
уже при записи в регистр с учетом точности заданного для числа (ресурса регистра) результат будет округляться. Следовательно, у меня точность ресурса со значением число равна 2, результат примера Б будет 6,67 с учетом округления.
ЗЫ Спасибо за ваш комментарий.
Если кто-либо в моем комментарии заметил ошибки, прошу исправить, чтобы этот комментарий не сбил с "истинного пути" начинающих.
Название: Re: Задача 1.02
Отправлено: Odin777 от Февраль 09, 2016, 09:57:40 am
В общем такая же задачка, как и первая, только выбор первой партии для списания добавляется пользователю
Если есть время - посмотрите
1) В ОбработкеПроведения док Приходная нет проверки вида Номенклатура = ЭтоУслуга при записи движений документа;
2) В ОбработкеПроведения док Расходная не выполняете запись пустого набора(который вы очистили) в регистр ОстаткиНоменклатуры.
Движения.ОстаткиТоваров.Очистить(); с помощью этой строки кода мы можем очистить записи набора ОстаткиНоменклатуры который хранится в свойстве документа "Движения", но не в самом регистре ОстаткиНоменклатуры.
Для того чтобы пустые записи попали в базу данных нужно добавить Движения.ОстаткиТоваров.Записать();, после того как очистим набор записей ОстаткиТоваров из коллекции "Движения".
3) Если ВыборкаНоменклатура.КоличествоПродажи > ВыборкаНоменклатура.КоличествоОсталось И НЕ Услуга Тогда немного громоздкое условие, при этом далее
Если Не Услуга Тогда. Посмотрите мое решение использую одно условие "НоменклатураУслуга" в начале.
Название: Re: Задача 1.02
Отправлено: Марк от Февраль 23, 2016, 03:42:29 pm
Мое решение данной задачи. Прошу проверить на наличие ошибок.
Название: Re: Задача 1.02
Отправлено: axel_work от Февраль 24, 2016, 05:57:20 pm
Очень простая.
Название: Re: Задача 1.02
Отправлено: axel_work от Февраль 24, 2016, 06:02:18 pm
Кстати, почему большинство в отчете по остаткам приводит дату к началу следующего дня?
Есть ли в правилах экзамена про это что-либо?  Время пользователь и сам выставить может.
Название: Re: Задача 1.02
Отправлено: Odin777 от Февраль 25, 2016, 10:06:30 pm
Кстати, почему большинство в отчете по остаткам приводит дату к началу следующего дня?
Есть ли в правилах экзамена про это что-либо?  Время пользователь и сам выставить может.
Предпологаю что так делается исходя из того, что пользователь при указании даты отчета будет ожидать получение в отчете сведений и за дату отчета.
Название: Re: Задача 1.02
Отправлено: aevdovin от Март 16, 2016, 01:41:54 pm
задача 1.2
Аналогично 1.1, с дополнением, что в первую очередь приоритет в списание отдается партии из шапки.

Не знал, что порядок строк в закладке "Порядок" имеет значение, если МоментВремени будет первым, то Приоритет уже не важен..
Название: Re: Задача 1.02
Отправлено: aevdovin от Март 16, 2016, 01:43:33 pm
Очень простая.

А для каких целей считаете ПередЗаписью   СуммуПоДокументу   в Приходной и Расходной ?...
Название: Re: Задача 1.02
Отправлено: ivan_0110 от Март 23, 2016, 10:37:22 am
Очень простая.

axel_work, не красиво следующее утверждение при проведении реализации:

|   МАКСИМУМ(ВЫБОР
|         КОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
|            ТОГДА ИСТИНА
|         ИНАЧЕ ЛОЖЬ
|      КОНЕЦ) КАК ЭтоУслуга


обычно добавляют в справочнике "Номенклатура" галочку "Услуга" и запросы становятся красивее и проще.
Название: Re: Задача 1.02
Отправлено: Головлев Владислав от Март 23, 2016, 10:53:09 am
Очень простая.

axel_work, не красиво следующее утверждение при проведении реализации:

|   МАКСИМУМ(ВЫБОР
|         КОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
|            ТОГДА ИСТИНА
|         ИНАЧЕ ЛОЖЬ
|      КОНЕЦ) КАК ЭтоУслуга


обычно добавляют в справочнике "Номенклатура" галочку "Услуга" и запросы становятся красивее и проще.
Вот я что то сомневаюсь в использовании "галочки", ведь не просто так присутствует перечисление "ВидыНоменклатуры", думаю лучше использовать то, что уже есть
Название: Re: Задача 1.02
Отправлено: ivan_0110 от Март 23, 2016, 11:15:44 am
Очень простая.

axel_work, не красиво следующее утверждение при проведении реализации:

|   МАКСИМУМ(ВЫБОР
|         КОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
|            ТОГДА ИСТИНА
|         ИНАЧЕ ЛОЖЬ
|      КОНЕЦ) КАК ЭтоУслуга


обычно добавляют в справочнике "Номенклатура" галочку "Услуга" и запросы становятся красивее и проще.
Вот я что то сомневаюсь в использовании "галочки", ведь не просто так присутствует перечисление "ВидыНоменклатуры", думаю лучше использовать то, что уже есть

этот вопрос из разряда стиля кода. авторы каркасной конфы предлагают перечисление, но с ним не удобно работать и при его использовании получается малочитаемый код. Потом этот код будет проверять специалист и если он всетретит выражения типа "масло масленное", что он скажет или подумает? Я ведь не написал, что запрещено использовать перечисление. Я просто сказал, что так некрасиво. Ведь на экзамене еще и смотрят на стиль кода.
Название: Re: Задача 1.02
Отправлено: ComradeKite от Март 23, 2016, 11:30:24 am
Очень простая.

axel_work, не красиво следующее утверждение при проведении реализации:

|   МАКСИМУМ(ВЫБОР
|         КОГДА РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
|            ТОГДА ИСТИНА
|         ИНАЧЕ ЛОЖЬ
|      КОНЕЦ) КАК ЭтоУслуга


обычно добавляют в справочнике "Номенклатура" галочку "Услуга" и запросы становятся красивее и проще.
Вот я что то сомневаюсь в использовании "галочки", ведь не просто так присутствует перечисление "ВидыНоменклатуры", думаю лучше использовать то, что уже есть

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

Мне так не кажется, перечисление универсальнее. Завтра появится материал, комплект.... уже галка не пойдет.
Всего лишь надо запомнить заклинание "ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)"



 
Название: Re: Задача 1.02
Отправлено: ivan_0110 от Март 23, 2016, 12:04:04 pm
Тогда почему в типовых конфигурациях УТ и БП используется именно булево для этого случая?
Наверное, из вредности: чтоб не так как на экзамене...

Я так понимаю, что каркасная конфа - это предложение, а вот воспользоваться им или нет - дело программиста. Ведь всем известно, что в каркасной есть специально неправильно установленные настройки.
Название: Re: Задача 1.02
Отправлено: ComradeKite от Март 23, 2016, 12:07:08 pm
Тогда почему в типовых конфигурациях УТ и БП используется именно булево для этого случая?
Наверное, из вредности: чтоб не так как на экзамене...

Это не ко мне вопрос))
Название: Re: Задача 1.02
Отправлено: ivan_0110 от Март 23, 2016, 01:25:20 pm
задача 1.2
Аналогично 1.1, с дополнением, что в первую очередь приоритет в списание отдается партии из шапки.


При проведении реализации избыточно условие:
Если ЗначениеЗаполнено(Партия) И Партия.Проведен Тогда
   Запрос.УстановитьПараметр("ПартияИзШапки", Партия);
Иначе
   Запрос.УстановитьПараметр("ПартияИзШапки", Документы.ПриходнаяНакладная.ПустаяСсылка());
КонецЕсли;

достаточно всего:
Если Партия.Проведен Тогда
   ...
КонецЕсли;
Название: Re: Задача 1.02
Отправлено: javer от Март 30, 2016, 11:34:15 am
Прошу проверить решение. Вопрос если политику меняю документом, хотя в задании этого не требуется, является ли это ошибкой?
И еще, когда делаешь проводку прихода проверку на услугу можно ли делать как это реализовано у меня в задании? (Если НЕ ТекСтрокаТЧ.Номенклатура.Услуга Тогда).
И надо ли делать последовательность?
Название: Re: Задача 1.02
Отправлено: javer от Март 30, 2016, 11:37:38 am
Исправил косяк с услугами
Название: Re: Задача 1.02
Отправлено: glow2020 от Апрель 01, 2016, 12:40:01 pm
Интересно, будет ли считаться подобное выражение Выборка.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Товар в цикле ошибкой. Как понимаю, при первой итерации Перечисления.ВидНоменклатуры.Товар считывается из базы и хранится в кеше, а последующие обращения читаются из него. И по времени это не быстрее, чем сохранять Перечисления.ВидНоменклатуры.Товар в переменной. Или я ошибаюсь?
Название: Re: Задача 1.02
Отправлено: freez1301 от Май 26, 2016, 10:51:31 am
Господа, скачал 5 решений из этой ветки и ни в одном не увидел правильной реализации отчета по продажам? Нигде нет вычисляемых полей. Кто нибудь решил этот вопрос? В частности интересует вопрос по полю "Срок" - как узнать дату формирования отчета кроме как вводить свой параметр и выводить его на форму?
Название: Re: Задача 1.02
Отправлено: Tektronix от Май 26, 2016, 03:37:54 pm
Господа, скачал 5 решений из этой ветки и ни в одном не увидел правильной реализации отчета по продажам? Нигде нет вычисляемых полей. Кто нибудь решил этот вопрос? В частности интересует вопрос по полю "Срок" - как узнать дату формирования отчета кроме как вводить свой параметр и выводить его на форму?

Дата формирования отчета задается в разделе "Параметры", например, как "Период".
А обратиться к параметру можно таким образом "&Период".
Название: Re: Задача 1.02
Отправлено: ComradeKite от Май 26, 2016, 03:55:07 pm
Господа, скачал 5 решений из этой ветки и ни в одном не увидел правильной реализации отчета по продажам? Нигде нет вычисляемых полей. Кто нибудь решил этот вопрос? В частности интересует вопрос по полю "Срок" - как узнать дату формирования отчета кроме как вводить свой параметр и выводить его на форму?

)))))))))
Я бы например как минимум задумался)))))

Походу ты перепутал задачу 1.2 и задачу 1.3.
Качаешь решения с задачей 1.2 из этой ветки, а поле "Срок" есть в задаче 1.3.

Вообщем повнимательней, а то методом "брутфорса" далеко не уедешь)))
Название: Re: Задача 1.02
Отправлено: freez1301 от Май 26, 2016, 04:35:48 pm
сорри, на этом форуме недавно. неправильно понял названия тем. Думал что в этой ветке обсуждается задача по ОУ из билета 2
Название: Re: Задача 1.02
Отправлено: EgorovIN от Июнь 01, 2016, 04:51:53 pm
Добрый день.
Мой вариант решения. Гляньте?
Название: Re: Задача 1.02
Отправлено: startup от Июнь 15, 2016, 11:10:11 pm
  EgorovIN .Добрый день.
Мой вариант решения. Гляньте?

Думается если вы указали конкретную партию в запросе как параметр в блокировке надо ее указать как Установить значение("Партия", Партия).   


            
Название: Re: Задача 1.02
Отправлено: alfalume от Июнь 17, 2016, 02:46:52 pm
мое решение
Название: Re: Задача 1.02
Отправлено: EgorovIN от Июль 15, 2016, 09:29:59 am
  EgorovIN .Добрый день.
Мой вариант решения. Гляньте?

Думается если вы указали конкретную партию в запросе как параметр в блокировке надо ее указать как Установить значение("Партия", Партия).   

Добрый день.
Я не указывал партию как параметр к блокировке, я передаю партию для упорядочивания.
Я блокирую всю номенклатуру из документа по всем партиям, зачем мне еще дополнительно блокировать конкретную?
Название: Re: Задача 1.02
Отправлено: pasha_2001 от Ноябрь 03, 2016, 10:39:35 am
Почему при проведении РасходнойНакладной в запросе в итогах ставим    МАКСИМУМ(Услуга)? Ведь если в документ затесалась услуга и товары, то он вообще не проведется, а ведь можно  просто при обходе делать проверки на услуга и исключить ее, но провести товары, присутствующие в табличной части?
Название: Re: Задача 1.02
Отправлено: ILMIR от Январь 08, 2017, 11:21:30 pm
Добрый день! Посмотрите пожалуйста мое решение, спасибо большое!
Название: Re: Задача 1.02
Отправлено: jonik от Май 04, 2017, 04:14:44 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Название: Re: Задача 1.02
Отправлено: ТынДын от Май 04, 2017, 09:59:32 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
1.в приходной нет проверки на услугу.
2.если не хватает то выводит первую номенклатуру и прерывается, а может быть там несколько номенклатуры не хватает
Название: Re: Задача 1.02
Отправлено: jonik от Май 05, 2017, 10:49:30 am
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
1.в приходной нет проверки на услугу.
2.если не хватает то выводит первую номенклатуру и прерывается, а может быть там несколько номенклатуры не хватает

1. В параметрах выбора установлен отбор по услуге
2. Неважно скольких номенклатур не хватает: если нет хотя бы 1 позиции, то документ не проводится. Диагностическое сообщение предназначено ровно для пользователя.
Название: Re: Задача 1.02
Отправлено: logo23 от Сентябрь 23, 2017, 05:18:52 pm
Добрый день. Посмотрите пожалуйста мое решение. Интересно мнение кто как определял приоритет указанной в расходнйо накладной партий при списании. Ресурс себестоимость добавил в РН Продажи, дабы не отчет продажи выполнялся быстрее, т.к. все данные берутся из одной таблицы БД.
Название: Re: Задача 1.02
Отправлено: angelivoin от Сентябрь 27, 2017, 09:35:51 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Списание вообще неправильно сделано.
С начало надо сделать движение в регистр остатки, затем проверить что в минус не ушли, а потом списывать товар.
 
Название: Re: Задача 1.02
Отправлено: logo23 от Сентябрь 27, 2017, 10:50:16 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Списание вообще неправильно сделано.
С начало надо сделать движение в регистр остатки, затем проверить что в минус не ушли, а потом списывать товар.

Спасибо за ответ)
В чем не правильно?))
Перед чтением остатков я заблокировал таблицу РН, чтобы другие сеансы не сделали туда никаких записей. Проверил хватает ли мне. Записал набор в РН. После чего блокировка снялась в конце транзакции.
Название: Re: Задача 1.02
Отправлено: jonik от Сентябрь 28, 2017, 01:40:05 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Списание вообще неправильно сделано.
С начало надо сделать движение в регистр остатки, затем проверить что в минус не ушли, а потом списывать товар.
Я использую старую методику проведения
Название: Re: Задача 1.02
Отправлено: jonik от Сентябрь 28, 2017, 01:43:48 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Списание вообще неправильно сделано.
С начало надо сделать движение в регистр остатки, затем проверить что в минус не ушли, а потом списывать товар.

Спасибо за ответ)
В чем не правильно?))
Перед чтением остатков я заблокировал таблицу РН, чтобы другие сеансы не сделали туда никаких записей. Проверил хватает ли мне. Записал набор в РН. После чего блокировка снялась в конце транзакции.
Судя по всему, это ответ на мое решение... :o :)
Название: Re: Задача 1.02
Отправлено: angelivoin от Сентябрь 29, 2017, 07:22:43 pm
Вот задача, должно быть идеально.
Название: Re: Задача 1.02
Отправлено: angelivoin от Сентябрь 29, 2017, 08:00:19 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Списание вообще неправильно сделано.
С начало надо сделать движение в регистр остатки, затем проверить что в минус не ушли, а потом списывать товар.
Я использую старую методику проведения
Если есть возможность, то надо использовать новую методику. За неправильную методику списания снимают балы
Название: Re: Задача 1.02
Отправлено: angelivoin от Сентябрь 29, 2017, 08:16:45 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Списание вообще неправильно сделано.
С начало надо сделать движение в регистр остатки, затем проверить что в минус не ушли, а потом списывать товар.

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

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

При получении учетной политики, отбор на дату а не на момент времени. Тем более у регистра нету регистратора. И не надо проверять режим тут. Просто на дату документа смотришь!

Блокировку вообще поставил в начале, ты даже учетную политику не получил, вдруг ты на ней откатишься, а ты уже заблокировал регистр, сразу минус бал. Регистр блокируется перед чтением, записью, а не заранее.
Плюс, в этой задаче возможно использовать новую методику списания, значит ее надо использовать. У вас  нет выбора, хочу старую, хочу новую использовать, приоритет новая методика. Если ее невозможно использовать, только тогда старую используем
Название: Re: Задача 1.02
Отправлено: jonik от Октябрь 02, 2017, 10:16:17 am
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Списание вообще неправильно сделано.
С начало надо сделать движение в регистр остатки, затем проверить что в минус не ушли, а потом списывать товар.
Я использую старую методику проведения
Если есть возможность, то надо использовать новую методику. За неправильную методику списания снимают балы

Цитировать
Если есть возможность, то надо использовать новую методику
Не совсем: если новая методика более эффективна в плане структуры решения, то нужно выбирать ее.
Цитировать
За неправильную методику списания снимают балы
Если не сложно, приведите пример правил экзамена, где это написано или цитату экзаментатора.
Название: Re: Задача 1.02
Отправлено: alex1248 от Октябрь 02, 2017, 12:36:08 pm
За неправильную методику списания снимают балы
Если не сложно, приведите пример правил экзамена, где это написано или цитату экзаментатора.
Снимают, но снимут не у вас.  ;D
Название: Re: Задача 1.02
Отправлено: jonik от Октябрь 02, 2017, 01:15:07 pm
За неправильную методику списания снимают балы
Если не сложно, приведите пример правил экзамена, где это написано или цитату экзаментатора.
Снимают, но снимут не у вас.  ;D

Почему? ???
Название: Re: Задача 1.02
Отправлено: alex1248 от Октябрь 02, 2017, 04:41:37 pm
За неправильную методику списания снимают балы
Если не сложно, приведите пример правил экзамена, где это написано или цитату экзаментатора.
Снимают, но снимут не у вас.  ;D
Почему? ???
Снимают на основании вот этого пунктика
Цитировать
Использование менее эффективной методики проведения документов   1,0
А не у вас, потому что по крайней мере во всех задачах с расчетом себестоимости надо использовать старую методику. Лично я принцип определения методики формулирую так: "Новая методика в том случае, если для ее применения не надо создавать дополнительных регистров и даже доп ресурсов в существующих регистрах. Если есть необходимость создания доп объектов исключительно для новой методики, использование новой методики на экз скорее всего будет признано неэффективным".
Название: Re: Задача 1.02
Отправлено: angelivoin от Октябрь 03, 2017, 12:08:41 pm
За неправильную методику списания снимают балы
Если не сложно, приведите пример правил экзамена, где это написано или цитату экзаментатора.
Снимают, но снимут не у вас.  ;D
Почему? ???
Снимают на основании вот этого пунктика
Цитировать
Использование менее эффективной методики проведения документов   1,0
А не у вас, потому что по крайней мере во всех задачах с расчетом себестоимости надо использовать старую методику. Лично я принцип определения методики формулирую так: "Новая методика в том случае, если для ее применения не надо создавать дополнительных регистров и даже доп ресурсов в существующих регистрах. Если есть необходимость создания доп объектов исключительно для новой методики, использование новой методики на экз скорее всего будет признано неэффективным".

alex1248, если использовать два регистра то старая методика, а если я использую три регистра и регистр остатки состоит только из номенклатуры и количества. Почему я не могу новую применить методику? Я могу сразу сделать движение по остаткам и увидеть, что остатки в минус ушли и дальше не идти списывать по партиям. У меня получается комбинация, с начало новую использую, если в минус не ушел, тогда использую старую уже для списания партий
Название: Re: Задача 1.02
Отправлено: alex1248 от Октябрь 03, 2017, 01:00:34 pm
За неправильную методику списания снимают балы
Если не сложно, приведите пример правил экзамена, где это написано или цитату экзаментатора.
Снимают, но снимут не у вас.  ;D
Почему? ???
Снимают на основании вот этого пунктика
Цитировать
Использование менее эффективной методики проведения документов   1,0
А не у вас, потому что по крайней мере во всех задачах с расчетом себестоимости надо использовать старую методику. Лично я принцип определения методики формулирую так: "Новая методика в том случае, если для ее применения не надо создавать дополнительных регистров и даже доп ресурсов в существующих регистрах. Если есть необходимость создания доп объектов исключительно для новой методики, использование новой методики на экз скорее всего будет признано неэффективным".

alex1248, если использовать два регистра то старая методика, а если я использую три регистра и регистр остатки состоит только из номенклатуры и количества. Почему я не могу новую применить методику? Я могу сразу сделать движение по остаткам и увидеть, что остатки в минус ушли и дальше не идти списывать по партиям. У меня получается комбинация, с начало новую использую, если в минус не ушел, тогда использую старую уже для списания партий
Я всё написал в предпоследнем на данный момент сообщении в ветке "Билет 1...."
Повторюсь лишь, что это не моё мнение, а мнение экзаменаторов и довольно однозначное, вряд ли получится их переубедить теми аргументами, что вы приводили здесь.
Да, и не советую искать инфу по этому экз по всему тырнету, она на 90% некачественная, т.к. очень многие (как и вы сейчас) свою имху выдают за абсолютную истину.
Достаточно достоверная инфа лишь на этом форуме, и то надо отсеивать.
Название: Re: Задача 1.02
Отправлено: jonik от Октябрь 04, 2017, 09:34:29 am
За неправильную методику списания снимают балы
Если не сложно, приведите пример правил экзамена, где это написано или цитату экзаментатора.
Снимают, но снимут не у вас.  ;D
Почему? ???
Снимают на основании вот этого пунктика
Цитировать
Использование менее эффективной методики проведения документов   1,0
А не у вас, потому что по крайней мере во всех задачах с расчетом себестоимости надо использовать старую методику. Лично я принцип определения методики формулирую так: "Новая методика в том случае, если для ее применения не надо создавать дополнительных регистров и даже доп ресурсов в существующих регистрах. Если есть необходимость создания доп объектов исключительно для новой методики, использование новой методики на экз скорее всего будет признано неэффективным".

Наглядный пример необходимости применения новой методики - задачи 1.6(решена Гилевым на сайте) и 1.24. Я определяюсь так: если мы "возвращаемся" к какому-либо разрезу учета(остаточного регистра) в процессе списания, то нужна новая методика.
Название: Re: Задача 1.02
Отправлено: alex1248 от Октябрь 04, 2017, 12:09:57 pm
Так как все-таки жить?
Живите просто - используйте новую методику только в тех задачах, где ее использование очевидно - это задачи только на количество, вроде бы их 3 в актуальных.
Еще совет - на Гилева не ссылайтесь, его утверждения не будут весомым аргументом, если экзаменатор будет с вами не согласен. Также не ссылайтесь на типовые конфы, на иные авторитетные, на ваш взгляд, источники.
Название: Re: Задача 1.02
Отправлено: jonik от Ноябрь 20, 2017, 02:00:43 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Подкорректировал
Название: Re: Задача 1.02
Отправлено: Евгений_нвкз от Сентябрь 07, 2020, 06:09:49 am
Всем привет. Мой вариант решения, кто что скажет?)
Название: Re: Задача 1.02
Отправлено: Grehmin от Сентябрь 14, 2020, 04:10:36 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
Подкорректировал

Спасибо за вариант с приоритетом по партии в запросе - лаконично и просто)
Название: Re: Задача 1.02
Отправлено: Black_Corsair от Ноябрь 05, 2020, 02:19:10 pm
Добрый день, коллеги. Буду рад услышать конструктивные отзывы
1.в приходной нет проверки на услугу.
2.если не хватает то выводит первую номенклатуру и прерывается, а может быть там несколько номенклатуры не хватает
на Сколько я верно прочитал условие, в приходной и не должно быть услуги, так что какой смысл там её проверять? может я что то не понимаю в задании
Название: Re: Задача 1.02
Отправлено: OurProgramist от Ноябрь 06, 2020, 11:55:31 pm
Всем привет. Мой вариант решения, кто что скажет?)

 В "ПриходнаяНакладная"  доделайте , либо при проведении либо через СписокНоменклатуры -> Номенклатура -> Параметры Выбора, чтобы Услуга не попадала в регистр Остатки,
 не большие мелочи , Учетная политика не выведена на форму,  чтобы можно было менять , и по умолчанию лучше поставить ФИФО, хотя я точно не знаю это чисто мое мнение,
остальное с моей точки зрения работает правильно по условию задачи. (тестировал несколько раз)
  Если не трудно в двух словах прокомментируйте запрос
 
Название: Re: Задача 1.02
Отправлено: Евгений_нвкз от Январь 29, 2021, 01:02:06 pm
Спасибо за подсказку по поводу регистра, надо будет переделать.
По поводу моего запроса, там доп поле создается, все остатки по партии из шапки нумеруется "1", остальной "2", потом упорядочивается по возрастанию, и получается, что вначале идут остатки по партии из шапки, и списывается от туда в первую очередь (по условию так), а потом по остальным партиям идет списание.
Название: Re: Задача 1.02
Отправлено: Холодный Тимофей от Март 31, 2021, 12:30:00 pm
Спасибо за подсказку по поводу регистра, надо будет переделать.
По поводу моего запроса, там доп поле создается, все остатки по партии из шапки нумеруется "1", остальной "2", потом упорядочивается по возрастанию, и получается, что вначале идут остатки по партии из шапки, и списывается от туда в первую очередь (по условию так), а потом по остальным партиям идет списание.
Можно еще перед формированием движений в переборе детальных записей запроса использовать ВыборкаДетальные.НайтиСледующий (Партия, "Партия") и формировать движения по партии из шапки. Потом ВыборкаДетальные.Сбросить(). При формировании движений по остальным строкам выборки ставить условие на не равенство ВыборкаДетальные.Партия <> ЭтотОбъект.Партия и ИНАЧЕ продолжить.
Название: Re: Задача 1.02
Отправлено: VasilyK от Май 19, 2021, 08:40:49 pm
Коллеги, добрый день, посмотрите, пожалуйста, моё решение. Спасибо!
Название: Re: Задача 1.02
Отправлено: Холодный Тимофей от Май 20, 2021, 11:00:25 am
Коллеги, добрый день, посмотрите, пожалуйста, моё решение. Спасибо!
День добрый! В общем все ок. Есть недостатки, на мой взгляд:
1. В проведении расходной накладной запись пустого набора в регистр "Продажи" не имеет смысла.
 - Движения.Продажи.Записать(); - 5 строка Обработки проведения.
Запись пустого набора нужна только в том случае, когда для проведения нужны данные из регистра без учета движений самого документа (традиционная методика проведения).
Ошибка не серьезная, и даже не факт что заметят, но Белоусов точно заметит и будет задавать вопросы на понимание.
А нарветесь на вопрос экзаменатора при очной сдаче (-0,5 балла).
- В качестве параметра используется объект Граница с параметром МоментВремени, включая по умолчанию. Нужно просто МоментВремени(). Это тоже вопрос от экзаменатора на понимание механизма традиционной методики проведения и почему используется именно МоментВремени документа, а не его правая граница. Это связано с получением остатков. В выбранном Вами варианте могут быть получены не корректные остатки при перепроведении документа. Это грубая ошибка. 
2. Движения в регистр Продажи пишутся неправильно. Количество разбивается по партиям, а сумма по каждой записи общая по всему количеству. Тут два момента - раздута таблица движений, в отчете появляется не корректная сумма продаж. Количество по услугам не попадает в регистр, это логическая ошибка Вашего решения. Если не разберетесь сами, то пишите - помогу.
3. По отчетам:
- оформление отчета должно быть таким же как в примере, приведенном в задаче. Надо обращать внимание на положение текста в ячейке, границы ячеек, болды и т.д.
- обратите внимание на представление поля "Партия" отчета Остатки Товаров. Это тоже не архи важно, но терять баллы на этом тоже не стоит.
Я не докапываюсь, просто пока тренируетесь, лучше доводить до идеала. Если останется время на экзамене, то отчеты можно и зализать. Тогда будет пятерка.
P.S. В режиме исполнения добавил одну расходную накладную и провел ее. Результат Вы видите на скринах.
Название: Re: Задача 1.02
Отправлено: VasilyK от Май 20, 2021, 01:33:51 pm
День добрый! В общем все ок. Есть недостатки, на мой взгляд:
Тимофей, добрый день, спасибо за обратную связь.

Насчет конструкции "Новый Граница(МоментВремени()", Вы правы это для проведения по новой методике, исправил на МоментВремени(). Насчет не корректных остатков, а почему так? Я же записал пустой набор записей в ОстаткиНоменклатуры, значит остатки на левую и на правую границу документа равны. Или и я не прав?

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

Добавить в "Выражение представления": "Прих. Накл № " + ОбщийМодульСервер.УдалитьЛидирующиеНули(Партия.Номер)? Не универсально, но других партий у нас и нет
Название: Re: Задача 1.02
Отправлено: Холодный Тимофей от Май 20, 2021, 02:03:05 pm
Цитировать
Насчет не корректных остатков, а почему так? Я же записал пустой набор записей в ОстаткиНоменклатуры, значит остатки на левую и на правую границу документа равны. Или и я не прав?


Имеется ввиду, что при использовании конструкции Новый Граница (МоментВремени()) будут получены остатки на правую границу интервала. Тут важно понимать, что документ может быть пререпроведен когда угодно, например на следующий день. В этом случае он будет проводиться неоперативно, его дата и время не изменятся. Таким образом при перепроведении в этот интервал могут попасть и другие документы, введенные позже, что приведет к некоректному получению остатков. А значит надо использовать только МоментВремени(). Это в традиционной методике.

Цитировать
Добавить в "Выражение представления": "Прих. Накл № " + ОбщийМодульСервер.УдалитьЛидирующиеНули(Партия.Номер)? Не универсально, но других партий у нас и нет
Очень даже и универсально для приходных накладных. Я так и делал. Только получал представление поля целиком и не парился.

Проведение по регистру Продажи смотрели?
Название: Re: Задача 1.02
Отправлено: VasilyK от Май 20, 2021, 04:06:38 pm
Имеется ввиду, что при использовании конструкции Новый Граница (МоментВремени()) будут получены остатки на правую границу интервала. Тут важно понимать, что документ может быть пререпроведен когда угодно, например на следующий день. В этом случае он будет проводиться неоперативно, его дата и время не изменятся. Таким образом при перепроведении в этот интервал могут попасть и другие документы, введенные позже, что приведет к некоректному получению остатков. А значит надо использовать только МоментВремени(). Это в традиционной методике.

А почему дата и время не изменяются при не оперативном проведении? Новый Граница (МоментВремени()) это правая граница документа, а МоментВремени() это левая, но если очистить движения документа по регистру конструкцией: Движения.ОстаткиНоменклатуры.Записать();. То значения должны быть равны. Разве нет?

Цитировать
Добавить в "Выражение представления": "Прих. Накл № " + ОбщийМодульСервер.УдалитьЛидирующиеНули(Партия.Номер)? Не универсально, но других партий у нас и нет
Очень даже и универсально для приходных накладных. Я так и делал. Только получал представление поля целиком и не парился.
Не универсально, в том смысле, что если добавится новый документ "Приходная накладная по Экспорту", то из "Выражения представления" в запрос нужно будет переносить в конструкцию ВЫБОР КОГДА ТОГДА. Что-то вроде такого:

ВЫБОР
   КОГДА ОстаткиНоменклатурыОстатки.Партия ССЫЛКА Документ.ПриходнаяНакладная ТОГДА "Прих. Накл №"
   ИНАЧЕ "Что-то другое №"
КОНЕЦ

Тимофей, насчет получения поля целиком не понял как Вы это делали, можете рассказать?

Цитировать
Проведение по регистру Продажи смотрели?
Да, перенёс в цикл по Номенклатуре и исправил заполнение количества по документу. Так что всё ок.
Название: Re: Задача 1.02
Отправлено: Холодный Тимофей от Май 21, 2021, 11:59:50 am
Цитировать
А почему дата и время не изменяются при не оперативном проведении?

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

Цитировать
Новый Граница (МоментВремени()) это правая граница документа, а МоментВремени() это левая, но если очистить движения документа по регистру конструкцией: Движения.ОстаткиНоменклатуры.Записать();. То значения должны быть равны. Разве нет?

Когда Ваш документ проводится/перепроводиться оперативно текущей датой, то разницы действительно нет. Ему будет присвоена оперативная отметка времени, которая всегда на 1 с больше последнего проведенного документа. Его положение на оси времени уникально и после него ничего нет. Раньше вообще получали актуальные остатки при оперативном проведении. Но когда Дата документа меньше Даты текущего сеанса, документ будет проводиться / перепроводиться не оперативно, дату пользователь может поменять вручную (программно это никак не ограничено). Вот тогда разница будет и в этот интервал [МоментВремени(), ПраваяГраница] могут попасть движения других документов, которые изменяли остатки позже.
Методически правильно использовать МоментВремени(). Инфа с курса подготовки к Специалисту по платформе. Как-то так.

Цитировать
Тимофей, насчет получения поля целиком не понял как Вы это делали, можете рассказать?
Создавал вычисляемое поле и получал для него значение с помощью экспортной функции из общего модуля. Но зато можно допилив немного эту функцию, получать значения для этого поля любых документов, определяя тип значения ссылки получаемой функцией в качестве аргумента. Как Вы говорите, немного более универсальный подход. Вы почти так же делали, в общем-то.
Название: Re: Задача 1.02
Отправлено: VasilyK от Май 21, 2021, 03:46:00 pm

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

Тимофей, насчет момента времени понял, так и буду делать :)

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

"Выбор Когда ЗначениеЗаполнено(Партия) Тогда "Прих. Накладная №" + Строка(Вычислить(Партия.Номер)) Иначе "" Конец"
Название: Re: Задача 1.02
Отправлено: Холодный Тимофей от Май 24, 2021, 10:12:40 am

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

"Выбор Когда ЗначениеЗаполнено(Партия) Тогда "Прих. Накладная №" + Строка(Вычислить(Партия.Номер)) Иначе "" Конец"

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