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

процедура "при копировании"

Автор Сергей Федоров, 15 мая 2017, 13:07

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

Сергей Федоров

процедура выглядит таким образом:
Процедура ПриКопировании(ОбъектКопирования)
   
   НомерЧекаККМ = "";   
КонецПроцедуры // ПриКопировании()
мне надо из документа копирования , чтобы сохранялся комментарий. Я пробовал писать так :
Комментарий= ОбъектКопирования.Комментарий. Что я делаю не так

alex0402

Цитата: Сергей Федоров от 15 мая 2017, 13:07Процедура ПриКопировании(ОбъектКопирования)
В 7.7 нет предопределенной процедуры ПриКопировании.

Есть:
ВводНового(<ПризнКопирования>,<ОбъектКопирования>)
Спасибо за Сказать спасибо

Сергей Федоров

Цитата: alex0402 от 15 мая 2017, 15:09
Цитата: Сергей Федоров от 15 мая 2017, 13:07Процедура ПриКопировании(ОбъектКопирования)
В 7.7 нет предопределенной процедуры ПриКопировании.

Есть:
ВводНового(<ПризнКопирования>,<ОбъектКопирования>)

это 8.3
Добавлено: 15 мая 2017, 15:37


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

alex0402

ну тогда все правильно. может комментарий изменяется позже?

Процедура ПриКопировании(ОбъектКопирования)
   
   НомерЧекаККМ = "";   
   ЭтотОбъект.Комментарий= ОбъектКопирования.Комментарий;

    Сообщение = Новый СообщениеПользователю;   
    Сообщение.Текст = ЭтотОбъект.Комментарий;
    Сообщение.Сообщить();

КонецПроцедуры // ПриКопировании()


Спасибо за Сказать спасибо

Сергей Федоров

Цитата: alex0402 от 15 мая 2017, 15:51
ну тогда все правильно. может комментарий изменяется позже?

Процедура ПриКопировании(ОбъектКопирования)
   
   НомерЧекаККМ = "";   
   ЭтотОбъект.Комментарий= ОбъектКопирования.Комментарий;

    Сообщение = Новый СообщениеПользователю;   
    Сообщение.Текст = ЭтотОбъект.Комментарий;
    Сообщение.Сообщить();

КонецПроцедуры // ПриКопировании()



в общем модуле вот такое есть
Процедура ЗаполнитьДокумент(ДокументОбъект, Знач ДанныеЗаполнения, Знач СтратегияЗаполнения = Неопределено, ИсключаяСвойства = "") Экспорт
   
   Если ПропуститьЗаполнение(ДанныеЗаполнения) Тогда
      ЗаполнитьЗначенияСвойств(ДокументОбъект, ДанныеЗаполнения,, ИсключаяСвойства);
      Возврат;
   КонецЕсли;
   
   Если ЭтоЗаполнениеПоШаблону(ДанныеЗаполнения) Тогда
      ОбработатьЗаполнениеПоШаблону(ДанныеЗаполнения, ДокументОбъект);
   Иначе
      ВызватьОбработчикПередЗаполнением(СтратегияЗаполнения, ДокументОбъект, ДанныеЗаполнения);
   КонецЕсли;
   
   ПреобразоватьДанныеЗаполненияСсылочногоТипаВСтруктуру(ДанныеЗаполнения, ДокументОбъект);
   ПреобразоватьЗначенияДанныхЗаполненияТипаМассивВСсылку(ДанныеЗаполнения);
   ДополнитьПериодРегистрации(ДанныеЗаполнения, ДокументОбъект);
   ДополнитьЗначениямиИзНастроек(ДанныеЗаполнения, ДокументОбъект);
   РазыменоватьПоляСобытия(ДанныеЗаполнения);
   ДополнитьПредопределеннымиЭлементамиСправочников(ДанныеЗаполнения, ДокументОбъект);
   РазыменоватьПоля(ДанныеЗаполнения, ДокументОбъект);
   ДополнитьСуммаВключаетНДС(ДанныеЗаполнения, ДокументОбъект);
   
   ДанныеЗаполнения.Вставить("Автор", Пользователи.ТекущийПользователь());
   
   УдалитьНезаполненныеИсключаемыеСвойства(ДанныеЗаполнения, ИсключаяСвойства);
   ЗаполнитьЗначенияСвойств(ДокументОбъект, ДанныеЗаполнения,, ИсключаяСвойства);
   
   ЗаполнитьТабличныеЧасти(ДокументОбъект, ДанныеЗаполнения);
   
КонецПроцедуры

Процедура УдалитьНезаполненныеИсключаемыеСвойства(ДанныеЗаполнения, ИсключаяСвойства)
   
   Если ИсключаяСвойства="" Тогда
      Возврат;
   КонецЕсли;
   
   //Преобразуем строку ИсключаяСвойства в структуру
   СтруктураИсключаяСвойства = ОбщегоНазначенияПереопределяемый.СтрокаВСтруктуру(ИсключаяСвойства, ",");
   
   //Удалим из структуры ИсключаяСвойства те свойства, которых нет в ДанныеЗаполнения
   Для каждого ИмяСвойства Из СтруктураИсключаяСвойства Цикл
      Если НЕ ДанныеЗаполнения.Свойство(ИмяСвойства.Ключ) Тогда
         СтруктураИсключаяСвойства.Удалить(ИмяСвойства.Ключ);
       КонецЕсли;
   КонецЦикла;
   
   //Преобразуем структуру ИсключаяСвойства обратно в строку с запятыми
   ИсключаяСвойства = ОбщегоНазначенияПереопределяемый.СтруктураВСтроку(СтруктураИсключаяСвойства, ",");
   
КонецПроцедуры

Процедура ДополнитьВалюты(ЗначенияИзНастроек, ДокументОбъект) Экспорт
   
   ВалютаПоУмолчанию = Константы.НациональнаяВалюта.Получить();
   
   Для Каждого ИмяРеквизита Из ИменаРеквизитов(ВалютаПоУмолчанию, ДокументОбъект) Цикл
      
      Если ЗначенияИзНастроек.Свойство(ИмяРеквизита) Тогда
         Продолжить;
      КонецЕсли;
      
      Если ЗначениеЗаполнено(ДокументОбъект[ИмяРеквизита]) Тогда
         Продолжить;
      КонецЕсли;
      
      ЗначенияИзНастроек.Вставить(ИмяРеквизита, ВалютаПоУмолчанию);
      
   КонецЦикла;
   
КонецПроцедуры

// Выполняет подстановку значений из заполненных элементов справочников,
// например, из значения Организация заполняются БанковскийСчет, Касса,
// Ответственные лица и НалогообложениеНДС, из значения Контрагент
// заполняется Договор, а из Договора - ВалютаРасчетов, ВидЦен,
// ВидЦенКонтрагента и ВидСкидкиНаценки.
//
// Параметры:
//  ДанныеЗаполнения - Структура - структура, которая будет дополнена разыменованными значениями.
//  ДокументОбъект    - ДокументОбъект - заполняемый документ.
//
Процедура РазыменоватьПоля(ДанныеЗаполнения, ДокументОбъект) Экспорт
   
   РазыменованныеПоля = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ДанныеЗаполнения);
   
   УдалитьНезаполненныеЗначения(РазыменованныеПоля);
   
   РазыменоватьПоляОрганизации(РазыменованныеПоля, ДокументОбъект);
   РазыменоватьПоляКонтрагента(РазыменованныеПоля);
   РазыменоватьПоляДоговора(РазыменованныеПоля, ДокументОбъект);
   ПроверитьВалюту(ДанныеЗаполнения, РазыменованныеПоля);
   РазыменоватьПоляДисконтнойКарты(РазыменованныеПоля);
   РазыменоватьПоляСтруктурнойЕдиницы(РазыменованныеПоля, ДокументОбъект);
   РазыменоватьПоляВидаЦен(РазыменованныеПоля);
   РазыменоватьПоляВалюты(РазыменованныеПоля);
   
   ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ДанныеЗаполнения, РазыменованныеПоля, Истина);
   
КонецПроцедуры

Процедура ПроверитьВалюту(ДанныеЗаполнения, РазыменованныеПоля)
   
   Если Не РазыменованныеПоля.Свойство("ВалютаДокумента") Тогда
      Возврат;
   КонецЕсли;
   
   Если ДанныеЗаполнения.Свойство("ВалютаДокумента")
      И ДанныеЗаполнения.ВалютаДокумента = РазыменованныеПоля.ВалютаДокумента Тогда
      Возврат;
   КонецЕсли;
   
   ДанныеЗаполнения.Удалить("ВалютаДокумента");
   
   Если ДанныеЗаполнения.Свойство("БанковскийСчет") Тогда
      ДанныеЗаполнения.Удалить("БанковскийСчет");
   КонецЕсли;
   
   Если РазыменованныеПоля.Свойство("БанковскийСчет") Тогда
      РазыменованныеПоля.Удалить("БанковскийСчет");
   КонецЕсли;
   
КонецПроцедуры

Функция ОтображаемыеРеквизиты(Знач Форма) Экспорт
   
   Результат = Новый Массив;
   
   Для Каждого ТекЭлемент Из Форма.Элементы Цикл
      
      Если ТипЗнч(ТекЭлемент) <> Тип("ПолеФормы") Тогда
         Продолжить;
      КонецЕсли;
      
      Если Не ТекЭлемент.Видимость Тогда
         Продолжить;
      КонецЕсли;
      
      Если Не СтрНачинаетсяС(ТекЭлемент.ПутьКДанным, "Объект.") Тогда
         Продолжить;
      КонецЕсли;
      
      Результат.Добавить(СтрЗаменить(ТекЭлемент.ПутьКДанным, "Объект.", ""));
      
   КонецЦикла;
   
   Возврат Результат;
   
КонецФункции

#КонецОбласти

#Область ОбработчикиСобытий

Процедура ЗаполнитьАвтораПриКопировании(Источник, ОбъектКопирования) Экспорт

alex0402

и мне что? анализировать весь текст? слово Комментарий не встречается!
Спасибо за Сказать спасибо

Сергей Федоров

Цитата: alex0402 от 15 мая 2017, 16:02
и мне что? анализировать весь текст? слово Комментарий не встречается!
Процедура ПриКопированииОбъекта(Источник) Экспорт
   
Если НЕ ПустаяСтрока(Источник.Комментарий) Тогда
      Источник.Комментарий = "";
   КонецЕсли;
   
КонецПроцедуры // ПриКопированииОбъекта()

Добавлено: 15 мая 2017, 16:07


Цитата: alex0402 от 15 мая 2017, 16:02
и мне что? анализировать весь текст? слово Комментарий не встречается!
нашел , но не понял смысла процедуры

alex0402

ну

    Если НЕ ПустаяСтрока(Источник.Комментарий) Тогда //если комментарий не пуст
          Источник.Комментарий = ""; //сделать пустым
    КонецЕсли;
Спасибо за Сказать спасибо

VVS

Бухгалтерия 8.3 Релиз 3.0.60.34. Имеется 2 базы. В 1-й при копировании документа "Акт об оказании услуг" клавишей F9 комментарий, который написали сами, копируется и сохраняется в новом документе, что нам и нужно. Во 2-й базе при аналогичном копировании клавишей F9, комментарий не сохраняется и оформляется по алгоритму документа, т.е. как при выборе в поле номенклатуры, в комментарий записывается наименование номенклатуры, что нам совсем не нужно. Как в базе 2 сделать так-же, как в базе 1 при копировании клавишей F9?

Теги:

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

Рейтинг@Mail.ru

Поиск