Имя: Пароль:
1C
1С v8
УФ 8.3 БП3.0.44.177: из модуля обработки при созд.дока изменить реквизиты формы
0 Kleo
 
15.12.16
12:03
Здравствуйте!

Обработкой загрузки документов из розницы создаю программно документы "ПоступлениеТоваровУслуг", документ создается, но мне нужно программно из модуля объекта обработки обратиться к реквизитам формы документа и присвоить им значение:
НТТ = Истина;
и
РассчитыватьСуммаВРознице = Истина;

Пишу так:
    Форма = Обьект.ПолучитьФорму("ФормаДокументаТовары");
        РассчитыватьСуммаВРознице = Истина;
        ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "РассчитыватьСуммаВРознице", РассчитыватьСуммаВРознице);    
        НТТ = Истина;
        ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "НТТ", НТТ);

ругается, что:
"Интерактивные операции недоступны"

Может я что-то не так делаю? Может есть другой вариант? Подскажите, пожалуйста, очень надо!
1 Cool_Profi
 
15.12.16
12:05
Какая форма на сервере?
2 Kleo
 
15.12.16
12:08
(1) создаю программно документ Поступление товаров и услуг (в НТТ по продажной стоимости) и мне нужно, чтобы при создании ТЧ документа сворачивалась, для этого в форме документа "ФормаДокументаТовары" нужно реквизитам присвоить нужные значения.

Модуль объекта обработки выполняет все на сервере
3 Kleo
 
15.12.16
12:09
если выношу эти строки в процедуру на клиенте:

Форма = Обьект.ПолучитьФорму("ФормаДокументаТовары");
        РассчитыватьСуммаВРознице = Истина;
        ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "РассчитыватьСуммаВРознице", РассчитыватьСуммаВРознице);    
        НТТ = Истина;
        ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "НТТ", НТТ);


то, он не видит процедуру в процедуре на сервере при обращении к ней
4 Kleo
 
15.12.16
12:10
нашла, что можно решить через РеквизитФормыВЗначение, но пишет, что такой метод не доступен. я же программно создаю документ из модуля объекта своей обработки
5 Cyberhawk
 
15.12.16
12:12
Не думаю, что при программнос создании документов нужно изменять какие-то реквизиты каких-то форм
6 Numerus Mikhail
 
15.12.16
12:14
Какой смысл изменять реквизиты формы в модуле объекта, если эту форму вы все-равно не откроете?
7 Kleo
 
15.12.16
12:20
мне открывать форму документа не надо. документ я загрузила в программу, но открываю этот документ, а он требует заполнение номенклатуры, количества и цены, хотя если склад НТТ, то это не нужно. ТЧ сама сворачивается при интерактивном выборе склада с типом НТТ. но если я повторно захожу, изменяю склад, то программа уже повторно не предлагает свернуть ТЧ. и вообще, мне нужно, чтобы все само вставало
8 Kleo
 
15.12.16
12:21
(5) вам не нужно, а мне нужно. раз так неудобно написали документ и создали реквизиты формы, а не реквизиты документа
9 Cool_Profi
 
15.12.16
12:23
(7) Значит, при выборе склада меняется какой-то реквизит документа (не формы!)
Найди это и сделай как надо
10 Kleo
 
15.12.16
12:27
попробуйте в БП 3.0 изменить учетную политику в рознице учет вести по продажным ценам и на складе НТТ с типом розничных цен. и затем создайте документ Поступление товаров.программа предложит свернуть ТЧ Товары.

а у меня получилось, что не свернул программно, и получается что не видно ни СуммаВРознице, ни СтавкаНДСВРознице.
11 Kleo
 
15.12.16
12:27
(9) откройте типовую БП 3.0 и убедитесь, что нет такого реквизита документа!
12 Cool_Profi
 
15.12.16
12:29
(11) Открой метод ПриИзменении для этого реквизита и глазами посмотри, что и куда он пишет.
У меня под рукой сейчас нет БП.
13 Kleo
 
15.12.16
12:30
эти строки я взяла из типового решения из общего модуля ПоступлениеТоваровУслугФормы:

РассчитыватьСуммаВРознице = Истина;
        ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "РассчитыватьСуммаВРознице", РассчитыватьСуммаВРознице);    
        НТТ = Истина;
        ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "НТТ", НТТ);



так делается в типовом решении.


РассчитыватьСуммаВРознице и НТТ - это реквизиты формы, а не реквизиты документа
14 Kleo
 
15.12.16
12:30
(12) я и посмотрела, смотрите (13)
15 Kleo
 
15.12.16
12:31
у меня конкретный вопрос: как обратиться из модуля объекта обработки при программном создании документа к реквизитам его формы и записать новые значения. саму форму мне открывать не нужно
16 Cool_Profi
 
15.12.16
12:31
(15) У меня конкретный ответ на твой конкретный вопрос.
Никак. Пока форма не открыта, никакие реквизиты её не существуют.
17 Kleo
 
15.12.16
12:38
(16) не верю! должно быть решение
18 Cool_Profi
 
15.12.16
12:40
(17) Оно есть. см (9)
19 Kleo
 
15.12.16
12:42
&НаСервере
Процедура СкладПриИзмененииНаСервере()
    
    ПоступлениеТоваровУслугФормы.СкладПриИзменении(ЭтаФорма);
    
    
КонецПроцедуры


все равно нужно ЭтаФорма! а дальше приведенный выше текст
20 Kleo
 
15.12.16
12:43
(18) нет такого реквизита. идите смотрите типовое решение!
21 Cool_Profi
 
15.12.16
12:43
А может, того... Замуж и детей завести, штук 5? Чтобы на глупые вопросы времени не осталось?
22 Kleo
 
15.12.16
12:46
дальше в ПоступлениеТоваровУслугФормы:

Процедура СкладПриИзменении(Форма) Экспорт

    СкладОбработатьИзменение(Форма);    
    
    Форма.УправлениеФормойНаСервере();
    
КонецПроцедуры


Процедура СкладОбработатьИзменение(Форма)
    
    Объект = Форма.Объект;

    ОпределитьНеобходимостьРасчетаСуммыВРознице(Форма);
    
    Объект.ПодразделениеОрганизации = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.Склад);
    
    ЗаполнитьСчетаУчета(Форма, Новый Массив, "Склад");
    
КонецПроцедуры


Процедура ОпределитьНеобходимостьРасчетаСуммыВРознице(Форма) Экспорт
    
    Объект = Форма.Объект;
    УчетВПродажныхЦенах = ПоступлениеТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "УчетВПродажныхЦенах");

    ТипСклада = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Склад, "ТипСклада");
    Если ТипСклада <> Перечисления.ТипыСкладов.ОптовыйСклад
        И УчетВПродажныхЦенах
        И (Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия
            ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары
            ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Оборудование)
        И Форма.ВидДоговора <> Перечисления.ВидыДоговоровКонтрагентов.СКомитентом Тогда
        РассчитыватьСуммаВРознице = Истина;
    Иначе
        РассчитыватьСуммаВРознице = Ложь;
    КонецЕсли;

    ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "РассчитыватьСуммаВРознице", РассчитыватьСуммаВРознице);
    
    НТТ = ТипСклада = Перечисления.ТипыСкладов.НеавтоматизированнаяТорговаяТочка;
    ПоступлениеТоваровУслугФормыКлиентСервер.УстановитьРеквизитФормы(Форма, "НТТ", НТТ);
    
КонецПроцедуры


наверное, уже понятно, что все делается через реквизит формы.
23 Kleo
 
15.12.16
12:46
(21) моя личная жизнь вас не касается. это форум по 1С и вопрос далеко не глупый!

а если вас интересует, то я замужем и ребенок есть!
24 Kleo
 
15.12.16
12:47
(21) идите лучше учите типовые конфигурации, а не пишите ненужные советы
25 Cool_Profi
 
15.12.16
12:47
" ТипСклада = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Склад, "ТипСклада");"


Дада. Абсолютно всё - с формы. Ну просто абсолютно.
26 Kleo
 
15.12.16
12:48
как можно обратиться к форме не открывая ее?
27 Kleo
 
15.12.16
12:50
ТипСклада = это реквизит справочника Склады, а не реквизит документа. тип склада указан - НТТ
28 Kleo
 
15.12.16
12:52
если я интерактивно документ создаю, то все ОК. а если программно, то не сворачивает ТЧ Товары и требует заполнение тех реквизитов ТЧ, которые мне не нужны при продажных ценах в НТТ (Номенклатура, Цена, количество)
29 Shrek_yar
 
15.12.16
12:55
(13) не может быть. Основы программирования прочитайте. Реквизит формы не храниться в базе, а только интерактивнно
30 Shrek_yar
 
15.12.16
12:58
(26) форма = получитьформу как то так. СП нет под рукой. Но то что вам надо это реквизит документа, а не формы.
Сделайте проще запишите документ и посмотрите какие реквзиты документа изменены и сравните со своим. Сразу стант ясно
31 Kleo
 
15.12.16
12:58
(29) как тогда создать программно такого рода документ? если бы вы выгружали бы из одной базы в другую?
32 catena
 
15.12.16
13:02
(31)Записываете свой документ програмно. Записываете интерактивно со своими реквизитами формы. Вытаскиваете в запросе все реквизиты обоих документов и сравниваете значения.
33 Kleo
 
15.12.16
14:47
(32) сравнила с помощью специальной групповой обработки и реквизиты документа и реквизиты ТЧ.все совпадает. единственное отличается Способ зачета аванса и Сумма. и все! как переносить такого рода документы???
34 Kleo
 
15.12.16
14:49
такой еще тогда вопрос:
как можно получить процедуру из модуля объекта обработки из модуля формы обработки?

или могу я открыть процедуру в общем модуле из модуля объекта обработки?
35 Cyberhawk
 
15.12.16
19:27
(8) Ошибочное мнение
36 mehfk
 
15.12.16
19:36
(0) Начать с http://v8.1c.ru/metod/books/book.jsp?id=441 и лет годик сами сможете на такие вопросы отвечать.