7.7 Предопределённый метод "ПриЗаписи" справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем evgPinsk, 30 дек 2017.

  1. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    В модуле формы списка предопределённая процедура ПриЗаписи()
    Процедура ПриЗаписи()
    Записать();
    СоздатьПапкуДляТМЦ(текущийЭлемент());
    КонецПроцедуры


    Вопрос: Как в этой процедуре получить ссылку на создаваемый элемент? / ТекущийЭлемент() или Контекст() передаёт пустую ссылку, какбудто элемент ещё не записан/

    p/s/ В точно такойже процедуре формы элемента справочника всё работает. А в форме списка - нет
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Процедура ПриЗаписи()
    Спр=СоздатьОбъект("Справочник.ТутВидСправочника");
    Если Спр.НайтиЭлемент(ТекущийЭлемент())=1 Тогда
    сообщить(Спр.ТекущийЭлемент());
    КонецЕсли;
    КонецПроцедуры
    evgPinsk нравится это.
  3. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    Забыл сказать, мне нужно чтобы ТекущийЭлемент() возвращал ссылку на элемент при записи нового элемента. При записи нового элемента возвращается пустая ссылка
    Т.е. и мой и ваш вариант работает только при редактировании элемента но не при его ВводеНового
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Тогда ищите по коду.
  5. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    Процедура ПриЗаписи()
    записать();
    спр=СоздатьОбъект("Справочник.ТМЦ"); Сообщить(Код);
    Если спр.НайтиПоКоду(код)=0 Тогда
    Сообщить("Не найдена ссылка на товар");
    КонецЕсли;
    КонецПроцедуры

    Код возвращается, но как я понял, сам товар ещё не записан, и соответственно спр.НайтиПоКоду(код) возвращает 0
    Последнее редактирование: 1 янв 2018
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    А если устанавливать родителя перед записью элемента? Судя по названию процедуры такая и стоит задача
  7. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    Не совсем понял, что значит установить Родителя?
    Элемент товара создаётся пользователем вручную, в форме списке справочника, в уже определённой группе товаров. Задача стоит при создании нового товара создать в файловой системе соответствующий товару каталог, в котором будут хранится фотки товара
  8. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    293
    Симпатии:
    2
    Баллы:
    29
    Все гораздо проще внизу кода добавляй переменную НовыйЭлемент = 0;
    и предопределенную процедуру: ВводНового() где укажи НовыйЭлемент = 1;
    да и процедуре ПриЗаписи() верни 0 обратно; НовыйЭлемент = 0;
    а потом проверяй в любом месте
  9. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    Это не понял
    В каком любом?
    --- Объединение сообщений, 2 янв 2018 ---
    После записи элемента справочника мне нужно получить ссылку на этот элемент ).
    В какой предопределённой процедуре это можно сделать? )
    --- Объединение сообщений, 2 янв 2018 ---
    п.с. Удивляюсь иногда 1су, казалось бы такие простые вещи, а так приходится извращаться, чтобы найти их решение )
  10. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    293
    Симпатии:
    2
    Баллы:
    29
    Надо проверить, но после команды Записать() - ТекущийЭлемент() - это и будет ссылка
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    В том то и дело что нет текущего элемента. При записи нового его еще просто нет.
  12. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    Верно, нет. Так а что делать? Решение есть?
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    есть... у создаваемого элемента есть реквизит - Родитель. Заполняйте как вам нужно. Т.е вызов вашей процедуры без указания параметра. Прямое обращение без всякого контекста (при условии что процедура в теле модуля). Если нет - контекст.
  14. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    Наверное туплю, но при чём тут ссылка на родитель? /да, она не пустая/
    Задача: пользователь руками создаёт элемент ТМЦ (может в "списке формы справочника", а может через "форму элемента").
    И у меня уже есть в глобальном модуле процедура СоздатьФоткиДляТМЦ(ТМЦпараметр)
    Мне нужно было просто вызвать эту процедуру при создании нового ТМЦ (в "форме элемента" ТекущийЭлемент() передаёт ссылку на элемент, а в "форме списка справочника" - почемуто нет)

    Использование в качестве Контекст вместо ТекущийЭлемент(), не всегда сработает, т.к. например Контекст.Уровень() почему-то не возвращает уровень нового создаваемого ТМЦ. /а мне нужно знать именно уровень товара, т.к. я в файловой системе дублирую свой справочник ТМЦ/

    п.с. для моего случая решение через грабли понятно, значение Уровень можно получить через Родитель.Уровень().
    Но думал может есть более красивое решение для всех.
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Думаю остается только Родитель.Уровень().
    Не хочу ввязываться в ваш алгоритм - почему не привязаться к коду элемента при создании фотки. Зачем вам уровень?.
    Единственное объяснение - код зависит от родителя.
  16. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    [​IMG]
    Коды я использую только для самих товаров. А вот каталоги идут в виде "Наименования"
    --- Объединение сообщений, 3 янв 2018 ---
    Потомучто нужно знать количество уровней, чтобы верно построить полный путь к файлу:
    Если ТМЦ_.Уровень()=2 Тогда
    имя_файла=имя_файла+СокрЛП(ТМЦ_.Родитель.КаталогФоток)+"\";
    ИначеЕсли ТМЦ_.Уровень()=3 Тогда
    имя_файла=имя_файла+СокрЛП(ТМЦ_.Родитель.Родитель.КаталогФоток)+"\"+СокрЛП(ТМЦ_.Родитель.КаталогФоток)+"\";
    ИначеЕсли ТМЦ_.Уровень()=4 Тогда
    имя_файла=имя_файла+СокрЛП(ТМЦ_.Родитель.Родитель.Родитель.КаталогФоток)+"\"+СокрЛП(ТМЦ_.Родитель.Родитель.КаталогФоток)+"\"+СокрЛП(ТМЦ_.Родитель.КаталогФоток)+"\";
    КонецЕсли;
  17. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Я тоже использую картинки, но не применяю уровни вообще. Путь строю так
    КаталогИБ()+"PickScanDoc\"+СокрЛП(ТМЦ.Код)+"\"+НужныеФайлыДанногоЭлемента;
    Этого вполне достаточно.. Если мы хотим получить набор картинок по уровню - вэлком. И нет необходимости мудрить если пользователь перенес элемент в другую группу.
  18. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    Да, наверное ваше решение более правильное.
  19. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Метод еще чем хорош... Могу хранить что угодно и в любом количестве...
    Так у меня хранятся сканы справки А и Б от завода, сертификаты и прочее... Все в одной папке. Находить очень удобно. Каждый вид сканов имеет свое имя. А обычный фильтр никто не отменял. В форме же списка... Похоже без доп. кнопки просто не обойтись.
  20. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    223
    Симпатии:
    0
    Баллы:
    26
    У меня ведь тоже самое ). Просто мне казалось, что в моём варианте, в каталоге на ФС будет быстрее находить нужный товар. Но т.к. папка "код товара" не информативна, всёравно нужно лезть в 1с и искать соответствие кода товару