Имя: Пароль:
1C
1С v8
Автоматическое присвоение № и даты договорам с клиентами в УТ 11.4
0 VID1234
 
31.01.20
13:55
Привет. Подскажите пожалуйста как включить или доработать, чтобы при создании договора с клиентами и т.п программа автоматически присваивала № и дату как в других документах.
1 lubitelxml
 
31.01.20
14:06
Включить мне кажется никак, доработать не сложно. В процедуре ПриСозданииНаСервере нужно получить последний номер уже внесенного договора и прибавить 1, дата - ТекущаяДата()
2 VID1234
 
31.01.20
14:17
(1) А как можете прямо написать, а то я дуб дубом, а уже от примера я допетрю. А то у меня сложности именно с этим
3 VID1234
 
31.01.20
14:19
(1) и где именно документа договоры нет, обработка или модуль общий, где это вообще
4 _Дайвер_
 
31.01.20
14:22
5 Deon
 
31.01.20
15:00
(0) Договоры - это справочник. И он разве код автоматом не проставляет?
6 goodprog
 
31.01.20
15:04
(5) там другой реквизит отвечает за номер договора
7 VID1234
 
31.01.20
15:04
(5) почему то нет. Пытаюсь найти в документах подобное, там же автоматом, но там странный код
Процедура ИзменитьЗаголовкиПоВариантуОформленияПродажи()
    
    Если Объект.ВариантОформленияПродажи = Перечисления.ВариантыОформленияПродажи.АктНаПередачуПрав Тогда
        АвтоЗаголовок = Ложь;
        Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
            Шаблон = НСтр("ru='%1 %2 от %3'");
        Иначе
            Шаблон = НСтр("ru='%1 (создание)'");
        КонецЕсли;
        ЗаголовокТекстом = НСтр("ru = 'Акт на передачу прав'");
        Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ЗаголовокТекстом, Объект.Номер, Объект.Дата);
    Иначе
        АвтоЗаголовок = Истина;
        Заголовок = "";
    КонецЕсли;
    
КонецПроцедуры
8 VID1234
 
31.01.20
15:05
(6) какой?
9 lubitelxml
 
31.01.20
15:07
Открываем модуль формы элементы справочник Договоры. Идем в процедуру при создании. Вытаскиваем через запрос МАКСИМУМ(Договоры.НомерДоговора) ну или как там реквизит называется. Строк 10 всего
10 Deon
 
31.01.20
15:14
(9) Возможно, номер лучше перед записью получить. Ибо открытие новой формы у 2х пользователей будет пытаться записать один и тот же номер
11 lubitelxml
 
31.01.20
15:18
(10) согласен
12 goodprog
 
31.01.20
15:19
(10) полностью не избавит от дублирования номеров)/
Делаешь новый док - называешь его нумерация))) Дальше после записи договора, создаешь его, затем после записи дока - отправляешь новый номер в свой договор)))) профит
13 lubitelxml
 
31.01.20
15:21
(12) ну уж тогда не док, а РС, ну или константу )))
14 VID1234
 
31.01.20
15:21
(12) а как? сделаю я новый документ, а форма у документа какая? как присвоить № этого документа к договору.
15 VID1234
 
31.01.20
15:22
(13) подскажите как, что в константе прописать и как связать
16 VladZ
 
31.01.20
15:26
Я бы добавил новый документ. Назвал бы его "Нумерация договоров". Нумерация объектов: текстовая в пределах года.
В форму договора добавил бы кнопку "Получить номер по порядку". При нажатии на кнопку программа создавала бы документ, записывала его. И номер документа тащила в договор (плюс привязку к документ Нумерация договоров).  Если привязка справочник Договор - документ "Нумерация договоров" уже указана - ничего не делать плюс закрыть доступ к кнопке получения номера.
17 VID1234
 
31.01.20
15:32
(16) блин как все сложно, странно что разработчики не сделали этого!
18 goodprog
 
31.01.20
15:35
(17) да ничего сложного блин, тут уже тебя стебут все и вся, какой к черту документ новый
19 goodprog
 
31.01.20
15:39
Номер = Код;
Дата = ТекущаяДАта();
Все что тебе надо
20 VID1234
 
31.01.20
15:40
(18) Спасибо.
21 VID1234
 
31.01.20
15:40
Лучше бы так помогали! Вот так вот и живем. Зато все православные и патриоты!
22 VID1234
 
31.01.20
16:13
(19) ))) а куда вставить?(((
23 goodprog
 
31.01.20
16:15
(22) Ну приехали
24 goodprog
 
31.01.20
16:17
(22) http://catalog.mista.ru/public/440819/
Вообще-то уже сделано, можно пользоваться)
25 VID1234
 
31.01.20
17:03
(24) А как до ума довести
//VID(
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    МАКСИМУМ(ДоговорыКонтрагентов.Номер) КАК Номер
|ИЗ
|    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
|    ДоговорыКонтрагентов.Наименование = ""Основной договор""
|    И ДоговорыКонтрагентов.ТипДоговора = ЗНАЧЕНИЕ(Перечисление.ТипыДоговоров.СПокупателем)
|    И ДоговорыКонтрагентов.Дата >= &Дата";
Запрос.УстановитьПараметр("Дата",'20140527');

НовыйНомер = СокрЛП(Запрос.выполнить().Выгрузить().Получить(0).Номер);

ДлинаНомера = СтрДлина(НовыйНомер);

Если ДлинаНомера Тогда

//отсекаем три последних символа и перебираем строку пока она числовая, при появлении строковых символов прерываем
Для Сч = 3 По ДлинаНомера Цикл
КодСимвола = КодСимвола(Сред(НовыйНомер,ДлинаНомера-Сч,1));
Если КодСимвола>=48 И КодСимвола<=57 Тогда
ЧисловойНомер = Сред(НовыйНомер,ДлинаНомера-Сч,1) + ЧисловойНомер;
Иначе
Прервать;    
КонецЕсли;    
КонецЦикла;    

//числовую составляющую увеличиваем на 1
ЧисловойНомер = Число(ЧисловойНомер)+1;

//собираем номер
НовыйНомер = Сред(НовыйНомер,1,ДлинаНомера-Сч)+Формат(ЧисловойНомер,"ЧГ=")+Прав(НовыйНомер,3);

Иначе

НовыйНомер = 1;

КонецЕсли;
//VID)
26 goodprog
 
31.01.20
17:08
(25) я бы постеснялся такое людям показывать
27 VID1234
 
31.01.20
17:20
(26) почему
28 goodprog
 
31.01.20
17:22
(27) потому что это нечто ужасное особенно запрос
29 VID1234
 
31.01.20
17:29
(28) Покажите как нужно, зачем негатив писать, у меня получилось присвоить номер, правда он с префиксом и одно и тоже число на всех создаваемых. Если не можете помочь, то всего доброго. Буду капать дальше.!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший