Advertisement
Guest User

Untitled

a guest
Feb 13th, 2021
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.54 KB | None | 0 0
  1. Процедура ОбработкаПроведения(Отказ, Режим)
  2.  
  3. Движения.ОстаткиМатериалов.Записывать = Истина;
  4. Движения.СтоимостьМатериалов.Записывать = Истина;
  5. Движения.Продажи.Записывать = Истина;
  6.  
  7. //Создать менеджер временных таблиц
  8. МенеджерВТ = Новый МенеджерВременныхТаблиц;
  9.  
  10. Запрос = Новый Запрос;
  11.  
  12. //Укажем, какой менеджер временных использует этот запрос
  13. Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
  14.  
  15. Запрос.Текст =
  16. "ВЫБРАТЬ
  17. | ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
  18. | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
  19. | СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
  20. | СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
  21. |ПОМЕСТИТЬ НоменклатураДокумента
  22. |ИЗ
  23. | Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
  24. |ГДЕ
  25. | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
  26. |
  27. |СГРУППИРОВАТЬ ПО
  28. | ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
  29. | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры";
  30.  
  31. Запрос.УстановитьПараметр("Ссылка", Ссылка);
  32.  
  33. РезультатЗапроса = Запрос.Выполнить();
  34.  
  35. Запрос2 = Новый Запрос;
  36. Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
  37. Запрос2.Текст = "ВЫБРАТЬ
  38. | НоменклатураДокумента.Номенклатура,
  39. | НоменклатураДокумента.ВидНоменклатуры,
  40. | НоменклатураДокумента.КоличествоВДокументе,
  41. | НоменклатураДокумента.СуммаВДокументе,
  42. | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
  43. | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
  44. |ИЗ
  45. | НоменклатураДокумента КАК НоменклатураДокумента
  46. | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
  47. | ,
  48. | Материал В
  49. | (ВЫБРАТЬ
  50. | НоменклатураДокумента.Номенклатура
  51. | ИЗ
  52. | НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
  53. | ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
  54. | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
  55. | ,
  56. | Материал В
  57. | (ВЫБРАТЬ
  58. | НоменклатураДокумента.Номенклатура
  59. | ИЗ
  60. | НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
  61. | ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал";
  62.  
  63.  
  64.  
  65. //Записать пустые наборы записей, чтобы читать остатки без учёта данных в документе
  66. Движения.СтоимостьМатериалов.Записать();
  67. Движения.ОстаткиМатериалов.Записать();
  68.  
  69. РезультатЗапроса = Запрос2.Выполнить();
  70.  
  71. ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
  72.  
  73. Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
  74.  
  75. Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
  76. СтоимостьМатериала = 0;
  77. Иначе
  78. СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
  79. КонецЕсли;
  80.  
  81. Если ВыборкаДетальныеЗаписи.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
  82.  
  83. // регистр ОстаткиМатериалов Расход
  84. Движение = Движения.ОстаткиМатериалов.Добавить();
  85. Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
  86. Движение.Период = Дата;
  87. Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
  88. Движение.Склад = Склад;
  89. Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
  90.  
  91. // регистр СтоимостьМатериалов Расход
  92. Движение = Движения.СтоимостьМатериалов.Добавить();
  93. Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
  94. Движение.Период = Дата;
  95. Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
  96. Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;
  97.  
  98.  
  99.  
  100. КонецЕсли;
  101.  
  102. // регистр Продажи
  103. Движение = Движения.Продажи.Добавить();
  104. Движение.Период = Дата;
  105. Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
  106. Движение.Клиент = Клиент;
  107. Движение.Мастер = Мастер;
  108. Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
  109. Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
  110. Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;
  111.  
  112.  
  113. КонецЦикла;
  114.  
  115. КонецПроцедуры
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement