Имя: Пароль:
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) Покажите как нужно, зачем негатив писать, у меня получилось присвоить номер, правда он с префиксом и одно и тоже число на всех создаваемых. Если не можете помочь, то всего доброго. Буду капать дальше.!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший