BlackSmith2021

ФормаИзменениеДокумента

Nov 30th, 2024
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.40 KB | None | 0 0
  1. &НаСервере
  2. Процедура ВыборДокументаПриИзмененииНаСервере()
  3.     Документ = ВыборДокумента.Ссылка;
  4.     Дата = Документ.Дата;
  5.     Коментарий = Документ.Коментарий;
  6.     Объект.Номенклатура.Очистить();
  7.     Для Индекс = 0 По Документ.Номенклатура.Количество()-1 Цикл
  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.     Для Индекс = 0 ПО Объект.Номенклатура.Количество()-1 Цикл
  36.         НоваяСтрока = ДокОбъект.Номенклатура.Добавить();
  37.         НоваяСтрока.ЕдИзм = Объект.Номенклатура.Получить(Индекс).Едизм;
  38.         НоваяСтрока.Количество = Объект.Номенклатура.Получить(Индекс).Количество;
  39.         НоваяСтрока.Номенклатура = Объект.Номенклатура.Получить(Индекс).Номенклатура;
  40.         НоваяСтрока.Сумма = Объект.Номенклатура.Получить(Индекс).Сумма;
  41.         НоваяСтрока.Цена = Объект.Номенклатура.Получить(Индекс).Цена;
  42.     КонецЦикла;                                                      
  43.     ДокОбъект.Записать();
  44. КонецПроцедуры
  45.  
  46.  
  47.  
  48.  
  49. &НаКлиенте
  50. Процедура НоменклатураНоменклатураПриИзменении(Элемент)
  51.     Стр = Элементы.Номенклатура.ТекущиеДанные;
  52.     ПолучитьДанныеНоменклатура(Стр.номенклатура, Стр.ЕдИзм, Стр.Цена);
  53.     Стр.Количество = 1;
  54.     НоменклатураКоличествоПриИзменении(Элемент);
  55. КонецПроцедуры
  56.  
  57. &НаКлиенте
  58. Процедура НоменклатураКоличествоПриИзменении(Элемент)
  59.     Стр = Элементы.Номенклатура.ТекущиеДанные;
  60.     Если Стр.Количество > 0 Тогда
  61.         Стр.Сумма = Стр.Цена * Стр.количество;
  62.     Иначе
  63.         ДефолтныеЗначенияПриОшибке(Элемент);
  64.     КонецЕсли;
  65. КонецПроцедуры
  66.  
  67. &НаКлиенте
  68. Процедура НоменклатураЦенаПриИзменении(Элемент)
  69.     Стр = Элементы.Номенклатура.ТекущиеДанные;
  70.     Если Стр.Цена > 0 Тогда
  71.         Стр.Сумма = Стр.Цена * Стр.количество;
  72.     Иначе
  73.         ДефолтныеЗначенияПриОшибке(Элемент);
  74.     КонецЕсли;
  75. КонецПроцедуры
  76.  
  77. &НаКлиенте
  78. Процедура НоменклатураСуммаПриИзменении(Элемент)
  79.     Стр = Элементы.Номенклатура.ТекущиеДанные;
  80.     Если Стр.Сумма > 0 Тогда
  81.         Стр.Цена = Стр.Сумма / Стр.Количество;
  82.     Иначе
  83.         ДефолтныеЗначенияПриОшибке(Элемент);
  84.     КонецЕсли
  85. КонецПроцедуры
  86.  
  87. &НаКлиенте
  88. Процедура ДефолтныеЗначенияПриОшибке(Элемент)
  89.     Сообщить("Некоректное значение поля");
  90.     НоменклатураНоменклатураПриИзменении(Элемент);
  91. КонецПроцедуры
  92.  
  93. &НаСервере
  94. Процедура ПолучитьДанныеНоменклатура(Номенклатура, ЕдИзм, Цена)
  95.     Цена = Номенклатура.Цена;
  96.     ЕдИзм = Номенклатура.ЕдиницаИзмерения;
  97. КонецПроцедуры
  98.  
  99.  
  100.  
Advertisement
Add Comment
Please, Sign In to add comment