8.х Несколько вопросов новичка v.8.1

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

Статус темы:
Закрыта.
  1. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток! Нужно сделать в справочнике следующее:
    1. Чтобы дата из реквизита справочника скопировалась в реквизит найденного документа.
    2. Открыть этот документ.
    3. Пишу такой код:

    Код:
    Процедура ПоставитьДатуНажатие(Элемент)
    Д = Документы.Норма.Выбрать();
    Пока Д.Следующий() Цикл
    
    Если Д.Номер = ЭтотОбъект.Код  тогда
    Док = Д.ПолучитьОбъект();
    Док.ДатаЗакрытия = ЭтотОбъект.ДатаЗакрытия;
    Док.Записать();
    Форм = Док.ПолучитьФорму("ФормаДокумента");
    Если Не Форм.Открыта()Тогда
    Форм.Открыть();
    Прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    
    Цикл крутится и ничего не делает в итоге хотя код справочника и номер документа 100% совпадают!
    Помогите пожалуйста

    И еще один вопросик.
    В справочнике есть к примеру записи которые я выделил другим цветом. Вот как эти записи скрыть оставив остальные.

    Буду очень признателен за ответ или ссылку где это описанно.
  2. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Выделял записи цветными карандашами? :)
  3. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    мЦвет = Новый Цвет(255, 0, 0);

    Если ЗначениеЗаполнено(ДанныеСтроки.ДатаЗакрытия) Тогда

    ОформлениеСтроки.ЦветТекста = мЦвет;

    Не издевайся а помоги если можешь. :)
  4. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Ну, ты сам на свой второй вопрос ответил - ставь отбор, где ДатаЗакрытия <> ПустойДате. :)

    Насчет первого:
    Не проверял, но ближе будет нечто вроде
    Код:
    // обрати внимание, что иногда в справочнике бывает числовой код, а иногда строковый, 
    Док = Документы.Норма.НайтиПоКоду(ЭтотОбъект.Код); 
    //приведение типов иногда приводит к "чудесам".
    // Проверку на найденость документа сам сделаешь.
    Док.ДатаЗакрытия = ЭтотОбъект.ДатаЗакрытия;
    // у документа может не быть формы "ФормаДокумента" - но по умолчанию ПолучитьФорму берет основную
    Форма = Док.ПолучитьФорму();
    Форма.Открыть(); 
    // Док.Записать(); // пусть юезер сам сохраняет документ, коли он его уже видит.
    // не делай операций над данными за спиной у пользователя - это
    // может привести к серьезным последствиям
    
    
    
  5. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    1)
    Док = Документы.Норма.НайтиПоНомеру(ЭтотОбъект.Код);

    Док.ПолучитьОбъект();
    Док.ДатаЗакрытия = ЭтотОбъект.ДатаЗакрытия;
    Форма = Док.ПолучитьФорму();
    Форма.Открыть();


    Ошибка : Поле объекта недоступно для записи(ДатаЗакрытия).
    (Док.ДатаЗакрытия = ЭтотОбъект.ДатаЗакрытия;

    А как его сделать доступным?

    2) А насчет 2 вопроса какой командой можно сделать строки невидимыми и потом снова видимыми в справочнике?
  6. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    1. Ну, дык
    Объект = Док.ПолучитьОбъект(); // !!
    Объект.ДатаЗакрытия = ЭтотОбъект.ДатаЗакрытия;
    Форма = Объект.ПолучитьФорму();
    Форма.Открыть();
    // ты уверен, что система нашла документ?

    2. http://www.1c-pro.ru/index.php?showtopic=11640&hl=
  7. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Да уверен так как система открывает форму нужного мне документа если в коде нет этой строки:

    Док.ДатаЗакрытия = ЭтотОбъект.ДатаЗакрытия;

    Ошибку то теперь не выдает но и дату не подставляет в поле из справочника:(
  8. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Так с первым вопросом разобрался.Спасибо!
  9. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Ну дык, тыж людям расскажи, что там было то, а то придут по поиску, а ответа нету - будут тему создавать...
  10. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    А как проверить что значение Даты = ПустаяДата?
    Процедура фТолькоОткрытыеПриИзменении(Элемент)
    Код:
    СпрСпис = Справочники.Агенты.ПолучитьФормуСписка();
    СпрСпис.Отбор.ДатаЗакрытия.Значение = ????;
    
    А насчет первого:
    
    Процедура ДатаОткрытияПриИзменении(Элемент)
    Док =  Документы.Норма.НайтиПоНомеру(ЭтотОбъект.Код);
    Объект = Док.ПолучитьОбъект();
    Объект.ДатаОткрытия = ЭтотОбъект.ДатаОткрытия;
    Объект.Записать();
    КонецПроцедуры
    
    Процедура ДатаЗакрытияПриИзменении(Элемент)
    Док =  Документы.Норма.НайтиПоНомеру(ЭтотОбъект.Код);
    Объект = Док.ПолучитьОбъект();
    Объект.ДатаЗакрытия = ЭтотОбъект.ДатаЗакрытия;
    Объект.Записать();
    КонецПроцедуры
    
    Вот так у меня все работает 100%.
  11. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Подскажите пожалуйста как проверить значение Даты = ПустаяДата???
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    ЗначениеЗаполнено(<Значение>)
    
  13. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    У меня так ничего не получается:

    СпрСпис.Отбор.ДатаЗакрытия.Значение = Не ЗначениеЗаполнено(ДанныеСтроки.ДатаЗакрытия)

    Ошибка: Значение не является значением объектного типа (ДатаЗакрытия)

    Подскажите пожалуйста как прапвильно в отборе подставить???
  14. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Вот к примеру в FoxPro проверку я бы делал так = { . . }
    Не пойму как проверить дату на пустое значение в 1С????? :(
  15. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Почитай вот здесь:
    http://v8.1c.ru/predpriyatie/typical_problems_Types.htm

    Как проверить дату на пустое значение? Есть ли аналог функции ПустоеЗначение()?

    В 1С:Предприятии 8 не существует понятия «пустое» значение. Любая переменная всегда имеет некоторое значение. Для многих типов данных в 1С:Предприятии 8 существуют значения по умолчанию. Эти значения используются системой в тех случаях, когда нет явного указания на устанавливаемое значение. Например, значение по умолчанию используется при очистке поля ввода.

    Поэтому, для того чтобы проверить дату на «пустое» значение, нужно сравнить имеющееся значение со значением типа Дата по умолчанию. Например:

    Код:
    Функция ДатаНеЗаполнена(ПереданноеЗначение)
    Если ПереданноеЗначение = Дата('00010101') Тогда
    Возврат Истина;
    КонецЕсли;
    КонецФункции
    
  16. TopicStarter Overlay
    Armagedron
    Offline

    Armagedron

    Регистрация:
    9 апр 2008
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое! Все ясно! Все получилось.
    Вот так вот получилось:

    Код:
    //Отбор происходит при изменении флажка
    Процедура фТолькоОткрытыеПриИзменении(Элемент)
    СпрСпис = Справочники.Название.ПолучитьФормуСписка();
    Если  Элементыформы.фТолькоОткрытые.Значение = Истина тогда
    
    СпрСпис.Отбор.ДатаЗакрытия.Значение = Дата('00010101');
    СпрСпис.Отбор.ДатаЗакрытия.ВидСравнения =  ВидСравнения.Равно;
    СпрСпис.Отбор.ДатаЗакрытия.Использование = Истина;
    иначе
    СпрСпис.Отбор.Сбросить();    
    
    КонецЕсли;
    КонецПроцедуры
    
    
  17. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    [warn=АндрейV8]
    Прочитайте, пожалуйста, правила форума.

    Тогда вы узнаете (как минимум), что:

    - для оформления кода программы существует специальный тэг
    - один вопрос на одну тему
    [/warn]
Статус темы:
Закрыта.

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