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

Аттестация "1С:Специалист" => Аттестация "1С:Специалист по платформе 1С:Предприятие 8.3 и 8.2" => Тема начата: provincial_1с от Август 12, 2010, 02:31:21 pm

Название: 1.3
Отправлено: provincial_1с от Август 12, 2010, 02:31:21 pm
Кто решил ?
Название: 1.3
Отправлено: U2006 от Август 18, 2010, 06:32:39 pm
Quote (pershinsergei)
жду комментариев по поводу решения.
 Переделал отчет продажи

 не скачивается

Вот мое решение


Вложения:
1_3_u2006.dt
Название: 1.3
Отправлено: petrov86 от Август 19, 2010, 06:32:17 pm
U2006 в отчёте продажи при использовании вложенных запросов ты не учитываеш тип движения. Должны быть только расходы.
Название: 1.3
Отправлено: U2006 от Август 19, 2010, 10:48:16 pm
Quote (petrov86)
U2006 в отчёте продажи при использовании вложенных запросов ты не учитываеш тип движения. Должны быть только расходы.

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

Название: 1.3
Отправлено: petrov86 от Август 20, 2010, 08:38:09 am
Сори. Был не прав.
Название: 1.3
Отправлено: Heckfy от Сентябрь 30, 2010, 06:09:57 pm
Отчет, вроде, попроще получился. Хотя в его оптимальности я очень совневаюсь. smile
Вложения:
1.03.dt
Название: 1.3
Отправлено: Danan от Октябрь 14, 2010, 02:11:48 pm
Выкладываю свое решение этой задачи. Отчет сделал. Бывалые, если кто знает как сделать подобный отчет через наборы данных, выложите пожалуйста пример.
 Меня удивляет почему у некоторых людей в решении 2 отчета? Ведь достаточно легко сделать один отчет с двумя вариантами - 1 продажи -2 второй остатки.
Вложения:
Task_1_3.dt
Название: 1.3
Отправлено: Matcoder от Октябрь 20, 2010, 09:17:10 pm
Danan, а на работу при нулевых остатках проверял? Вот это:
 "ВЫБОР
           КОГДА Вт.НоменклатураВидНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
                 И ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) > 0
              ТОГДА Вт.Количество / ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) * ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СтоимостьОстаток, 0)
           ИНАЧЕ 0
     |   КОНЕЦ КАК Стоимость,"

будет работать?

Добавлено (20.10.2010, 21:03)
---------------------------------------------
Danan,
 И вместо "Номенклатура В (ВЫБРАТЬ Вт.Номенклатура ИЗ Вт) И Партия В (ВЫБРАТЬ Вт.Партия ИЗ Вт)" можно использовать такую конструкцию "(Номенклатура,Партия) В (ВЫБРАТЬ Вт.Номенклатура, Вт.Партия ИЗ Вт)"?

Добавлено (20.10.2010, 21:17)
---------------------------------------------
Я может глупую вещь сейчас скажу... Но, а зачем вообще нужен регистр Продажи?

Название: 1.3
Отправлено: Vlastmen от Октябрь 21, 2010, 04:48:57 pm
Danan, это не один отчет и по смыслу они разные, поэтому и разделяют. Или сразу выбрать его из списка или выбрать твой плюс ещё искать его в вариантах, пользователь вообще не станет его искать и подумает что его нет wink
 А я вот не понимаю почему все делают проверку заполненных данных в процедуре ПередЗаписью когда можно просто ограничить выбор неправильных данных.
 Например Номенклатура, поставить реквизиту Параметры выбора так Отбор.Услуга(Ложь) и услугу уже не указать.
 Для реквизита партия поставить проверку заполнения - "Выдавать ошибку"
Название: 1.3
Отправлено: Matcoder от Ноябрь 14, 2010, 01:11:22 pm
Мое решение. Свои предыдущие комменты беру обратно. confused Видимо при первом взгляде на эту задачу я не понял ее сути. В предлагаемом варианте есть некоторые отличия от уже представленных решений, поэтому думаю стоит взглянуть.
Вложения:
_1_3.dt
Название: 1.3
Отправлено: Danan от Ноябрь 20, 2010, 12:12:18 pm
Vlastmen,
 1)Цитирую из сборника 3 редакции задача 1.3.:
 "Необходимо построить отчет по анализу продаж товаров за период и остаткам товара на указанную дату". Это условие задачи можно по разному трактовать, но если мне не изменяет память то в требованиях к экзамену проверяется умение пользоваться вариантами отчета в скд. К тому же пользователи разные бывают, а варианты отчета очень полезная штука.
 2) Опять же цитата из того же источника:
 "И услуги и товары могут указываться в одной табличной части". По этому когда товар проверяется заполнение партии, а для услуг партии не нужны.

Matcoder, Смотрел твое решение, вот мои комментарии:
 1) Механизм списание, на мой взгляд два раза дергать таблицу остатков в запросе не целесообразно, если можно воспользоваться итогами.
 2) Отчет по продажам класс! Если конечно работает(не проверял, смотрел только схему компоновки данных).

Название: 1.3
Отправлено: svbel85 от Ноябрь 24, 2010, 06:01:37 am
Matcoder,

не качается

Название: 1.3
Отправлено: AndreiPiter от Декабрь 14, 2010, 12:21:01 pm
Matcoder, не очень понял зачем в ОбработкеПроведения в расходной используется двойное соеденение таблиц, можно обойтись одним. В отчёте продажи можно использовать один набор данных (один набор данных - один запрос к базе данных)
 Моё решение:
Вложения:
2762986.dt
Название: 1.3
Отправлено: Gyd от Декабрь 20, 2010, 04:09:21 pm
Quote (Vlastmen)
Например Номенклатура, поставить реквизиту Параметры выбора так Отбор.Услуга(Ложь) и услугу уже не указать.
 Для реквизита партия поставить проверку заполнения - "Выдавать ошибку"

 услуг в табличной части документа не будет, или не так понял? можно базу с примером?
Название: 1.3
Отправлено: Vlastmen от Декабрь 20, 2010, 05:43:31 pm
Quote (Gyd)
услуг в табличной части документа не будет, или не так понял? можно базу с примером?

 Допустим у нас справочник номенклатура содержит реквизит Услуга типа булево, если истина то значит услуга, так вот в табличной части той же накладной к примеру, реквизиту Номенклатура устанавливаем Параметры выбора Отбор.Услуга(Ложь),
 и при её выборе будут отображаться только та номенклатура у которой Услуга = Ложь
Название: 1.3
Отправлено: AndreiPiter от Декабрь 20, 2010, 08:36:09 pm
Quote (Vlastmen)
Допустим у нас справочник номенклатура содержит реквизит Услуга типа булево, если истина то значит услуга, так вот в табличной части той же накладной к примеру, реквизиту Номенклатура устанавливаем Параметры выбора Отбор.Услуга(Ложь),
 и при её выборе будут отображаться только та номенклатура у которой Услуга = Ложь

Непрокатит, пользователь при выборе отменяет наш отбор и выбирает услугу, и вот услуга в списке номенклатуры biggrin

Название: 1.3
Отправлено: Gyd от Декабрь 24, 2010, 11:47:29 am
мой вариант задачи:
 - проще (на мой взгляд) сделал отчет Продажи
 - так и не понял как два отчета объединить в один
 - в форме Расходной можно выбрать партию у услуги, не пойму как закрыть

жду ваших замечаний


Вложения:
Gyd_1_3.dt
Название: 1.3
Отправлено: AndreiPiter от Декабрь 24, 2010, 08:43:11 pm
Gyd, вас не смущает, что услуга при проведении ПриходнойНакладной попадает в ОстаткиНоменклатуры? wink

Quote (AndreiPiter)
в форме Расходной можно выбрать партию у услуги, не пойму как закрыть

 с формами не нужно заморачиваться (это вам в последний раздел задачника).
Название: 1.3
Отправлено: Gyd от Декабрь 27, 2010, 10:48:44 am
Quote (AndreiPiter)
Gyd, вас не смущает, что услуга при проведении ПриходнойНакладной попадает в ОстаткиНоменклатуры?

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

Quote (AndreiPiter)
с формами не нужно заморачиваться (это вам в последний раздел задачника)

 да просто интересно как это сделать.
Название: 1.3
Отправлено: AndreiPiter от Декабрь 27, 2010, 07:53:03 pm
Quote (Gyd)
Да, вы правы. Думаю тут имеет смысл запретить в форме документа выбор услуги, а не при проведении.

 Интересно как?! (не просто так спрашиваю wink
Название: 1.3
Отправлено: Gyd от Январь 11, 2011, 10:34:39 am
Quote (AndreiPiter)
Интересно как?! (не просто так спрашиваю wink

 первое что приходит в голову: в процедуре ПриИзменении поля Номенклатура запрет на выбор услуг. Возможно есть решение более изящное через настройки формы.
Название: 1.3
Отправлено: Gulf_Stream от Январь 22, 2011, 05:16:05 pm
Мой Вариант.

Вопрос:
 Как правильней определять расчетные параметры отчёта "Продажи" срок и интервал, из регистра ПРодажи по полю период, или анализируя расходные накладные?


Вложения:
_1.03.dt
Название: 1.3
Отправлено: Danan от Январь 22, 2011, 08:43:09 pm
Gulf_Stream, На мой взгляд очень хорош отчет у Matcoder. На 2-й странице в первом комментарии я писал об этом.

Quote (Gyd)
- так и не понял как два отчета объединить в один

 Использовать наборы данных и варианты отчета. У меня в решении отчет так и сделан.
Название: 1.3
Отправлено: Gulf_Stream от Январь 23, 2011, 06:22:26 am
Посмотел, действительно хорошо, только не понятно зачем разворачивать регистр по регистратору:

Code
РегистрНакопления.Продажи.Обороты(, , Регистратор, ) КАК ПродажиОбороты

 Когда логичнее рабивать по дням. И зачем расчитываются некоторые поля в первом запросе, которые потом не используются.
Название: 1.3
Отправлено: Danan от Январь 23, 2011, 09:15:46 am
На это не обратил внимание, я думаю что лучше узнать у автора.
Название: 1.3
Отправлено: Matcoder от Январь 23, 2011, 02:21:36 pm
Не помню. Давно дело было... Наверное косяк.
Название: 1.3
Отправлено: Lusmith от Февраль 06, 2011, 05:51:54 pm
Добрый день.
 Бывалые, посмотрите плиз мой вариант.
Вложения:
1.03.Lusmith.dt
Название: 1.3
Отправлено: Para_1987 от Март 26, 2011, 08:51:43 pm
Начал подготовку к экзамену. проверьте плиз как решил задачу.
Вложения:
Para_1987_1.03.dt
Название: 1.3
Отправлено: CHEBURASHKA от Март 29, 2011, 06:32:15 pm
Зачем некоторые в проведении расходной накладной получают все остатки номенклатуры а не по конкретной партии? И потом проверяют больше ли количество в накладной, чем всего товара по всем партиям? Ведь в задаче сказано, что "в случае, если товара по указанной партии не хватает, документ не проводится и выводится соответствующее сообщение..."

Ещё не понятно зачем делать отбор по виду номенклатуры в ТЧ расходной накладной. Об этом не говорится в условии задачи. Для товаров указывайте партию и всё.

Название: 1.3
Отправлено: gr0ck от Апрель 15, 2011, 12:26:50 pm
Сделал. Хотя, есть сомнения насчет отчета по продажам. Думаю, можно сделать проще. Но, для выбора правильного подхода в короткий интервал времени, нужно быть либо очень умным, либо очень опытным cool Или то и другое вместе

Добавлено (15.04.2011, 12:26)
---------------------------------------------
CHEBURASHKA, когда на эту задачу всего час, обычно на мелочи внимания не обращаешь. Хотя да, в некотором смысле решение не совсем оптимальным получается


Вложения:
Gr0ck_Task1_3.dt
Название: 1.3
Отправлено: garden от Май 11, 2011, 11:20:45 pm
И меня гляньте кто сможет. Буду ждать!
Вложения:
1-03_garden.dt
Название: 1.3
Отправлено: Ikem от Май 18, 2011, 10:33:25 am
Прошу просмотреть мой вариант.
 Заранее сердечное спасибо.
Вложения:
ikem_1_3.dt
Название: 1.3
Отправлено: DoctorRoza от Июнь 21, 2011, 11:06:01 pm
Коллеги! Прошу посмотреть мое решение задачи 1.3. Лично мне задача понравилась, потребовалось освежить в памяти о функции как РАЗНОСТЬДАТ() smile

Добавлено (21.06.2011, 23:06)
---------------------------------------------
Ikem,
 А зачем Вы пишите
 Сообщение.Текст = "У номенклатуры "+ВыборкаДетальныеЗаписи.Номенклатура+" не указан параметр Партия."; ?
 В регистре накопления ОстаткиНоменклатуры, для измерения Партия, поставьте флажок "Запрет незаполненных значений" и Проверка заполнения = ВыдаватьОшибку

 И еще в отчете Продажи, я интервал округлял .. не знаю нужно это или нет smile


Вложения:
DoctorRoza_1_3.dt
Название: 1.3
Отправлено: kravius от Июнь 23, 2011, 10:34:17 am
Подскажите пожайлуста, если в конфигурации каркасной стоит режим управления блокировок - автоматический, надо писать код под это свойство, ну то есть НЕ писать БлокироватьДляИзменения() при считывании остатков или нужно поменять это свойство в самой конфигурации и блокировать в коде? Что правильнее? В видеолекции по разбору атестации в коде блокируют.
Название: 1.3
Отправлено: SergTH000 от Июнь 23, 2011, 12:43:34 pm
kravius,
 режим управления блокировок нужно поменять на управляемый
 http://forum.chistov.pro/index.php?topic=1310.msg13626#msg13626
 http://forum.chistov.pro/index.php?topic=1310.msg14327#msg14327
Название: 1.3
Отправлено: kravius от Июнь 23, 2011, 03:25:22 pm
Вот мое решение 1.3. После прочтения всех статей сделала вывод: что если нужно контролировать остатки и расчитывать себестоимость в одной ОбработкеПроведения НОВЫЙ механизм проведения использовать не стоит, поэтому сделала по "классике". Прошу написать отзывы, кому не лень smile
Вложения:
0785662.dt
Название: 1.3
Отправлено: Gyd от Июнь 24, 2011, 10:35:45 am
Quote (kravius)
Прошу написать отзывы, кому не лень

 
Code
Если ВыборкаНом.Номенклатура.Услуга = истина Тогда
  продолжить;
 КонецЕсли;

 Вот этого у вас в принципе не должно быть в выборке. Во-первых вы устанавливали фильтр на номенклатуру (искать в регистре НЕ услуги), во-вторых - у вас в регистре остатков врятли будут находится услуги.
Название: 1.3
Отправлено: kravius от Июнь 24, 2011, 12:12:23 pm
Quote (Gyd)
Вот этого у вас в принципе не должно быть в выборке. Во-первых вы устанавливали фильтр на номенклатуру (искать в регистре НЕ услуги), во-вторых - у вас в регистре остатков врятли будут находится услуги.

 Согласна. Запрос переделала немного после того, как написала обработчик. Исправила. А в целом как?
Название: 1.3
Отправлено: SergTH000 от Июнь 24, 2011, 03:36:08 pm
Gyd, kravius
 По поводу услуг не все так просто, в Расходной услуги могут быть легко и их надо записывать в РН Продажи.
 Если ВыборкаНом.Номенклатура.Услуга = истина Тогда
 1. Ну лучше просто Если Выборка.Номенклатура.Услуга Тогда
 2.Через точку к услуге не нужно обращаться (тк неявный запрос), выбирайте это поле в запросе.

 
Quote
Номенклатура В (ВЫБРАТЬ РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
 ИЗ
 Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры)
 И
 партия В (ВЫБРАТЬ РасходнаяНакладнаяСписокНоменклатуры.Партия
 ИЗ
 Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры)


 Проще так:

 
Quote
Номенклатура, Партия В (ВЫБРАТЬ РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
 РасходнаяНакладнаяСписокНоменклатуры.Партия
 ИЗ
 Документ.РасходнаяНакладная.СписокНомен клатуры КАК РасходнаяНакладнаяСписокНоменклатуры)


 Почему по номенклатуре блокируешь
Quote
ЭБ.ИсточникДанных = СписокНоменклатуры.Выгрузить(,"Номенклатура");
а по партии нет?

 
Quote
Если не отказ тогда
 движения.ОстаткиНоменклатуры.Записывать = Истина;
 движения.продажи.Записывать = Истина;
 КонецЕсли;


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

 Добавлено (24.06.2011, 15:36)
 ---------------------------------------------
 
Quote
себестоимость = Выборка.СуммаОстПарт/Выборка.КолОстПарт;
 Движение.Сумма = себестоимость*Выборка.Количество;


 Тут проблема копеек...
Название: 1.3
Отправлено: Gyd от Июнь 24, 2011, 04:12:04 pm
Quote (SergTH000)
в Расходной услуги могут быть легко и их надо записывать в РН Продажи.

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

 
Quote (SergTH000)
Почему по номенклатуре блокируешь
 
Code

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

 а по партии нет?

 Дак ей же нужны все остатки номенклатуры, а не только по указанным в документе партиям. Или я неправильно понимаю механизм работы блокировок?
Название: 1.3
Отправлено: SergTH000 от Июнь 24, 2011, 04:20:18 pm
Gyd,
 1.
Quote
1. не включать в запрос услуги (что на мой взгляд правильно, запрос более оптимальный), но при этом не забыть их занести в регистр Продажи.
 


 Так в запросе выбирается сначала сам документ и левым соединением аттачится к РН..Как потом записывать услуги, если ты их не выбрал? Заново перебирать ТЧ?

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


 Да просто выбрать доп. поле Номенлклатура.Услуга КАК Услуга. А в разных пакетах, если нужно делать отбор ГДЕ НЕ Услуга.

 2.
Quote
Дак ей же нужны все остатки номенклатуры, а не только по указанным в документе партиям. Или я неправильно понимаю механизм работы блокировок?

 Я не знаю условия =), но в запросе отбор и соединение идут по Номенклатуре + Партии, значит и блокировать по ним надо
Название: 1.3
Отправлено: Gyd от Июнь 27, 2011, 12:43:59 pm
Quote (SergTH000)
Так в запросе выбирается сначала сам документ и левым соединением аттачится к РН..Как потом записывать услуги, если ты их не выбрал? Заново перебирать ТЧ?

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

 
Quote (SergTH000)
но в запросе отбор и соединение идут по Номенклатуре + Партии, значит и блокировать по ним надо

 Там нужно проверить общее кол-во по какой-то номенклатуре и кол-во этой номенклатуры в конкретной партии. Допустим мы заблокируем 3 партии из 5, а по оставшимся 2-м можно параллельно (другим пользователем) движения делать?
Название: 1.3
Отправлено: SergTH000 от Июнь 28, 2011, 11:57:19 am
Quote
Да, это быстро. Просто логика такая: зачем искать в базе данных то чего там нет. И при вариантах типа 100 услуг - 1 товар думаю это оправдано.


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

 
Quote
Там нужно проверить общее кол-во по какой-то номенклатуре и кол-во этой номенклатуры в конкретной партии. Допустим мы заблокируем 3 партии из 5, а по оставшимся 2-м можно параллельно (другим пользователем) движения делать?


 Еще раз тебе пишу в запросе, в регистре накопления установлены параметры на Номенклатуру и партию, значит общее количество номенклатуры (в итогах) будет количество номенклатуры всех указанных партий.
 Мы не знаем при выполнении запроса, спишем с этих партий или нет, поэтому блокируем их. С других партий списывать не будем, другие пользователи могут получать по ним остатки.
Название: 1.3
Отправлено: Gyd от Июнь 28, 2011, 05:39:34 pm
Quote (SergTH000)
Что быстро? Сначала запросом получить ТЧ документа (она по-любому нужна), обойти запрос, потом обойти ТЧ в явном виде? Ты итак уже обходишь запрос, и если выбрать доп. поле "услуга", обход будет произведен один раз.
 Прежде чем писать, что это быстро сделай замер производительности.

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

 
Quote (SergTH000)
Мы не знаем при выполнении запроса, спишем с этих партий или нет, поэтому блокируем их.

 Вроде бы понял. Спасибо.
Название: 1.3
Отправлено: ital от Июнь 29, 2011, 01:03:05 pm
Выкладываю свое решение этой задачи.
 Коментарии
Вложения:
8178041.dt
Название: 1.3
Отправлено: kow1976 от Июль 09, 2011, 11:05:22 pm
Мой вариант решения. Если можно проведите анализ и тестирование не предвзятым взглядом. Мне кажется что учел все?
Вложения:
kow19761.3.dt
Название: 1.3
Отправлено: Oliver от Август 05, 2011, 07:14:00 am
Моё решение. Прошу оценить.
Вложения:
1_3_Oliver.dt
Название: 1.3
Отправлено: kow1976 от Август 05, 2011, 08:50:57 am
Oliver,

 1. Есть срок продажи в отчете, получается, что услуга у вас хранилась на складе 26 дней
 2. У вас нет параметров виртуальной таблицы, а данные вы отсекаете на уровне связи. Это очень большое преступление для 1С
 3. Нет индексации
Вложения:
s9866899.jpg
Название: 1.3
Отправлено: Oliver от Август 13, 2011, 12:44:03 pm
kow1976, большое спасибо за Ваши замечания.
 Всё поправил. Особо ценное это про параметры в системе компоновки (я компоновку ещё не разбирал). Я смотрел параметры компоновки на Вашем примере - и там есть маленький недочёт.
 1. В отчёте Остатки товаров - в округляете дату до конца дня. А сам параметр - значения дата,время.
 Успехов в подготовке!
Название: 1.3
Отправлено: kow1976 от Август 13, 2011, 01:26:36 pm
Спасибо

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

 Параметры я имел в ввиду не в отчете, а в обработкепроведения расх. Нак (запросе).
Название: 1.3
Отправлено: Oliver от Август 18, 2011, 11:21:03 am
kow1976
 Вот теперь я понял о чём Вы мне толковали. Действительно, когда торопится забываешь очевидные вещи (но фатальные для сдачи) - это в моём случае. А я первоначально подумал об этом (см. рис.)
 И у меня возник вопрос: необходимо ли явно указывать в компановке параметры виртуальных таблиц (рис. 1)?
 Или это избыточно (рис. 2)?

 Спасибо за внимание к моим вопросам.
Вложения:
s8195771.jpg
s1276526.jpg
Название: 1.3
Отправлено: kow1976 от Август 18, 2011, 01:41:20 pm
Oliver,

 Не могу вам ответить точно, считается это ошибкой на экзамене или нет. Но в задании написано так:
 «Продажи с 01.01.2010 по 31.03.2010»
 Нет не каких секунд и часов. Поэтому считаю надежнее указать функции параметров приводящих к концу секунды заданного дня.
Название: 1.3
Отправлено: Oliver от Август 18, 2011, 03:10:57 pm
Спасибо. Вопрос закрыт.
Название: 1.3
Отправлено: Romdavid от Октябрь 05, 2011, 07:45:22 pm
На сайте http://ax-online.ru описано решение данной задачи, в котором следующим образом используются блокировки:
 Блокировка = Новый БлокировкаДанных;
 ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
 ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
 ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
 Блокировка.Заблокировать();
 
 Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
 Движения.ОстаткиНоменклатуры.Записать();
 К этому участку кода приведено такое описание:
 "Перед тем как выполнить чтение данных из регистра ОстаткиНоменклатуры, мы стираем прежние движения этого документа, если они были, записывая пустой набор движений. Но ещё прежде мы указываем, что все остатки и обороты, на которые влияли наши прежние движения, следует БлокироватьДляИзменения. Это на тот случай, если по итогам проверки остатков в партиях, мы решимся отказаться от записи новых движений и вернуть прежние. Ведь пока мы производим проверки и формируем движения, другой документ может забрать то, что временно освободилось, когда мы стерли прежние движения. "
 Подскажите пожалуйста, является ли правильным такое использование блокировок и, если да, то стоит ли его применять на экзамене?
Название: 1.3
Отправлено: chilli от Октябрь 12, 2011, 10:51:07 pm
Доброго времени суток, присутствующим!
 Я буксую, почему в отчете продажи у меня поле Срок не доступно для использования в отчете?

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

 Есть у меня грубые нарушения устава 1С? lol
Вложения:
chilli_1_3.dt
Название: 1.3
Отправлено: Кенгуру от Октябрь 13, 2011, 01:35:16 pm
Посмотрите, пожалуйста, есть ли косяки smile

 Добавлено (13.10.2011, 13:35)
 ---------------------------------------------
 Chilli

 1. Излишняя строка
 "Движения.Продажи.Записать(); "

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

 Из регистра Продажи мы ничего не читаем, поэтому не нужно Записать(), новые записи лягут поверх старых.

 2. Не понял зачем тебе столько ресурсов в отчете продажи, поясни плиз.
 Если для того, чтобы порядок колонок был как требуемом отчете, то из-за отсутствия в нем итогов можно без ресурсов вообще сделать. Смысла суммировать(или другие операции) например Срок не вижу.

 ------------

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

 4. В приходной накладной можно делать запрос с группировкой дублей строк, не знаю насколько это важно, я делаю.
 ---------------
 5. Из твоей работы вынесу для себя параметры виртуальной таблицы ОстаткиНоменклатурыОстатки, я что-то по партиям не отобрал biggrin
Вложения:
-3--.dt
Название: 1.3
Отправлено: Romdavid от Октябрь 13, 2011, 02:18:33 pm
Кенгуру

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

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

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

 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура, Партия", "Номенклатура, Партия")
Название: 1.3
Отправлено: aveego от Октябрь 13, 2011, 04:03:19 pm
Quote (Кенгуру)
3. Расчет Стоимости
 Движение.Стоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;
 думаю будет лучше
 Движение.Стоимость = Выборка.Количество * Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток;
 т.е. сначала умножаем, а потом делим, чтобы не терять микроскопических копеек.


 А какая разница делишь в начале или в конце, если взять наобум числа
 Выборка.Количество = 3
 Выборка.КоличествоОстаток = 7
 Выборка.СтоимостьОстаток = 8
 Подставляем в обе формулы 3/7*8 = 3.42 или 3*8/7 = 3.42
Название: 1.3
Отправлено: Romdavid от Октябрь 13, 2011, 04:21:14 pm
aveego

 Чтобы регистр всегда выходил в ноль, т.е. чтобы не зависали копейки лучше писать так:

 Движение.Стоимость = ?(Выборка.Количество = Выборка.КоличествоОстаток, Выборка.СтоимостьОстаток, Выборка.Количество * Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток);
Название: 1.3
Отправлено: aveego от Октябрь 13, 2011, 04:37:01 pm
Romdavid,
 С последним согласен, если количество списываемого равно количеству в партии то списываем все количество и всю сумму партии.
 Хотя тут тоже наверное лучше проверять не на равенство, просто если Выборка.Количество больше чем Выборка.КоличествоОстаток, то нужно тоже списывать все количество и всю сумму партии. Это как раз можно сделать если будет проверка на Выборка.КоличествоОстаток > Выборка.Количество, формула расчета будет применять только в том случаи когда Выборка.Количество меньше КоличествоОстаток, а если они равны или Выборка.Количество больше то будет списываться вся партия.

 Выше постом я спросил в чем разница этих формул, что так что так получаются копейки

 
Quote (Кенгуру)
3. Расчет Стоимости
 Движение.Стоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;
 думаю будет лучше
 Движение.Стоимость = Выборка.Количество * Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток;
 т.е. сначала умножаем, а потом делим, чтобы не терять микроскопических копеек.
Название: 1.3
Отправлено: aveego от Октябрь 14, 2011, 12:41:41 pm
Вот мое решение в нем учел замечания по предыдущем заданиям.

Вложения:
aveego_1_3.dt
Название: 1.3
Отправлено: Romdavid от Октябрь 14, 2011, 01:05:32 pm
aveego, зачем используешь итоги в запросе при проведении расходной накладной?
Название: 1.3
Отправлено: aveego от Октябрь 14, 2011, 02:22:10 pm
В документе реализации может быть несколько одинаковых номенклатур, но с разными партиями. А в регистре продаж мы не учитываем партию.
 Если не использовать Итоги то обход будет по детальным записям, и в регистр продаж по одному регистратору попадут записи с одинаковой номенклатурой, а так я записываю только итоговые данные и записи не "задваиваются" по номенклатуре

Добавлено (14.10.2011, 14:22)
---------------------------------------------
а еще нашел ошибку у себя же, нужно
 ЭлементБлокировкиДанных.ИспользоватьИзИсточникаДанных("Номенклатура, Партия", "Номенклатура, Партия");
 в место
 ЭлементБлокировкиДанных.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура", "Партия", "Партия");

Название: 1.3
Отправлено: Romdavid от Октябрь 14, 2011, 02:37:49 pm
aveego, логично, я на это внимание не обратил когда эту задачу решал.
Название: 1.3
Отправлено: Кенгуру от Октябрь 14, 2011, 03:12:40 pm
Quote (aveego)
В документе реализации может быть несколько одинаковых номенклатур, но с разными партиями. А в регистре продаж мы не учитываем партию.
 Если не использовать Итоги то обход будет по детальным записям, и в регистр продаж по одному регистратору попадут записи с одинаковой номенклатурой, а так я записываю только итоговые данные и записи не "задваиваются" по номенклатуре


 Там нужно группировку делать во временной таблице

 Выбрать
 Номенклатура,
 Партия,
 Сумма(Количество) Как Количество,
 Сумма(Сумма) Как Сумма
 Поместить ТаблицаРасходнаяНакладная

 Из Документ.РасходнаяНакладная

 ...
 ...
 Сгруппировать По
 Номенклатура, Партия
 //////////////////////////////////
Название: 1.3
Отправлено: Romdavid от Октябрь 14, 2011, 03:18:16 pm
Кенгуру

 Это при списании с регистра ОстаткиНоменклатуры. А когда формируешь движения в регистр Продажи нужно группировать по номенклатуре без учета партий.
Название: 1.3
Отправлено: ErrorPro от Октябрь 21, 2011, 12:09:31 am
Всем доброй ночи, выкладываю свой ночной вариант решения, хотелось бы услышать замечания и предложения. Сразу скажу, только начал готовиться))
 З.Ы. Щас пошел зубы чистить думал какое лучше соединение использовать, так думал что свою зубную шетку мылом обычным помыл...
Вложения:
1Cv8_ErrorPro.dt
Название: 1.3
Отправлено: Romdavid от Октябрь 21, 2011, 08:27:40 am
ErrorPro,

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

 2. Не нужно в обработке проведения приходной накладной выгружать в ТЗ результат запроса для формирования движений.

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

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

 5. ЕСТЬNULL(ДОКТЧ.Количество, 0) КАК Количество,
 ЕСТЬNULL(ДОКТЧ.Сумма, 0) КАК Сумма
 Не надо здесь проверять на Null.

 Номенклатура В
 (ВЫБРАТЬ ДокТЧ.Номенклатура ИЗ ДокТЧ) И Партия В (ВЫБРАТЬ ДокТЧ.Партия ИЗ ДокТЧ КАК ДокТЧ), надо так: (Номенклатура, Партия) В (ВЫБРАТЬ ДокТЧ.Номенклатура, ДокТЧ.Партия ИЗ ДокТЧ КАК ДокТЧ).
 ПО (Остатки.Номенклатура = ДОКТЧ.Номенклатура) И (Остатки.Партия = ДОКТЧ.Партия). Второе условие соединения таблиц является избыточным.

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

 7. В регистр Продажи услуги у тебя не попадут.

 Отчеты не смотрел.
Название: 1.3
Отправлено: ErrorPro от Октябрь 21, 2011, 09:27:23 am
Romdavid Спасибо , но ответь тогда пожалуйста,
 1.почему в приходной не нужно загружать движения через ТЗ, так ведь оптимальнее?
 2. В задаче написано что складской учет не ведется, да и в Расходной даже склада нет, так как его тогда блокировать?
 3. Лишняя проверка на Null плохо как-то повлияет?
 4.ВыборкаДетальная = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); - описал так как говорит Палев. Вдруг добавится еще один уровень группировки. Да и как-то это влиет на производительность?
 5. с Услугами точно, отчет продажи не внимательно глянул.
 Спасибо еще раз за рекомендации smile
Название: 1.3
Отправлено: Romdavid от Октябрь 21, 2011, 10:03:50 am
ErrorPro,
 1. Оптимальнее с точки зрения чего? На сколько я знаю, на выгрузку результата запроса в ТЗ и загрузку ТЗ в движения тратится больше времени, чем на аналогичные операции с использованием Выборки.
 В списке ошибок к экзамену указывается :"Выгрузка результата запроса в промежуточную таблицу (например, в таблицу значений) без необходимости", за это снимают 1 балл.
 2. По поводу складов извиняюсь, имел ввиду партии. По ним также блокировать нужно.
 3. На работу программы плохо врядли повлияет, а вот на оценку преподавателя твоего понимания может повлиять негативно.
 4. По-моему в данном случае "вдруг" неуместно. Есть конкретная задача, конкретные условия, никаких "вдруг". На счет производительности сказать не могу.
Название: 1.3
Отправлено: ErrorPro от Октябрь 21, 2011, 10:23:38 am
Romdavid ясно спасибо, а по поводу блокировки по партиям, смысл? Мы же блокируем по номенклатуре, этого не достаточно?
Название: 1.3
Отправлено: Romdavid от Октябрь 21, 2011, 10:35:24 am
ErrorPro, дело в том, что списание происходит только с тех партий, которые указаны в табличной части и чтение остатков, соответственно, происходит только по этим партиям. А ты блокируешь всю номенклатуру без учета партий. Получается, что ты блокируешь те записи, которые тебе не нужны. А это не есть хорошо.
Название: 1.3
Отправлено: ErrorPro от Октябрь 21, 2011, 11:16:03 am
Romdavid точно, все исправил, спасибо. Седня выложу 1.04 очень буду ждать твоих замечаний wink
Название: 1.3
Отправлено: crabzzy от Октябрь 24, 2011, 09:41:40 am
Мое решение

 Отчеты (Интервал, Срок) не обычные

Добавлено (24.10.2011, 09:41)
---------------------------------------------
у себя неверно сделал блокировку
 нужно было

 ....("Номенклатура,Партия","Номенклатура,Партия");


Вложения:
crabzzy_1.3.dt
Название: 1.3
Отправлено: Minotavrik от Октябрь 24, 2011, 02:10:16 pm
Мое решение

Добавлено (24.10.2011, 14:10)
---------------------------------------------
Можно чуток критики?


Вложения:
Minotavrik_1.3.dt
Название: 1.3
Отправлено: bonig от Октябрь 24, 2011, 06:48:45 pm
Minotavrik, немного критики.
 1. Очистить() - это лишнее, особенно в приходной. Вы очищаете набор движений, который и так пуст.
 2. Блокировать для изменения - свойство набора данных. Блокировка по нему устанавливается в момент записи набора. А вам нужно блокировать до выполнения запроса, чтобы обеспечить неизменность данных. В этом случае должен использоваться объект БлокировкаДанных.
 Отчеты не смотрел.
Название: 1.3
Отправлено: Minotavrik от Октябрь 25, 2011, 05:57:53 pm
Quote (bonig)
1. Очистить() - это лишнее, особенно в приходной. Вы очищаете набор движений, который и так пуст.


 Не согласен, по умолчанию в 8.2 в движениях используется - "Удалять автоматически при отмене проведения", а не удалять автоматически как было в 8.1 поэтому это программист берет на себя. Я где то в умной книжке читал. Народ кто еще сталкивался?
Название: 1.3
Отправлено: Romdavid от Октябрь 25, 2011, 09:48:02 pm
Minotavrik, ты сам попробуй, проверь как работают методы Очистить() и Записать() вместе и по отдельности. bonig, правильно говорит.
Название: 1.3
Отправлено: Sinhrofazatron от Ноябрь 01, 2011, 11:01:40 pm
Добрый день!
 
Quote (Romdavid)
Номенклатура В (ВЫБРАТЬ ДокТЧ.Номенклатура ИЗ ДокТЧ) И Партия В (ВЫБРАТЬ ДокТЧ.Партия ИЗ ДокТЧ КАК ДокТЧ), надо так: (Номенклатура, Партия) В (ВЫБРАТЬ ДокТЧ.Номенклатура, ДокТЧ.Партия ИЗ ДокТЧ КАК ДокТЧ). ПО (Остатки.Номенклатура = ДОКТЧ.Номенклатура) И (Остатки.Партия = ДОКТЧ.Партия). Второе условие соединения таблиц является избыточным.

 а в чем заключается избыточность!? если,например,добавить в расходную накладную строку с повторяющейся номенклатурой, но другой партией, и не поставить второе условие соединения таблиц,то результат запроса будет плачевным... или я что то не верно понял?
Название: 1.3
Отправлено: Romdavid от Ноябрь 01, 2011, 11:49:16 pm
Sinhrofazatron, все правильно ты понял. Написав это, я не обратил внимание на тот факт, что партии указываются для каждой номенклатурной позиции, за что извиняюсь.
Название: 1.3
Отправлено: Sinhrofazatron от Ноябрь 01, 2011, 11:59:56 pm
Ok,спасибо!
Название: 1.3
Отправлено: kol_118 от Декабрь 02, 2011, 07:25:05 pm
мой вариант решения, буду рад комментариям
Вложения:
kol118_task_1_3.dt
Название: 1.3
Отправлено: cska-fanat-kz от Февраль 23, 2012, 08:26:44 am
Мое решение задачи 1.3.
Вложения:
1.3.dt.zip
Название: 1.3
Отправлено: cska-fanat-kz от Февраль 23, 2012, 10:04:42 am
Исправил с учетом прочитанного в теме
Вложения:
1.3.dt
Название: 1.3
Отправлено: Klyacksa от Февраль 26, 2012, 12:41:05 am
Не осилила всю ветку, просмотрела несколько вариантов отчетов продаж, сравнила со своим. Как-то у меня он проще получился. Может, я не вижу, в каком случае он не сработает?

 ("бантиков" в задаче не делала, типа пересчета суммы дока, проверки заполнения и т.д. Лишняя трата времени при подготовке, так что не судите за это строго)

 Моя версия:
Вложения:
Klyacksa1.03.dt
Название: 1.3
Отправлено: vallerikk от Март 03, 2012, 12:29:19 am
Прочитал всю ветку, так и не нашел ответ на свой вопрос.
 А вопрос вот в чем. Как уже тут говорилось в ТЧ мы можем указать одинаковую номенклатуру,
 т.е. делать дубли строк и в каждой из строк необходимо указать из какой партии надо списать.
 Все группируют по номенклатура,партия и в итоге получается одна строчка с какой-то партией,
 а ведь партии мы можем указать все разные.
 И какую из этих двух, трех партий сравнивать с ОстаткиНоменклатуры.Партия, непонятно.
 Если возможно проясните...
Название: 1.3
Отправлено: koladen от Март 09, 2012, 01:43:58 pm
У тебя будет не одна строчка, а столько, сколь уникальных комбинаций из данной номенклатуры и партий ты задал в табличной части документа. Т.е. например: Ручка, партия1 ; Ручка, партия2; Ложка, партия1; Ложка, партия3. И в остатках ты соответственно смотришь, хватает ли тебе количества данного товара в данной партии. Если хотя бы по какой то из комбинаций(Товар-партия) не хватает, не проводишь документ. Посмотри результат запроса в моей выгрузке, там все очень прозрачно. На некоторые недочеты внимание можно не обращать, т.к. 1с в глаза увидел неделю назад. Запрос в отчете по продажам получился довольно простым.
Вложения:
koladen1_3.dt
Название: 1.3
Отправлено: Gyd от Март 12, 2012, 12:54:15 pm
Обновленный вариант, так сказать "с высоты прожитых лет" smile
 Принципиальных отличий от других решений нет.
Вложения:
0534737.dt
Название: 1.3
Отправлено: sv_mikh от Март 12, 2012, 10:47:11 pm
Мой вариант.

Добавлено (12.03.2012, 22:47)
---------------------------------------------

Quote (Gyd)
Обновленный вариант

 Gyd, данный синтаксис не рабочий: ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура, Партия", "Номенклатура, Партия");
Вложения:
sv_mikh_01_03_2.dt
Название: 1.3
Отправлено: Gyd от Март 13, 2012, 12:14:46 am
Quote (sv_mikh)
данный синтаксис не рабочий:

 Поверил на слово Romdavid, сообщение: http://forum.chistov.pro/index.php?topic=1036.msg18327#msg18327
Название: 1.3
Отправлено: sv_mikh от Март 13, 2012, 12:19:20 am
Quote (Gyd)
Quote (sv_mikh)
 данный синтаксис не рабочий:

 Поверил на слово Romdavid, сообщение: http://forum.chistov.pro/index.php?topic=1036.msg18327#msg18327


 Не, точно не работает... Поле пространства блокировки не подразумевает перечисления. И недавно на курсе по опер.учету А.П.Габец такую же конструкцию обсуждал...
Название: 1.3
Отправлено: Gyd от Март 13, 2012, 01:09:11 am
Quote (sv_mikh)
Поле пространства блокировки не подразумевает перечисления

 Хоть бы ругнулось ради приличия smile Спасибо, учту.
Название: 1.3
Отправлено: TuMyP1985 от Апрель 10, 2012, 09:20:28 am
Всем привет, вот попытка решения этой задачи - буду благодарен за комментарии и отзывы.

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

Вложения:
1Cv8-1_3-.dt
Название: 1.3
Отправлено: Pavlyk от Май 04, 2012, 11:38:05 pm
Quote (sv_mikh)
Мой вариант.
 Прикрепления: sv_mikh_01_03_2.dt(152Kb)

 Подскажите пожалуйста , а зачем в запросе добавлено два ПРЕДСТАВЛЕНИЯ Номенклатура и Партия. Они же и так у нас присутствуют.
     |   Список.Номенклатура,
     |   Список.Партия,
     |   ПРЕДСТАВЛЕНИЕ(Список.Номенклатура),
     |   ПРЕДСТАВЛЕНИЕ(Список.Партия)
Название: 1.3
Отправлено: Gyd от Май 05, 2012, 12:19:50 am
Pavlyk, посмотрите вот здесь: http://pro1c.org.ua/index.php?showtopic=487
Название: 1.3
Отправлено: RoMeL от Июль 31, 2012, 12:44:30 pm
Отчет Продажи "подсмотрел" у DoctorRoza. Спасибо smile
Вложения:
RoMeL_1.3.dt
Название: 1.3
Отправлено: XilDen от Август 22, 2012, 10:26:59 pm
Мое решение
Вложения:
1-3_XilDen.dt
Название: 1.3
Отправлено: Tsar от Октябрь 10, 2012, 07:30:11 pm
Кому не сложно, посмотрите мой вариант.
 Заранее благодарю.
Вложения:
6671605.dt
Название: 1.3
Отправлено: ДимокШ от Октябрь 18, 2012, 09:50:54 pm
Quote (Tsar)
Кому не сложно, посмотрите мой вариант.
 Заранее благодарю.
 Прикрепления: 6671605.dt(156Kb)

 1) документ может проводиться ещё и будущей датой, так что эта конструкция не подходит. Думаю не стоит париться и надо всегда очищать   
    Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
       Движения.ОстаткиНоменклатуры.Записать();
    КонецЕсли;
 2) зачем 2 запроса при проведении расх накл? можно одним.
 3) РН - блокировка не установлена
 4)отчет продажи - интересно. одним запросом. если работает, то классно. но надо проверять наверное.
Название: 1.3
Отправлено: IlgizVip от Ноябрь 12, 2012, 10:03:18 am
Начал готовиться. Просмотрев всю ветку решил выложить свое решение.
 Прошу у кого есть время, проверьте пожалуйста.
 biggrin
Вложения:
0103.dt
Название: 1.3
Отправлено: GvH от Ноябрь 14, 2012, 02:29:33 pm
IlgizVip

 1. Полностью переделать модуль проведения ПриходнойНакладной. Это конечно хорошо что умеете пользоваться конструктором, но не оценят.
 2. Модуль проведения РасходнаяНакладная:
 2.1 Ну наверное хотелось бы чтобы было понятно по какой именно партии не хватает товара, а не по товару в целом.
 2.2 Вот во втором пакете есть ЛЕВОЕ СОЕДИНЕНИЕ так не плохо бы проиндексировать соответствующие поля во временной таблице.
 2.3 Вот так где установка параметра МоментВремени... что не очень хорошо... что Неопределено... всё-таки красивее было бы пустую дату передать,
 да и при неоперативном проведении... всё-таки МоментВремени() не плохо бы загнать в Границу.
Название: 1.3
Отправлено: vadimugatu от Декабрь 04, 2012, 12:58:33 pm
Подскажите пожалуйста!! А обязательно ли создавать 3-ий ресурс себестоимость в регистре накопления продажи? Ведь себестоимость по сути хранится в РН ОстаткиТоваров.
Название: 1.3
Отправлено: Ilonatsu от Декабрь 04, 2012, 02:37:22 pm
vadimugatu, Ресурс себестоимость добавляют в Регистр Продажи для того, чтобы легче строился Отчет по Продажам.Чтобы не приходилось для вывода Себестоимости в Отчете присоединять таблицу ОстакиТоваров.
Название: 1.3
Отправлено: alex7six от Февраль 02, 2013, 02:40:44 pm
Как облегчить построение отчета по продажам:
 1. Чтобы легче считать количество отгрузок добавляем такой ресурс в РН Продажи и при построении отчета сразу получаем количествоОтгрузок по товару за анализируемый период.
 2. Создаем РС ОтгрузкиНоменклатуры - Периодичность день. Делаем единственное измерение "Номенклатура".
 При построении отчета соединяемся с этим РС и по полю Период Вычисляем последнюю продажу, а также легче рассчитать интервал отгрузок:
 РазностьДат(Минимум( ОтгрузкиНоменклатуры.Период), Максимум( ОтгрузкиНоменклатуры.Период), день) /  Продажи.КоличествоОтгрузок
Название: 1.3
Отправлено: Odin777 от Февраль 25, 2013, 11:03:26 pm
alex7six,  <b></b>мне кажется создавать регистр сведений для 
Цитата (alex7six)
легче рассчитать интервал отгрузок
не совсем правильно. С помощью запроса можно получить все необходимые данные из регистра Продажи,  как я успел посмотреть в базах решений текущей ветки, например:  можно выбрать два поля Регистратор.Период  и для них использовать Максимум и Минимум, по поводу . 
Цитата (alex7six)
Чтобы легче считать количество отгрузок добавляем такой ресурс в РН Продажи
здесь также можно с помощью запроса используя КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Регистратор), используя сортировку по получившимся полям, получить для каждого поля номенклатуры количество документов.
Название: 1.3
Отправлено: Odin777 от Март 03, 2013, 05:00:38 pm
Решение задачи 1.3 , немного решил поэкспериментировать с получением поля Интервал функцией в общем модуле. Возможным замечаниям или вопросам буду очень рад, спасибо!
Вложения:
Odin777_1.3.dt
Название: 1.3
Отправлено: Karpikova от Март 15, 2013, 04:28:04 am
Odin777
 1. Перечисление "ВидыНоменклатуры" — правильно, но быстрее делать булев реквизит:
 http://ax-online.ru/Exams/AttPlatf/Task-1.1.aspx

 2. В РН не хватает конструкции "БлокироватьДляИзменения". Сама не до конца с ней разобралась, но поняла, что нужно её ставить как минимум тогда, когда в коде есть "Отказ=Истина"
 http://forum.chistov.pro/index.php?topic=1999.msg1#msg1

 3.
Код
|ИТОГИ
         |    СУММА(Количество),
думаю, что нужно "Максимум". Или "Минимум". Без разницы. Но не Сумму.

 4.
 
Код
Сообщение.Поле = "СписокНоменклатуры["+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+"].Количество";
 Сообщение.УстановитьДанные(ЭтотОбъект);
Хорошая конструкция, но на экзамене не тратьте время зря (если, конечно, Вам не попадётся 3 билет, где есть такая задача по упр.формам)

 5. В отчётах, где есть период, обычно создают в параметрах переменную "Период" типа "СтандартныйПериод", посмотрите базы. Опять же, не знаю, зачем (кто-нибудь может объяснить?), но мне говорили так делать.
Название: 1.3
Отправлено: Oliver от Март 15, 2013, 07:18:34 am
Karpikova, БлокироватьДляИзменения:
 1. Если стоит галка РазрешитьРазделениеИтогов
 2. Списание по новой методике
Название: 1.3
Отправлено: fimanich от Март 15, 2013, 09:21:18 am
Odin777
Цитата (Odin777)
Возможным замечаниям или вопросам буду очень рад, спасибо!
На мой взгляд напрасно тратится время на ОбработкуПроверкиЗаполнения, ты же все равно услуги не приходуешь
 Зачем в приходной запрещаешь оперативное проведение?
 ИспользоватьИзИсточникаДанных("Номенклатура, Партия", "Номенклатура, Партия"); не рабочая конструкция, каждое поле надо отдельно, уже обсуждалось в этой ветке.
 В РН не вижу смысла группировать по номеру строки, так ничего у тебя не сгруппируется, только для того чтобы потом номер строки сообщить, не стоит, имхо.
 В отчете по остакам не предусмотрено получение на конец дня; &Период в запросе указывать нет смысла.
 В отчете по продажам как раз таки явно лучше указать период и сделать обязательным к заполнению иначе если юзер его не выберет - будет странный результат; не нужно соединяться с реальной таблицей, все в оборотах есть; насчет стандартного периода тебе уже писали ранее.

 Выкладываю также свое решение. Буду рад любой критике.
Вложения:
fimanich_01_03.dt
Название: 1.3
Отправлено: Oliver от Март 15, 2013, 12:21:43 pm
fimanich, нет флага БлокироватьДляИзменения - это критично.
Название: 1.3
Отправлено: fimanich от Март 15, 2013, 10:03:26 pm
Oliver, спасибо что нашел возможность посмотреть мое решение.
Цитата (Oliver)
нет флага БлокироватьДляИзменения - это критично.
Позволю себе не согласиться  smile . Читаем синтакс-помощник, статью про БлокироватьДляИзменения.
 "Имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи. В
 этом случае можно не использовать объект БлокировкаДанных."
 В моем решении используется БлокировкаДанных, следовательно данный флаг не нужен. То есть это как бы 2 варианта установки блокировок: вариант № 1 - с помощью объекта БлокировкаДанных, вариант № 2 взвести флаг БлокироватьДляИзменения (используется при "новой" методике контроля остатков - после записи в регистр). Использовать Вариант № 1 вместе с вариантом № 2 смысла нет, ведь как только я написал Блокировка.Блокировать(), так сразу она и произошла...

Добавлено (15.03.2013, 22:03)
---------------------------------------------

Цитата (fimanich)
ведь как только я написал Блокировка.Блокировать(), так сразу она и произошла...
Поправлю: конечно, не как только я написал данный код, а как только он исполнился wink
Название: 1.3
Отправлено: Odin777 от Март 17, 2013, 12:41:45 am
Karpikova, по пунктам:
 1) согласен, наверно получение значения будет проще;
 2) Спасибо Oliver, за просвещение по этому пункту;
 3)
Цитата (Karpikova)
думаю, что нужно "Максимум". Или "Минимум". Без разницы. Но не Сумму.
в первом запросе по табличной части(ТЧ) документа я получал значения по двум разрезам(т.к. партии тоже наряду  с номенклатурой указывались в строках ТЧ), поэтому для того чтобы можно было получить общее количество в итогов пакете запроса по номенклатуре я использовал >>Сумма<<
 4) спасибо, учту.

 Добавлено (17.03.2013, 00:41)
 ---------------------------------------------
 fimanich
Цитата (fimanich)
На мой взгляд напрасно тратится время на ОбработкуПроверкиЗаполнения, ты же все равно услуги не приходуешь
скорее для общего развития, хотя в контексте вашей мысли все верно.
Цитата (fimanich)
не нужно соединяться с реальной таблицей, все в оборотах есть
по логике построения запроса мне необходимы были значение некоторых полей(регистратор, период) из РН.
 Из таблицы оборотов я к сожалению не имею представления как получить эти поля, поэтому таким не хитрым способом используя консоль запросов у меня получился такой запрос где все необходимые данные были получены.
 По остальным пунктам соглашусь скорее с вами.
Название: 1.3
Отправлено: fimanich от Март 17, 2013, 10:08:07 pm
Odin777
Цитата (Odin777)
по логике построения запроса мне необходимы были значение некоторых полей(регистратор, период) из РН.Из таблицы оборотов я к сожалению не имею представления как получить эти поля,
В параметрах виртуальной таблицы перидичность Авто, и получишь эти поля. Например, в моем решении можешь посмотреть...
Название: 1.3
Отправлено: botokash от Июнь 19, 2013, 12:31:37 pm
Вот мой варинат решения, хотел бы услышать комментарии если что не так
Вложения:
4640151.dt
Название: 1.3
Отправлено: fortune от Июнь 24, 2013, 11:32:19 am
botokash, в отчете для вычисления полей "интервал" и "срок" лучше использовать механизмы СКД вот здесь можете глянуть http://ax-online.ru/Exams/AttPlatf/Task-1.3.aspx
Название: 1.3
Отправлено: runner1 от Июль 12, 2013, 06:37:53 pm
Жду комментариев
Вложения:
Runner_01_03.dt
Название: 1.3
Отправлено: человекутюг от Июль 23, 2013, 09:41:22 pm
Цитата (runner1)
Жду комментариевПрикрепления: Runner_01_03.dt(156Kb)

 Я сам только "въезжаю" в задачи по ОУ.
 Мне не понравился твой запрос. Вернее, я не понял технологию. Зачем писать во временную таблицу поле "Услуга"? Для оптимизации условия "Номенклатура В (ВЫБРАТЬ ... )"?
 Думаешь, за это снижают баллы?
 Если так, то почему не использовал Представление(Номенклатура) в запросе, чтобы корректно выводить сообщение, это же целый доп.запрос?
 Почему бы не добавить, кстати в догонку, и условие на партию, типа:

 Номенклатура В (ВЫБРАТЬ ... )
 И Партия В (ВЫБРАТЬ РАЗЛИЧНЫЕ Вт.Партия ИЗ Вт как Вт)

 Еще не понятно зачем раздел ИНДЕКСИРОВАТЬ? У нас не так много номенклатуры например. Может быть я чего-то не учел?

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

 Формулировка условия намекает на новую методику проведения
 Формирование итоговой суммы документа - это роскошь   wink
Название: 1.3
Отправлено: artfa от Июль 25, 2013, 10:39:18 pm
доработанная версия
Вложения:
6634039.dt
Название: 1.3
Отправлено: krasota от Август 18, 2013, 01:42:39 pm
Я сейчас делаю задачку, подобную 1_3. Поняв, что получается не то, что надо, решила посмотреть  работу _1_3.dt. Не пойму, почему в ней в конструкторе движения нигде  не заполнены поля, и при этом в режиме 1С:Предприятие все регистры правильно заполняются? У меня же они заполняются, только когда все поля заполнены. Причем каждый раз я сохраняю все сделанные изменения в своей базе, потом выгружаю ее, а при каждой загрузке обнаруживаю, что регистры опять не заполняются.  cry что я не так делаю?
Название: 1.3
Отправлено: Denver от Сентябрь 09, 2013, 10:34:45 pm
Добавлено (09.09.2013, 22:34)
 ---------------------------------------------
 krasota не совсем понятна ваша проблема, лучше выгрузку выложите, с пояснениями.

 Вот моя )
Вложения:
3989655.dt
Название: 1.3
Отправлено: SheWolf от Сентябрь 17, 2013, 08:39:43 am
Мой вариант решения
Вложения:
spest1.3.dt
Название: 1.3
Отправлено: AlexKoso от Октябрь 07, 2013, 08:35:49 am
Очень важный вопрос по данной задаче: мне казалось что её надо решать используя новую методику проведения. Разве не так? Насколько я понимаю условие задачи это позволяет, поскольку идет прямое указание партий. Поясните пожалуйста.
 P.S. во всех найденных решения данной задачи новая методика проведения не используется.
Название: 1.3
Отправлено: zorky от Октябрь 18, 2013, 05:24:52 pm
да, можно...Наверное просто потому что дольше....придется использовать 2 регистра, ОстаткивПартии, и ОстаткиСтоимость. Сказали что на экзамене требуют ПОНИМАНИЕ новой методики, вроде бы

 возобновил подготовку тренировочно решил 1_3 : если тут кто живой есть - гляньте плиз)
Вложения:
zorky1_3-.dt
Название: 1.3
Отправлено: SanjaKaiser от Ноябрь 03, 2013, 11:20:52 am
Прокомментируйте пожалуйста решение!
Вложения:
1Cv8__Kaiser_1..dt
Название: 1.3
Отправлено: zorky от Ноябрь 04, 2013, 07:18:09 am
SanjaKaiser, да, правильно один цикл в расходной использовать, комб. номенклатура-партия будет уникальна
 Вроде всё правильно, мелочи кое какие, можно в параметры до кучи ещё Партию добавить, будет отбор по
 Номенклатура-Партия

 | Номенклатура, Партия В
 | (ВЫБРАТЬ
 | ТоварыДокумента.Номенклатура
 | ТоварыДокумента.Партия
 | ИЗ
 | ТоварыДокумента КАК ТоварыДокумента))

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

 про отсеивание Услуг - Неявный запрос в цикле,  в приходной...если допустим будет 1000 позиций номенклатуры) 
 мелочи, наверняка,  - но лучше отсеивать их в Параметрах выбора, на уровне реквизита Номенклатура ТЧ
Название: 1.3
Отправлено: Voyager от Ноябрь 18, 2013, 12:20:46 pm
1.03
Вложения:
3069122.dt
Название: 1.3
Отправлено: JaneP от Декабрь 02, 2013, 10:06:08 am
Добрый день! Начала готовиться к экзамену, прошу посмотреть мое решение, если тут кто-то есть. Со стороны кажется, что все верно, но, наверняка есть косяки!

Добавлено (02.12.2013, 10:06)
---------------------------------------------

Цитата Voyager ()
1.03
По-моему правильно блокировать сразу вместе Номенклатура,Партия

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

 А
 ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура,Партия", "Номенклатура,Партия");
Вложения:
angelika08011_0.dt
Название: 1.3
Отправлено: zorky от Декабрь 03, 2013, 06:43:43 am
JaneP,  ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура,Партия", "Номенклатура,Партия");
 поддерживается ли такой синтаксис ?
Название: 1.3
Отправлено: JaneP от Декабрь 03, 2013, 09:42:29 am
Цитата zorky ()
поддерживается ли такой синтаксис
Ошибки не выдает, как я поняла, многие тут именно так и делали. Может быть кто-нибудь меня поправит...
Название: 1.3
Отправлено: Sadr от Январь 06, 2014, 03:39:50 am
JaneP, если еще актуально:
 Мелочи, которые я бы сделал иначе:
 1. В Номенклатуре реквизит Услуга сделать Булево, несмотря на имеющиеся
 в каркасе Перечисление, так как это по моему будет экономить время.

 2. По поводу Оперативного/Неоперативного проведения не стоит вроде замарачиваться.

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

 4. Нет расчета Суммы в ТЧ документов.

 5. Зачем в запросе Расходной накладной Итоги? И в следствии, лишний цикл.

 6. Отчет по продажам: кое-что подсмотрел для себя полезного. Маленькие замечания - не нужно в СКД наверное выводить Ресурсы, и разобраться с Параметрами.

 Поля Интервал и Срок Вы вычисляете в запросе, а я в СКД, интересно для экзамена какое решение правильнее? Или нет большой разницы?

 7. Отчет по остаткам - тоже Ресурсы не нужны, и Параметры (только Дата и привести к концу дня). Группировка по партии лишнее.

 Мое решение -

Добавлено (06.01.2014, 03:39)
---------------------------------------------

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

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

 В Синтаксис-Помощнике отдельными строчками, видимо, так тоже допустимо.
Вложения:
Sadr_1_3.dt
Название: 1.3
Отправлено: JaneP от Январь 06, 2014, 10:38:53 pm
Цитата Sadr ()
Мелочи, которые я бы сделал иначе
Sadr,
 3. Согласна, это лишнее:)
 4. По-моему этого не было в задании, поэтому я не трачу время
 5. Итоги для обхода по группировкам и чтобы на группировке по номенклатуре получить сумму остатка и в верхнем цикле вывести сообщение о недостатке (вроде бы, запрос делался в состоянии аффекта:)
 6.Это не поняла...почему не выводить ресурсы?:)

 По поводу вычисления Интервала и срока в вопросе - думаю, могут придраться, надо почитать отчеты сдававших, просто удобнее было сразу сделать в запросе, не очень люблю работу с вычисляемыми полями.
Название: 1.3
Отправлено: Sadr от Январь 06, 2014, 11:19:36 pm
Цитата JaneP ()
5. Итоги для обхода по группировкам и чтобы на группировке по номенклатуре получить сумму остатка и в верхнем цикле вывести сообщение о недостатке (вроде бы, запрос делался в состоянии аффекта:)
Нам не нужен остаток всей номенклатуры, а нужен остаток только конкретной партии, указанной в документе. Поэтому достаточно одного цикла.

 
Цитата JaneP ()
6.Это не поняла...почему не выводить ресурсы?:)
Ресурсы нужны для вывода итогов в отчете, а этого в задании не требуется.

Название: 1.3
Отправлено: JaneP от Январь 06, 2014, 11:34:58 pm
Sadr, почему, просто если нет в целом остатка - то и по партии нет смысла делать цикл.Вроде такая у меня была идея. 
 Почему не требуется?В примере отчета по остаткам есть итоги по номенклатуре - и по количеству, и по стоимости
Название: 1.3
Отправлено: Sadr от Январь 07, 2014, 02:36:29 am
Цитата JaneP ()
Почему не требуется?В примере отчета по остаткам есть итоги по номенклатуре - и по количеству, и по стоимости
Прошу прощения, и правда, в отчете по остаткам итоги нужны - соответственно Ресурсы тоже. Не знаю куда я раньше смотрел... wacko
Название: 1.3
Отправлено: Pro100KoT от Январь 09, 2014, 05:16:29 pm
Всем привет! Прошу проверить моё решение
Вложения:
Pro100KoT_1.3.dt
Название: 1.3
Отправлено: Chichiq от Март 05, 2014, 09:39:06 am
Привет всем. Посмотрите мое решение пожалуйста
Вложения:
2913814.dt
Название: 1.3
Отправлено: CeHbKA от Март 27, 2014, 04:43:26 pm
Люди, гляньте если есть кто живой

 Скажу честно, отчет по продажам сделал не сам - затупил (((
Вложения:
CeHbKA_1.3.dt
Название: 1.3
Отправлено: Shooroopik111 от Апрель 15, 2014, 04:42:44 pm
Мужики, такой вариант вам как?(я про отчет по продажам)
 Все расчетные поля вынес из запроса в вычисляемые.
Вложения:
Shooroopik_1_03.dt
Название: 1.3
Отправлено: Demy от Май 03, 2014, 07:44:16 pm
Shooroopik111, посмотрел твое решение. Вот некоторые замечания:
 1. В приходной накладной, чтобы при проведении не проверять вид номенклатуры достаточно позаботиться дабы в табличную часть попадали только товары. Это делается в пару кликов мышью (точнее 12). smile
 2. Сообщение о нехватке товара коротковато. smile
 3. Не знаю как отнесутся на экзамене, но я бы движения по регистру продаж сгруппировал.
 4. В отчете по остаткам товаров недоступна дата формирования отчета.
 Ну а так явных ошибок не видно.

Добавлено (03.05.2014, 18:52)
---------------------------------------------
По 1-му пункту мне тут недавно сообщили, что мой метод можно обойти. Поэтому все равно придется делать проверку на услугу. Но обращение к вложенному свойству номенклатуры фактически порождает запрос, что не очень хорошо. Предлагаю делать проверку запросом в обработке проверки заполнения. Как кто к этому относиться?

Добавлено (03.05.2014, 19:44)
---------------------------------------------
Нашел более простое решение. Нужно во вкладке свойств номенклатуры установить свойство "Создание при вводе" в значение "не использовать" и в
 форме убрать кнопку открытия в колонке номенклатуры.

Название: 1.3
Отправлено: evil18 от Июнь 24, 2014, 02:39:06 am
Цитата Demy ()
1. В приходной накладной, чтобы при проведении не проверять вид номенклатуры достаточно позаботиться дабы в табличную часть попадали только товары. Это делается в пару кликов мышью (точнее 12).
в табличной части должны быть и товары и услуги, только в движение услуги не должны попадать
Название: 1.3
Отправлено: АСБ от Июнь 24, 2014, 04:40:12 am
Выкладываю свой вариант. Подсмотрел только отчет по продажам, хотя свой вариант отчета тоже оставил. Он, скорее всего, менее оптимален, но зато из одного запроса состоит.
Вложения:
_1-3.dt
Название: 1.3
Отправлено: Demy от Июнь 24, 2014, 09:57:13 am
АСБ, посмотрел твое решение. Вот несколько замечаний:
 1. (важно) Расходная накладная. Использование вложенного свойства "Услуга" не приветствуется, т.к. производит запрос в цикле. Выбирай реквизит "Услуга" прямо в запросе;
 2. (важно) Расходная накладная. Поговаривают что 1С при списании стоимости требует такую формулу:
Код
?(ВыборкаДетальныеЗаписи.Количество = ВыборкаДетальныеЗаписи.КоличествоПродОстаток, ВыборкаДетальныеЗаписи.СтоимостьПродОстаток, ВыборкаДетальныеЗаписи.Количество/ВыборкаДетальныеЗаписи.КоличествоПродОстаток*ВыборкаДетальныеЗаписи.СтоимостьПродОстаток)
почему, никто сказать не может (поэтому просто имей ввиду). Кстати стоимость в этом задании можно рассчитать и в запросе;
 3. (важно) Расходная накладная. Вывод сообщение об ошибке может стать неверным при определенных условиях, поэтому считаю первое сообщение излишним;
 4. (важно) ПродажиОднимЗапросом. Тут не правильно, т.к. идет обращение к реальной таблице. Можно и отчет "Продажи" сделать одним запросом.
 5. (желательно) Используй форматирование, а то код:
Код
если Отказ Тогда Продолжить; КонецЕсли;
мне, например, тяжело воспринимать, думаю экзаменатор этому также не обрадуется.

 Выкладываю свой вариант. Давно решал, поэтому могут быть ошибки.
Название: 1.3
Отправлено: АСБ от Июнь 24, 2014, 01:09:33 pm
Demy, спасибо за замечания. А вот по 3-му пункту - там же не только сообщение выводится, но и прерывается выполнение текущего шага цикла, если общее число к списанию превышает остаток, так производительнее по хорошему должно быть. 1с-ники, я так понял, помешаны на производительности при приёме экзамена. Кстати, решение ты не прикрепил.
Название: 1.3
Отправлено: Demy от Июнь 25, 2014, 09:32:01 am
Цитата АСБ ()
Demy, спасибо за замечания. А вот по 3-му пункту - там же не только сообщение выводится, но и прерывается выполнение текущего шага цикла, если общее число к списанию превышает остаток, так производительнее по хорошему должно быть.
Это я увидел, но тут дело в другом. Зачем нужно 1-е, по ходу программы, сообщение? Оно сообщает только что какой либо номенклатуры не достаточно, но не производит детализацию по партиям. Тем более оно будет срабатывать при непонятных для пользователя условиях. Например, на складе следующая ситуация:


 
Создаем расходную накладную, где списываем с приходной №1 - 5 шт. ковров, и с приходной №2 - 5 шт. Программа выдаст сообщение, что ковров не хватает, но не уточняет по какой приходной накладной. Если же мы будем с приходной №1 списывать 2 шт. ковров, а с приходной №2 - так же 5 шт, то программа уже сообщит что товара не хватает именно по приходной №2. Т.е. при схожих ситуациях (а именно нехватке товара) программа выдает разные сообщения об ошибках.
Цитата АСБ ()
1с-ники, я так понял, помешаны на производительности при приёме экзамена.
Да, скоро из-за этого на ассемблере писать заставят. :)
Цитата АСБ ()
Кстати, решение ты не прикрепил.
Точно помню что прикреплял! Даже на рабочем столе dt-шка осталась. Наверное глюкануло что-то. sad

Добавлено (25.06.2014, 09:14)
---------------------------------------------
Почему dt-шка не прикрепляется?

Добавлено (25.06.2014, 09:14)
---------------------------------------------
Еще раз!

Добавлено (25.06.2014, 09:17)
---------------------------------------------
Не могу прикрепить базу. sad

Добавлено (25.06.2014, 09:32)
---------------------------------------------
Откатил виртуалку.

Название: 1.3
Отправлено: Demy от Июнь 25, 2014, 09:34:10 am
Файл не прикрепляется.

Добавлено (25.06.2014, 09:34)
---------------------------------------------
Текстовый файл прикрепился, а dt-шка почему-то нет. sad

Название: 1.3
Отправлено: Demy от Июнь 25, 2014, 09:41:14 am
Хотя бы сообщение выдавалось что файл не пролазит. smile
Вложения:
Demy_1_03.dt
Название: 1.3
Отправлено: evil18 от Июнь 27, 2014, 01:37:16 am
посмотрите пожалуйста. не знаю правильно ли я сделала, как ни как это первая моя задача). только про критикуйте пожалуйста, сообщение пользователю длинное лень было писать wink .
Вложения:
1.32014-06-27.dt
Название: 1.3
Отправлено: Demy от Июнь 27, 2014, 10:12:49 am
evil18, забавно, твое сообщение создано в аккурат после того как сборная России продула. smile
 Посмотрел решение:
 1. (важно) Расходная накладная. Регистр продаж будет формироваться неправильно, если в расходнике будет номенклатура, которую необходимо списать с двух и более партий;
 2. (замечание) Расходная накладная. В запросе вид номенклатуры можно не передавать параметром, а указать непосредственно в запросе:
Код
ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга)
хотя более правильно проверять не на неравенство "Услуга", а на равенство "Товар". Хотя в данной задаче это условие неверно см. п. 3;
 3. (важно) Расходная накладная. Согласно условиям задачи услуги должны попадать в регистр "Продажи";
 4. (замечание) Расходная накладная. Т.к. партии заранее известны, то себестоимость можно посчитать прямо в запросе.
 5. (замечание) Расходная накладная. После первого сообщения о нехватке товара движения будут формироваться дальше.
 Кажется это все.
Название: 1.3
Отправлено: evil18 от Июнь 27, 2014, 08:44:06 pm
Demy, так ты еще надеешься что она выиграет?
 мне не понятно по 1. почему не правильно (там все схлопывается). 
 2. как я поняла нужно именно что бы услуга не попадала, а другое все можно
 3. не заметила в задании (я косяк согласна)
 4. еще один косяк
 5. там все равно отказ = истина стоит (вроде записаться не должны). но лишние сточки кода пройдет тоже косяк (ну то если честно написать было лень)
Название: 1.3
Отправлено: Demy от Июнь 27, 2014, 10:35:13 pm
Цитата evil18 ()
Demy, так ты еще надеешься что она выиграет?
Да, я все еще верю в чудеса. :)
Цитата evil18 ()
мне не понятно по 1. почему не правильно (там все схлопывается).
Тут дело не в схлопывании, а в агрегатной функции. Попробуй в расходнике продать один и тот же товар из разных партий. Например из партии №1 5 шт. на сумму 50 и из партии №2 10 шт. на сумму 30. Согласно запросу в продажах на данный товар сформируется запись где указанно что продано 10 шт. на сумму 50. В качестве агрегатной функции нужно ставить не МАКСИМУМ, а СУММА.
Цитата evil18 ()
2. как я поняла нужно именно что бы услуга не попадала, а другое все можно
Это замечание относилось к расходной накладной.
Название: 1.3
Отправлено: evil18 от Июнь 27, 2014, 11:56:39 pm
Demy, косяк, спасибо) про услугу я поняла)
 а сборною россии я вместе с тобой верить буду) только смотреть не хочу

Добавлено (27.06.2014, 23:56)
---------------------------------------------
Demy, а еще я там связь забыла сделать по партиям. я исправлюсь) как ни как первый блин всегда комом

Название: 1.3
Отправлено: evil18 от Июнь 28, 2014, 01:37:50 am
вот исправила
Вложения:
1.32014-06-28.dt
Название: 1.3
Отправлено: Demy от Июнь 28, 2014, 11:21:47 am
evil18, посмотрел твое решение. Ошибок нет, только несколько замечаний:
 1. (замечание) Расходная накладная. Стоимость списания можно считать в запросе;
 2. (замечание) Расходная накладная. При выводе сообщения о нехватке товара мне непонятен код:
Код
продолжить;
 Если отказ Тогда
      возврат;
 КонецЕсли;
Код после "продолжить" выполняться не будет.
 3. (замечание) Расходная накладная. Лучше добавить код:
Код
Если Отказ Тогда
      Возврат;
 КонецЕсли;
перед формированием движений по регистру продаж, тогда при возникновении ошибки лишние записи в регистре формироваться не будут.
Цитата evil18 ()
а сборною россии я вместе с тобой верить буду) только смотреть не хочу
Я тоже болею, но не смотрю. Не люблю ужастики на ночь смотреть. smile
Название: 1.3
Отправлено: evil18 от Июнь 28, 2014, 11:57:49 am
Demy, спасибо)
Название: 1.3
Отправлено: Lionelho от Июль 19, 2014, 01:29:17 pm
Здравствуйте. Выкладываю своё решение. На мой скромный взгляд оно верное. Если кому интересно, просмотрите.
Вложения:
6633653.dt
Название: 1.3
Отправлено: mulradik от Август 01, 2014, 11:45:04 am
Цитата: Lionelho;35521
Здравствуйте. Выкладываю своё решение. На мой скромный взгляд оно верное. Если кому интересно, просмотрите.


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

Добавлено (01.08.2014, 11:45)
---------------------------------------------

Цитата: Lionelho;35521
Здравствуйте. Выкладываю своё решение. На мой скромный взгляд оно верное. Если кому интересно, просмотрите.

 2. Хорошее решение, только при списании партий не нужно усложнять решение ИТОГАМИ, т.к. партия указывается явно, а в рамках партии списание идёт по среднему так и так. То есть нужно вынести расчёт себестоимости в запрос.
 3. Я делал ещё регистр ОстаткиТоваров. Это лишнее? По идее, хватает одного партионного регистра.
Название: 1.3
Отправлено: prof-net от Август 04, 2014, 07:37:41 pm
Вот еще одно решение,
 https://yadi.sk/d/Eehk7-IQZ556s
Название: 1.3
Отправлено: Leo705 от Сентябрь 04, 2014, 11:01:27 am
Моё решение. Буду рад критике smile
Название: 1.3
Отправлено: Jonny_E от Сентябрь 08, 2014, 01:53:11 pm
Всем привет!
 В общем, как я понял, Движения.СтоимостьТоваров.Очистить() применять на экзамене специалист совсем не нужно (а вообще нужно, так как метод очистить() очищает оперативную память).
 Но там и не догнал, нужен ли этот метод при проведении приходной накладной?
 И посмотрите реализации задачи...
 Буду благодарен критике и указаниями на ошибки.
Название: 1.3
Отправлено: HitTheRoadJack от Сентябрь 09, 2014, 04:01:15 pm
Привет всем!
 Парочка вопросов:
 1) В условии задачи указывается, что помимо товаров в ТЧ документа могут быть указаны услуги. Если дополнительно ничего не указано, означает ли это, что достаточно просто разделить номенклатуру на услуги и не услуги? Или нужно завязывать на этом факте алгоритмы. Просматривал некоторые решения не все подстраивают алгоритмы под это

 2) И насколько важно разбивать в данной задачи количественные и стоимостные остатки по разным регистрам накопления. С одной стороны проще сделать на одном регистре накопления, с другой стороны в этом случае не будет использоваться новая методика оперативного проведения

 --------------

 По поводу Движения.СтоимостьТоваров.Очистить() - тут все довольно просто. Это некоторая подстраховка. Запись движений по умолчанию производится в режиме замещения, поэтому, если движения не считаны, то они затрутся и не продублируются. Но если вытащить движения на форму или выставить флаг использовать всегда, или если скажем осуществлять проведение из обычных форм(об это хорошо излагается в одной из статей владельца форума:)), тогда движения считаются, и когда ты в своей обработке проведения к уже считанным старым движениям добавишь новые, то они, так сказать, задвоятся. Значит лучше поставить на всякий пожарный, но это, мне кажется, не критично
Название: 1.3
Отправлено: Odin777 от Сентябрь 13, 2014, 12:33:53 am
Здраствуйте, пожалуйста можете посмотреть и мое решение, а также можете задавать вопросы, подискутируем wink
Вложения:
_3.dt
Название: 1.3
Отправлено: kosstikk от Сентябрь 30, 2014, 01:53:13 pm
Цитата: Odin777;36104
Здраствуйте, пожалуйста можете посмотреть и мое решение, а также можете задавать вопросы, подискутируем


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

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

 Используйте каркасную конфигурацию: http://static.1c.ru/rus/partners/training/files/Conf_83.dt
Название: 1.3
Отправлено: Dmitryf от Октябрь 01, 2014, 09:52:58 am
Цитата: kosstikk;36448
Некорректное проведение расходной накладной, в случае, когда осуществляется продажа одинаковой номенклатуры из разных партий.


 По коду вроде все нормально, отчего такие выводы?

 
Цитата: kosstikk;36448
Какой смысл накладывать дополнительные условия на виртуальную таблицу (Номенклатура, Партия) если в данном случае вы делаете соединение с регистром остатков по всем наборам измерений? (Возможно я сам чего-то не понимаю)

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

 Единственное что бросилось в глаза, отчет по РН Продажи вместо Продажи.Обороты
Название: Re: 1.3
Отправлено: Андрей_ от Ноябрь 11, 2014, 01:38:30 pm
Добрый день, выкладываю своё решение, есть три вопроса:
1) Все ли правильно было сделано в движении "РасходнаяНакладная"?
2) Все ли правильно было сделано в отчете "Продажи"?
3) Есть ли ещё какие "стандартные ошибки"?
Для отчетов надо ли(обязательно ли?) делать дополнительный параметр для времени?
(т.е. для того чтобы в отчет входили документы которые провели только что)
И философский вопрос что затратнее: "левое соединение" или  "сгруппировать"?
Название: Re: 1.3
Отправлено: ksandr от Ноябрь 11, 2014, 05:25:07 pm
Андрей_

Посмотрел расходную. Во-первых "Партия" должна быть в табличной части "...для каждого товара пользователь указывает партию".
3 пакета в запросе перебор, остатки с можно сразу связать с ВТ документа, передав в параметры номенклатуру и партию.
При расчете себестоимости не решена проблема копеек.
Нет блокировок. Нет очистки движений.
Ну вообщем как-то так. Дальше не стал смотреть.
Название: Re: 1.3
Отправлено: Андрей_ от Ноябрь 11, 2014, 05:44:37 pm
Спасибо ksandr!!!
Цитировать
Во-первых "Партия" должна быть в табличной части "...для каждого товара пользователь указывает партию".
Мой косяк, прочитал маленько по другому:"и указанной в документе (в шапке документа) партии." - видимо остались мысли от предыдущей второй задачи...
Цитировать
...остатки с можно сразу связать с ВТ документа, передав в параметры номенклатуру и партию.
РегистрНакопления.ОстаткиНоменклатуры.Остатки(
&МоментВремени,
Номенклатура В
(ВЫБРАТЬ
Таб.Номенклатура
ИЗ
Таб КАК Таб),
&Партия)
КАК ОстаткиНоменклатурыОстатки
Вот так что ли?
Цитировать
При расчете себестоимости не решена проблема копеек.
Не совсем понял, я же указал тип Число(длина=15, точность=2)...
 
Цитировать
Нет очистки движений.
А её обязательно надо делать?
(извиняюсь за все глупые вопросы)
Название: Re: 1.3
Отправлено: ksandr от Ноябрь 11, 2014, 06:12:12 pm
(Номенклатура, Партия) В (Выбрать
(Таб.Номенклатура,
Таб.Партия
ИЗ Таб).
Не в типе дело, надо делать проверку если списывается весь остаток, при определенных условиях после вычисления может зависнуть пару копеек в регистре, я пишу так "Движение.Сумма = ?(Выборка.Количество = Выборка.КолОст, Выборка.СумОст, Окр(Выборка.Количество / Выборка.КолОст * Выборка.СумОст, 2));", правда есть мнение, что надо СумОст / КолОст * Количество, но тут как кто решит, на форуме есть где-то тема с обсуждением копеек.       
Попробуйте смоделировать ситуацию, при КолОст = 10 продать более половины, 6 например, а потом перепровести документ еще раз, в регистре еще остаются старые движения документа.
Еще немного посмотрел Ваше решение, в свойствах РН по остаткам надо ставить галочку "Разделение итогов", в свойствах конфигурации "Режим управления блокировкой данных" - "Управляемый".
Название: Re: 1.3
Отправлено: ksandr от Ноябрь 11, 2014, 06:22:10 pm
Еще у Вас не учтено условие по услугам в приходной накладной, да и вообще услуг в базе нет.
Название: Re: 1.3
Отправлено: Андрей_ от Ноябрь 11, 2014, 07:20:46 pm
Цитировать
(Номенклатура, Партия) В (Выбрать
(Таб.Номенклатура,
Таб.Партия
ИЗ Таб).
С этим разобрался)
Цитировать
...тема с обсуждением копеек...
Это на экзамене как-нибудь проверяется, заостряется на это внимание?
Цитировать
Попробуйте смоделировать ситуацию...
Понял, исправляю)
Цитировать
...надо ставить галочку "Разделение итогов"...
Не совсем понял, для чего это...
Цитировать
...в свойствах конфигурации...
Это понял)
Цитировать
Еще у Вас не учтено условие по услугам в приходной накладной...
То есть проверки, что бы не смогли в приходной положить в регистр услугу и в расходной вычесть услугу из регистра?
Цитировать
...да и вообще услуг в базе нет.
Не совсем понял что вы имели в виду...
В Справочник.Номенклатура - Услуга есть.
И в движение Расходной парочка проверок тоже есть))
Название: Re: 1.3
Отправлено: ksandr от Ноябрь 11, 2014, 07:39:09 pm
"Механизм разделения итогов делает очень полезную вещь, он позволяет параллельно записывать одинаковые значения по набору измерений в регистры накопления и бухгалтерии." В каркасной конфигурации эта галочка снята намеренно, типа проверки на внимательность.
Копейки на экзамене я думаю смотрят, так как без этого у Вас регистр на 0 не выйдет, а это не есть гуд, да и делается это за пару сек.
Услуги вообще не приходят и не уходят, по ним не может быть + или -, в приходной надо на уровне выбора отсекать услуги, чтобы их нельзя было выбрать, а в расходной у Вас правильно все сделано, единственно можно добавить в расходную услугу, чтобы было видно как они у Вас проходят, правда я делаю через уже существующее перечисление "ВидыНоменклатуры".
Название: Re: 1.3
Отправлено: Андрей_ от Ноябрь 11, 2014, 07:48:57 pm
Большое спасибо ksandr, за хорошие объяснения!!!))
А можете ещё посмотреть отчёт по Продажам?)
Название: Re: 1.3
Отправлено: ksandr от Ноябрь 11, 2014, 08:03:03 pm
Да в принципе все нормально с ним, единственно можно задать формат отображения "интервала", чтобы целые числа выводились.
И еще, забыл сразу сказать, если Вы используете данные из временной таблицы то поля, которые используются надо проиндексировать, в данном случае "номенклатура" и "партия", так как они используются дальше.
Название: Re: 1.3
Отправлено: Андрей_ от Ноябрь 11, 2014, 08:19:11 pm
Трёхкратное спасибо, ksandr!!!
Название: Re: 1.3
Отправлено: poritskiy от Январь 13, 2015, 01:35:22 am
Попробовал для РН сделать так запрос что бы при обработке результата избавиться от вложенного цикла.
Прокомментируйте моё решение. 
Название: Re: 1.3
Отправлено: RSeeK от Февраль 12, 2015, 02:11:03 pm
Всем привет!

Посмотрел несколько решений, есть несколько уточнений:

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

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

свое решение воткнул :)
Название: Re: 1.3
Отправлено: max1m1ch от Март 14, 2015, 10:29:42 pm
Мое решение, просьба покритиковать
Название: Re: 1.3
Отправлено: Sanek421 от Апрель 29, 2015, 11:41:06 pm
Мое решение, просьба покритиковать

Есть несколько замечаний.
1. Не хватает БлокироватьДляИзменения в проведении реализации.
 
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
        Движения.ОстаткиПартийТоваров.БлокироватьДляИзменения = Истина;
        Движения.ОстаткиПартийТоваров.Записать();
        Движения.ОстаткиНоменклатуры.Записывать=Истина;
КонецЕсли;
Прочти http://1c.chistov.pro/2013/07/blog-post_25.html

2. МенеджерВременныхТаблиц в реализации зачем?
3. Отчет Остатки товаров. Выводится общий итог, думаю это не совсем правильно так как отчет должен выглядеть как в примере, он без общего итога. Ну это так придирка.

Мое решение ниже, буду рад любому комментарию.
Название: Re: 1.3
Отправлено: Solitar от Май 01, 2015, 08:06:33 pm
Буду рад комментариям. Вроде получилось коротко и красиво. Остался вопрос с моментом времени для контроля остатков.

В отчете так же добавил вычисляемое поле "прибыль", которое считается на сервере (нужно поставить просто галочку).
Название: Re: 1.3
Отправлено: Energy_778 от Июнь 12, 2015, 03:11:32 pm
Буду рад комментариям. Вроде получилось коротко и красиво. Остался вопрос с моментом времени для контроля остатков.

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

Полностью решение не проверял, посмотрел только отчет по продажам
Вы почему то за количество отгрузок берете количество проданного товара вместо количества документов продажи
И вопрос: почему вы добавляете день для вычисляемых полей Интервал и Срок?
Название: Re: 1.3
Отправлено: malikov_pro от Июль 18, 2015, 08:29:04 pm
Мое решение.
Сделал на 1 РН, с проверкой по остаткам и остаткам по партии.
Буду благодарен за просмотр и конструктивную критику варианта решения.
Название: Re: 1.3
Отправлено: GROOVY от Июль 19, 2015, 01:42:20 pm
Сделал на 1 РН

Уже минус 2 балла, так как неверно спроектированы регистры и не используется методика оперативного проведения.
Название: Re: 1.3
Отправлено: alex1248 от Июль 19, 2015, 03:34:17 pm
Сделал на 1 РН

Уже минус 2 балла, так как неверно спроектированы регистры и не используется методика оперативного проведения.
Павел, добрый день!
Т.е. во всех (или почти во всех, т.е. когда это возможно) задачах ОУ рекомендуется использовать 2 РН - для контроля остатков и учета себестоимости, и даже в том случае, когда контроль остатков и расчет себестоимости производится по одним и тем же измерениям?
(Посмотрел много вариантов, и в большинстве 1 РН на эти дела, и контроль остатков по "старой методике". Получается, что все эти решения методически неверны?)
Название: Re: 1.3
Отправлено: seravkin от Август 10, 2015, 11:47:22 pm
Сделал на 1 РН
Уже минус 2 балла, так как неверно спроектированы регистры и не используется методика оперативного проведения.

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

Я так понимаю, что партия должна быть указана обязательно и контроль остатков нужен в разрезе двух измерений: Номенклатура и Партия. Для чего в этом случае разбивать на два РН? Не посчитается ли это минусом как добавление лишнего регистра?
Название: Re: 1.3
Отправлено: seravkin от Август 11, 2015, 12:47:02 am
Буду рад комментариям. Вроде получилось коротко и красиво. Остался вопрос с моментом времени для контроля остатков.

Не используется оперативное проведение. Для чего запрашивать количество остатков по партии перед проведением? Можно списать как есть, а после проверить, не ушли ли остатки в минус
Название: Re: 1.3
Отправлено: seravkin от Август 11, 2015, 01:10:19 am
свое решение воткнул :)

Не используется "новая методика проведения", нет защиты против оперативного перепроведения документов (остатки считываются с учетом собственных движений, т.к. МоментВремени() каждый раз смещается)
Название: Re: 1.3
Отправлено: seravkin от Август 11, 2015, 02:32:31 am
Мое решение.
Сделал на 1 РН, с проверкой по остаткам и остаткам по партии.
Буду благодарен за просмотр и конструктивную критику варианта решения.

Индекс по ЭтоТовар - лишний. Во-первых, примитивного типа и смысла его индексировать нету, а во-вторых - отбор по ЭтоТовар в полученный составной индекс всё равно не попадает.

Название: Re: 1.3
Отправлено: seravkin от Август 14, 2015, 12:01:35 am
Выкладываю свой вариант, буду благодарен за критику
Название: Re: 1.3
Отправлено: ak8647 от Август 19, 2015, 04:31:45 pm
Все-таки как правильно делать блокировки по РН ОстаткиНоменклатуры?
1)Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
    Блокировка.Заблокировать();
   
    2)Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
    Движения.ОстаткиНоменклатуры.Записать();

Или 2 пункт не нужен??
Название: Re: 1.3
Отправлено: GROOVY от Август 19, 2015, 08:40:02 pm
Все-таки как правильно делать блокировки по РН ОстаткиНоменклатуры?
1)Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
    Блокировка.Заблокировать();
   
    2)Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
    Движения.ОстаткиНоменклатуры.Записать();

Или 2 пункт не нужен??

Вы нифига не понимаете в том что пишете.
Название: Re: 1.3
Отправлено: Foreman76 от Август 20, 2015, 07:41:11 am
Для GROOVY Павел подскажите лучше, почему в документе переоценка (если задача связана с валютой)
мы не ставим блокировку на Управленческий.  (А ведь читаем остатки сначала запросом и только потом движения в зависимости от Разницы)
Название: Re: 1.3
Отправлено: ak8647 от Август 20, 2015, 08:16:39 am
Все-таки как правильно делать блокировки по РН ОстаткиНоменклатуры?
1)Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
    Блокировка.Заблокировать();
   
    2)Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
    Движения.ОстаткиНоменклатуры.Записать();

Или 2 пункт не нужен??

Вы нифига не понимаете в том что пишете.

Хотелось бы разобраться, вот и спрашиваю
Название: Re: 1.3
Отправлено: Foreman76 от Август 20, 2015, 08:37:43 am
ak8647 не обижайся просто эта тема особенно для проведения документов в задачах по ОУ уже такая избитая
по твоему вопросу

контроль остатков сначала пишеш потом читаеш
поэтому сначала идет конструкция Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина; (это только маркер)
блокировка будет когда Движения.Записать()
а потом нужно списать себестоимость
а там уже ты сначала читаеш потом пишеш
поэтому
Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
    Блокировка.Заблокировать();
это если ну ооочень кратко
Название: Re: 1.3
Отправлено: ak8647 от Август 20, 2015, 09:40:52 am
ak8647 не обижайся просто эта тема особенно для проведения документов в задачах по ОУ уже такая избитая
по твоему вопросу

контроль остатков сначала пишеш потом читаеш
поэтому сначала идет конструкция Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина; (это только маркер)
блокировка будет когда Движения.Записать()
а потом нужно списать себестоимость
а там уже ты сначала читаеш потом пишеш
поэтому
Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
    Блокировка.Заблокировать();
это если ну ооочень кратко
Спасибо большое! Я просто в ветке смотрел "Для тех кто сейчас в процессе подготовки", а там все обсуждают с чего начать. Мне кажет нужно брать и делать, а если что, спросить у тех кто с этим сталкивался. Еще раз спасибо.
Название: Re: 1.3
Отправлено: ak8647 от Август 20, 2015, 09:43:58 am
ak8647 не обижайся просто эта тема особенно для проведения документов в задачах по ОУ уже такая избитая
по твоему вопросу

контроль остатков сначала пишеш потом читаеш
поэтому сначала идет конструкция Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина; (это только маркер)
блокировка будет когда Движения.Записать()
а потом нужно списать себестоимость
а там уже ты сначала читаеш потом пишеш
поэтому
Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
    Блокировка.Заблокировать();
это если ну ооочень кратко
Спасибо большое! Я просто в ветке смотрел "Для тех кто сейчас в процессе подготовки", а там все обсуждают с чего начать. Мне кажет нужно брать и делать, а если что, спросить у тех кто с этим сталкивался. Еще раз спасибо.
И еще, можно мне ссылку, где эту тему "избивают". Хотелось бы почитать.
Название: Re: 1.3
Отправлено: Foreman76 от Август 20, 2015, 10:37:55 am
Ну например здесь http://forum.chistov.pro/index.php?topic=1999.msg22182#msg22182 (http://forum.chistov.pro/index.php?topic=1999.msg22182#msg22182)
Название: Re: 1.3
Отправлено: Foreman76 от Август 20, 2015, 10:51:13 am
Я когда читал запутался насмерть
Название: Re: 1.3
Отправлено: ak8647 от Август 20, 2015, 10:57:19 am
Ну например здесь http://forum.chistov.pro/index.php?topic=1999.msg22182#msg22182 (http://forum.chistov.pro/index.php?topic=1999.msg22182#msg22182)
спасибо
Название: Re: 1.3
Отправлено: alex1248 от Август 20, 2015, 12:50:33 pm
И еще, можно мне ссылку, где эту тему "избивают". Хотелось бы почитать.
А вот здесь всё четко разложено по полочкам
http://1c.chistov.pro/2013/07/blog-post_25.html
Имейте ввиду, что на экзамене можно запрещать оперативное проведение со всеми вытекающими (упрощающими) последствиями.
Название: Re: 1.3
Отправлено: ak8647 от Август 20, 2015, 01:05:22 pm
И еще, можно мне ссылку, где эту тему "избивают". Хотелось бы почитать.
А вот здесь всё четко разложено по полочкам
http://1c.chistov.pro/2013/07/blog-post_25.html
Имейте ввиду, что на экзамене можно запрещать оперативное проведение со всеми вытекающими (упрощающими) последствиями.
А в чем заключаются эти упрощающиеся последствия?
Название: Re: 1.3
Отправлено: ak8647 от Август 21, 2015, 03:03:08 pm
Все-таки в задаче должно быть 3 РН (ОстаткиТоваров, СтоимостьТоваров, Продажи), а не 2 (ОстаткиНоменклатуры, Продажи). ОстаткиНоменклатуры разбиваются на два (для демонстрации Методики оперативного проведения).
Название: Re: 1.3
Отправлено: seravkin от Август 26, 2015, 12:58:40 am
Все-таки в задаче должно быть 3 РН
откуда такая уверенность?
Название: Re: 1.3
Отправлено: ak8647 от Август 26, 2015, 07:55:59 am
Все-таки в задаче должно быть 3 РН
откуда такая уверенность?
Ответ 179 и на него ответ 180
Название: Re: 1.3
Отправлено: zhpn24 от Сентябрь 04, 2015, 07:12:37 am
Выкладываю свой вариант, буду благодарен за критику
Отчет "Продажи" формируется не совсем правильно -  если за один день было несколько отгрузок в поле "Интервал" выводится "разовая". По условию задачи "разовая" должно выводиться когда была только одна отгрузка.
Название: Re: 1.3
Отправлено: iipobaji от Октябрь 16, 2015, 04:26:00 pm
На всеобщее обозрение ;)
Название: Re: 1.3
Отправлено: Марк от Октябрь 28, 2015, 10:59:03 am
Скажите пожалуйста какими измерениями и ресурсами должны обладать регистры накопления остатки, если решать эту задачу 2 регистрами!  Как я понял, надо сделать регистр ОстаткиНоменклатуры с измерениями и ресурсами: Номенклатура, Партия и Количество. И сделать регистр СтоимостьНоменклатуры с измерениями и ресурсами: Номенклатура, Количество и Стоимость. Но если сделать так то себестоимость будет рассчитываться как средняя по номенклатуре, правильно ли это?
Название: Re: 1.3
Отправлено: iipobaji от Октябрь 28, 2015, 11:32:14 am
Скажите пожалуйста какими измерениями и ресурсами должны обладать регистры накопления остатки, если решать эту задачу 2 регистрами!  Как я понял, надо сделать регистр ОстаткиНоменклатуры с измерениями и ресурсами: Номенклатура, Партия и Количество. И сделать регистр СтоимостьНоменклатуры с измерениями и ресурсами: Номенклатура, Количество и Стоимость. Но если сделать так то себестоимость будет рассчитываться как средняя по номенклатуре, правильно ли это?
не правильно, если хотите сделать двумя регистрами, тогда
 надо сделать регистр ОстаткиНоменклатуры с измерениями и ресурсами: Номенклатура и Количество. И сделать регистр СтоимостьНоменклатуры с измерениями и ресурсами: Номенклатура,Партия, Количество и Стоимость
Название: Re: 1.3
Отправлено: Марк от Октябрь 28, 2015, 11:37:56 am
iipobaji, я над таким вариантом тоже думал но смысл тогда такой методики? Получается мы должны два раза контролировать остатки или я не так понял?
Название: Re: 1.3
Отправлено: iipobaji от Октябрь 28, 2015, 01:15:47 pm
ну если мы изначально предполагаем что у нас данные по количеству в разных регистрах на любой момент времени совпадают, тогда можно контролировать остатки только по одному регистру... Я лично делал 1 регистр ОстаткиНоменклатуры, где Номенклатура, Партия И Количество, Стоимость, мы же и из этого регистра можем получить остатки номенклатуры без разреза Партий
Название: Re: 1.3
Отправлено: Марк от Октябрь 28, 2015, 03:06:03 pm
ну если мы изначально предполагаем что у нас данные по количеству в разных регистрах на любой момент времени совпадают, тогда можно контролировать остатки только по одному регистру... Я лично делал 1 регистр ОстаткиНоменклатуры, где Номенклатура, Партия И Количество, Стоимость, мы же и из этого регистра можем получить остатки номенклатуры без разреза Партий
Спасибо за ответ!
Название: Re: 1.3
Отправлено: Regina_20158 от Ноябрь 11, 2015, 11:51:15 pm
Добрый вечер! посмотри пожалуйста базу и напишите комментарии, отчёт где-то подсмотрела , но тоже не знаю, правильно ли
Название: Re: 1.3
Отправлено: pila86 от Декабрь 27, 2015, 06:27:36 pm
Очень прошу покритиковать. Заранее спасибо.
Название: Re: 1.3
Отправлено: Odin777 от Февраль 03, 2016, 10:23:01 pm
Решение задания была попытка в скд отчет сделать описав нужные поля предварительно получив запросом сведения об оборотном регистре Продажи с параметром Периодичности равным ПоРегистратору. Но сделал в итоге в запросе. Остальное в базе.
Жду вопросов и замечаний.
Название: Re: 1.3
Отправлено: Марк от Февраль 27, 2016, 07:39:53 pm
Выкладываю свое решение. Буду очень признателен если посмотрите решение на наличие ошибок.
Название: Re: 1.3
Отправлено: No Pasaran от Март 09, 2016, 10:09:05 pm
Всем привет! Поглядите на решение пожалуйста  :)
Для использования "новой методики" контроля остатков решение основано на 3-х регистрах.
Если решать по "старой методике", то возможно всё реализовать на 2-х регистрах (поглядел в теме - кажется все решают на 2-х регистрах). Будет ли ошибкой такое "упрощение" через создание дополнительного регистра?
Название: Re: 1.3
Отправлено: Головлев Владислав от Март 18, 2016, 03:28:21 pm
Здравствуйте! Скажите, надо ли считать срок у услуги? Просто в условии в отчете "Продажи" у "Доставка" стоит пустое значение, но пустое значение может быть при условии, что последняя отгрузка была сегодня
Название: Re: 1.3
Отправлено: Головлев Владислав от Март 19, 2016, 02:25:45 pm
Посмотрите пожалуйста мое решение, возможно что то можно сделать проще или вообще что то нужно сделать по другому?
Название: Re: 1.3
Отправлено: ComradeKite от Март 23, 2016, 11:22:06 am
Всем привет! Поглядите на решение пожалуйста  :)
Для использования "новой методики" контроля остатков решение основано на 3-х регистрах.
Если решать по "старой методике", то возможно всё реализовать на 2-х регистрах (поглядел в теме - кажется все решают на 2-х регистрах). Будет ли ошибкой такое "упрощение" через создание дополнительного регистра?

No Pasaran, не знаю точно будет ли ошибкой или нет, так как еще "граль" по методике не нашел))) Но он уже близко и мнение мое такое:

Есть смысл использовать новую методику, если данные для списания не надо тащить из регистров остатка, классически это "Остатки номенклатуры".

Например при списании партий в порядке фифо или лифо, чтобы там не намудрили в порядке чтения/запись, все равно  надо лезть в "ОстаткиНоменклатуры", чтобы определить порядок партий и как их надо списывать по стоимости. А если лезем в остатки номенклатуры то и соответственно блокируем все явной управляемой блокировкой. Смысл что если мы туда лезем с блокировкой за ценами себестоимости и порядком партий, то и остаток мы проверим в этом случае. Менять смысла нет что то в "Пишем потом проверяем или наоборот проверяем потом пишем".


А вот есть ситуации другие.
У нас есть регистр сведений "Цены поставщиков" и есть "Расходная накладная". Нет партионного учета. Что нам надо чтобы сделать расход? А надо список номенклатуры и левым соединением регистр цен прикрутить и дальше сделать просто расход по регистру "Остатки номенклатуры". Тут то как раз и прокатит новая методика. Нам не надо лезть в Остатки предварительно, чтобы узнать цену себестоимости и мы не лочим предварительно "Остатки номенклатуры", мы просто туда пишем, делая расход с флагом "БлокироватьДляИзменения".

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

Считаю задачу надо делать старым методом. Так как нам надо лезть за остатками по партии и ценой партии.

Название: Re: 1.3
Отправлено: ComradeKite от Март 24, 2016, 12:11:02 pm
Решил 1.3, тактика по такому типу задач вроде сформировалась. Но на сто процентов не уверен, посмотрите пожалуйста, может что то не учел.
Название: Re: 1.3
Отправлено: glow2020 от Март 25, 2016, 08:12:24 pm
Решил 1.3, тактика по такому типу задач вроде сформировалась. Но на сто процентов не уверен, посмотрите пожалуйста, может что то не учел.

Записать пустые движения расходной можно только при оперативном проведении, а не всегда. Напутано с моментом времени и режимом проведения.Приходная пишет услуги в регистр остатков. В запросе отчета по продажам не понятно, зачем проверять знак разности дат, конечная дата будет всегда меньше или равна концу периода. Ну и не оптимально будет продолжать заполнять движения, если уже встретилась нехватка. Себестоимость можно добавить в регистр продажи, тогда упростится запрос к отчету по продажам
Название: Re: 1.3
Отправлено: ComradeKite от Март 27, 2016, 10:54:26 am
Решил 1.3, тактика по такому типу задач вроде сформировалась. Но на сто процентов не уверен, посмотрите пожалуйста, может что то не учел.

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

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

1. Записать пустые движения расходной можно только при оперативном проведении, а не всегда.
Я думал об этом моменте и пришел к выводу что не нужно ставить здесь проверку. Пусть затирается всегда. Мое мнение основано на курсах 1С "Оперативный учет", там у них в методичке нет такой проверки.
А вот проверка в параметре запроса имеется и о этой проверке там явно написано. На основании этого решил не добавлять эту проверку для записи(очистки) движений.

2. Напутано с моментом времени и режимом проведения.
Тут согласен, немного перепутал. Поменял местами "Оперативный" и "Не оперативный" в условии

3. Приходная пишет услуги в регистр остатков.
Тут ответ аналогичен ответу в первом посте. Нет такого в методологии 1С. Я не встречал на курсах такой проверки и не видел в методичке. А раз требований к этому нет, то я решил не тратить время на эту проверку.

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

5. Ну и не оптимально будет продолжать заполнять движения, если уже встретилась нехватка.
Тут я не согласен. Нам не только надо отменить проведение при нехватке хотя бы одного товара, но еще и показать пользователю "какого" товара не хватает. А это не обязательно будет только один товар. Их по накладной может быть несколько. Так пользователь попробовал провести и вылетел на первом товаре, потом исправил и вылетел на втором и т.д.... Оптимальнее как раз будет если он получит информацию по всем нехваткам сразу. Проверка и движения заполняются одним циклом, а поэтому я его и кручу до конца. Ну и опять же в методичке 1С такой алгоритм проведения используется.
 
6. Себестоимость можно добавить в регистр продажи, тогда упростится запрос к отчету по продажам

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


Ну вот как то так, будут мысли велкам!




Название: Re: 1.3
Отправлено: glow2020 от Март 27, 2016, 02:09:15 pm
3. Это грубая ошибка не выведение регистра остатков в 0. Ну и по логике, как понять хранение доставки или сборки на остатках предприятия.
5. Имел ввиду лишние действия записи движений. Если появилась нехватка стоит сразу перейти к следующей итерации, создавать и заполнять движения при этом лишний труд. В реальных сильно нагруженных системах это может заметно тормозить проведение документов.

Я сам недавно начал готовится и думаю инфу стоит черпать не только из курсов
Название: Re: 1.3
Отправлено: ComradeKite от Март 27, 2016, 03:46:47 pm
3. Это грубая ошибка не выведение регистра остатков в 0. Ну и по логике, как понять хранение доставки или сборки на остатках предприятия.
5. Имел ввиду лишние действия записи движений. Если появилась нехватка стоит сразу перейти к следующей итерации, создавать и заполнять движения при этом лишний труд. В реальных сильно нагруженных системах это может заметно тормозить проведение документов.

Я сам недавно начал готовится и думаю инфу стоит черпать не только из курсов

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

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


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

Название: Re: 1.3
Отправлено: javer от Март 30, 2016, 02:11:33 pm
Добрый день посмотрите решение.
Название: Re: 1.3
Отправлено: miha82 от Апрель 24, 2016, 04:31:48 pm
Решил с использованием идеологии П.Чистова "число регистров всегда равно числу показателей учета". А их в этой задаче 3: остатки, себестоимость и продажа. При этой схеме появилась возможность использовать "новый" метод контроля остатков. Отчет вышел не слишком сложным вроде. Одним словом, кому надо, может покритиковать:)
Название: Re: 1.3
Отправлено: alfalume от Август 03, 2016, 02:02:49 pm
покритикуйте пожалуйста
Название: Re: 1.3
Отправлено: ret-Phoenix от Сентябрь 09, 2016, 06:16:31 pm
Отчет продажи - срок, интервал - на уровне запроса, прибыль - вычисляемое поле скд (демонстрация умения пользоваться). На основе таблицы Продажи. Есть вариант на основе Вирт.таблицы продаж, с периодичностью регистратор

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

В док. реализация обрабатывается момент наличия одного товара 2 раза (списание по одной партии).

При попытке провести Реализацию с указанием еще не пришедшей партии - уведомляет о недостаче товара (расход 01.01., а поступление 01.02)

Критика принимается )
Название: Re: 1.3
Отправлено: goodwin от Сентябрь 11, 2016, 11:37:26 pm
а где отчет "остатки"?

Решил с использованием идеологии П.Чистова "число регистров всегда равно числу показателей учета". А их в этой задаче 3: остатки, себестоимость и продажа. При этой схеме появилась возможность использовать "новый" метод контроля остатков. Отчет вышел не слишком сложным вроде. Одним словом, кому надо, может покритиковать:)
Название: Re: 1.3
Отправлено: goodwin от Сентябрь 12, 2016, 12:08:07 am
Подскажите, какая в отчете "Остатки" (в условии задачи) стоит "Стоимость"?

При проведении расходной накладной в Регистр Остатков мы ее пишем, но берем из строки ТЧ документа и понимается
под этим как просто "за сколько продали" ? или это рассчитанное значение по средней, например?

Посмотрел в решениях, кто как делает.
Название: Re: 1.3
Отправлено: erdem.badluev от Сентябрь 12, 2016, 09:48:30 am
Подскажите, какая в отчете "Остатки" (в условии задачи) стоит "Стоимость"?

При проведении расходной накладной в Регистр Остатков мы ее пишем, но берем из строки ТЧ документа и понимается
под этим как просто "за сколько продали" ? или это рассчитанное значение по средней, например?

Посмотрел в решениях, кто как делает.

На мой взгляд, в отчете "остатки" стоимость оставшихся партий в ценах закупки, т.е. та стоимость, что была записана приходной накладной. При проведении расходной накладной эта стоимость уменьшается пропорционально количеству списываемого(продаваемого) от начальной стоимости партии.
Рассчитывать стоимость партии по средней или по ФИФО не нужно, ведь в условии сказано, что партия указывается в табл части, т.е. для каждой строки номенклатуры.
Название: Re: 1.3
Отправлено: erdem.badluev от Сентябрь 12, 2016, 09:55:31 am
Моё решение. Буду рад критике.
Название: Re: 1.3
Отправлено: YanSergey от Сентябрь 12, 2016, 01:54:59 pm
Моё решение. Буду рад критике.

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

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

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

На мой взгляд, самое правильное решение отчета по продажам у товарища Odin777. У других такого не увидел.
Он там отдельно получает во временную таблицу количество отгрузок, и даты первой и последней отгрузок.
Ресурсы он получает из виртуальной таблицы оборотов регистра - эта таблица специально создана для максимально эффективного извлечения данных.
Вот правда в формулировке задачи кое что непонятно.
Дата первой отгрузки, дата последней отгрузки и количество отгрузок имеется ввиду в заданном периоде отчета или вообще за всю историю ведения базы?
Название: Re: 1.3
Отправлено: goodwin от Сентябрь 12, 2016, 11:52:19 pm
Моё решение. Буду рад критике.

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

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

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

На мой взгляд, самое правильное решение отчета по продажам у товарища Odin777. У других такого не увидел.
Он там отдельно получает во временную таблицу количество отгрузок, и даты первой и последней отгрузок.
Ресурсы он получает из виртуальной таблицы оборотов регистра - эта таблица специально создана для максимально эффективного извлечения данных.
Вот правда в формулировке задачи кое что непонятно.
Дата первой отгрузки, дата последней отгрузки и количество отгрузок имеется ввиду в заданном периоде отчета или вообще за всю историю ведения базы?

за указанный период пользователем с и по
Название: Re: 1.3
Отправлено: goodwin от Сентябрь 12, 2016, 11:56:52 pm
Подскажите, какая в отчете "Остатки" (в условии задачи) стоит "Стоимость"?

При проведении расходной накладной в Регистр Остатков мы ее пишем, но берем из строки ТЧ документа и понимается
под этим как просто "за сколько продали" ? или это рассчитанное значение по средней, например?

Посмотрел в решениях, кто как делает.

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

С отчетом понял, выводим просто ту стоимость, которая есть в строке ТЧ документа. Да и в задании не сказано что именно. Додумывать нет смысла.

При списании мы себестоимость считаем как? количество из ТЧ/количество из регистра остатки * стоимостьОстаток из Регистра. все верно?

Название: Re: 1.3
Отправлено: erdem.badluev от Сентябрь 13, 2016, 04:35:19 am
Подскажите, какая в отчете "Остатки" (в условии задачи) стоит "Стоимость"?

При проведении расходной накладной в Регистр Остатков мы ее пишем, но берем из строки ТЧ документа и понимается
под этим как просто "за сколько продали" ? или это рассчитанное значение по средней, например?

Посмотрел в решениях, кто как делает.

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

С отчетом понял, выводим просто ту стоимость, которая есть в строке ТЧ документа. Да и в задании не сказано что именно. Додумывать нет смысла.

При списании мы себестоимость считаем как? количество из ТЧ/количество из регистра остатки * стоимостьОстаток из Регистра. все верно?

Да. Но лучше сначала умножить а потом делить, чтобы погрешность была меньше, т.е.
 количество из ТЧ * стоимостьОстаток из Регистра / количество из регистра остатки
Название: Re: 1.3
Отправлено: erdem.badluev от Сентябрь 13, 2016, 04:39:59 am
Моё решение. Буду рад критике.

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

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

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

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


Спасибо!
Название: Re: 1.3
Отправлено: goodwin от Сентябрь 15, 2016, 11:50:51 pm
Ребята. посмотрите решение.

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

Вот кусок кода.

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

2. во вложении картинка отчета. не выводится вариант "разовая".

Помогите разобраться!
Название: Re: 1.3
Отправлено: kimskiysanya от Сентябрь 16, 2016, 03:52:39 am
Ребята. посмотрите решение.

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

Вот кусок кода.

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

2. во вложении картинка отчета. не выводится вариант "разовая".

Помогите разобраться!

1. Вообще ничего не понял. По моему бред вообще какой то.
2. При расчете интервала используйте КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СтоимостьТоваров.Регистратор) вы используете просто КОЛИЧЕСТВО. В ресурсе когда ставите Сумма(Интервал) - разовая исчезает. Нужно рассчитывать интервал в ресурсах

Выбор Когда Количество (Различные Регистратор)>1 Тогда РазностьДат (Минимум (Период), Максимум(Период), "День")/Количество (Различные Регистратор) Иначе "Разовая" Конец

Вот так решение freez1301 из ветки билет 2
Название: Re: 1.3
Отправлено: signum2009 от Октябрь 24, 2016, 09:13:17 pm
Доброго времени суток, оцените решение


https://cloud.mail.ru/public/GSpn/2Huh8VHRa (https://cloud.mail.ru/public/GSpn/2Huh8VHRa)
Название: Re: 1.3
Отправлено: Yulika от Январь 11, 2017, 01:36:40 pm
Мое решение) Нуждаюсь в критике и оценке!)) Заранее большое спасибо)
P.S. Как вести учёт по услугам?
Название: Re: 1.3
Отправлено: POW от Январь 20, 2017, 02:39:20 pm
1. В спр Номенклатура реквизит Услуга должен иметь тип "Перечисления.ВидыНоменклатуры".
2. В ПрихНакл в ОбработкеПроведения нужно не создавать записи движения.ОстаткиНоменклатуры. А то остатки по услугам будут:
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
Если ТекСтрокаСписокНоменклатуры.Номенклатура.ВидНоменкалтуры=Перечисления.ВидыНоменклатуры.Услуга Тогда
Продолжить;
КонецЕсли;
Движение = Движения.ОстаткиНоменклатуры.Добавить();
3. Рекомендуют записывать НаборыЗаписей не по отдельности:
Движения.ОстаткиНоменклатуры.Записывать=Истина;
Движения.ОстаткиНоменклатуры.Очистить();
Движения.ОстаткиНоменклатуры.Записать();

Движения.Продажи.Записывать=Истина;
Движения.Продажи.Очистить();
Движения.Продажи.Записать();
а все движения сразу. Но регистр продажи в данном случае записывать вообще не нужно. Мы ведь его не читаем и вообще ничего с ним не делаем. Если записывает вместе(а не по отделности каждый регистр) то взаимоблокировок не будет, но в данном конкретном случае их и там не было бы, потому как записываемые регистры записываются в той последовательности в которой они описаны в конфигурации. Т.е очередность совпадает. Так что я не уверен что за это могут снизить бал. Я бы сделал так:
Движения.ОстаткиНоменклатуры.Записывать=Истина;
Движения.ОстаткиНоменклатуры.Очистить();
Движения.Записать();

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

Все это мое мнение, если кто-нибудь думает по другому) Прошу отписаться)
Название: Re: 1.3
Отправлено: POW от Январь 20, 2017, 02:40:15 pm
Мое решение) Нуждаюсь в критике и оценке!)) Заранее большое спасибо)
P.S. Как вести учёт по услугам?
Смотрите чуть Выше)
Название: Re: 1.3
Отправлено: jonik от Май 11, 2017, 01:40:46 pm
Добрый день, коллеги. Буду рад конструктивным отзывам.
Название: Re: 1.3
Отправлено: iliya от Август 19, 2017, 06:08:18 pm
Коллеги, добрый день!
По задаче непонятно:
Параграф 3. необходимо предупреждение о нехватке номенклатуры
Параграф 4. необходимо предупреждение о нехватке товара по конкретной партии указанной в в документе.
Получается, что нужно по два предупрепреждающих сообщения на каждую номенклатуру выводить. Есть ли в этом хоть какой-то смысл?
Допустим в документе указан одна номенклатура и партия в разных строках. Для привязки сообщения об ошибки к конкретной строке документа, как определить на какой строке документа партия закончилась? Походу никто кроме меня не обратил вниманиия на сей момент в постановке задачи.

Какие будут мысли???

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

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

СГРУППИРОВАТЬ ПО
   Расходная.Номенклатура,
   Расходная.Партия

ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   Партия
;

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


Говлюсь к сдаче осилил всю ветку. Походу так и нет единого мнения по методике проведения расходной и количеству регистров.
Хочу высказать свое мнение. Новую методику нужно использовать только в системах где используется метод допроведение документов неоперативно по себестоимости.
Использовать методику только для оперативного списания товара только по количественному учету в течении месяца. По концу месяца обработочкой проходимся и пишем среднюю взвешанную за месяц по документам. Как правило скользящая оценка стоимости искажает финансовые данные.
Из сказанного следует, что методику нового проведения нет нужды реализовывать на экзамене ибо таких задач на допроведение в задачнике нет.
Название: Re: 1.3
Отправлено: angelivoin от Сентябрь 29, 2017, 09:52:45 pm
Коллеги, добрый день!
По задаче непонятно:
Параграф 3. необходимо предупреждение о нехватке номенклатуры
Параграф 4. необходимо предупреждение о нехватке товара по конкретной партии указанной в в документе.
Получается, что нужно по два предупрепреждающих сообщения на каждую номенклатуру выводить. Есть ли в этом хоть какой-то смысл?
Допустим в документе указан одна номенклатура и партия в разных строках. Для привязки сообщения об ошибки к конкретной строке документа, как определить на какой строке документа партия закончилась? Походу никто кроме меня не обратил вниманиия на сей момент в постановке задачи.

Какие будут мысли???

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

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

СГРУППИРОВАТЬ ПО
   Расходная.Номенклатура,
   Расходная.Партия

ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   Партия
;

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


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

Первые две задачи решаются по новой методике, в них мы можем записать движение в регистр остатки и проверить ушли в минус или нет.
В данной задаче мы не можем этого сделать, т.к после записи движения в регистр остатки мы можем в минус не уйти,  а при списывании с партии указанной в табличной части, можно в минус уйти, т.е надо проверять остаток, а раз проверять  надо будет все равно остаток, значит новая методика не подходит, используем старую.
Название: Re: 1.3
Отправлено: angelivoin от Октябрь 01, 2017, 01:36:00 pm
Решение моей задачи. Должно быть идеально!
Название: Re: 1.3
Отправлено: bkmz от Ноябрь 12, 2017, 07:54:36 pm
Цитировать
Решение моей задачи. Должно быть идеально!
Могу предложить не использовать в сообщалках Номенклатура ссылочного типа, в запросе выбери Номенклатура.Представление и используй его в сообщалках. В виде Чистова по подготовке к спецу по платформе говорилось что если этого не сделать то могут снять то ли пол бала то ли бал.

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

И может не стоит писать дважды сообщение что не хватает по данной номенклатуре товара в целом и отдельно сообщение что по данной партии и данной номенклатуре. И ограничится только проверкой по детальным записям?
Название: Re: 1.3
Отправлено: jonik от Ноябрь 21, 2017, 10:22:42 am
Добрый день, коллеги. Буду рад конструктивным отзывам.
Подкорректировал
Название: Re: 1.3
Отправлено: Romulka от Январь 11, 2018, 11:26:52 am
Вместо сообщалки что партия в табличной части не заполнена поставь в реквизит партия проверка заполнения "Выдавать ошибку".

Все бы ничего, но у нас в одной ТЧ находятся и Номенклатура, и Услуги...
Название: Re: 1.3
Отправлено: bkmz от Январь 26, 2018, 02:44:16 pm
Цитировать
Все бы ничего, но у нас в одной ТЧ находятся и Номенклатура, и Услуги...

Ок. Согласен.

Ну тогда добавить в начале обработки проведения в Расходной код:

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

Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не указана партия для номенклатуры " + Выборка.НоменклатураПредставление;
Сообщение.Поле = "Объект.СписокНоменклатуры[" + (Выборка.НомерСтроки - 1) + "].Партия";
Сообщение.Сообщить();
КонецЦикла;
Отказ = Истина;
Возврат;
КонецЕсли;
Название: Re: 1.3
Отправлено: bkmz от Январь 26, 2018, 03:01:32 pm
Мое решение. Прошу оценить
Название: Re: 1.3
Отправлено: bkmz от Январь 26, 2018, 03:52:05 pm
Не уверен нужно ли делать РегистрыНакопления.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина; при очистке старых движений.
Я заблокирую пустой набор записей? Или набор записей до очистки, или тут вообще блокировка избыточна?
Название: Re: 1.3
Отправлено: ToroNatali от Декабрь 13, 2019, 06:04:00 pm
Здравствуйте! А эта тема еще жива? Очень хотелось бы узнать мнение о моем решении 3 задачи сборника :)
Название: Re: 1.3
Отправлено: Евгений_нвкз от Сентябрь 07, 2020, 09:30:27 am
Всем привет. Мое решение на обозрение)
Название: Re: 1.3
Отправлено: Sdnv от Октябрь 21, 2020, 04:47:26 pm
Что-то много запросов в модуле расходной накладной
Структурно их же два
1. формируем таблицу из расходной накладной и оборотов по регистру накопления
2. пишем в регистр попутно проверяя отрицательные значения или
3. проверяем отрицательные (хотя и при записи в первом можно их проверить)
+
блок записи в продажи
И в последнем запросе разве не "Обороты" надо использовать?
Название: Re: 1.3
Отправлено: Sdnv от Октябрь 22, 2020, 08:57:52 pm
Пример запроса проверки остатков с партиями
Процедура ОбработкаПроведения (Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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