Имя: Пароль:
1C
1С v8
Как связать документы разных типов без изменения конфигурации?
0 slafor
 
22.07.20
12:11
1С БП 3.0.

Необходимо на основании документов Реализация товаров и услуг автоматически создавать документы Перемещение товаров. В типовой БП между ними связи нет никакой, а менять конфигурацию нельзя - все нужно сделать с помощью внешней обработки.

В то же время надо, чтобы впоследствии можно было выяснить, есть ли Перемещение на основании Реализации. И лучше выяснить это с помощью запроса.

Сначала я попробовал создавать Перемещения с особым префиксом номера + префикс реализации + последние цифры номера реализации, и устанавливал связь по номеру документа:

ВЫБРАТЬ
        РеализацияТоваровУслугТовары.Ссылка,
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Количество,
    РеализацияТоваровУслугТовары.Цена,
    РеализацияТоваровУслугТовары.Сумма,
    ПеремещениеТоваров.Ссылка КАК Перемещение
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
        ПО (РеализацияТоваровУслугТовары.Ссылка.Номер = &ПрефиксПеремещения + ПОДСТРОКА(ПеремещениеТоваров.Номер, 1, 5) + ПОДСТРОКА(ПеремещениеТоваров.Номер, 9, 3))
            

Но мне не удалось добиться полной уникальности кодов новых документов перемещения при их создании (строка создания нового номера: Перемещение.Номер = "ПР-" + Сред(Реализация.Номер, 1, 5) + Сред(Реализация.Номер, 9, 3); выдавала уже существующий код. Менять длину кода (11 символов) я тоже не могу, потому что нельзя менять типовую конфигурацию.

Есть идея воспользоваться УникальнымИдентификатором, но я прочитал, что его нельзя использовать в запросе. Можно самому создавать свой идентификатор, скажем, НомерРеализации + ДатаРеализации, сувать его в Перемещение в конец Комментария (в начало нежелательно - там уже есть свое начало), но тут другая проблема - поскольку комментарий - это поле неограниченной длины, в запросе для использования в соединениях таблиц я могу использовать его только в выражении ВЫРАЗИТЬ(Комментарий КАК СТРОКА(КоличествоСимволов)), а мне нужно будет получить именно последние символы, но как узнать длину строки неограниченной длины? Сделать это нужно только в запросе, при создании нового перемещения я просто-напросто добавлю мой идентификатор к уже имеющемуся комментарию.
1 polosov
 
22.07.20
12:12
(0) Расширение не хочешь?
2 slafor
 
22.07.20
12:13
(1) Нежелательно.
3 Strogg
 
22.07.20
12:14
Есть же механизм допрекаизитов. Чем он не подходит?
4 slafor
 
22.07.20
12:41
(3) Идея хорошая, для многих вещей подойдет, жаль, что раньше не пользовался...

Но для моей задачи - не подходит. В тип значения характеристик ПВХ ДополнительныеРеквизитыИСведения документ РеализацияТоваровУслуг не входит. Да и вообще документы туда не входят, только справочники. А менять типовую нельзя.
5 Garykom
 
гуру
22.07.20
13:01
(3) Дополнительные сведения только у документов
6 Garykom
 
гуру
22.07.20
13:01
(4) Строковое дополнительное сведение у перемещения и туда пиши уид реализации
7 slafor
 
22.07.20
14:52
(6)
Да, там все так "перевывернуто"...

То есть моя задача - это при создании перемещения на основании реализации создать запись в регистре сведений ДополнительныеСведения, где объектом будет Перемещение, значением - УИД Реализации (кстати, а нельзя ли писать не строковый УИД, а прямую ссылку на Реализацию?), а вот что будет Свойством?..
8 slafor
 
22.07.20
15:53
Даже так, тогда бы я поставил вопрос по-другому.

Можно ли средствами стандартной типовой БП 3.0 решить вопрос так, чтобы, не меняя конфигурации, связать ссылки двух документов разных видов, если это не предусмотрено специальными реквизитами?
9 DJ Anthon
 
22.07.20
16:00
но в допреквизиты можно засунуть номер документа и дату, не?
10 RomanYS
 
22.07.20
16:02
(8) Если эта связь будет писаться и читаться кодом (например внешними обработками), то решение предложено в (6).
11 slafor
 
22.07.20
16:04
(9) В принципе, ничего не мешает.
(10) Тут проблема с обращением к УИД из запроса.

Просто было бы приколько, если был бы РС где Измерение - ДокументСсылка, и Значение - ДокументСсылка ))