Автор Тема: 1.3  (Прочитано 75833 раз)

0 Пользователей и 1 Гость просматривают эту тему.

garden

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Наталья
1.3
« Ответ #30 : Май 11, 2011, 11:20:45 pm »
И меня гляньте кто сможет. Буду ждать!
Вложения:
1-03_garden.dt

Ikem

  • Новичок
  • *
  • Сообщений: 1
1.3
« Ответ #31 : Май 18, 2011, 10:33:25 am »
Прошу просмотреть мой вариант.
 Заранее сердечное спасибо.
Вложения:
ikem_1_3.dt


DoctorRoza

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Алексей
1.3
« Ответ #32 : Июнь 21, 2011, 11:06:01 pm »
Коллеги! Прошу посмотреть мое решение задачи 1.3. Лично мне задача понравилась, потребовалось освежить в памяти о функции как РАЗНОСТЬДАТ() smile

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

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


Вложения:
DoctorRoza_1_3.dt
« Последнее редактирование: Июнь 21, 2011, 11:04:07 pm от Алексей »

kravius

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кетова Екатерина Владимировна
1.3
« Ответ #33 : Июнь 23, 2011, 10:34:17 am »
Подскажите пожайлуста, если в конфигурации каркасной стоит режим управления блокировок - автоматический, надо писать код под это свойство, ну то есть НЕ писать БлокироватьДляИзменения() при считывании остатков или нужно поменять это свойство в самой конфигурации и блокировать в коде? Что правильнее? В видеолекции по разбору атестации в коде блокируют.

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
1.3
« Ответ #34 : Июнь 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
« Последнее редактирование: Июнь 23, 2011, 12:46:11 pm от Сергей »

kravius

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кетова Екатерина Владимировна
1.3
« Ответ #35 : Июнь 23, 2011, 03:25:22 pm »
Вот мое решение 1.3. После прочтения всех статей сделала вывод: что если нужно контролировать остатки и расчитывать себестоимость в одной ОбработкеПроведения НОВЫЙ механизм проведения использовать не стоит, поэтому сделала по "классике". Прошу написать отзывы, кому не лень smile
Вложения:
0785662.dt
« Последнее редактирование: Июнь 23, 2011, 04:56:46 pm от Кетова Екатерина Владимировна »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
1.3
« Ответ #36 : Июнь 24, 2011, 10:35:45 am »
Quote (kravius)
Прошу написать отзывы, кому не лень

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

 Вот этого у вас в принципе не должно быть в выборке. Во-первых вы устанавливали фильтр на номенклатуру (искать в регистре НЕ услуги), во-вторых - у вас в регистре остатков врятли будут находится услуги.

kravius

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кетова Екатерина Владимировна
1.3
« Ответ #37 : Июнь 24, 2011, 12:12:23 pm »
Quote (Gyd)
Вот этого у вас в принципе не должно быть в выборке. Во-первых вы устанавливали фильтр на номенклатуру (искать в регистре НЕ услуги), во-вторых - у вас в регистре остатков врятли будут находится услуги.

 Согласна. Запрос переделала немного после того, как написала обработчик. Исправила. А в целом как?

SergTH000

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

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


 Проще так:

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


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

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


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

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


 Тут проблема копеек...
« Последнее редактирование: Июнь 24, 2011, 03:36:39 pm от Сергей »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
1.3
« Ответ #39 : Июнь 24, 2011, 04:12:04 pm »
Quote (SergTH000)
в Расходной услуги могут быть легко и их надо записывать в РН Продажи.

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

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

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

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

 Дак ей же нужны все остатки номенклатуры, а не только по указанным в документе партиям. Или я неправильно понимаю механизм работы блокировок?
« Последнее редактирование: Июнь 24, 2011, 04:12:48 pm от Олег »

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
1.3
« Ответ #40 : Июнь 24, 2011, 04:20:18 pm »
Gyd,
 1.
Quote
1. не включать в запрос услуги (что на мой взгляд правильно, запрос более оптимальный), но при этом не забыть их занести в регистр Продажи.
 


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

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


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

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

 Я не знаю условия =), но в запросе отбор и соединение идут по Номенклатуре + Партии, значит и блокировать по ним надо

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
1.3
« Ответ #41 : Июнь 27, 2011, 12:43:59 pm »
Quote (SergTH000)
Так в запросе выбирается сначала сам документ и левым соединением аттачится к РН..Как потом записывать услуги, если ты их не выбрал? Заново перебирать ТЧ?

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

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

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

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
1.3
« Ответ #42 : Июнь 28, 2011, 11:57:19 am »
Quote
Да, это быстро. Просто логика такая: зачем искать в базе данных то чего там нет. И при вариантах типа 100 услуг - 1 товар думаю это оправдано.


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

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


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

Gyd

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

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

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

 Вроде бы понял. Спасибо.
« Последнее редактирование: Июнь 28, 2011, 05:40:56 pm от Олег »

ital

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
1.3
« Ответ #44 : Июнь 29, 2011, 01:03:05 pm »
Выкладываю свое решение этой задачи.
 Коментарии
Вложения:
8178041.dt