7.7 Справочник->документ. подчинение?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем evgeniyok, 21 июл 2008.

  1. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Привет всем.
    Есть вопрос - нужно обсудить. Думаю что ответ будет отрицательным, но все же..., может быть какой-нибудь вариан решения существует.
    Задача
    Есть справочник Клиент. Необходимо чтобы при формиравании документа Контракт, можно было бы использовать владельца - справочник КЛИЕНТ. Возможно ли сделать такое подчинение справочник -> документ. Если нет, то может есть какие-нибудь варианты такого. ТИС 7.7.
    Просто мне кажется будет красивее формировать документ Контракт из Клиентов.
    Спасибо

    ЗЫ: Да, забыл сказать если кому не понравиться вопрос.... не пинайте.
  2. Kaboom
    Offline

    Kaboom Опытный в 1С

    Регистрация:
    2 июл 2007
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    ИМХО только реквизит в шапке документа.
  3. Tiger
    Offline

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Если я правильно понял, то в форме элемента(или журнала) справочника "Контрагенты" надо разместить кнопку "Контракт". При нажатии этой кнопки создается новый документ "Контракт" и в шапке документа заполняется поле "Контрагент", чем и обеспечивается связка справочника и документа.
  4. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Похоже единственный правильный вариант. Совсем я че-то. Не подумал.
    Хотел тогда узнать, но это не будет же подчиненностью как таковой? Я просто имел ввиду то, как ведут себя подчиненные справочники - этот механизм (Открываем справочник, и просматриваем подчиненный документ). Как мне тогда запретить создавать документ контракт из списка контрактов, а разрешить только из справочника Клиентов? (если только не изменять интерфейс...). Надеюсь понятливо объяснил...........)

    ВСЕМ СПАСИБО ЗА ОТВЕТЫ. Так наверное и прийдется поступить.
  5. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    Как мне тогда запретить создавать документ контракт из списка контрактов©
    Код:
    Процедура ВВодНового()
    Сообщить("Документы контракт нельзя вводить в ручную...");
    СтатусВозврата(0);
    Возврат;
    КонецПроцедуры
    
  6. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    А в справочнике клиентов в форме списка делаешь кнопку "Контракт".
  7. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Ребят не подскажите.... знаю, что можно передавать значение в новую форму, а потом его получить Параметром..., а вот можно ли передать в новую форму более одного значения и потом с ними работать? спасибо..................... :)
  8. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    одного значения называется списоком или таблицей значений :)
  9. logger
    Offline

    logger Опытный в 1С

    Регистрация:
    11 окт 2006
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    И передаешь контекстом :)
  10. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Ребят сделал так что параметр передается в новый документ (Справочник -> Документ).
    А как назад передать название контракта. Просто я на кнопку повесил создание нового документа из справочника, а как название этого нового документа вновь в справочник передать?
    Спасибо.
  11. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Ребят тут еще одна проблемка.
    Посмотрите код... может че подскажите...
    У меня короче сначала из справочника Клиентов должен выбираться договор или если такого не, то открываться форма с созданием нового договора. А тут получается, что открывает постоянно договор если он существует и еще окно с созданием нового договора. Как правильно сделать цикл?

    Код:
    Процедура СоздатьКонтракт()               
    КлиентНаименование = Наименование;      
    Если (Наименование <> "") и (ПолноеНаименование <> "") и (FullName <> "") Тогда
    
    докКонтракт = СоздатьОбъект("Документ.Контракт");
    докКонтракт.ВыбратьДокументы(); 
    Пока докКонтракт.ПолучитьДокумент() > 0 Цикл   
    //Если есть контракт по этому клиенту тогда просто открываем
    Пока докКонтракт.ПолучитьДокумент() > 0 Цикл    
    Если КлиентНаименование = Строка(докКонтракт.Покупатель) Тогда  
    ОткрытьФормуМодально(докКонтракт.ТекущийДокумент(),);         //Открытие формы документов Контракт
    прервать
    КонецЕсли;
    КонецЦикла;
    
    Если КлиентНаименование <> Строка(докКонтракт.Покупатель) Тогда 
    Записать();
    ОткрытьФормуМодально("Документ.Контракт", КлиентНаименование,); //Создание нового документа с передачей параметров
    КонецЕсли;
    КонецЦикла;           
    Иначе
    ОчиститьОкноСообщений();
    Сообщить("Перед созданием контракта необходимо заполнить данные по Клиенту!", "i") 
    КонецЕсли
    КонецПроцедуры
    
    
    
    Спасибо!

    НЕ ЗАБЫВАЕМ ПОЛЬЗОВАТЬСЯ ТЭГОМ
    Код:
    
    
  12. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    не очень хорошо стравнивать текст... лучше сравнивать объекты...
    КлиентНаименование это что у тебя?
    и еще можешь попробовать поставить
    СОКРЛП при сравнении....
  13. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1

    ОК СокрЛП() - учту.
    КлиентНаименование - текущий реквизит Наименование из справочника Клиенты.
  14. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    вместо КлиентНаименование сам элемент притащи сюда и сравнивай не с Строка(докКонтракт.Покупатель), а с докКонтракт.Покупатель, если конечно Покупатель у тебя тоже справочник клиентов...
  15. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Ребят помогите составить цикл..., а то че-то вообще туплю.

    У меня есть кнопка... при клике по ней необходимо проверить существование документов
    1. Если находит в списке - тогда просто открыть
    2. Если не находит - открыть создание нового документа

    Код:
    
    докКонтракт = СоздатьОбъект("Документ.Контракт");
    докКонтракт.ВыбратьДокументы();             
    //Проверяем существующие Контракты        
    Пока докКонтракт.ПолучитьДокумент() > 0 Цикл  
    //Если есть контракт по этому клиенту тогда просто открываем  
    Если (Наименование = СокрЛП(докКонтракт.Покупатель)) и (Код = СокрЛ(докКонтракт.КлиентКод))  Тогда              
    ОткрытьФормуМодально(докКонтракт.ТекущийДокумент(),);
    прервать                             
    КонецЕсли;
    Если (Наименование <> СокрЛП(докКонтракт.Покупатель)) Тогда
    сообщить("НЕТУ");
    КонецЕсли
    КонецЦикла;
    
    
    Здесь в коде при обходе документов он постоянно выкидывает оба варианта Если...
    Как мне сделать так, чтобы сначала полностью проверился список документов, если Наименование = СокрЛП(докКонтракт.Покупатель) и Код = СокрЛ(докКонтракт.КлиентКод) не выполняется... то только тогда создавать новай контракт...

    Пасиб... Большое..
  16. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    это не то, о чем мы с тобой общались выше? че за кнопка? че за документы? как они искаться будут? какие признаки "существования" документа?

    Не редактируй больше сообщения! я не успеваю написать, как ты уже че-то отредактировал!
    Если контрагент у тебя один, и надо проверить нет ли на него документов, то пиши так:
    Код:
    докКонтракт = СоздатьОбъект("Документ.Контракт");
    докКонтракт.ВыбратьДокументы(); 
    Пока докКонтракт.ПолучитьДокумент() = 1 Цикл   
    Если (Наименование = СокрЛП(докКонтракт.Покупатель)) и (Код = СокрЛ(докКонтракт.КлиентКод))  Тогда
    Нашли = 1;
    Документ = докКонтракт.ТекущийДокумент(); 
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если Нашли = 1 Тогда
    
    а вот тут уже открывай
  17. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Stado Adama большое тебе спасибо.
    Просто я столько пытался сделать..., а оказалось совсем просто.
    СПАСИБО!
    Просто ща катаю конфу... в ознокомительных целях для себя. Спотыкаюсь много.
    Можно будет еще если что вопросы задавать, в крайних случаях?
  18. TopicStarter Overlay
    evgeniyok
    Offline

    evgeniyok

    Регистрация:
    31 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Ребят сорри еще нужна помощь...

    Подскажите событие при активации формы.. что-то наподобие ПриПовторномОткрытии.

    И еще одно... как мне перенести название документа Контракта в подчиненный реквизит справочника Клиенты? Возможно ли.
    Я делал Параметром..., получалось передать из справочника в документ нормально. А вот обратно... не получается.

    Не ругайте.

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