7.7 Установка баз фирмы

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

  1. TopicStarter Overlay
    змейкин
    Offline

    змейкин Опытный в 1С

    Регистрация:
    25 мар 2013
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Не могу ни как понять как черСохранить и восстановить значенеи установить базовую фирму для всх документов чтоб при Открытии документа фирма проявлялась(у меня чет не получаеться
    код в Глобальном
    Код:
    //---------------------------------------------------------------------------------
    Процедура глСохранитьЗначение(Конт="", сИдентификатор="", Значение="") Экспорт
    Если ТипЗначенияСтр(Конт) = "ГрупповойКонтекст" Тогда
    сГруппа = Конт.Вид();
    Иначе
    // строка или что-то другое, преобразуем все к строке
    сГруппа = СокрЛП(Строка(Конт));
    КонецЕсли;
    сКлюч = ?(ПустаяСтрока(сГруппа) = 0, сГруппа+"_", "")+СокрЛП(сИдентификатор);
    СохранитьЗначение(сКлюч, Значение);
    КонецПроцедуры
    //----------------------------------------------------------------------------------------------
    Функция глВосстановитьЗначение(Конт="", сИдентификатор="", ЗначПоУмолчанию=0) Экспорт
    Перем сГруппа, Фирма, ДатаЗнач;
    Если ТипЗначенияСтр(Конт) = "ГрупповойКонтекст" Тогда
    сГруппа = Конт.Вид();
    Фирма = Конт.Фирма;
    ДатаЗнач = Конт.ДатаДок;
    Иначе
    // строка или что-то другое, преобразуем все к строке
    сГруппа = СокрЛП(Строка(Конт));
    Фирма = 0;
    ДатаЗнач = РабочаяДата();
    КонецЕсли;
    // сразу попытаемся восстановить значение по ключу
    сКлюч = ?(ПустаяСтрока(сГруппа) = 0, сГруппа+"_", "")+СокрЛП(сИдентификатор);
    Значение = ВосстановитьЗначение(сКлюч);
    Если (глОбщиеУстановки = 2) и (ТипЗначенияСтр(Значение) <> "") Тогда
    // оставляем то, что уже получили
    ИначеЕсли Метаданные.Константа(сИдентификатор).Выбран() = 1 Тогда
    // берем из константы...
    Если Метаданные.Константа(сИдентификатор).Периодический = 1 Тогда
    // ...периодической
    Значение = Константа.ПолучитьАтрибут(сИдентификатор).Получить(ДатаЗнач);
    Иначе
    // ...обычной
    Значение = Константа.ПолучитьАтрибут(сИдентификатор);
    КонецЕсли;
    ИначеЕсли ПустоеЗначение(Фирма) = 0 Тогда
    // из реквизита объекта (справочника)
    Попытка
    // прочитаем реквизит
    Реквизит = Метаданные.Справочник("Фирмы").Реквизит(сИдентификатор);
    Если Реквизит.Выбран() = 1 Тогда
    // есть такой реквизит...
    Если Реквизит.Периодический = 1 Тогда
    //... периодический
    Значение = Фирма.ПолучитьАтрибут(сИдентификатор).Получить(ДатаЗнач);
    Иначе
    //... обычный
    Значение = Фирма.ПолучитьАтрибут(сИдентификатор);
    КонецЕсли;
    КонецЕсли;
    Исключение
    КонецПопытки;
    КонецЕсли;
    // если все-таки ничего не получили, то используем значение по умолчанию
    Если ТипЗначенияСтр(Значение) = "" Тогда
    Значение = ЗначПоУмолчанию;
    КонецЕсли;
    Возврат Значение;
    КонецФункции
    //-----------------------------------------------------------------------------------------------
    //КурсСтрокой
    Процедура глУстФирма(Конт) Экспорт
    // вначале сохраним фирму, которая была выбрана
    глСохранитьЗначение(Конт.Вид(),"СтараяФирма",Конт.Фирма);
    // произведем выбор
    спрФирмы = СоздатьОбъект("Справочник.Фирмы");
    Если спрФирмы.Выбрать("","")=1 Тогда
    Конт.Фирма = спрФирмы.ТекущийЭлемент();
    КонецЕсли;
    КонецПроцедуры
    //----------------------------------------------------------------------------------------------
    //код в документе
    [code]Процедура ВводНового(ПризнакКопирования)
    Фирма = глВосстановитьЗначение(,"БазФирма");//БазФирма это константа которую я хочу восстановить при открытии в формуле фирма
    КонецПроцедуры
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не пойму зачем такие сложности... Почему не присвоить значение напрямую константе. Или у вас для каждого вида документа м.б. свое значение?
  3. TopicStarter Overlay
    змейкин
    Offline

    змейкин Опытный в 1С

    Регистрация:
    25 мар 2013
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    ну у меня получается учет по множеству фирм) у меня кнопка есть на форме она выбирает фирмы по которым сформировать документ но я ни пойму как чтоб при открытии был просто открыта текущая фирма справочника)много че перепробывал че то не помогает(
  4. Vlan
    Offline

    Vlan Гость Гость

    Вы представляете, что будет, если для каждого документа сохранять Фирму через СохранитьЗначение?
    Делайте общий реквизит для документов - Фирма, туда будете заносить выбранный элемент справочника. Или перечисление. Или... что у вас там?
    Сколько можно на одни и те же грабли наступать, создавая списки значений, выбирая из них строковые значения, пытаясь по строке получить элемент справочника?
    На форме реквизит - Фирма со значением Справочник.Фирмы. Все! Все просто и понятно.
  5. TopicStarter Overlay
    змейкин
    Offline

    змейкин Опытный в 1С

    Регистрация:
    25 мар 2013
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Да начальник сказал сделать( так как Влан предложил я так сделал )ему теперь по другому надо ))чтоб блин вот так выводилось хоть ты тресни(вроде все понятно как сделать но оно черт значение не сохраняет(
  6. Vlan
    Offline

    Vlan Гость Гость

    (со вздохом) Кидайте мд...
  7. TopicStarter Overlay
    змейкин
    Offline

    змейкин Опытный в 1С

    Регистрация:
    25 мар 2013
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    http://us.ua/1091270/ :aua: :aua: :aua:
  8. Vlan
    Offline

    Vlan Гость Гость

    И в чем сложности?
    В документах фирма сохраняется. А если нужно, чтобы в новом сразу заполнялась, то я бы сделал так в процедуре ПриОткрытии() или ВводНового():

    Код:
    Если ПустоеЗначение(Фирма) = 1 Тогда
    СпрФ = СоздатьОбъект("Справочник.Фирмы");
    Если СпрФ.НайтиПоКоду(1, ) = 1 Тогда //Здесь подставляем нужный код
    Фирма = СпрФ.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
  9. Vlan
    Offline

    Vlan Гость Гость

    Вариант с константой еще проще:

    Код:
     Если ПустоеЗначение(Фирма) = 1 Тогда
    Фирма = Константа.БазФирма;
    КонецЕсли;
  10. TopicStarter Overlay
    змейкин
    Offline

    змейкин Опытный в 1С

    Регистрация:
    25 мар 2013
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Спасибо огромное)интернета не было блин целый день)угу до меня дошло)заработало спасибо большое)

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