8.х Регистр сведений с сылкой на документ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем [GIGA]DEDUSHKA, 1 фев 2009.

  1. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Хочу создать ресгистр сведений, в одном из полей которого будет ссылка на документ. Есть затруднения: почему-то документ нельзя удалить, так как на него ссылается запись в регистре: а мне надо, чтобы документ мог запросто удалится, при этом запись в регистре оставалась с пустой ссылкой. Есть ли какая возможность указать полю, что это всего-лишь ссылка, как напр. в журнале регистрации, чтобы запись в регистре не повлияла на удаление документа?
  2. KiberMath
    Offline

    KiberMath Опытный в 1С

    Регистрация:
    22 сен 2008
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Можно попробывать перед удалением документа изминить записи ригистра сведений которые имеют ссылки на этот документ (удалить из них ссылку на этот документ). должно получиться, если только регистр сведений не подчинен регистратору...
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1. Такое измерение должно иметь флажок ВЕДУЩЕЕ - тогда при удалении документа запись сама удалиться
    2. Запись не может быть с пустой ссылкой "сама по себе" - такие вещи нужно описывать и менять набор записей.
  4. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Дело в том, что поле с сылкой на документ - не измерение, и не реквизит. В общем объясню суть: я хочу автоматом, через СОМ-соединение выгружать документы из одной ИС в другую, чтобы как-то их сопоставить, решил создать регистр сведений, в котором будут записи уже выгруженных документов. Далее бухи с ними могут делать, что хотят, даже удалять. При этом документ, если был удален, не должен выгружаться повторно (именно поэтому запись в регистре должна остаться, с пустой ссылкой). Измерение у меня - идентификатор документа другой ИС. А ссылка на документ в 1С - это всего-лишь дополнительное поле.
    Как вы посоветуйте?
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Вы вдумайтесь, что написали :)

    Как он выгрузиться повторно, если удален? Сделайте проверку в плане обмена, что бы удаленные не выгружались (там передается признак, что документ надо из второй системы удалить)

    А если он удален, то наличие ПУСТОЙ ссылки не решит проблему.
  6. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Объясню по подробнее: у меня есть документы в другой ИС, которые необходимо периодически, без участия пользователей экспортировать в 1С. При этом в той ИС, из которой я беру данные нельзя установить что уже было выгружено, а что - нет. А повторно выгружать - никак нельзя. Есть вероятность, что часть документов, что была "ошибочно" заведена в той ИС в силу своей "ошибочности" была экспортирована в 1С, тут уже ничего не поделаешь, есть бухгалтер, который уже сам отследит на корректность и удалит ненужные. Было придумано мною: создать регистр сведений - который сопоставляет эти документы между ИС (тем самым будет исключен повтор выгрузки). Казалось бы: ведь можно указывать номер документа в 1С = номеру документа в той ИС, но это не решает проблему, если в то ИС - подправят номер, или дату (особенно будет глючить при смене года, где нумерация сбрасывается), да и плюс - могут удалить док в 1С, а он будет очень долго перевыгружаться. Обратную связь (с проверкой на удаление документа из той ИС) делать не надо. Задача стоит в экспорте документов из той ИС в 1С.

    Вы лучше предложите чего-нить дельного, а то все критикуйте, да критикуйте.

    Напр. такая идея: хранить вместо ссылки уникальный идентификатор документа 1С в строковом шестнадцатиричном виде. Но тогда вопрос: этот идентификатор при удалении объекта из системы со временем не может быть назначен другому объекту? Ссылка на документ явно нужна, на тот случай, если документы в той ИС будут исправлены, то можно иметь возможность исправить их в 1С, если бухгалтер их еще не успер провести.

    Ваше слово?
  7. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    А каким образом идентифицируются документы в "другой ИС"? В любом случае, насколько я понял задачу, если идентификация однозначная, то хранить нужно информацию о выгруженных объектах, а не об объектах, которые были созданы в 1С в результате выгрузки. То есть в Вашем регистре нужно хранить ИД объекта "другой ИС", и при загрузке проверять, что если этот объект уже загружался, то повторять его загрузку не нужно.
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В итоге: задача сводится к тому, что в другой ИС сохранить данные, что выгрузилось :)
    Что в корне отличается от первоначального :)
  9. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Не правильно вы поняли. Мне нужны сслыки на документы в 1С, так как в случае, если в другой ИС их подправят, то при повторной выгрузке они должны быть найдены в 1С, и подправлены там, как я их буду искать, если у меня есть только идентификатор документа той системы? - никак, нужно сопоставление с документом в 1С.
  10. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    А как Вы собираетесь определять после изменения дока в другой ИС изменен уже документ в 1С или нет? И что Вы собираетесь делать, например когда в 1С док был удален, а в другой ИС его изменили?
    В общем, задача какая-то мутная. И про ИД объекта другой ИС ни слова. Делайте тогда регистр сведений содержащий связки ДокументДругойИС-Документ1С. А ненужные документы удаляйте из 1С обработкой, которая перед удалением дока будет проверять регистр и чистить ссылки на удаляемый документ.
  11. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    обычно проверка ставится на отдающей стороне, а не на принимающей :) иначе можно до бесконечности гонять потоки данных...

    Проще в отдающей ИС завести регистр и организовать что-то вроде плана обмена. Если с регистром сложно, то в доке поле Изменен и Выгружен, и запретить изменение номера и даты (если там есть) документа если он выгружался. И выгружать только документы с этим поднятым флагом Изменен.
  12. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Про другую ИС: ее нельзя кофигурировать, нельзя создавать другие объекты, она закрытого типа, у нее нет понятия регистра, поэтому-то регистр должен храниться в 1С. У объектов той системы есть 5 основных поля, по которым можно определить однозначно документ, а также проверить изменялся ли он или нет: 1. Идентификатор документа (он там есть, и он уникален - число типа long), 2. Номер документа, 3. Дата документа, 4. Фамилия изменившего документ, 5. Дата последнего изменения докуента. Выгрузка из той ИС будет происходить под пользователем "Синхронизатор" (это я к примеру), который будет перепроводить документ в той ИС, тем самым поставив себя последним изменившим, и дату выгрузки. Затем когда кто-нить, чего-нить поправит в документе, его можно будет отловить именно по этому полю.

    Раз нельзя создать ссылку на документ 1С без гемора с удалением документа, давайте второй вариант: вместо ссылки хранить уникальный идентификатор объекта 1С, но тогда вопрос, который был задан выше: если объект будет удален из системы, этот идентификатор не будет переназначен в будующем другим объектам? А также не испортится при тестировании и исправлении ошибок?

    P.S. Задача абсолютно не мутная. 1С - отличная система, только жалко, что наша организация не ее выбрала ранее, а выбор был сделан на PDM - систему, в которой помимо кострукторско-технологических данных есть еще и складской учет (правда не такой мощный как в 1С), но еще есть планирование (намного лучше чем в 1С). Деньги в той ИС считать нельзя. И чтобы не делать двойную работу приходится совмещать эти две системы (основные справочники уже сопоставлены, остается грамотно оформить экспорт документов)
  13. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Ну кто-нить может ответить на вопрос выше?
  14. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Храните ТРИ значения, а не два и проблема будет решена :)
    Догадаетесь сами, что за значения?
  15. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Так никто и не ответил на мой вопрос выше (видать никто не знает)
    Проблема решена не будет, если я скажем буду хранить номер документа, дату, тип; так как при удалении документа этот номер с этой датой и типом в 1С наследуется следующему документу (это я рассуждаю про документы в 1С). Номер документа в 1С не равен номеру документа в той ИС (не хочу портить автонумерацию, так как в той ИС номера слишком извращенные)
  16. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Подумав еще раз, я понял, что задача решается совсем просто.

    В РС у вас одно изменерение: это Ид документа в другой системе (он уникальный, так что отлично подходит под измерение), в ресуры будем пихать ссылку на документ в 1С.

    Далее: в событие пометки удаления в 1С необходимо добавить код, который запишет в данный РС запись, которая удалит ссылку на документ, но оставит ИД документа в другой системе.

    Имеем: если у нас есть ИД + ссылка -> документ в 1С есть, если есть только ИД -> в 1С документа нет.
  17. TopicStarter Overlay
    [GIGA]DEDUSHKA
    Offline

    [GIGA]DEDUSHKA Опытный в 1С

    Регистрация:
    7 мар 2008
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Вашу идею я уже продумывал не раз. Единственное что мне мешает ее реализовать - изменение конфигуратора, которое надо будет контролировать каждый раз при обновлении конфигурации. А она у 1С обновляется часто. Поэтому я эту идею отложил на второй план, а на первый поставил возможность хранения ссылки (напр. уникальный идентификатор объекта 1С). Ну же, просто скажите что идентификатор не уникален при удалении и может наследоваться и я эту идею отброшу.
  18. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1. Нафига хранить ГУИД???? Толку от него будет НОЛЬ без палочки. Только лишняя операция, есть ссылка или нет.
    То же самое даст и просто пустая ссылка.

    2. В ЛЮБОМ случае придется лезть в конфу. В вашем случае - решается все через подписки на события, которые на процесс обновления влияют менее всего.

Поделиться этой страницей