7.7 Созданиие элемента справочника, программно

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

  1. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    При создании элемента справочника языком 1С, в частности сотрудника в ЗиК, видны для редактирования только те реквизиты которые были присвоенны программно..
    А как получить всю карточку сотрудика, со всеми подчиненными таблами?
  2. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Можно выдрать куски программы, которые отвечают за заполнение подчиненных таблиц и включить их в твою обработку. А можно программно вызвать создание нового элемента справочника сотрудники, передав в качестве параметра извесные тебе реквизиты. А в справочнике сотрудников прописать в процедуру ПриОткрытии, что если в качестве параметра передан твой список реквизитов, то заполнить соответствующие значения, запустить процедуру записи (которая и должна заполнить подчиненные таблицы) и закрыть форму элемента (чтобы она не появлялась на экране).
    По-моему так...
  3. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    :unsure: неужели нет других путей?
  4. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Не, ты хочешь ничего не заполнять, и чтобы у тебя все само заполнилось?
  5. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    я хочу что бы они остались пустые...
    Когда интерактивно заполняешь, заполнил наименование и код,
    а остальное можно заполнить потом, а у меня получается что остальное реквизиты даже не отображаются, пусть будут пустые.. я не против.. просто структура ломается :(
  6. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Посмотри процедуры ВводНового() и ПриЗаписи(). В них что-то может заполняться автоматом, даже если ты просто указал код и наименование. И пропиши те же действия в своей процедуре
    -----------
    Или, как вариант:
    Создавай элементы не через Спр=СоздатьОбъект(Справочник);Спр.Новый();
    а через ОткрытьФорму("Элемент.Сотрудники",СписокСодержащийКодИНаименование)
    В конце процедуры ПриОткрытии() справочника проверь Форма.Параметр на соответствие списку из кода и наименования. Если соответствует, то устанавливай код и наименование, записывай элемент процедурой записать (можно еще вызвать процедуру призаписи, она вроде только при интерактивной записи вызывается) и ставь статусвозврата(0) (чтобы форма элемента не открывалась)
  7. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Сразу два вопроса:
    • Как передать Код и наименование
    • Как установить статус0
    :unsure:
  8. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Это в обработку:
    Список=СоздатьОбъект("СписокЗначений");
    Список.ДобавитьЗначение(ТвойКод);
    Список.ДобавитьЗначение(ТвоёНаименование);
    ОткрытьФорму("Элемент.Сотрудники",Список)
    Это в справочник
    Процедура ПриОткрытии()
    Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
    Код=Форма.Параметр.ПолучитьЗначение(1);
    Наименование=Форма.Параметр.ПолучитьЗначение(2);
    ПриЗаписи();
    Записать();
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    КонецПроцедуры
  9. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Ругается матом :(
    Говорит:
    Записать() Данная команда не может выполнятся в элементе диалога
    :unsure:
  10. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Тогда так:
    Процедура ПриОткрытии()
    Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
    Код=Форма.Параметр.ПолучитьЗначение(1);
    Наименование=Форма.Параметр.ПолучитьЗначение(2);
    ПриЗаписи();
    Форма.Закрыть(0);
    КонецЕсли;
    КонецПроцедуры

    Процедура ПриЗакрытии()
    записать();
    КонецПроцедуры
  11. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Получилось то же самое два реквезита и фсе...
    Правда я закоментил процедуру ПриЗаписи(); пишет что не нашел такой процедуры.. хотя она есть
  12. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Тогда так (забыл что там есть дурацкий реквизит):
    Процедура ПриЗакрытии()
    если в форма.параметр передан наш список, то
    //а то с совместителями будет косяк
    записать();
    ОсновнойЭлемент=ТекущийЭлемент();
    записать();
    КонецПроцедуры

    А пишет что процедуры нет потому, что она позже по модулю находится
  13. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Он фсе равно ругается... :unsure:
    Опять на Процедуру Записать(); Нашел он ее в Процедуре ПриЗаписиПереодическихРеквизитов...
    Процедуру ПриЗаписи(); включил..
  14. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Вот кусок, который у меня не ругается:
    ПриОткрытии()
    если типзначениястр(форма.параметр)="СписокЗначений" Тогда
    код=форма.параметр.получитьзначение(1);
    наименование=форма.параметр.получитьзначение(2);
    форма.закрыть(0);
    конецесли;

    ПриЗакрытии()
    если типзначениястр(форма.параметр)="СписокЗначений" Тогда
    записать();
    ОсновнойЭлемент=ТекущийЭлемент();
    призаписи();
    записать();
    конецесли;
  15. TopicStarter Overlay
    Реланиум
    Offline

    Реланиум Опытный в 1С

    Регистрация:
    12 сен 2006
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    :unsure: Поперло!!!!!!!!!!!!! пасибо большое при большое.. :)

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