7.7 Перевод данных из одного справочника в другой

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

  1. TopicStarter Overlay
    Monolitovec
    Offline

    Monolitovec

    Регистрация:
    27 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Возникла проблема. Суть её такова:
    Есть два справочника, Изделия и База Изделий. В изделиях хранятся данные об уже имеющихся изделиях, а в справочнике База Изделий соответственно данные об еще не поступивших изделиях, но уже известных. Задача у меня такова: Сделать так чтобы сначала открывался справочник Изделия, из него можно было открыть справочник База Изделий и выбрать в этой базе какое-либо изделие и оно переносилось в справочник Изделия. Дело в том что я справочники уже сделал, все вроде как готово, а вот как сделать так чтобы изделия переносились при выборе из одного справочника в другой ум пока осилить не может, просто справочник База Изделий открывается а вот функции выбрать нету, когда жмеш ентер, просто открывается окошко редактирования изделия. Я немного в этом нуб... Пытаюсь изучить 1с самостоятельно, но времени критически нехватает. :unsure: Прошу помощи!
  2. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Попробуй сделать справочник База Изделий подчиненным срправочнику Изделия.
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В этом случае каждому элемету справочника Изделий будет принадлежать своя База. Думаю не годится.

    Используй
    Код:
    Форма.Параметр 
    
    
    для передачи в справочник БазаИзделий флага что идет именно ВЫБОР элемента. И передачи обратно выбранного элемента

    например:

    Код:
    Процедура ПриОткрытии()
    Если Форма.Параметр="Выбор" Тогда
    Форма.ОбработкаВыбораСтроки(1);
    КонеецЕсли
    ....
    КонецПроцедуры
    
    Процедура ПриВыбореСтроки()
    Форма.Параметр=ТекущийЭлемент();
    СтатусВозврата(0);
    Форма.Закрыть();
    КонецПроцедуры
    
    
  4. TopicStarter Overlay
    Monolitovec
    Offline

    Monolitovec

    Регистрация:
    27 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Попробовал сделать так:
    Код:
    Процедура ПриОткрытии()
    
    Если глВыбор = 2 Тогда 		
    Форма.ОбработкаВыбораСтроки(1);      
    КонецЕсли;
    
    КонецПроцедуры
    
    Процедура ПриВыбореСтроки()   
    Форма.Параметр=ТекущийЭлемент();   
    СтатусВозврата(0);   
    Форма.Закрыть();
    КонецПроцедуры
    
    Теперь добавилась клавиша выбор, но вот изделие не переносится. В чем может быть дело? Оставил только один реквизит Наименование, но всеравно переносится не хочет. Для меня этот важный штрих сделать обьязательно, иначе все мои труды насмарку(
  5. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Вообще, логичнее и проще, имхо, было бы не создавать 2 справочника, а в одном справочнике изделия создать 2 группы, к примеру:
    - в наличии
    - не поступившие
    И переносить из группы в группу при необходимости, т.к. как я понимаю, структура справочников полностью идентична, а по описанию нужно именно перемещать(т.е. удалять после переноса), а не копировать элементы.
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вообще-то sergey прав. Логичнее было бы делать в одном справочнике, только добавить реквизит (в наличии, не поступившие) и по нему переключать фильтр. Но тут не известна постановка задачи (м.б. нужно хранить историю или еще что-то)

    Если же организовывать ч/з 2 справочника, то пернос не осуществляется из-за отсутствия кода обработки параметра после вызова 2-го справочника (параметр/элемент ты выбрал/передал, но не получил/обработал)

    ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>)
    Назначение:
    Открывает визуальную форму списка справочника.
    Возвращает: 1 - если действие выполнено, 0 - иначе.
    Параметры:
    <ОписательОбъекта> - строковое выражение. ''Справочник.ХХХХХ.YYYYY'', где ХХХХХ - вид справочника, YYYYY - имя выбранной формы списка справочника;
    <КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен).
    Замечание:
    Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0.
  7. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Согласен, но я предложил вариант, в котором вообще изменения в конфигурации не требуются.
    А вообще, с доп реквизитом, конечно, будет еще удобнее.
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Почему я не согласен с предложеным вариантом "все во одном справочнике, но по группам" - достаточно включить редим "бег групп" и потеряешься....
  9. TopicStarter Overlay
    Monolitovec
    Offline

    Monolitovec

    Регистрация:
    27 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Тоесть как я понял в первой форме должна быть процедура получения изделия из второй формы?
    А как именно сделать эту процедуру? Можно пример? Скажем есть реквизиты Наименование, Фирма, модель.
    Другие варианты к сожалению не подходят.
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Самый простой-тупой вариант:
    Код:
    Парам="";
    ОткрытьФормуМодально("Справочник.БазаИзделий.ФормаСписка",Парам);
    //на выходе получаешь ссылку на выбранный элемент
    
    

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