Модераторы: stron
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проведение документа, Запись, без проведения 
:(
    Опции темы
bourne
Дата 7.12.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



Здравствуйте, форумчане. Нужно срочно решить задачу по 1с, времени на изучение, к сожалению, нет, поэтому надеюсь на вашу помощь smile
Необходимо провести документ после проверки некоторых условий. Для этого я использую функцию ПередЗаписью().
  •  как можно "записать" документ, без его проведения? Т.е. мне его нужно сохранить в базе, чтобы в последствии провести.
  •  при "Отказ = Истина" выдается сообщение "Операция не выполнена". можно как-то избавиться или заменить это сообщение на свое?
P.S. работаю в 8.1
PM MAIL   Вверх
bourne
Дата 8.12.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



Проблема решена. Появилась другая :(
Есть запрос:
Код

ВЫБРАТЬ
        | Остатки.Номенклатура,
        | Остатки.Склад,
        | Остатки.КоличествоОстаток
        | ИЗ                    
        | РегистрНакопления.ОстаткиТовара.Остатки КАК Остатки
        | ГДЕ
        | Остатки.Номенклатура=&Тов И Остатки.Склад=&Склад)

Потом я делаю так:
Код

    Запрос.УстановитьПараметр("Тов", Тов[0]);
    Запрос.УстановитьПараметр("Склад", Склад);

но он почему-то не возвращает ничего, хотя должен. Вместо "Склад" я подставлял имя конкретного склада, результата 0.
PM MAIL   Вверх
AkelaSQL
Дата 8.12.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 14.9.2007
Где: Москва

Репутация: 6
Всего: 7



Нужно подставлять не имя склада, а ссылку элемента справочника "Склады"


--------------------
user posted image
PM MAIL ICQ   Вверх
bourne
Дата 8.12.2009, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



Прошу прощения, забыл написать откуда я беру "Склад":
Код

Склад    = ЭтотОбъект.Склад.Наименование;

т.е. у меня есть на форме поле "склад", оттуда я и беру это значение.

Это сообщение отредактировал(а) bourne - 8.12.2009, 18:31
PM MAIL   Вверх
Itsys
Дата 8.12.2009, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Цитата(bourne @  8.12.2009,  18:27 Найти цитируемый пост)
Прошу прощения, забыл написать откуда я беру "Склад":
Склад    = ЭтотОбъект.Склад.Наименование;
т.е. у меня есть на форме поле "склад", оттуда я и беру это значение.

Врят ли такая конструкция будет работать, т.к. Вы реквизиту "Склад" пытаетесь вместо ссылки присвоить строку.
Для того, чтобы заработал запрос достаточно эту строку убрать.
PM MAIL WWW Skype   Вверх
AkelaSQL
Дата 9.12.2009, 10:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 14.9.2007
Где: Москва

Репутация: 6
Всего: 7



Нужно писать скорее всего так:

Код

Склад    = ЭтотОбъект.Склад.Ссылка;


или так:

Код

Склад    = ЭтотОбъект.Склад;



в зависимости от типизации реквизита формы (я так понимаю)  "Склад"


--------------------
user posted image
PM MAIL ICQ   Вверх
bourne
Дата 9.12.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



AkelaSQL и Itsys, спасибо, все заработало smile
сделал вот так:
Код

Склад    = ЭтотОбъект.Склад.Ссылка;

А вот по первому сообщению вопросик остался. Можно ли изменить сообщение "Операция не выполнена" на свое?
PM MAIL   Вверх
AkelaSQL
Дата 9.12.2009, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 14.9.2007
Где: Москва

Репутация: 6
Всего: 7



Проще перед этим действом вывести своё


--------------------
user posted image
PM MAIL ICQ   Вверх
Itsys
Дата 10.12.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Что
Код

Склад    = ЭтотОбъект.Склад.Ссылка;

что
Код

Склад    = ЭтотОбъект.Склад;

- это все масло масленое, зачем это присвоение? Если используется "ЭтотОбъект" и в нем есть реквизит "Склад", то обращаться к нему можно напрямую просто "Склад", а свое строкой Вы пере присваиваете реквизиту "Склад" его же значение! При этом меняется модифицированность формы (объекта если в модуле), что влечет за собой дополнительную перезапись объекта в базу. За такое на экзаменах 100% снижают оценку. Как говорится учитесь писать грамотно.

По второму пункту: для записи без проведения надо вызывать процедуру "Записать" без установленного режима записи, либо с установленным режимом записи "Запись":
Код

ДокументОбъект.<Имя документа>.Записать (DocumentObject.<Имя документа>.Write)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Записать (Write)
Синтаксис:
Записать(<Режим записи>, <Режим проведения>) 
Параметры:
<Режим записи> (необязательный)
Тип: РежимЗаписиДокумента. Позволяет выбрать один из возможных режимов записи.
Значение по умолчанию: Запись 
<Режим проведения> (необязательный)
Тип: РежимПроведенияДокумента. Позволяет выбрать один из возможных режимов проведения.
Значение по умолчанию: Неоперативный 
Описание:
Записывает документ в базу данных. 
Примечание:
Для документов с поддержкой уникальности номеров в процессе записи, если нужно, проверяется уникальность номера. 
Пример:
Попытка
    НовДокумент.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    Предупреждение("Невозможно провести документ.");
КонецПопытки;
См. также:
ДокументОбъект, событие ПередЗаписью
ДокументОбъект, событие ПриЗаписи

РежимЗаписиДокумента (DocumentWriteMode)
РежимЗаписиДокумента (DocumentWriteMode)
Свойства:
Запись (Write)
ОтменаПроведения (UndoPosting)
Проведение (Posting)

Описание:
Определяет набор режимов записи документа.
Возможен обмен с сервером. 
См. также:
ДокументОбъект, метод Записать
Расширение формы документа, метод ЗаписатьВФорме
ДокументОбъект, событие ПередЗаписью
Расширение формы документа, событие ПередЗаписью


А в процедуре "ПередЗаписью" можно получить режим, и в зависимости от режима либо устанавливать "Отказ = Истина" либо нет.
PM MAIL WWW Skype   Вверх
AkelaSQL
Дата 10.12.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 14.9.2007
Где: Москва

Репутация: 6
Всего: 7



Ну да имя переменной для параметра неудачное. Сразу не обратил внимание.

Добавлено через 3 минуты и 20 секунд
СкадПарам = ЭтотОбъект.Склад -  так можно если использовать уже существующий листинг и за это оценок не снижают, ибо переменные объявленные в модуле формы работают быстрее, нежели те, что расположены непосредственно на ней. Однако целесообразность такого присвоения оправдана, если значение этого параметра будет использоваться в этом модуле многократно...


--------------------
user posted image
PM MAIL ICQ   Вверх
bourne
Дата 11.12.2009, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



да...фантазии не хватило назвать переменную по другому smile

Itsys и AkelaSQL, еще раз спасибо smile
PM MAIL   Вверх
Itsys
Дата 11.12.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Цитата(AkelaSQL @  10.12.2009,  16:27 Найти цитируемый пост)
СкадПарам = ЭтотОбъект.Склад -  так можно если использовать уже существующий листинг и за это оценок не снижают, ибо переменные объявленные в модуле формы работают быстрее, нежели те, что расположены непосредственно на ней. Однако целесообразность такого присвоения оправдана, если значение этого параметра будет использоваться в этом модуле многократно... 

И с этим можно поспорить... При открытии формы все реквизиты объекта экспортируются в переменные формы, а задавая новую переменную только занимается лишняя память.
Да и кто сказал, что доступ на чтение к переменным объявленным в форме, быстрее чем к реквизитам формы? А самое главное, что сие действие скорее всего происходит в модуле а не в форме.
PM MAIL WWW Skype   Вверх
AkelaSQL
Дата 14.12.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 14.9.2007
Где: Москва

Репутация: 6
Всего: 7



Спорить можно, но есть реальные результаты замеров производительности, можете провести эксперименты сами. В руки Вам большой цикл, в котором оперируйте с переменной, сначала объявленной на форме, потом в модуле и замер производительности в конфигураторе.

Добавлено через 6 минут и 28 секунд
Вот для 7.7, я уверен для 8.1 ситуация отличается не сильно:
http://subscribe.ru/archive/comp.soft.prog...1/18080241.html

Цитата

Итак, рейтинг видов переменных выглядит следующим образом. Звание самых медленных переменных получают реквизиты формы. Переменные, экспортируемые из Глобального модуля, являются более быстрыми, операции с ними выполняются в 3-3.5 раза быстрее, чем с реквизитами формы. Переменные, объявленные в модуле, быстрее Глобальных примерно в 1.5 раза. Выигрыш во времени от их использования вместо реквизитов формы составляет 4.5-5 раз. Ну а звание самых быстрых переменных делят между собой переменные, объявленные в процедуре, и необъявленные переменные. В разных экспериментах то один вид, то другой слегка вырывался вперед, однако разница между ними не превышала полпроцента. Впрочем, эти переменные ненамного обогнали и объявленные в модуле – примерно на один процент.



--------------------
user posted image
PM MAIL ICQ   Вверх
Itsys
Дата 14.12.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Данное утверждение справедливо для элементарных типов, но не для ссылок. В текст модуля формы документа:
Код

Процедура ПосчитатьВОбъекте()
    Для К = 1 По 1000000 Цикл
        Тест = Ссылка;
    КонецЦикла;
КонецПроцедуры

Процедура ПосчитатьВЛокальной()
    Счетчик = Ссылка;
    Для К = 1 По 1000000 Цикл
        Тест = Счетчик;
    КонецЦикла;
КонецПроцедуры

Процедура ОсновныеДействияФормыТест(Кнопка)
    Вр = ТекущаяДата();
    Сообщить ("В объекте");
    ПосчитатьВОбъекте();
    Сообщить (ТекущаяДата()-Вр);
    Вр = ТекущаяДата();
    Сообщить ("В локальной переменной");
    ПосчитатьВЛокальной();
    Сообщить (ТекущаяДата()-Вр);
КонецПроцедуры


Результат:
Код

В объекте
25
В локальной переменной
15


В 1,5 раза или 0,0000016 сек на одну операцию чтения в реальных ситуациях на картину повлиять не могут. А вместо этого необходимо кроме названия реквизитов еще и помнить и тащить везде и во все процедуры названия локальных переменных...

Добавлено через 20 секунд
ЗЫ локальная база...
PM MAIL WWW Skype   Вверх
AkelaSQL
Дата 14.12.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 14.9.2007
Где: Москва

Репутация: 6
Всего: 7



Никто не спорит, что это те-же яйца, только в профиль. Но факт на лицо...


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "1C: Предприятие, SAP, ERP и учётные системы"
stron

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

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

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, stron, Pegas.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.