Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:23

Проведение документа

Автор Алексей_1985_06, 18 янв 2020, 20:37

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

Алексей_1985_06

Подскажите знатоки есть код, который должен выполняться только ПРИ ПРОВЕДЕНИИ ДОКУМЕНТА (не записи), как это сделать?
Код:
&НаСерверебезКонтекста
Функция ПолучитьСтрокуТЧнаСервере(СсылкаНаЭлемент, ИмяТабличнойЧасти, ИмяКолонки, НомерСтроки = 0)
   ТабличнаяЧасть = СсылкаНаЭлемент[ИмяТабличнойЧасти];
   КоличествоСтрок = ТабличнаяЧасть.Количество();
   Если КоличествоСтрок = 0 Тогда
   Значение = Неопределено;
   Иначе
   Строка = Мин(НомерСтроки, КоличествоСтрок - 1);
   Значение = ТабличнаяЧасть[Строка][ИмяКолонки];
   КонецЕсли;
   Возврат Значение;
КонецФункции


&НаСервере
Процедура ИзменитьДанныеСправочникаНаСервере()
ИзмСправочник = Объект.ФамилияИмяОтчество.ПолучитьОбъект();
ЗаписаноеЗвание = ПолучитьСтрокуТЧнаСервере(Объект.ФамилияИмяОтчество, "ВоинскиеЗвания", "ВоинскоеЗвание", 100);
Если ЗаписаноеЗвание = Объект.ВоинскоеЗвание Тогда    
Сообщить("Внимание!!!")
Иначе
НоваяСтрока = ИзмСправочник.ВоинскиеЗвания.Добавить(); 
НоваяСтрока.ВоинскоеЗвание = Объект.ВоинскоеЗвание;
НоваяСтрока.ДатаПриказа = Объект.ДатаПриказа;
НоваяСтрока.НомерПриказа = Объект.НомерПриказа;
НоваяСтрока.ЧейПриказ = Объект.ЧейПриказ;
ИзмСправочник.ВоинскоеЗвание = Объект.ВоинскоеЗвание;
ИзмСправочник.Записать();
КонецЕсли;
КонецПроцедуры

DmitriyF

Цитата: Алексей_1985_06 от 18 янв 2020, 20:37
Подскажите знатоки есть код, который должен выполняться только ПРИ ПРОВЕДЕНИИ ДОКУМЕНТА (не записи), как это сделать?
Код:
&НаСерверебезКонтекста
Функция ПолучитьСтрокуТЧнаСервере(СсылкаНаЭлемент, ИмяТабличнойЧасти, ИмяКолонки, НомерСтроки = 0)
   ТабличнаяЧасть = СсылкаНаЭлемент[ИмяТабличнойЧасти];
   КоличествоСтрок = ТабличнаяЧасть.Количество();
   Если КоличествоСтрок = 0 Тогда
   Значение = Неопределено;
   Иначе
   Строка = Мин(НомерСтроки, КоличествоСтрок - 1);
   Значение = ТабличнаяЧасть[Строка][ИмяКолонки];
   КонецЕсли;
   Возврат Значение;
КонецФункции


&НаСервере
Процедура ИзменитьДанныеСправочникаНаСервере()
ИзмСправочник = Объект.ФамилияИмяОтчество.ПолучитьОбъект();
ЗаписаноеЗвание = ПолучитьСтрокуТЧнаСервере(Объект.ФамилияИмяОтчество, "ВоинскиеЗвания", "ВоинскоеЗвание", 100);
Если ЗаписаноеЗвание = Объект.ВоинскоеЗвание Тогда    
Сообщить("Внимание!!!")
Иначе
НоваяСтрока = ИзмСправочник.ВоинскиеЗвания.Добавить(); 
НоваяСтрока.ВоинскоеЗвание = Объект.ВоинскоеЗвание;
НоваяСтрока.ДатаПриказа = Объект.ДатаПриказа;
НоваяСтрока.НомерПриказа = Объект.НомерПриказа;
НоваяСтрока.ЧейПриказ = Объект.ЧейПриказ;
ИзмСправочник.ВоинскоеЗвание = Объект.ВоинскоеЗвание;
ИзмСправочник.Записать();
КонецЕсли;
КонецПроцедуры

Так и вызывайте вашу процедуру из нужного места, не ПриЗаписи, а в обработчике проведения.

Алексей_1985_06

Цитата: DmitriyF от 18 янв 2020, 21:26
Цитата: Алексей_1985_06 от 18 янв 2020, 20:37
Подскажите знатоки есть код, который должен выполняться только ПРИ ПРОВЕДЕНИИ ДОКУМЕНТА (не записи), как это сделать?
Код:
&НаСерверебезКонтекста
Функция ПолучитьСтрокуТЧнаСервере(СсылкаНаЭлемент, ИмяТабличнойЧасти, ИмяКолонки, НомерСтроки = 0)
   ТабличнаяЧасть = СсылкаНаЭлемент[ИмяТабличнойЧасти];
   КоличествоСтрок = ТабличнаяЧасть.Количество();
   Если КоличествоСтрок = 0 Тогда
   Значение = Неопределено;
   Иначе
   Строка = Мин(НомерСтроки, КоличествоСтрок - 1);
   Значение = ТабличнаяЧасть[Строка][ИмяКолонки];
   КонецЕсли;
   Возврат Значение;
КонецФункции


&НаСервере
Процедура ИзменитьДанныеСправочникаНаСервере()
ИзмСправочник = Объект.ФамилияИмяОтчество.ПолучитьОбъект();
ЗаписаноеЗвание = ПолучитьСтрокуТЧнаСервере(Объект.ФамилияИмяОтчество, "ВоинскиеЗвания", "ВоинскоеЗвание", 100);
Если ЗаписаноеЗвание = Объект.ВоинскоеЗвание Тогда    
Сообщить("Внимание!!!")
Иначе
НоваяСтрока = ИзмСправочник.ВоинскиеЗвания.Добавить(); 
НоваяСтрока.ВоинскоеЗвание = Объект.ВоинскоеЗвание;
НоваяСтрока.ДатаПриказа = Объект.ДатаПриказа;
НоваяСтрока.НомерПриказа = Объект.НомерПриказа;
НоваяСтрока.ЧейПриказ = Объект.ЧейПриказ;
ИзмСправочник.ВоинскоеЗвание = Объект.ВоинскоеЗвание;
ИзмСправочник.Записать();
КонецЕсли;
КонецПроцедуры

Так и вызывайте вашу процедуру из нужного места, не ПриЗаписи, а в обработчике проведения.

Извините, я новичок в этом деле, только учусь.... Можете написать как это сделать?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск