Имя: Пароль:
1C
1С v8
Найти ссылку передаваемого параметра запросом.
0 JuixyJes
 
13.09.19
17:14
Имеется дох***а нетиповых документов, мне нужно вытащить ссылку запросом на этот документ, для того чтобы поменять в нем данные программно, как это сделать?
1 sqr4
 
13.09.19
17:16
(0) ты же уже не маленькая девочка, ну сформулируй нормально. Что за ссылка - это УИД или еще чтото?
2 trooba
 
13.09.19
17:17
(0) Нифига не понятно
3 hhhh
 
13.09.19
17:17
(0) выбрать ссылка из твойнетиповойдокумент
4 JuixyJes
 
13.09.19
17:18
(3) Мне бы ссылку из любого документа вытаскивать. (1) Ссылка - это ссылка на документ.
5 JuixyJes
 
13.09.19
17:19
(3) Или вы предлагаете Выбрать Ссылка из &Документ ?
6 trooba
 
13.09.19
17:19
Выбрать Дох.Ссылка из Дох как дох
7 ptiz
 
13.09.19
17:19
Выбрать &Документ
8 trooba
 
13.09.19
17:20
(5) Разные типы документов? Их (типов) количество и типы известны?
9 Zhuravlik
 
13.09.19
17:21
(0) Опираясь на метаданные динамически сформировать текст запроса
10 trooba
 
13.09.19
17:22
(9) +1
11 JuixyJes
 
13.09.19
17:22
(8) Да, их несколько, штук 20
12 JuixyJes
 
13.09.19
17:23
(9) я так и хотела, но вот проблема, штук 20 это примерно, не известно сколько их
13 hhhh
 
13.09.19
17:24
(11) ну если меньше 200, то никакой проблемы
14 sqr4
 
13.09.19
17:26
(12) для каждого Документ из метаданные.документы
15 JuixyJes
 
13.09.19
17:28
(14) ВЫБРАТЬ
    мЗаявкаНаЗайм.Номер КАК Номер,
    мЗаявкаНаЗайм.ПодразделениеОрганизации,
    ПодразделенияОрганизаций.Код,
ИЗ
    Документ.мЗаявкаНаЗайм КАК мЗаявкаНаЗайм
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
        ПО мЗаявкаНаЗайм.ПодразделениеОрганизации = ПодразделенияОрганизаций.Ссылка
ГДЕ
    мЗаявкаНаЗайм.ПодразделениеОрганизации = &ПодразделениеОрганизации

УПОРЯДОЧИТЬ ПО
    Номер
16 JuixyJes
 
13.09.19
17:29
и типо как текст менять то?
17 JuixyJes
 
13.09.19
17:31
мне, как я понимаю нужно менять в запросе => мЗаявкаНаЗайм <= вот это
18 sqr4
 
13.09.19
17:32
(16) напиши по русски а не по китайски, по полочкам что тебе нужно сделать. Я пока не понимаю что нужно сделать.
19 hhhh
 
13.09.19
17:35
(16) Запрос.Текст = Запрос.Текст + Текст;

и так 200 раз
20 sqr4
 
13.09.19
17:36
(19) да там видишь соединение, т.е надо проверять еще на доступность реквизитов
21 sqr4
 
13.09.19
17:36
ну вообщем с метаданными работа все верно написано в (9)
22 JuixyJes
 
13.09.19
17:36
В базе много подразделений. Мне нужно чтобы при создании любого нового документа для каждого подразделения шла своя нумерация.
23 JuixyJes
 
13.09.19
17:37
Возможно я тут зря так сильно загоняюсь и есть решение проще?
24 sqr4
 
13.09.19
17:39
(23) ты бы с фотокой в купальнике так разгонялась. Нумерация идет в рамках одного вида документа или общая для всех?
25 hhhh
 
13.09.19
17:39
(20) не нужно там соединение

просто мЗаявкаНаЗайм.ПодразделениеОрганизации.Код    

а соединение выкинуть
26 sqr4
 
13.09.19
17:39
(23) самой делать нумерацию, та еще забава, все равно не получится нормально
27 JuixyJes
 
13.09.19
17:40
(24) в рамках одного вида документа
28 JuixyJes
 
13.09.19
17:43
+(27) Просто нужно сделать так. Если еще не было по этому подразделению то дать номер документу допустим ПРК000001, потом ПРК000002 и тд, тут так хоп, другое подразделение, по нему еще не было документов, ему так БАХ ПРД000001, ПРД000002 и тд и тп
29 hhhh
 
13.09.19
17:45
(27) тогда тут ссылки вообще не нужны. и запросы тоже. тебе нужно просто присвоить для разных подрезделений разные префиксы. и всё. а система по префиксам сама присвоит нужный номер.
30 sqr4
 
13.09.19
17:46
(28) вот поэтому и надо давать нормальный формулировки. Фото срочно, радуй помогал, да еще и в праздник)
31 hhhh
 
13.09.19
17:48
(28) просто подразделению Кобры даешь префикс ПРК, а подразделению Гадюшник даешь префикс ПРГ. И всё. Остальное само всё сделается.
32 JuixyJes
 
13.09.19
17:59
(31) Тут проблема в том, что база частично РИБовая, частично нет. И префиксы уже есть у подразделений, и документы все идут с префиксом ЦБ, поэтому и нужно как то это поправить.
33 sqr4
 
13.09.19
17:59
(32) Нда...
34 JuixyJes
 
13.09.19
18:00
(33) Ну не мы такие, клиенты такие.
35 novichok79
 
13.09.19
18:10
(0) можно и без запроса

Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(ДокументСсылка)) Тогда
    ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
КонецЕсли;
36 hhhh
 
13.09.19
18:11
(32) ну это понятно идет префикс ИБ + префикс подразделения. Будет теперь у вас ЦБПРГ, ПБПРГ и так далее.
37 JuixyJes
 
16.09.19
09:16
(35) вот это решение мне нравится. Но как мне префиксацию документов сделать таким методом? Ведь мне все равно нужно найти есть ли документы с этим подразделением и установленным префиксом.
38 DmVl76
 
16.09.19
09:54
(32) Если документы по одному подразделению создаются в разных распределенных базах - то только (36) - префикс узла+префикс подразделения.
39 novichok79
 
16.09.19
10:58
(37) в событии "ПриУстановкеНовогоНомера" документа?

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
                   |    1
                   |ИЗ
                   |    Документ.РеализацияУслугПрочихАктивов КАК РеализацияУслугПрочихАктивов
                   |ГДЕ
                   |    ПОДСТРОКА(РеализацияУслугПрочихАктивов.Номер, 6, 1) = ""У""";
                  
    Результат = Запрос.Выполнить();
    
    Если НЕ Результат.Пустой() Тогда Префикс = "0";
    Иначе Префикс = "";
    КонецЕсли;
    
КонецПроцедуры
40 novichok79
 
16.09.19
11:00
(37) это будет тормозить, но лучше этого 1С не придумала ничего.
41 JuixyJes
 
16.09.19
11:09
Префикс указала так:


Если Константы.ПрефиксУзлаРаспределеннойИнформационнойБазы.Получить()<>"" Тогда
        Префикс = Константы.ПрефиксУзлаРаспределеннойИнформационнойБазы.Получить();
        //ЛМА
        Если Префикс = "ЦБ" Тогда
            Префикс = Лев(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(Пользователи.ТекущийПользователь(), "ОсновноеПодразделениеОрганизации").Код,3);
        КонецЕсли;
        //ЛМА
    КонецЕсли;
42 JuixyJes
 
16.09.19
11:10
Но тут вопрос, нумерация пошла по одному месту, ибо ЦБ документы идут с нумерацией другой, мне нужно найти последний документ с префиксом, который у подразделения
43 novichok79
 
16.09.19
11:15
(42) в бизнес-логику я не хочу въезжать. если надо получить последний документ с префиксом, который есть у подразделения, тогда запроса с агрегацией по максимуму не избежать, а значит решение будет однозначно тормозить. я так уже делал, лет 6 назад, потом пришлось менять логику, чтобы пользователи могли документы записывать.

по коду - зачем 2 раза получать Константы.ПрефиксУзлаРаспределеннойИнформационнойБазы.Получить()
можно получить 1 раз + вот здесь

Префикс = Лев(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(Пользователи.ТекущийПользователь(), "ОсновноеПодразделениеОрганизации").Код,3)

код получается через разыменование, система возьмет из базы весь объект.
легче и правильнее код через запрос вытащить.
44 JuixyJes
 
16.09.19
11:18
(43) мой код исключительно между комментариев, то что было до этого сказано не трогать.
45 novichok79
 
16.09.19
11:18
длина номера документа = префикс + нумератор от 1С.
соответственно, если сделать префикс "КАРТОХА", то 1С при записи найдет документ с максимальным кодом, который начинается на "КАРТОХА" и добавит 1 к номеру, полученный номер присваивается документу. как-то так.
46 novichok79
 
16.09.19
11:19
(44) 1С любит все унифицировать, в итоге получается тормознутое УГ в некоторых местах.
47 novichok79
 
16.09.19
11:20
ну и префикс "ЦБ" наверное лучше вынести в константу, а не хардкодить.
48 JuixyJes
 
16.09.19
11:29
(47) я префиксацию такую показала клиенту, все устроило (там видимо программисты слабенькие)
49 JuixyJes
 
16.09.19
11:31
Итак, вернемся к вопросу о восстановлении нумерации. у меня допустим есть документ последний ГРЛ0000567 следующий, поидее должен быть ГРЛ0000568, а по факту имею ГРЛ0001023, т.к. документ с префиксом ЦБ последний был ЦБ00001022
50 novichok79
 
16.09.19
11:32
(48) ну раз все ок, то "окончен бой, беру портвейн, иду домой" :)
51 novichok79
 
16.09.19
11:32
(49) нумерация в пределах года?
52 JuixyJes
 
16.09.19
11:33
(51) да
53 novichok79
 
16.09.19
11:35
(52) так поменяй ее, иначе у тебя счетчик каждый год сбрасываться будет.
54 JuixyJes
 
16.09.19
11:38
(53) А это и надо клиенту оставить. Просто сейчас нужно сделать так, чтобы находился документ, последний с префиксом нужным и к коду добавлялась 1
55 novichok79
 
16.09.19
11:41
(54) ну так "работайте, братья"
56 JuixyJes
 
16.09.19
11:49
(55) Подскажите, как найти документ с самым большим номером с нужным префиксом?
57 JuixyJes
 
16.09.19
12:16
Решила проблему с префиксом иным способом, подпиской на событие для всех документов