В конфигурации УТ 10.3 нет кнопки новый счет договор как в конфигурации БП 2.0/3.0
Все приведенное ниже создавалось и проверялось на "Управление торговлей", редакция 10.3 (10.3.31.3)
Ниже представлен кусок кода, который добавляет такой функционал.
Для его использования необходимо создать кнопку на форме и привязать ее к процедуре "НовыйСДНажатие"
Все приведенное ниже создавалось и проверялось на "Управление торговлей", редакция 10.3 (10.3.31.3)
Ниже представлен кусок кода, который добавляет такой функционал.
Для его использования необходимо создать кнопку на форме и привязать ее к процедуре "НовыйСДНажатие"
Это привязка, дабы кнопка не попортила интерфейс :-)
Наименование договора завязано на номере и дате документа, т.о. новый договор можно создать только для записанного документа (Счет на оплату покупателю/Заказ покупателя)
Новый договор будет иметь такое название (пример):
Новый договор будет иметь такое название (пример):
Счет №1 034 от 29.10.2015В процедуру добавлена проверка на невнимательность менеджера:
- Менеджер открыл форму создания Счета на оплату
- Записал его с контрагентом РогаИКопыта
- Создал счет договор
- А потом ему вздумалось сменить контрагента
- 1С автоматом сменит договор
- И догадался создать новый договор
До добавления проверки, код не создавал новый СД, а просто подставлял существующий
//НачалоМОдификации+
//Новый СЧЕТ-ДОГОВОР НАЧАЛО
Процедура НовыйСДНажатие(Элемент)
//Проверяем новый документ?
Если ЗначениеЗАполнено(ЭтотОбъект.Номер) Тогда
НовыйСДСоздать();
Иначе
Результат=Вопрос("Для выполнения операции необходимо записать документ!"+Символы.ПС+"Записать документ?",
РежимДиалогаВопрос.ДаНетОтмена,0,КодВозвратаДиалога.Да,"Записать документ?");
Если Результат=КодВозвратаДиалога.Да Тогда
ЭтотОбъект.Дата=ТекущаяДата();
Попытка
ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись,);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
НовыйСДСоздать();
Иначе
Возврат;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура НовыйСДСоздать()
//Создаем новый документ
//Форматируем номер документа - удаляем лидирующие нули
НомерСнаОП=Формат(Число(Прав(ЭтотОбъект.Номер,9)),"ЧЦ=;ЧВН=");
//Создаем новое имя для элемента справочника
ИмяНовогоСД=Строка("Счет №"+НомерСнаОП+" от "+Формат(ЭтотОбъект.Дата,"ДФ=дд.ММ.гггг")+"");
//Пытаемся найти договор в справочнике
НайтиДоговор=Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(ИмяНовогоСД,истина);
Если НЕ НайтиДоговор.Пустая() Тогда
//Проверка на соответствие владельца договора и контрагентом в текущем документе, в случае совпадения наименований
//Если не совпадает, перенумеровываем документ
Если НЕ НайтиДоговор.Владелец=ЭтотОбъект.Контрагент Тогда
ЭтотОбъект.УстановитьНовыйНомер("УТ");
ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись,);
НомерСнаОП=Формат(Число(Прав(ЭтотОбъект.Номер,9)),"ЧЦ=;ЧВН=");
ИмяНовогоСД=Строка("Счет №"+НомерСнаОП+" от "+Формат(ЭтотОбъект.Дата,"ДФ=дд.ММ.гггг")+"");
Иначе
//Зачем создавать новый, если у нас уже есть договор с таким именем?
ЭтотОбъект.ДоговорКонтрагента=НайтиДоговор.Ссылка;
Возврат;
КонецЕсли;
Сообщить("Документ перенумерован!");
КонецЕсли;
НовыйСчетДоговор=Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
НоваяСсылка=Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(Новый УникальныйИдентификатор);
НовыйСчетДоговор.УстановитьСсылкуНового(НоваяСсылка);
НовыйСчетДоговор.Организация=ЭтотОбъект.Организация;
НовыйСчетДоговор.Наименование=ИмяНовогоСД;
НовыйСчетДоговор.Владелец=ЭтотОбъект.Контрагент;
НовыйСчетДоговор.ВидДоговора=Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
НовыйСчетДоговор.ВалютаВзаиморасчетов=ЭтотОбъект.ВалютаДокумента.Ссылка;
НовыйСчетДоговор.ВедениеВзаиморасчетов=перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
НовыйСчетДоговор.ВестиПоДокументамРасчетовСКонтрагентом=Истина; //необязательно
Попытка
НовыйСчетДоговор.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//Возвращаем ссылку на форму счета
ЭтотОбъект.ДоговорКонтрагента=НоваяСсылка;
КонецПроцедуры
//Новый СЧЕТ-ДОГОВОР КОНЕЦ
Комментариев нет:
Отправить комментарий