Имя: Пароль:
1C
1С v8
Обработка добавления префикса документу
,
0 Тринадцать
 
31.10.19
08:16
Всем привет! нужно добавить префикс в нумерацию документа
Ошибок не выдает, но и не перенумеровывает)) подскажите в чем может быть ошибка
Процедура УстановитьПрефиксНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = (
"ВЫБРАТЬ
|    ПеремещениеТоваров.Ссылка КАК Ссылка
|ИЗ
|    Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
|    ПеремещениеТоваров.Дата МЕЖДУ &ДатаНачало И &ДатаОкончания " );

Запрос.УстановитьПараметр("ДатаНачало", Объект.Свойство(НачалоПериода));
Запрос.УстановитьПараметр( "ДатаОкончания", Объект.Свойство(КонецПериода));
Выборка = Запрос.Выполнить().Выбрать();
к=0;
Пока Выборка.Следующий() Цикл
    к= к + 1;
ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
ДокОбъект.Номер = СтрЗаменить(Лев((ДокОбъект.Номер),5),000,"ТМЦ");
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
КонецПроцедуры
1 catena
 
31.10.19
08:19
А в цикл-то заходит?
И зачем перепроводить?
2 Fish
 
31.10.19
08:21
(0) Есть номер - это строка, то и не заменит, т.к. у тебя в СтрЗаменить 000 - число.
3 Тринадцать
 
31.10.19
08:28
СтрЗаменить 000 - число. - поменяла на "000" не помогло
4 catena
 
31.10.19
08:32
(3)А в цикл-то заходит?
5 Fish
 
31.10.19
08:33
(3) Значит, надо ставить точку останова на строке "к=к+1" (Кстати, к чему тут "к" - непонятно, т.к. нигде не используется) и смотреть, почему номер не изменяется.
6 Масянька
 
31.10.19
08:37
(0) Если речь о типовой тройке, то нумерация обрабатывается в общих модулях. И то, что Вы ему подсовываете - до лампочки.
7 Fish
 
31.10.19
08:40
(6) Ну вот зачем ты так сразу. Глядишь, к сотому посту кто-нибудь и догадался бы спросить про конфу :))
8 Тринадцать
 
31.10.19
08:47
(6) речь да, о БП 3. т.е обработкой не добавить префикс?
9 Тринадцать
 
31.10.19
08:48
вручную же дает изменить. почему бы не поменять обработкой уже созданные доки)
10 Масянька
 
31.10.19
08:49
(8) Нет. Рой общий модуль.
11 Масянька
 
31.10.19
08:50
(9) А тебе нужно в уже записанных изменить? Или чтобы в новых была?
12 Сияющий в темноте
 
31.10.19
08:50
обьект.свойство(началопериола) это что за зверь?
13 Fish
 
31.10.19
08:51
(10) А если поставить ОбменДанными.Загрузка = Истина - разве не поможет? Как в 3.0 не знаю, а раньше помогало.
14 Сияющий в темноте
 
31.10.19
08:51
там либо в кавычках либо без обьекта,т.к.ваша конструкция возвращает ложь
15 Сияющий в темноте
 
31.10.19
08:52
(13)там в консерватории нужно что-то исправить,а потом и к номеру переходить.
16 Масянька
 
31.10.19
08:53
(15) Волшебную флейту добавить :)
17 ДенисЧ
 
31.10.19
08:53
(16) Кожаную?
18 Масянька
 
31.10.19
08:54
(17) Ну, у кого, что болит...
19 Тринадцать
 
31.10.19
09:06
(14) не поняла, Объект.Свойство("НачалоПериода") - так ? или убрать Объект?
у меня не сработало ни так, ни так)
20 Тринадцать
 
31.10.19
09:07
(11) да, в уже записанных
21 Масянька
 
31.10.19
09:10
(20) После Выборка = Запрос.Выполнить().Выбрать();
Напиши: сообщить("! - " + Выборка.Количество());
Что покажет?
22 Тринадцать
 
31.10.19
09:12
! - 0
23 catena
 
31.10.19
09:12
(22)Ага, то есть мой вопрос из (1) стоило игнорировать целый час.
24 Fish
 
31.10.19
09:14
(22) Ну вот и ответ. Нечего перенумеровывать.
25 Масянька
 
31.10.19
09:15
(22) Понятно?
26 Тринадцать
 
31.10.19
09:22
Интересно) получается эта конструкция Объект.Свойство(НачалоПериода) не верная?
27 Масянька
 
31.10.19
09:25
(26) Уже спрашивали: что такое "Свойство"?
28 ДенисЧ
 
31.10.19
09:26
(27)
Структура (Structure)
Свойство (Property)
Синтаксис:

Свойство(<Ключ>, <НайденноеЗначение>)
Параметры:

<Ключ> (обязательный)

Тип: Строка.
Ключ для поиска свойства.
<НайденноеЗначение> (необязательный)

Тип: Произвольный.
В данный параметр возвращается найденное значение. Если ключа нет в структуре, то возвращается Неопределено.
Возвращаемое значение:

Тип: Булево.
Истина - ключ найден; Ложь в противном случае.
Описание:

Получает значение элемента по указанному имени, а также проверяет, имеется ли указанное свойство.
29 Fish
 
31.10.19
09:29
(26) Напиши: сообщить("! - " + Объект.Свойство(НачалоПериода));
30 Масянька
 
31.10.19
09:30
(28) А проще нельзя?
    Запрос.УстановитьПараметр("ДатаНачала",        НачалоДня(Период.ДатаНачала));
31 Тринадцать
 
31.10.19
09:38
(30) нет, выдает ошибку Переменная не определена (Период)
32 Масянька
 
31.10.19
09:39
(31) На форме как называется поле, в котором выбирается период?
33 Тринадцать
 
31.10.19
09:40
НачалоПериода
34 Масянька
 
31.10.19
09:40
(33) Покажи скрин формы.
35 Тринадцать
 
31.10.19
09:42
36 Масянька
 
31.10.19
09:45
(35) Попробуй так:
    Запрос.УстановитьПараметр("ДатаНачала",        НачалоДня(НачалоПериода.ДатаНачала));
    Запрос.УстановитьПараметр("ДатаОкончания",    КонецДня(КонецПериода.ДатаОкончания));
37 Тринадцать
 
31.10.19
09:50
{ВнешняяОбработка.ДобавленияПрефиксаТМЦ.Форма.Форма.Форма(19)}: Значение не является значением объектного типа (ДатаНачала)
Запрос.УстановитьПараметр("ДатаНачала",  НачалоДня(НачалоПериода.ДатаНачала));
38 Масянька
 
31.10.19
09:55
(37) Запрос.УстановитьПараметр("ДатаНачало",  НачалоДня(НачалоПериода.ДатаНачала));
39 Тринадцать
 
31.10.19
10:02
{ВнешняяОбработка.ДобавленияПрефиксаТМЦ.Форма.Форма.Форма(19)}: Значение не является значением объектного типа (ДатаНачала)
Запрос.УстановитьПараметр("ДатаНачало",  НачалоДня(НачалоПериода.ДатаНачала));
40 Масянька
 
31.10.19
10:03
(39) Тип какой у реквизита?
41 ДенисЧ
 
31.10.19
10:05
Запрос.УстановитьПараметр("ДатаНачала",        НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр("ДатаОкончания",    КонецДня(КонецПериода));
42 Тринадцать
 
31.10.19
10:18
(40) Дата
скрин https://download.ru/files/SekwiP7p
43 Злопчинский
 
31.10.19
10:19
блин. в 7.7 это делается без кода, штатной универсальной обработкой, перенумерация обьектов с сохранением числового кода.
44 Тринадцать
 
31.10.19
10:22
(41) - ДА! заработало
переименовал первый документ, присвоив ему номер "ТМЦ0-" и убрав часть после дифиса
На втором останавливается {ВнешняяОбработка.ДобавленияПрефиксаТМЦ.Форма.Форма.Форма(30)}: Ошибка при вызове метода контекста (Записать)
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Значение "ТМЦ0-" поля "Номер" не уникально
45 ДенисЧ
 
31.10.19
10:23
"переименовал первый документ, присвоив ему номер "ТМЦ0-" и убрав часть после дифиса"
"Значение "ТМЦ0-" поля "Номер" не уникально"

Почему я не удивлён... А значимую часть номер Алексей Николаевич добавлять будет?
46 catena
 
31.10.19
10:24
(44)Потому что оставшуюся часть номера нужно добавить.

И ПРОВОДИТЬ НЕ НУЖНО!
47 Тринадцать
 
31.10.19
10:25
ДокОбъект.Номер = СтрЗаменить(Лев((ДокОбъект.Номер),3),"000","ТМЦ")+ ДокОбъект.Номер;
так тоже не работает
48 catena
 
31.10.19
10:28
(47)Потому что добавлять нужно оставшуюся часть, а не весь номер
49 Тринадцать
 
31.10.19
10:32
в номере документа 11 знаков
ДокОбъект.Номер = СтрЗаменить(Лев((ДокОбъект.Номер),3),"000","ТМЦ")+ Прав(ДокОбъект.Номер,8);
50 Тринадцать
 
31.10.19
10:39
опять ошибок не выдает и не перенумировывает
51 catena
 
31.10.19
10:42
(50)Надо нажать кнопочки F9 и F5
52 vicof
 
31.10.19
10:46
+(51) в конфигураторе
53 Тринадцать
 
31.10.19
11:34
ДокОбъект.Номер = СтрЗаменить(Лев((ДокОбъект.Номер),3),"000","ТМЦ") + Прав(ДокОбъект.Номер,8);
    
Если добавлю
Сообщить ("! - " + ДокОбъект.номер);

то выдает корректно
! - ТМЦ0-000001
! - ТМЦ0-000002

а в самих документах номер не меняет, почему?
54 hhhh
 
31.10.19
11:37
(53) обновить экран нажимал?
55 Тринадцать
 
31.10.19
11:39
да))
56 DrZombi
 
гуру
31.10.19
11:43
Предлагаю ТС освоить отладчик.
И... посмотреть, может ТС смотрит не в НОМЕР, а в ВнешНомерДок или подобное творение от 1С.
И тут нужно понять, что возможно перенумеровывать документу не надо.

А так же у ТС, все может выполняться в транзакции.
57 Масянька
 
31.10.19
11:44
(53) А после записать, что выдает (в номере)?
58 Масянька
 
31.10.19
11:44
(56) Отладчик не наш метод!
Сообщество должно быть в курсе.
59 DrZombi
 
гуру
31.10.19
11:45
+(0) Косяки от ТС:

1. Зачем тебе перепроводить документы?
2. Документы могут быть не проведенными, совсем.
3. Документы могут быть помечены на удаление.
4. Для перенумерации документов лучше использовать Записать.
5. Если записать, то лучше всего записать по команде "ОбменДанными = Истина"
60 catena
 
31.10.19
11:57
(56)ТС считает, что у нее хватает квалификации выбирать, каким советам из темы следовать и на какие вопросы отвечать. Не думаю, что получится убедить ее в каком-либо анализе адекватности задачи)
61 Тринадцать
 
31.10.19
12:13
Всем спасибо
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.