8.х 1С:Предприятие 8.1 Учимся программировать (3 издание) Сергей Кашаев)

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

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Доброго времени суток. Изучаю эту книгу. И по мере изучения возникает масса вопросов. Вот один из них. Для чего прописывать эти строчки и что они означают:
    Код:
       
    ЭлементыФормы.МесяцНачалаОплаты.Значение = "";
    ЭлементыФормы.ГодНачалаОплаты.Значение = "";
    ЭлементыФормы.МесяцОкончанияОплаты.Значение = "";
    ЭлементыФормы.ГодОкончанияОплаты.Значение = "";
    
    
    В процедуре
    Код:
    Процедура ДоговорПриИзменении(Элемент)
    ЭлементыФормы.Клиент.Значение = Договор.ФИОУчащегося;
    ЭлементыФормы.МесяцНачалаОплаты.Значение = "";
    ЭлементыФормы.ГодНачалаОплаты.Значение = "";
    ЭлементыФормы.МесяцОкончанияОплаты.Значение = "";
    ЭлементыФормы.ГодОкончанияОплаты.Значение = "";
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ *
    |ИЗ РегистрСведений.Квитанции
    |ГДЕ Договор=&Договор И
    |Оплачено=&Индикатор";
    Запрос.УстановитьПараметр("Договор", ЭлементыФормы.Договор.Значение);
    Запрос.УстановитьПараметр("Индикатор", Ложь);
    Результат = Запрос.Выполнить().Выбрать();
    Если Результат.Следующий() > 0 Тогда
    ЭлементыФормы.МесяцНачалаОплаты.Значение = Результат.МесяцНачала;
    ЭлементыФормы.ГодНачалаОплаты.Значение = Результат.ГодНачала;
    ЭлементыФормы.МесяцОкончанияОплаты.Значение = Результат.МесяцОкончания;
    ЭлементыФормы.ГодОкончанияОплаты.Значение = Результат.ГодОкончания;
    КонецЕсли;
    КонецПроцедуры
    
    
    Если в конце все равно им присваивается значение:
    Код:
    ЭлементыФормы.МесяцНачалаОплаты.Значение = Результат.МесяцНачала;
    ЭлементыФормы.ГодНачалаОплаты.Значение = Результат.ГодНачала;
    ЭлементыФормы.МесяцОкончанияОплаты.Значение = Результат.МесяцОкончания;
    ЭлементыФормы.ГодОкончанияОплаты.Значение = Результат.ГодОкончания;
    
    
    По книге это стр. 180 Листинг 5.9
    За ранее благодарен...
  2. sharik1c
    Offline

    sharik1c Опытный в 1С

    Регистрация:
    7 июл 2010
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    В начале процедуры строковым значениям присваивается значение "" (Пусто), а если в регистре сведений найдется нужная запись(Результат.Количество() > 0) - присвоятся новые значения.
  3. HexaD
    Offline

    HexaD Опытный в 1С

    Регистрация:
    19 июн 2010
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Назначение первых 4-ёх строчек - просто очистить значения этих полей, если там что-то есть. Зачем это делать, если внизу этим же полям присваиваются значения? Как видите, внизу стоит условие и значение этим полям присваивается не всегда. Если запрос ничего не выбрал, то полям внизу ничего не присвоится, а что бы в них в этом случае не осталось старых значений, в самом начале полям присваивается пустота.
  4. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Делаю все по книге. Для каждой главы отдельные конфигурации (как там написано).
    Но почему то этот код
    Код:
    Процедура УстановитьОплатуНажатие(Элемент)
    Запись = РегистрыСведений.Квитанции.СоздатьМенеджерЗаписи();
    Договор = ЭлементыФормы.Договор.Значение;
    СтруктураОтбора = Новый Структура;
    СтруктураОтбора.Вставить("Оплачено",Ложь);
    ВыборкаЗаписей = РегистрыСведений.Квитанции.Выбрать(,,СтруктураОтбора);
    Пока ВыборкаЗаписей.Следующий() > 0 Цикл
    Если ВыборкаЗаписей.Договор = Договор Тогда
    Запись.Период = ВыборкаЗаписей.Период;
    Запись.Договор = ВыборкаЗаписей.Договор;
    Запись.Прочитать();
    Если Запись.Выбран() Тогда
    Запись.Оплачено = Истина;
    Запись.Записать();
    Закрыть();
    КонецЕсли;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    
    Не работает в конфе, которую я создал, а в той которая идет с диском работает.
    У меня пишет
    Код:
    {Обработка.РегистрацияОплаты.Форма.Форма(6)}: Ошибка при вызове метода контекста (Выбрать): Недопустимое значение параметра (параметр номер '3')
    ВыборкаЗаписей = РегистрыСведений.Квитанции.Выбрать(,,СтруктураОтбора);
    по причине:
    Недопустимое значение параметра (параметр номер '3')
    
    В чем может быть дело? И это не первый раз. В предыдущих главах тоже такое встречалось, и как раз с этим же методом...


    Делаю все по книге. Для каждой главы отдельные конфигурации (как там написано).
    Но почему то этот код
    Код:
    Процедура УстановитьОплатуНажатие(Элемент)
    Запись = РегистрыСведений.Квитанции.СоздатьМенеджерЗаписи();
    Договор = ЭлементыФормы.Договор.Значение;
    СтруктураОтбора = Новый Структура;
    СтруктураОтбора.Вставить("Оплачено",Ложь);
    ВыборкаЗаписей = РегистрыСведений.Квитанции.Выбрать(,,СтруктураОтбора);
    Пока ВыборкаЗаписей.Следующий() > 0 Цикл
    Если ВыборкаЗаписей.Договор = Договор Тогда
    Запись.Период = ВыборкаЗаписей.Период;
    Запись.Договор = ВыборкаЗаписей.Договор;
    Запись.Прочитать();
    Если Запись.Выбран() Тогда
    Запись.Оплачено = Истина;
    Запись.Записать();
    Закрыть();
    КонецЕсли;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    
    Не работает в конфе, которую я создал, а в той которая идет с диском работает.
    У меня пришет
    {Обработка.РегистрацияОплаты.Форма.Форма(6)}: Ошибка при вызове метода контекста (Выбрать): Недопустимое значение параметра (параметр номер '3')
    ВыборкаЗаписей = РегистрыСведений.Квитанции.Выбрать(,,СтруктураОтбора);
    по причине:
    Недопустимое значение параметра (параметр номер '3')

    В чем может быть дело? И это не первый раз. В предыдущих главах тоже такое встречалось, и как раз с этим же методом...
  5. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Регистр периодический?
  6. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Да, в пределах секунды...
  7. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    ну попробуйте даты указать в выбрать() чтоли
  8. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    А зачем? Мне интересног почему в конфе у автора все также как и у меня, и работает. А у меня нет. А может ли на это влиять не сама конфигурация, а база данных? Потому что конфа одинакавая, а вот база конечно разная...
  9. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Вы уверены, что у вас в регистре сведений Квитанции есть поле "Оплачено" ? Обычно ошибка

    Код:
     Недопустимое значение параметра (параметр номер '3') 
    
    Говорит именно об отсутствии отбираемого поля. Может быть опечатка при переносе регистра?
  10. HexaD
    Offline

    HexaD Опытный в 1С

    Регистрация:
    19 июн 2010
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    База данных влиять не может. Просто вы что-то не учли. Проверьте ещё раз состав измерений и реквизитов: их наименование (может, у вас где есть грамматическая ошибка) и тип. Старайтесь разбираться в справке программы, синтаксис-помощнике. Если туда заглянуть, то там написано, что отбор может задаваться только для измерений и реквизитов у которых установлен признак в значение "Индексировать". Видимо, в этом проблема. Так что правой кнопкой мыши по измерению "оплачено", и ставьте галочку.
  11. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Да. Реквизит такой есть. Тип-Булево. Индексировать стоит в значении "Не индексировать".

    Поставил значение индексировать, а потом ваше сообщение увидел)))))))))) Спасибо. Видать в книге недачет не большой. А может кто-то пояснить на что влияет значение индексировать и не индексировать...
  12. HexaD
    Offline

    HexaD Опытный в 1С

    Регистрация:
    19 июн 2010
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Прочитайте в Сети про индексацию. Это процесс добавления сведений. Т.е. к указанным данным добавляются дополнительные параметры, которые позволяют системе производить сортировки и отборы.
  13. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Всем привет. Вот такой вопросик.
    Глава 5. Разработка процедуры заполнения бланка. Стр. 186. Суть в том, что нужно создать документ Microsoft Word 2007. (Квитанция) и данные из 1С переносятся туда при нажатии на кнопку "Передача в Word". Проблема в том, что при передаче у меня вылезает ошибка "Неверно указана еденица измерения". С конфой поставляемой на диске, тоже самое. Из-за чего это может быть?

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