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

Аттестация "1С:Специалист" => Аттестация "1С:Специалист по платформе 1С:Предприятие 8.3 и 8.2" => Тема начата: BelousovKirill от Июль 09, 2010, 12:45:16 pm

Название: Задача 1.08
Отправлено: BelousovKirill от Июль 09, 2010, 12:45:16 pm
Граждане,помогите покомпактней реализовать данное головоломко)))
Вложения:
1.08.dt
Название: Задача 1.08
Отправлено: 1C_CoderVamp от Июль 21, 2010, 04:11:56 pm
Это конечно хорошо, но:

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

Название: Задача 1.08
Отправлено: Tolyas от Сентябрь 13, 2010, 02:00:02 pm
Решение работает, но думаю можно сделать оптимальней.
Вложения:
1.8_Tolyas.dt
Название: Задача 1.08
Отправлено: bk от Сентябрь 13, 2010, 04:46:05 pm
pershinsergei, выкладываю свое решение с отчетом.
Вложения:
1_08.dt
Название: Задача 1.08
Отправлено: User67 от Сентябрь 13, 2010, 07:32:16 pm
bk, в расходной, если товара в точке не хватает - не проверяется, а хватает ли в отделе закупки, а по заданию должно!
Название: Задача 1.08
Отправлено: bk от Сентябрь 13, 2010, 10:00:43 pm
User67, в задании написано что нужно контролировать остатки по торговой точке и если их не хватает, то делать перемещение. При проведении в случае продажи я проверяю хватает ли товара в точке, если нет, то я добавляю строку в ТЗ_Перемещение в которой указываю сколько и чего нужно переместить из отдела закупок для проведения. Далее я пытаюсь сделать перемещение, если это не удается (в отделе закупок тоже нет остатков) тогда я взвожу флаг отказ и документ не проводится, помоему все верно smile
Название: Задача 1.08
Отправлено: marku от Сентябрь 25, 2010, 06:53:59 pm
Вот как я решил
Вложения:
1.08_marku.dt
Название: Задача 1.08
Отправлено: AS от Октябрь 18, 2010, 08:06:30 pm
marku,
 1) Совсем не используются блокировки
 2) Перемещение должно проводиться документом "Расходная накладная" - по условию задачи.
Название: Задача 1.08
Отправлено: marku от Октябрь 18, 2010, 09:17:04 pm
Quote (AS)
Спасибо что посмотрел
 
 1) Совсем не используются блокировки
 Да нужно, но алгоритм один и тот же как во всех задачах.

2) Перемещение должно проводиться документом "Расходная накладная" - по условию задачи.


 Перемещение делаю. а как же без него и провожу
 
Code

 //..............
    ДокПеремещение = Документы.Перемещение.СоздатьДокумент();
      ДокПеремещение.Дата = Дата-1;
      ДокПеремещение.ПодразделенияОтправитель = ПодразделениеОтделПоставки;
      ДокПеремещение.ПодразделенияПолучатель  = Подразделения;
      СтрокаДокПеремещения = ДокПеремещение.СписокНоменклатуры.Добавить();
      СтрокаДокПеремещения.Номенклатура = Выборка.Номенклатура;
      СтрокаДокПеремещения.Количество =НадоСписать;
      ДокПеремещение.Записать(РежимЗаписиДокумента.Проведение);
 //.................
 
Название: Задача 1.08
Отправлено: Владик от Октябрь 25, 2010, 11:25:38 pm
Решал билет на работе сегодня, посмотрел как сделал Bk,
 считаю у него оптимальное решение.
 Сам пытался уложиться в час с копейками, чтобы на экзамене успеть.
Вложения:
1.8..dt
Название: Задача 1.08
Отправлено: trantor от Ноябрь 22, 2010, 01:03:07 pm
А не кажется ли вам что в задании есть потенциальная мина связанная с блокировками и программым созданием и проведением другого документа?
 При начале проведения документа продажи мы должны наложить блокировку на номенклатуру документа и два отдела закупки и тек. точки. Теперь после чтения остатков мы определяем, что нам нужно переместить часть товара с отдела закупок и в модуле проведения создаем новый документ и пытаемся его провести. Но у нас текущая транзакция не закончилась и действует блокировка - результат взаимные блокировки, новый ждет окончание текущего, текущий нового.
 Теоритически можно не накладывать блокировку на отдел закупок при продаже и взаимных блокировок можно избежать в данном случае, но тогда есть вероятность что другой пользователь может провести списание с отдела закупок на другую точку и потенциально появятся минуса.
 Кто что думает?

Добавлено (22.11.2010, 13:03)
---------------------------------------------
Вопрос снимается, т.к. в описании к объекту БлокировкаДанных, написано "Предназначен для явной блокировки данных от чтения или изменения другими сессиями.". Т.е. взаимной блокировки в рамках одной сессии не будет...

Название: Задача 1.08
Отправлено: AndreiPiter от Декабрь 20, 2010, 08:24:32 pm
моё решение

marku, вопрос: может так делать не очень правильно
 ДокПеремещение.Дата = Дата-1;
 это так мысли вслух, хотя мне тоже другие варианты в голову не приходят.


Вложения:
0025613.dt
Название: Задача 1.08
Отправлено: Nitro от Декабрь 22, 2010, 12:58:15 pm
Здесь вообще не нужен документ перемещение, по условию все делает расходная накладная, тогда и проблем с блокировками не будет.
Название: Задача 1.08
Отправлено: maniacminer от Февраль 03, 2011, 03:46:55 pm
Мое решение без отчета, вроде неплохо получилось.
Вложения:
1_08_mm.dt
Название: Задача 1.08
Отправлено: Gulf_Stream от Февраль 11, 2011, 01:07:17 pm
Мой вариант
Вложения:
3732183.dt
Название: Задача 1.08
Отправлено: acorns от Март 20, 2011, 01:48:32 pm
to Gulf_Stream

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

2) Не выполняется проверка удалось выполнить перемещение недостающего товара с отдела продаж или нет.

3) По-моему не совсем корректно выводить сообщение "недостаточно товара в точке и отделе закупок, документ не будет проведён" не указав при этом, какого именно товара и в каком количестве.

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

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


Вложения:
01_08_02.dt
Название: Задача 1.08
Отправлено: CHEBURASHKA от Апрель 23, 2011, 02:52:35 pm
У bk решение хорошее, но при проведении расходной накладной во втором пакете первого запроса таблица ОстаткиНоменклатурыОстаткиЗакупка не соединяется ни по каким параметрам и получается, что номенклатура смешивается, суммируется количество и сумма.
Название: Задача 1.08
Отправлено: antantait от Май 25, 2011, 11:53:09 am
Посмотрел решение у bk. Объясните почему так считается себестоимость?
 
Code
Движение.Сумма    =    МИН(Выборка.Количество, Выборка.КоличествоОстаток) /
          ?(Выборка.КоличествоОстаток = 0,
                               1,
                               Выборка.КоличествоОстаток) * Выборка.СуммаОстаток +
         МАКС(Выборка.Количество - Выборка.КоличествоОстаток, 0) /
          ?(Выборка.КоличествоОстатокЗакупка = 0,
                               1,
                               Выборка.КоличествоОстатокЗакупка) * Выборка.СуммаОстатокЗакупка * Наценка;
 
Название: Задача 1.08
Отправлено: DoctorRoza от Июль 07, 2011, 09:31:57 pm
Хорошая задача .. понравилась
 Выложу свое решение. Использование новой методики проведения докуметов тут конечно забавно выглядит! Сплошь и рядом запросы на проверку минусов! smile
Вложения:
DoctorRoza_1_8.dt
Название: Задача 1.08
Отправлено: lubja от Июль 08, 2011, 02:25:03 pm
мой вариант
Вложения:
1261707.dt
Название: Задача 1.08
Отправлено: kow1976 от Июль 24, 2011, 10:51:20 am
DoctorRoza, и lubja,

 Есть сомнения по поводу правильности расчета стоимости списания
 Пример
 01.01.11 Прих.нак. №1 3ед 5грн.(3*5=15)
 01.02.11 Расх нак. (перемещение)№1 3ед. 16,5грн.(15*(1+10/100=16,5)
 01.03.11 Прих.нак. 8ед 6грн.(6*8=48)
 01.04.11 Расх нак. (продажа)№1 10 ед.
 Стоимость у вас
 Стоимость=16,5/3*10=55грн. что, скорее всего не правильно.
 Должно быть:
 СтоимостьПеремещения=(10-3)*48/8(1+10/100)=46,2грн.
 Стоимость=16,5+46,2=62,7грн.
Название: Задача 1.08
Отправлено: DoctorRoza от Июль 24, 2011, 05:05:50 pm
kow1976, извините, но, у себя, я что то такой ошибки не нахожу! sad Добавил Ваши проводки и получилось .. как получилось (скриншот регистра накопления)! Тут, может, нужно обратить внимание, что себестоимость рассчитывается как средняя по складу. Поэтому при списании, себестоимость будет осредняться! Не знаю .. выложите свое решение .. обсудим!
Вложения:
s5747285.jpg
Название: Задача 1.08
Отправлено: kow1976 от Июль 24, 2011, 07:01:31 pm
Проблема проявляется если реализовывать с торговой точки без перемещения недостающего товара
Вложения:
s3652502.jpg
Название: Задача 1.08
Отправлено: DoctorRoza от Июль 24, 2011, 07:45:51 pm
Полностью с Вами согласен .. верно найдена ошибка! Получается, что эта задача решается только по методике 8.1. Ибо, чтобы провести списание, в случае недостачи, в начале нужно провести всю недостачу и только после списание! smile
Название: Задача 1.08
Отправлено: kow1976 от Июль 24, 2011, 07:51:20 pm
Хорошее решение обидно пойматься на мелочи на экзамене.
 Наверно можно и вашим методом только надо в начале делать перемещение записать его, а потом списывать.
Название: Задача 1.08
Отправлено: DoctorRoza от Июль 24, 2011, 07:58:03 pm
Quote (kow1976)
Хорошее решение обидно пойматься на мелочи на экзамене.


 Вы, наверное, шутите? smile Ну какая же это мелочь!? smile Это грубая ошибка!! 2/3 задачи решено не верно .. не реализована основная идея .. сразу выгонять с экзамена можно .. smile
Название: Задача 1.08
Отправлено: kow1976 от Июль 24, 2011, 08:05:22 pm
Я имею ввиду, что если поставить часть создания документа перемещения перед списанием, то может все работать. А сама реализация не стандартна, а это всегда плюс.
Название: Задача 1.08
Отправлено: DoctorRoza от Июль 24, 2011, 08:15:32 pm
kow1976, свое решение обязательно выложите .. очень полюбопытствую! )))
Название: Задача 1.08
Отправлено: kow1976 от Июль 24, 2011, 08:24:14 pm
Если можно посмотрите, пожалуйста, зад.1.6 мне кажется, я её до ума не довел, но ошибок не вижу.
 Эту задачу не решил, хочу привинтить к ней функциональные опции, но что то, знаний не хватает, чтоб реализовать.
Название: Задача 1.08
Отправлено: rnikinko от Июль 26, 2011, 09:19:04 am
Мое решение !!!!
Вложения:
1.8nik.dt
Название: Задача 1.08
Отправлено: kow1976 от Июль 26, 2011, 08:15:41 pm
rnikinko,
 Средняя, считается неправильно.

 Прошу посмотреть и прокомментировать решение задачи.
 Задача на первый взгляд кажется не сложной, но есть несколько подводных камней связанных с расчетом средней в разрезе склада.
 За любые найденные ошибки спасибо.
Вложения:
kow19761.8.dt
Название: Задача 1.08
Отправлено: DoctorRoza от Июль 26, 2011, 08:40:05 pm
kow1976, так-с ..
 НовДок.Дата=Дата-1; а вот это не айс!! такое не приемлемо .. а если есть другие документы? smile
 //////////////////////////////
 Скрин .. ошибка ..
 /////////////////////////////
 Зачем в справочнике реквизит Перемещение???
Вложения:
s3581861.jpg
Название: Задача 1.08
Отправлено: kow1976 от Июль 26, 2011, 10:51:47 pm
Quote (DoctorRoza)
НовДок.Дата=Дата-1; а вот это не айс!! такое не приемлемо .. а если есть другие документы?


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

 
Quote
Скрин .. ошибка

 Спасибо действительно косяк

 
Quote
Зачем в справочнике реквизит Перемещение???


 В справочнике реквизит «перемещения» использую, чтобы в расходной совсем нельзя было выбрать ОтделЗакупок. Чтоб запретить продажу с отдела закупок.
 В реквизите склад расходной накладной в свойстве
 «Параметры выбора» Отбор.Перемещение(Истина)
Название: Задача 1.08
Отправлено: DoctorRoza от Июль 27, 2011, 07:32:39 pm
Quote (kow1976)
С датой пробовал и границу и МоментВремени не получается сделать так чтобы продажа была позднее перемещения( первым создается продажа на оси потом перемещение, а надо наоборот). Но по идее номенклатура по складу в транзакции заблокирована и попасть, в эту секунду, чтобы списать только что, перемещенный товар не выйдет.


 Забавно, в моем решении Вы как раз и указали на эту ошибку, но реализация решения не айс! smile В этом то и суть, что в начале должно быть перемещение, а уже потом списание!
Вложения:
5878232.dt
Название: Задача 1.08
Отправлено: Denov от Июль 28, 2011, 07:48:42 pm
Посмотрите мое решение. По моему сделал очень оптимально...
Вложения:
_1.08.dt
Название: Задача 1.08
Отправлено: kow1976 от Июль 30, 2011, 07:19:34 pm
Denov,

 1.Средняя считается не правильно тестовые данные : http://forum.chistov.pro/index.php?topic=977.msg3#msg3
 2. Блокируете всю номенклатуру по всем складам, а достаточно торг. точку и если надо склад закупки .
 3. Два запроса можно решить одним
 4. Накладную берете два раза из БД. Второй раз можно из ВТ
 5. Уничтожать ВТ нет смысла. Все ВТ уничтожаются по КонецПроцедуры. Если я правильно понял назначение этого уничтожения.
 6. Не уверен но думаю, что транзакция не нужна, так как Обработке проведения и так действует скрытая транзакция.
Название: Задача 1.08
Отправлено: Denov от Август 02, 2011, 08:31:14 pm
kow1976, Спасибо...
Название: Задача 1.08
Отправлено: Saipl от Август 25, 2011, 03:48:10 pm
Прокомментируйте если не сложно !
 Вопросы по оптимальности решения
 1.Правильно отработают блокировки при установке списка значений в качестве источника значений ?
 
Code
    Отделы = Новый СписокЗначений;
  Отделы.Добавить(Справочники.Отделы.ОтделЗакупок);
  Если Не ВнутреннееПеремещение Тогда
   Отделы.Добавить(Отдел);
  КонецЕсли;  
  Блокировка = Новый БлокировкаДанных;
  ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
  ЭлементБлокировки.УстановитьЗначение("Отдел", Отделы);
 

 2. Как скажется на быстродействии системы и оптимальности с точки зрения решения
 строки в запросе
 
Code

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


 Или правильней для каждого отдела создать вложенный запрос ?

 Спасибо !
Вложения:
Saipl_1.8.dt
Название: Задача 1.08
Отправлено: garden от Октябрь 04, 2011, 10:16:46 am
Хотелось бы услышать комментарии к моему решению. Делала сама, поэтому ошибок может быть много, но вроде все работает.
 smile
Вложения:
garden_1-08.dt
Название: Задача 1.08
Отправлено: chernikovd от Ноябрь 13, 2011, 04:27:42 pm
В задаче сказано "необходимо программно создавать ДОКУМЕНТ по перемещению недостающего товара из отдела закупок"
 я посмотрел несколько решений и не увидел реализации этого условия.. может я не прав... вот мой вариант решения
Вложения:
_1.8_Dim.dt
Название: Задача 1.08
Отправлено: SEA от Ноябрь 24, 2011, 12:39:33 am
Буду очень благодарна за критику
Вложения:
1-8.dt
Название: Задача 1.08
Отправлено: garden от Ноябрь 24, 2011, 09:35:31 am
SEA,
 Задачка действительно замороченная, у Вас решение получилось проще чем у меня и работает все вроде верно. Отчета только нет.
 1.Немного не понятно зачем два реквизита в расходной: Склад и получатель, по-моему флаг перемещение и так говорит о том продажа это или перемещение, но это мне кажется не является ошибкой.
 2. Если продавать или перемещать товар, которого вообще нет (прихода нет), то сообщение об отсутствии товара не выдается, (при этом и в регистр ничего не пишется, т.е. система ведет себя правильно)
 Удачи!
Название: Задача 1.08
Отправлено: SEA от Ноябрь 24, 2011, 03:34:15 pm
garden, спасибо.Замечания учту

Добавлено (24.11.2011, 15:34)
---------------------------------------------

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

 .- Потому что этот вариант более приближен к реальности- если бы надо было б построить журнал с документами с отбором по ОтделуЗакупки - то в моем варианте не возникло никаких проблем или мало ли какие задачи еще нужно будет решить - всегда на будующее стараюсь продумать.А с помощьюФлага можно - автоматически открывать нужный справочник - а не выбирать сначала "Контрагенты"или "Склады". Это я в своем варианте не реализовала - но можно было. На данный момент только алгоритмы решения разбираю, а не красоту
Название: Задача 1.08
Отправлено: LEOON от Декабрь 18, 2011, 08:58:50 pm
Решение сырое, на доработку времени жалко так что выкладывать не буду.
 Единственный совет, если кто не догадался, разнести Перемещение и Расход, при программном создании можно с помощью.
 ПолучитьОперативнуюОтметкуВремени().
Название: Задача 1.08
Отправлено: kow1976 от Декабрь 18, 2011, 10:14:47 pm
LEOON,
 Интересная идея. Но функция дает на секунду больше а надо меньше. Это кроме оперативную отметку ставить в начале перемещению а потом переопределять дату текущего документа. Кроме этого придется отслеживать ситуацию перепроведения иначе документы будут все время перепрыгивать на оперативную отметку. А вреда от отнятой секунды вреда особо не видно.
Название: Задача 1.08
Отправлено: LepRiKonS от Февраль 27, 2012, 09:44:11 am
Мой вариант

 Добавлено (27.02.2012, 09:44)
 ---------------------------------------------
 
Quote (LepRiKonS)
Мой вариант
 Прикрепления: Leprikons_1.33.dt(153Kb)

 Только заметил что не то прикрепил smile
 Как смогу, прикреплю свой вариант 1.08
Название: Задача 1.08
Отправлено: sv_mikh от Март 18, 2012, 10:06:19 am
Мое решение. Самое, что ломает в этой задаче, какой датой делать внутреннее перемещение? Сейчас делаю на секунду раньше документа продажи... Но вдруг это происходит в последнюю сек. дня, и к моменту Дата-1 может чего только не происходить...
Вложения:
sv_mikh_01_08.dt
Название: Задача 1.08
Отправлено: Placent от Июль 30, 2012, 02:40:21 pm
реализовал обработку проведения Реализации и перемещения одним запросом, после чего результат запроса тупо записывается в регистр и все ))

 выслушаю критику по этому поводу )
Вложения:
a_1.8.dt
Название: Задача 1.08
Отправлено: Infactum от Август 13, 2012, 06:48:14 pm
Мой вариант решения. Вроде бы отличается от того, что я тут видел.
 Выслушаю критику.
Вложения:
infactum_01-08.dt
Название: Задача 1.08
Отправлено: Oliver от Август 25, 2012, 09:51:51 am
Моё решение. Вот только после решения остался вопрос...
 При проведении перемещения - накладываем исключительную блокировку на регистр.
 При проведении списания - накладываем исключительную блокировку на регистр.
 При проведении списания с нехваткой на данном складе - накладываем блокировку на регистр, из Обработки проведения (транзакция ещё не закончилась) создаём и проводим Перемещение - которое тоже накладывает блокировку, после проведения перемещения - возвращаемся в обработку проведения.
 Рассматриваем третий случай.
 Вопрос: почему когда я наложил исключительную блокировку при проведении реализации, последовательно вызывается создание дока перемещением с исключительной блокировкой - почему не происходит конфликт?
 Проверял на Сервере.
Вложения:
Oliver_1_8.dt
Название: Задача 1.08
Отправлено: Gyd от Август 26, 2012, 01:26:49 am
Oliver, может быть потому что в одной транзакции делается?

 А зачем у вас при списании используется Перемещение?
Название: Задача 1.08
Отправлено: Oliver от Август 27, 2012, 02:50:46 am
Quote
может быть потому что в одной транзакции делается?
- да делается в одной транзакции, но и блокировка действует до конца транзакции и внутри этой транзакции накладывается ещё одна блокировка (создаётся док Перемещение)... Но дело не в транзакциях а в сессии.
 Объект Блокировка данных - Предназначен для явной блокировки данных от чтения или изменения другими сессиями.
 
Quote
А зачем у вас при списании используется Перемещение?
- условие: при продаже товара необходимо в первую очередь контролировать хватает ли товара в данной точке. Если нет - необходимо программно создать документ по перемещению недостающего товара из отдела закупок. - я понял это условие так, Вы как-то по другому?)

 Вывод: Блокировка Данных действует в рамках транзакции, но на уровне сессии.
Название: Задача 1.08
Отправлено: Pavlyk от Август 27, 2012, 10:13:19 am
А зачем вот тут использовать "Попытку"

 Попытка
 Док.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

 В каких случая вобще её используют и для чего? А то думаю на экзамене по любому спрашивать будут

Добавлено (27.08.2012, 10:13)
---------------------------------------------
Oliver Ты имеешь виду то что нужно сначало делать проверку Если перемещение то Один блок ,иначе Два блока ? (только так как ты сделал нельзя вроде бы, нужно две различные блокировки писать с разными отделами)

Название: Задача 1.08
Отправлено: Oliver от Август 27, 2012, 12:36:01 pm
Pavlyk,
Quote
В каких случая вобще её используют и для чего?
посмотри (в режиме 1С Предприятия) два варианта:
 
Code
а = 1/0;

 вариант второй:
 
Code

 Попытка
  а = 1/0;  
 Исключение                  
  Сообщить(ОписаниеОшибки());
 КонецПопытки;
 


 
Quote
Ты имеешь виду то что нужно сначало делать проверку Если перемещение то Один блок ,иначе Два блока ? (только так как ты сделал нельзя вроде бы, нужно две различные блокировки писать с разными отделами)
- не верно!
 Можно неограниченное число блокировок в рамках одной транзакции (неважно явной или неявной) - и ошибки не будет. А вот срабатывать она/они (удерживать монопольный доступ на ресурсы) будет на все сессии (подключения к информационной базе) кроме той в которой в которой установлена блокировка.
Название: Задача 1.08
Отправлено: Gyd от Август 27, 2012, 12:55:27 pm
Quote (Oliver)
- условие: при продаже товара необходимо в первую очередь контролировать хватает ли товара в данной точке. Если нет - необходимо программно создать документ по перемещению недостающего товара из отдела закупок. - я понял это условие так, Вы как-то по другому?)

 Задачу не решал, видимо не входила в билеты... Условие понял так:
 1. Перемещение делается тоже Расходной накладной.
 2. Документ для перемещения может создаваться программно при продаже (то о чём вы говорили).
 3. По идее расходная при продаже должна сразу блокировать остатки по торговой точке и по отделу закупок. Тогда имеет смысл создавать документ перемещения. Ибо если он будет создан позже и сам будет накладывать блокировку, уже товара может и не стать в отделе закупок. И как следствие проведение расходной "сломается" в неподходящий момент.

 Ну как вы заметили я немного ушёл от темы, вы рассматриваете пересечение блокировок, я же предлагаю сделать по-другому.
Название: Задача 1.08
Отправлено: Andy63 от Октябрь 07, 2012, 06:49:22 pm
Мой вариант
Вложения:
_1.8__Andy.dt
Название: Задача 1.08
Отправлено: semtesem от Ноябрь 06, 2012, 08:46:06 pm
Интересный факт:

 ВЫБРАТЬ
    СУММА(ЕСТЬNULL(Т.СуммаОстаток, 0)) КАК СуммаОстаток
 ИЗ
    (ВЫБРАТЬ
       ВзаиморасчетыОстатки.СуммаОстаток КАК СуммаОстаток
    ИЗ
       РегистрНакопления.Взаиморасчеты.Остатки(, ) КАК ВзаиморасчетыОстатки
    ГДЕ
       1 = 2) КАК Т

 Даст СуммаОстаток = Null

 ВЫБРАТЬ
       ВзаиморасчетыОстатки.СуммаОстаток КАК СуммаОстаток
    ИЗ
       РегистрНакопления.Взаиморасчеты.Остатки(, ) КАК ВзаиморасчетыОстатки
    ГДЕ
       1 = 2

 Этот запрос ничего не возвращает - ни строчки

 а если ничего просуммировать то будет Null?
Название: Задача 1.08
Отправлено: ZolteR от Апрель 04, 2013, 10:44:58 am
Большая часть решений некорректна поскольку в задачи сказано:

 "При продаже товара необходимо в первую
 очередь контролировать хватает ли товара в данной торговой точке. Если нет - необходимо программно создать документ по перемещению недостающего товара из отдела закупок

 "

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

 Единственное что смущает так это:
 1) Дата программно создаваемого документа Перемещение
 2) Дата среза остаток в документе Расходная после созданного документа Перемещение
Вложения:
_1.08-ZolteR-.dt
Название: Задача 1.08
Отправлено: fimanich от Апрель 09, 2013, 01:21:59 pm
ZolteR, в задаче явно указано, что перемещение должно отражаться документом Расходная а у вас отдельный документ. Кто мешает просто сделать 2 операции для расходной: Перемещение и Продажа?
 Если НЕ Выборка.Количество() - можно было проверять результат запроса методом Пустой()
 Вместо Сообщить в обработке провер. заполнения лучше СообщениеПользователю
 Дата вновь создаваемого документа лучше Дата-1 чем при чтении остатков ВидГраницы.Включая
 перед записью пустого набора нужно БлокироватьДляИзменения = Истина;
 В обработке проведения в Расходной 2 запроса - вообще не айс, т.к. легко решается одним.
 Блокировка устанавливается только перед вторым запросом, в то же время в первом запросе читаются остатки, следовательно, могут быть считаны неверно.

 Оформление отчета не совсем как на картинке.
Название: Задача 1.08
Отправлено: fimanich от Апрель 09, 2013, 01:25:40 pm
Прикрепляю свое решение. Критика и вопросы приветствуются.
Вложения:
fimanich_01_08.dt
Название: Задача 1.08
Отправлено: TuMyP1985 от Июнь 08, 2013, 10:00:39 pm
Выкладываю свой вариант решения этой задачи, может кому будет интересно.
Вложения:
KTT_1_8.dt
Название: Задача 1.08
Отправлено: bilateral от Июнь 12, 2013, 01:13:02 pm
Вроде даже не сложная была. Подскажите как сделать шапку правильную как в задании без макета?

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

Цитата (TuMyP1985)
Выкладываю свой вариант решения этой задачи, может кому будет интересно.
В блокировке у вас блокируется вся номенклатура. Между тем это ИМО неверно. Если просто продажа - надо блочить номенклатуру по отделу откуда идет продажа, если же еще перемещение будет - то оба отдела надо блокировать. Но точно не всю.
Вложения:
bilateral_upr_8.dt
Название: Задача 1.08
Отправлено: TuMyP1985 от Июнь 12, 2013, 08:25:59 pm
С блокировками понял, спс.
 С отчетом - вот предлагаю 2 варианта (2 схемы компоновки данных в отчете), думаю на экзамене первый вариант бы устроил.
Вложения:
___1_8_.erf
Название: Задача 1.08
Отправлено: bilateral от Июнь 17, 2013, 03:16:50 pm
Цитата (TuMyP1985)
С отчетом - вот предлагаю 2 варианта
В том и другом варианте отчета шапка все равно не такая smile Там пустые места под названия ресурсов есть (всего три строки), а по заданию надо шапка с одной строкой. Макета при помощи сделать как это знаю. А вот без него как... ХЗ.
Название: Задача 1.08
Отправлено: artfa от Июнь 20, 2013, 08:08:15 pm
мой вариант решения, алгоритм рабоатет правильно, однако не удалось настроить отчет как у условии задачи, все сажусь изучать курс по СКД, кстати у bilateral в блокировках перепутаны местами параметры
 
Код
ЭлементБлокировки.УстановитьЗначение(Отдел,"Отдел");
 ЭлементБлокировки.УстановитьЗначение(Справочники.Отделы.ОтделЗакупок,"Отдел");


 Добавлено (20.06.2013, 20:08)
 ---------------------------------------------
 
Цитата (artfa)
все сажусь изучать курс по СКД

 после изучения курса по СКД настроил отчет как в услвоии задачи, bilateral - кроме как с помощью макета настроить то же не смог
Вложения:
1_8.dt
Название: Задача 1.08
Отправлено: artfa от Июль 28, 2013, 03:50:41 pm
исправленное решение
Вложения:
1.8.dt
Название: Задача 1.08
Отправлено: ReDvAlL от Декабрь 08, 2013, 08:14:17 pm
Доброго времени суток) smile Выкладываю свое решение. Если у кого есть время, посмотрите пожалуйста. Хотелось бы, чтобы замечаний не было, но такое большая редкость, так что с удовольствием выслушаю критику wink
Вложения:
ReDvAlL_1.8.dt
Название: Задача 1.08
Отправлено: Alexander от Декабрь 17, 2013, 11:18:35 pm
ReDvAlL, ну давайте я рискну покритиковать :). Правда по мелочам

 - зачем вы делаете группировку по номенклатуре - в процедуре ВыполнитьПеремещение. Соединение 1 в 1.
 - при отработке исключения полезно в текст сообщения включать ОписаниеОшибки()
 - себестоимость быстрее писать в запросе
 - наценки по отделам лучше бы задавать через РС (IMHO)

 А вот и не мелочь.
 - сумма при перемещении считается не верно. Более того при последовательном проведении удалось выйти в минус. Попробуйте сами.
 Купите 1 по 100, переместите в отдел 20
 купите еще раз 100.
 Теперь пробуем продать из отдела 10. Программа начинает просить отдел закупа. После установки отдела закупа и снятия галки на перемещение получаем расход из отдел 10 по 132 без перемещения.
 - при Вашем подходе блокировки только на место отгрузки недостаточно, поскольку  анализируются остатки не только там.

 ну вот. как то так. Если что строго не судите - я первый раз делал анализ тут.
Название: Задача 1.08
Отправлено: ReDvAlL от Декабрь 28, 2013, 01:29:16 pm
Alexander, спасибо за комментарии smile Да, есть такой косяк...Надо будет исправить smile
Название: Задача 1.08
Отправлено: YFred от Апрель 16, 2014, 05:04:42 pm
Мое решение. Сразу скажу, ветку не читал, другие решения не смотрел. Делал сам.
 По моему полностью рабочее решение получилось. Задача показалась легкой по сравнению со всеми предыдущими.
Вложения:
YFred_1.8.dt
Название: Задача 1.08
Отправлено: Demy от Апрель 26, 2014, 04:36:45 pm
Наконец-то возобновил решение задач. Кто сможет посмотрите. Жду суровой критики.

Добавлено (26.04.2014, 16:27)
---------------------------------------------
YFred, посмотрел твое решение. Вот несколько замечаний:
 1. Думаю блокировать весь регистр "ОстаткиНоменклатуры" только по номенклатуре очень жестоко. Ведь остальные торговые точки не должны ждать пока с этот документ не отработает. Думаю нужно блокировать по списку номенклатуры + подразделение.
 2. Неправильно работает контроль остатков. Если у торговой точки запрашиваемого товара вообще нет, зато в отделе закупок его предостаточно, то документ перемещения не создается, а движения уходят в минус.
 3. Полагаю неправильно контролировать остаток по отделу закупок в момент проведения документа, а создавать документ перемещения секундой раньше. Если например пройдет приходник, и в этой же секунде расходник, который потребует создать документ перемещения, а звезды сойдутся так что секундой раньше товара было недостаточно, то программа некрасиво ругается.

 Пока вроде все.

Добавлено (26.04.2014, 16:36)
---------------------------------------------
Кстати, забыл спросить. В моем решении, если товара недостаточно, и документ перемещения повестись не может, то программа выдает сообщение: "В данной транзакции уже происходили ошибки". Это думаю приведет пользователя в восторг! smile Поэтому если кто знает подскажите как решить эту проблему.


Вложения:
Demy_1_8.dt
Название: Задача 1.08
Отправлено: Renegade от Апрель 29, 2014, 05:41:00 pm
Мой вариант
Вложения:
Kain_1_8.dt
Название: Задача 1.08
Отправлено: YFred от Апрель 30, 2014, 10:58:58 am
Цитата Demy ()
YFred, посмотрел твое решение. Вот несколько замечаний: 1. Думаю блокировать весь регистр "ОстаткиНоменклатуры" только по номенклатуре очень жестоко. Ведь остальные торговые точки не должны ждать пока с этот документ не отработает. Думаю нужно блокировать по списку номенклатуры + подразделение. 2. Неправильно работает контроль остатков. Если у торговой точки запрашиваемого товара вообще нет, зато в отделе закупок его предостаточно, то документ перемещения не создается, а движения уходят в минус. 3. Полагаю неправильно контролировать остаток по отделу закупок в момент проведения документа, а создавать документ перемещения секундой раньше. Если например пройдет приходник, и в этой же секунде расходник, который потребует создать документ перемещения, а звезды сойдутся так что секундой раньше товара было недостаточно, то программа некрасиво ругается.
1. Думаю это верно, но тогда возникает вопрос как заблокировать регистр по номенклатуре и по 2м складам? Не понял как это сделать, подскажите.
 2. Косяк исправил.
 3. А если создавать документ перемещения датой документа, то он получается раньше документа продажи, что тоже не есть хорошо. Или я не прав?
Вложения:
4659047.dt
Название: Задача 1.08
Отправлено: ksandr от Май 22, 2014, 07:53:40 pm
Решил задачу, вроде все работает, если кто-нибудь сможет проверьте пожалуйста.
Вложения:
ksandr_1_8.dt
Название: Задача 1.08
Отправлено: shlaev от Июнь 29, 2014, 12:11:49 am
Цитата ksandr
Решил задачу, вроде все работает, если кто-нибудь сможет проверьте пожалуйста.


 Не наложены блокировки. Если сначала делаешь запрос к остаткам, а потом списываешь, то надо сначала наложить блокировку. Проблема копеек не решена. Запрос в цикле - супер ошибка. Дата документа, которым подгружаешь остаток с отдела закупа, скорее всего должна быть не равна дате документа, которым продаешь.
Вложения:
shlaev_1_8.dt
Название: Задача 1.08
Отправлено: mulradik от Август 09, 2014, 06:01:50 pm
Прошу протестировать моё решение на предмет ошибок или неоптимальности кода.
 https://yadi.sk/d/jAFnlmNSZLEAM
 Заранее благодарю.

Добавлено (09.08.2014, 18:01)
---------------------------------------------
Если кто подскажет, как наложить блокировку сразу на два подразделения при перемещении - буду очень признателен!

Название: Задача 1.08
Отправлено: GPetr от Октябрь 07, 2014, 12:45:09 pm
Решил своим способом. С помощью пакета запроса получил список нехватки товара и список для списания.
 Блокировки на перемещение и продажу по разным отделам.
 http://my-files.ru/u306ij
 Буду презнателен за комментарии. Заранее благодарю.
Название: Re: Задача 1.08
Отправлено: Svetik_1704 от Ноябрь 26, 2014, 08:56:43 am
Подскажите какую дату указать для программно создаваемого документа перемещения (когда на точке не хватат товара и требуется его переместить из закупок). Вариант типа ДокПеремещение.Дата = Дата-1 мне не нравиться, т.к. если есть еще документы продажи в эту же Дату, то будет нарушена последовательность документов и соответственно может измениться себестоимость продажи. Каким образом организовать запись документов по перемещению и продаже, чтобы не была нарушена последовательность документов на оси времени, т.е. чтобы сначала шло перемещение, а потом продажа, и между ними никогда не существовали другие документы????
Название: Re: Задача 1.08
Отправлено: olsput от Ноябрь 26, 2014, 04:23:10 pm
вариант решения делал сам, правда предварительно просмотрел  предложенные ранее варианты.
использовал при проведении РасходнойНакладной признак "Перемещение".
то есть из РасходнойНакладной для продажи, в случае недостатка товара на Точке создается
РасходнаяНакладная с признаком Перемещение=Истина и Дата=Дата-1, этот новый документ сохраняется и проводится.
после возвращаемся к Накладной на продажу и проводим и ее.
Название: Re: Задача 1.08
Отправлено: olsput от Ноябрь 26, 2014, 04:33:41 pm
Попутно хочу ответить на вопрос по поводу "дата=дата-1"
мне такой вариант кажется допустимым в рамках задачи 1.08
Все же она довольно искуственно придуманная . И вариант с дата-1сек - практически спорных ситуаций не создаст.
-------
далее часто возникающий вопрос по поводу копеек - мне кажется формула
Движение.Сумма = Выборка.Количество/Выборка.КоличествоНаТочке*Выборка.СебестоимостьНаТочке;
эту проблему легко решает. Здесь важен именно порядок указанных полей.
вначале идет деление. И если оно дает 1, то списывается ВЕСЬ остаток


 
Название: Re: Задача 1.08
Отправлено: olsput от Ноябрь 26, 2014, 04:36:37 pm
еще  в Теме был вопрос по поводу "как наложить блокировку сразу на два подразделения"
попробовал в своем решении и его решить. использовал такой "корявый" вариант
   Блокировка = Новый БлокировкаДанных;
   ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
   ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
   
   ТабСписЗначений = СписокНоменклатуры.Выгрузить( ,"Номенклатура");
   
   ДобЗначТовара = ТабСписЗначений[0].Номенклатура;
   ТабСписЗначений.Колонки.Добавить("Подразделение",,"Подразделение");
   ТабСписЗначений.ЗаполнитьЗначения(Подразделение,"Подразделение");  /// реквизит в РасходнаяНакладная
   НовСтр=ТабСписЗначений.Добавить();
   НовСтр.Номенклатура=ДобЗначТовара;
   НовСтр.Подразделение=ОтделЗакупок; //// это константа  ОтделЗакупок = Константы.ОтделЗакупок.Получить();
   
   ЭлементБлокировки.ИсточникДанных = ТабСписЗначений;
   //ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;

   ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Подразделение", "Подразделение");
   ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
   
   Блокировка.Заблокировать();
Название: Re: Задача 1.08
Отправлено: Svetik_1704 от Ноябрь 27, 2014, 02:22:35 pm
Не вижу смысла сразу ставить блокировку на 2 отдела. Все блокируется по мере необходимости. Единственно, что у меня не получилось, дак это убрать сообщение "В данной транзакции уже произошла ошибка" в случае, когда есть превышение остатков при программном создании Перемещения. На сколько это критично на экзамене?


Название: Re: Задача 1.08
Отправлено: Odines от Декабрь 08, 2014, 08:39:41 pm
Посмотрите пжл на мое решение задачи!
Название: Re: Задача 1.08
Отправлено: Lty3 от Март 21, 2015, 12:53:32 am
IMHO
Название: Re: Задача 1.08
Отправлено: rusmosav от Март 23, 2015, 09:58:32 am
Прощу оценить.
Название: Re: Задача 1.08
Отправлено: gamletv1 от Июнь 15, 2015, 11:52:07 am
Господа, кому не сложно, проверьте мое решение пожалуйста. Буду рад конструктивной критике. Пытался сделать через "ПолучитьОперативнуюОтметкуВремени", но по итого все же пришел к варианту дата-1 (при не оперативном проведении документа много заморочек). Думаю, что на экзаменационной задаче это будет не критично.
Название: Re: Задача 1.08
Отправлено: Sergey-Vl от Июнь 22, 2015, 10:00:35 am
Просьба посмотреть решение задачи.
Название: Re: Задача 1.08
Отправлено: AlenkaInt от Октябрь 24, 2015, 12:11:47 pm
Решаю задачу. У меня один регистр. ОстаткиНоменклатуры. Изм. - Номенклатура, Отдел. Рес. Количество, Стоимость. Я не совсем поняла что мы пишем в стоимость при продаже. Себестоимость по отделу или стоимость по которой продали? Я везде писала среднюю себестоимость. И теперь из-за этих наценок у меня регистр не выходит в ноль.. Подскажите, в чем моя ошибка?
Базу на всякий случай прикрепляю.
Название: Re: Задача 1.08
Отправлено: titan6662000 от Октябрь 28, 2015, 11:09:21 am
Если выполнять задания с учетом того, что такая задача должна отрабатываться на 100% во всех случаях в 1С не решаемая, так как нельзя передвигать моменты внутри секунды или я о способе двигать один документ относительно другого не знаю. Если я ошибаюсь то плиз скажите как решать задачу.

Причины:
1. Если мы используем ДатаПеремещения = ДатаРеализации -1. То данный способ у нас не учитывает возможность того, что в секунду ДатаРеализации в отдел закупок может поступить необходимый товар документом расположенным левее на оси времени, чем документ продажи. И естественно что док. перемещения не проведется так как он должен быть между док. поступления и реализации.
2. Если даты равны. то продажа не проведется так как она будет стоять левее документа перемещения на оси времени.
3. Если ДатаПеремещения = ДатаРеализации, а ДатаРеализации = ДатаРеализации + 1 то не учитываются документы проведенные в туже секунду, что и ДатаПеремещения и "ДатаРеализации + 1".

Но так как такая задача существует - то плиз кто сдал этот экзамен скажите какое решение приемлемо для сдачи.

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

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

Схема такая должна быть:
Приходный ордер: Приход ОтделЗакупок Утюг 10 шт 100 руб
Перемещение: Расход ОтделЗакупок Утюг 7 шт 70 руб; Приход торговая точка Утюг 7 шт 77 (70 + 7) (если наценка 10 проц)руб
Продажа: Расход торговая точка Утюг 7 шт 77 руб

ps покритикуйте, плиз, моё решение
Название: Re: Задача 1.08
Отправлено: icon_nvr от Февраль 02, 2016, 11:36:57 am
Вот моё решение. Ни на чьём решении не основывалась, поэтому, может, чем-то от всех отличается)
Прокомментируйте/покритикуйте, пожалуйста.

З.Ы. Вопрос: возможно без макета сделать отчет точь-в-точь как в условии?? Конкретно касательно заголовков - например, чтобы было написано просто Приход, а не Приход, а под ним - Количество, Стоимость? И как сделать, чтобы поле, по которому группировка - в данном случае Склад - выводилась в отдельной колонке (как в условии)?
Название: Re: Задача 1.08
Отправлено: Fat_Mike от Март 18, 2016, 11:14:36 am
Прокомментируйте ребята пожалуйста, кому не сложно  :) не уверен что с транзакционной блокировкой все верно ыы :-[
Название: Re: Задача 1.08
Отправлено: Головлев Владислав от Март 24, 2016, 07:46:51 am
Если выполнять задания с учетом того, что такая задача должна отрабатываться на 100% во всех случаях в 1С не решаемая, так как нельзя передвигать моменты внутри секунды или я о способе двигать один документ относительно другого не знаю. Если я ошибаюсь то плиз скажите как решать задачу.

Причины:
1. Если мы используем ДатаПеремещения = ДатаРеализации -1. То данный способ у нас не учитывает возможность того, что в секунду ДатаРеализации в отдел закупок может поступить необходимый товар документом расположенным левее на оси времени, чем документ продажи. И естественно что док. перемещения не проведется так как он должен быть между док. поступления и реализации.
2. Если даты равны. то продажа не проведется так как она будет стоять левее документа перемещения на оси времени.
3. Если ДатаПеремещения = ДатаРеализации, а ДатаРеализации = ДатаРеализации + 1 то не учитываются документы проведенные в туже секунду, что и ДатаПеремещения и "ДатаРеализации + 1".

Но так как такая задача существует - то плиз кто сдал этот экзамен скажите какое решение приемлемо для сдачи.

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

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

Схема такая должна быть:
Приходный ордер: Приход ОтделЗакупок Утюг 10 шт 100 руб
Перемещение: Расход ОтделЗакупок Утюг 7 шт 70 руб; Приход торговая точка Утюг 7 шт 77 (70 + 7) (если наценка 10 проц)руб
Продажа: Расход торговая точка Утюг 7 шт 77 руб

ps покритикуйте, плиз, моё решение

Код не смотрел, но при проведении расходной накладной, с указанием количества большего, чем есть в точке продаж выскакивает сообщение: "Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.РасходнаяНакладная.МодульОбъекта(165)}: Ошибка при вызове метода контекста (Записать)
      ДокументПеремещения.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Не удалось провести: "Расходная накладная"!"
Название: Re: Задача 1.08
Отправлено: CSiER от Март 24, 2016, 09:27:37 am
Здравствуйте! Скажите, где создавать документ перемещение? Как я понимаю можно сделать следующим образом: сначала мы делаем движение, затем проверяем остатки,  если не хватает то создаем и проводим документ "перемещение", т.е. как я понимаю надо в цикле обхода выборки создавать новый запрос с контролем остатка в отделе "Закупка" и создавать и проводить документ? но ведь запрос в цикле не есть хорошо. Или каким то другим образом это можно реализовать?
Сам готовлюсь недавно, поэтому как правильно сделать сказать не могу, можно сделать так: получить остатки по точке продаже и отделу закупа (в сумме) и уже по ним принять решение проводить документ или нет; затем сформировать (по этому же запросу) список номенклатуры, по которой надо сделать перемещение и провести его, затем уже классическое формирование движений по текущему документу (через новый запрос).
Название: Re: Задача 1.08
Отправлено: Головлев Владислав от Март 24, 2016, 10:54:56 am
Здравствуйте! Скажите, где создавать документ перемещение? Как я понимаю можно сделать следующим образом: сначала мы делаем движение, затем проверяем остатки,  если не хватает то создаем и проводим документ "перемещение", т.е. как я понимаю надо в цикле обхода выборки создавать новый запрос с контролем остатка в отделе "Закупка" и создавать и проводить документ? но ведь запрос в цикле не есть хорошо. Или каким то другим образом это можно реализовать?
Сам готовлюсь недавно, поэтому как правильно сделать сказать не могу, можно сделать так: получить остатки по точке продаже и отделу закупа (в сумме) и уже по ним принять решение проводить документ или нет; затем сформировать (по этому же запросу) список номенклатуры, по которой надо сделать перемещение и провести его, затем уже классическое формирование движений по текущему документу (через новый запрос).
Я по новому методу списания делаю, т.е. сначала делаю движения, а затем новым запросом проверяю остатки, прохожу по каждой строке, если в какой то строке есть "нехватка"(это выбор из условия в запросе, когда количествоостаток меньше количества введеного в документе), то булевой переменной  "нехватка" присваиваю "Истина", затем условие: если нехватка тогда... и вызываю функцию создания и записи нового документа.
Название: Re: Задача 1.08
Отправлено: Головлев Владислав от Март 24, 2016, 04:06:32 pm
Доделал) Посмотрите моё решение пожалуйста, скажите на что нужно было накладывать блокировки? Я совсем не давно начал изучение 1с с блокировками еще не разобрался)
Название: Re: Задача 1.08
Отправлено: clancy08 от Март 28, 2016, 08:48:35 pm
Большое спасибо!!!

Не могли бы объяснить.
Если режим проведения не оперативный, почему не ставится блокировка?
Почему не ставится блокировка на отдел "Закупка" ведь возможно, что одновременно, кто то может списать товар до того как вы проведете документ?
Название: Re: Задача 1.08
Отправлено: vilt от Июнь 17, 2016, 01:30:14 pm
Выкладываю свое решение задачи. По-моему учел все. Секунду у новой расходной отнимать не пришлось. Готов к критике.
Название: Re: Задача 1.08
Отправлено: vilt от Июнь 18, 2016, 08:48:08 am
Нашел ошибку во втором запросе. Добавил "левое" соединение таблицы документа с новой расходной, иначе получались лишние строки если превышение количества не по каждой номенклатуре.
Название: Re: Задача 1.08
Отправлено: alfalume от Сентябрь 11, 2016, 11:44:34 am
мое решение
Название: Re: Задача 1.08
Отправлено: erdem.badluev от Сентябрь 12, 2016, 10:01:47 am
мое решение

Всё на мой взгляд новичка хорошо, кроме, разве что в модуле объекта Расходной накладной при вызове процедуры ВыполнитьПеремещение нужно было передавать менеджер временных таблиц, в вашем случае бедный Список формируется аж 3 раза: сначала из документа группируется, затем просто выбирается, затем (в процедуре ВыполнитьПеремещение) формируется из таблицы значений.
Название: Re: Задача 1.08
Отправлено: erdem.badluev от Сентябрь 12, 2016, 10:42:15 am
Жду критики.
Название: Re: Задача 1.08
Отправлено: Psychoproger от Октябрь 28, 2016, 10:10:49 am
Прошу покритиковать решение (я новичок, не знакомый ни с одной типовой конфиурацией, ковыряю платформу по книжкам), заранее прошу прощения, что без блокировок и отчета.

Название: Re: Задача 1.08
Отправлено: jonik от Июнь 06, 2017, 05:27:28 pm
Всем привет. Сделано полностью вместе с отчетом.
Вопрос по отчету:
Уже не в первой задаче в поле "Начальный остаток"(например) нужно отобразить значения количества и суммы, причем заголовка этих ресурсов быть не должно(короче отчет как в книжке). Как это сделать?
Название: Re: Задача 1.08
Отправлено: const86 от Сентябрь 03, 2017, 10:43:25 pm
Всем привет. Сделано полностью вместе с отчетом.
Вопрос по отчету:
Уже не в первой задаче в поле "Начальный остаток"(например) нужно отобразить значения количества и суммы, причем заголовка этих ресурсов быть не должно(короче отчет как в книжке). Как это сделать?

Делается через Макет. Создается одна область заголовка группировки. И по области группировки на каждую группировку таблицы.
Помимо этого следует в настройках отключить макет оформления, итогов, автопозицию ресурсов и фиксацию
Название: Re: Задача 1.08
Отправлено: jonik от Сентябрь 04, 2017, 12:38:40 pm
Всем привет. Сделано полностью вместе с отчетом.
Вопрос по отчету:
Уже не в первой задаче в поле "Начальный остаток"(например) нужно отобразить значения количества и суммы, причем заголовка этих ресурсов быть не должно(короче отчет как в книжке). Как это сделать?

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

Можешь скинуть свой вариант, как то плохо въезжаю ???
Название: Re: Задача 1.08
Отправлено: alex1248 от Сентябрь 04, 2017, 12:59:27 pm
Всем привет. Сделано полностью вместе с отчетом.
Вопрос по отчету:
Уже не в первой задаче в поле "Начальный остаток"(например) нужно отобразить значения количества и суммы, причем заголовка этих ресурсов быть не должно(короче отчет как в книжке). Как это сделать?

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

Можешь скинуть свой вариант, как то плохо въезжаю ???
Потренироваться можно, а на экз не стоит терять время на это, достаточно изменить заголовки.
Название: Re: Задача 1.08
Отправлено: const86 от Сентябрь 09, 2017, 08:12:07 pm
Потренироваться можно, а на экз не стоит терять время на это, достаточно изменить заголовки.

Иначе не получится та форма отчёта, что предполагается. Шапка таблицы будет не такая. Хотя тут в каком настроении преподаватель будет. Так свой макет всего лишь +3 минуты добавляет
Название: Re: Задача 1.08
Отправлено: const86 от Сентябрь 09, 2017, 09:58:32 pm

Можешь скинуть свой вариант, как то плохо въезжаю ???

Вариант из задачи 1.10.
Название: Re: Задача 1.08
Отправлено: jonik от Ноябрь 29, 2017, 11:15:39 am
Всем привет. Сделано полностью вместе с отчетом.
Вопрос по отчету:
Уже не в первой задаче в поле "Начальный остаток"(например) нужно отобразить значения количества и суммы, причем заголовка этих ресурсов быть не должно(короче отчет как в книжке). Как это сделать?
Подкорректировал
Название: Re: Задача 1.08
Отправлено: НатальяЮГ от Июль 16, 2018, 10:07:59 am
Мой вариант  :)

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

Критика приветствуется :) :)
Название: Re: Задача 1.08
Отправлено: Alexey_89 от Август 07, 2019, 03:27:58 pm
Тут все минимально, аскетично. Пример Натальи очень перегружен. Вариант jonik_1.8.dt вовсе не работает (деление на ноль). Я не понял, почему блокировки регистров работают не пересекаясь при программном создании и проведения перемещения в обработке проведения реализации.
Название: Re: Задача 1.08
Отправлено: Unique от Август 07, 2019, 04:22:12 pm
И я тоже)
Название: Re: Задача 1.08
Отправлено: Alexey_89 от Август 08, 2019, 02:30:09 pm
И я тоже)
У вас не создается автоматически документ "расходная накладная" с видом "перемещение" по условию задачи. Вместо этого все требуемые движения создаются в одной расходной накладной. А зачем такая конструкция в запросе "1 + 0.01 * "? Видел такое еще у кого-то.
Название: Re: Задача 1.08
Отправлено: iPovar от Сентябрь 12, 2019, 10:11:57 pm
Всех приветствую.
Предлагаю свой вариант. За время экзамена навряд ли успел бы.
 
Название: Re: Задача 1.08
Отправлено: Евгений_нвкз от Сентябрь 28, 2020, 07:06:56 am
Всем привет. выкладываю свое решение, по критикуйте, с отчетом особо не заморачивался.