Автор Тема: Задача 1.02  (Прочитано 70456 раз)

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

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.02
« Ответ #60 : Сентябрь 02, 2011, 01:58:39 pm »
Quote (loky30)
В регистр продажи должны ли попадать услуги?
 Я смотрел лекции Чистова там он показывает подобный пример, там услуги не попадают не в регистр не в отчет, является ли это ошибкой?

 
Code

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

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

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

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

 Если сомневаетесь (это касается всех без исключения задач) - решите разными способами, лишним не будет.
« Последнее редактирование: Сентябрь 02, 2011, 02:02:08 pm от Олег »

loky30

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михаил
Задача 1.02
« Ответ #61 : Сентябрь 02, 2011, 03:25:25 pm »
Gyd спасибо за ответ.
 Не внимательно я смотрел условия задачи. В следующий раз буду внимательней.


Грейт

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Gr. Maksim
Задача 1.02
« Ответ #62 : Сентябрь 23, 2011, 07:40:02 am »
Выкладываю свое решение. Думаю, что оно довольно правильное
Вложения:
Great_1.2.dt

Reiter

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Andr
Задача 1.02
« Ответ #63 : Сентябрь 29, 2011, 11:09:56 pm »
Грейт, а то что у вас в продажи если с разных партий списывать попадает две записи по одноик и тому же товару.. это допустимо? .. они то в итоге сгруппируются но всё же.
 У меня вопрос, как лучше формировать движения .. 1) построчным добавлением в коллекцию движений 2) сформировать таблицу с движениями максимально сгруппированную и затем загрузить её в движения регистра.

chilli

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
Задача 1.02
« Ответ #64 : Октябрь 06, 2011, 02:37:47 am »
Подправил
Вложения:
chili_1_2.dt

aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Задача 1.02
« Ответ #65 : Октябрь 13, 2011, 08:46:07 am »
to chilli
 Не знаю ошибка это или нет, но что у вас что у других очень часто встречаю проверку на услугу реализованную вот так
 "ВыборкаИтоги.Номенклатура.Услуга"
 При обращении через точку система делает каждый раз неявный запрос по номенклатуре, что бы получить значение услуги.
 В "Сообщение.Текст = "Не хватает товара: " + ВыборкаИтоги.Номенклатура + " в количестве: "
 ВыборкаИтоги.Номенклатура тоже обращается к базе что бы получить представление номенклатуры.
 А это вроде как попадает под не оптимальное решение, лучше в запросе сразу получать значение услуги и представления.

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

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

 Ну и для организации движения по регистру ОстаткиНоменклатуры вы два раза обходите результат запроса, а для движения по регистру продаж еще раз создаете запрос и обходите не оптимально. Да и искать в выборке данные по партии тоже не кашерно, выборку нужно обходить.
« Последнее редактирование: Октябрь 13, 2011, 09:30:41 am от Александр »

chilli

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Дмитрий
Задача 1.02
« Ответ #66 : Октябрь 13, 2011, 09:45:12 am »
aveego, Спасибо за Ваши мысли. Доведем программу до оргазма! lol
 Где то встречался список за что баллы снижают на аттестации...
« Последнее редактирование: Октябрь 13, 2011, 10:04:07 am от Дмитрий »

aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Задача 1.02
« Ответ #67 : Октябрь 13, 2011, 11:54:32 am »
вот официальный файл как проходит экзамен в нем есть информация и по ошибкам http://www.1c.ru/rus/partners/training/files/ATT82PL.zip

aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Задача 1.02
« Ответ #68 : Октябрь 13, 2011, 01:51:14 pm »
Будьте любезны оцените, буду рад любой критике
Вложения:
aveego_1_2.dt

Кенгуру

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кенгуру
Задача 1.02
« Ответ #69 : Октябрь 13, 2011, 02:16:37 pm »
aveego,
 в общем понравилось, пару советов по кодингу

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

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

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

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

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
Задача 1.02
« Ответ #70 : Октябрь 13, 2011, 02:32:22 pm »
aveego

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

 А надо так:

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

 Иначе пустой набор не будет записан.

aveego

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
Задача 1.02
« Ответ #71 : Октябрь 14, 2011, 08:22:03 am »
Кенгуру, Romdavid Огромное спасибо, ошибки понял советы взял на вооружение.

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

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

 Система дает записать, если закомментировать
 Движения.ОстаткиНоменклатуры.Записать();
 То выдает сообщение о нехватке.
Вложения:
8145132.dt
« Последнее редактирование: Октябрь 14, 2011, 08:26:28 am от Александр »

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
Задача 1.02
« Ответ #72 : Октябрь 14, 2011, 10:19:45 am »
aveego

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

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

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

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

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

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


 А изначально Записывать установлено в "Ложь".

Oliver

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: Юрий
Задача 1.02
« Ответ #73 : Октябрь 15, 2011, 01:19:07 pm »
Движения.ОстаткиНоменклатуры.Записать(); - движения будут записаны всегда, при любых флагах.

 Движения.Записать() - будет записано только те наборы у которых свойство записывать установлено в истина.

Romdavid

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Давид
Задача 1.02
« Ответ #74 : Октябрь 15, 2011, 01:39:15 pm »
Oliver, спасибо за разъяснение