Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/112: Рейтинг темы: голосов - 112, средняя оценка - 4.84
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82

Проведение документа из модуля формы документа

04.06.2013, 18:36. Показов 25211. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с такой проблемой. Нужно провести документ из формы документа. Побывал на многих сайтах и ничего путного не нашел
только вот это кое что вроде нормальное попалось
http://v8.1c.ru/predpriyatie/t... uments.htm

но ругается на эту строку
1C
1
Док = ПолеВводаДокумент.ПолучитьОбъект();
типо функции получить объект нет.

что можно сделать и реально ли провести документ из формы документа?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2013, 18:36
Ответы с готовыми решениями:

Обратиться к реквизитам Документа из Модуля этого документа
Привет всем. У меня проблема вот с чем: в процедуре обработки документа нужно обратиться к реквизитам самого документа и реквизитам...

Как изменить текст надписи формы документа при записи документа
Здравствуйте уважаемые, у меня простой вопрос - как мне при записи документа изменить надпись на форме, нужный код я написал, как мне...

1С 8.1 Проведение документа
Создаю новый документ программно... и проводку в нем тоже: Движение = НовыйДок.Движения.Типовой; Проводка =...

56
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
04.06.2013, 18:38
ПолеВводаДокумент Это реквизит так называется?
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 18:46  [ТС]
Цитата Сообщение от Dethmontt Посмотреть сообщение
ПолеВводаДокумент Это реквизит так называется?
как я понял из статьи походу да.

это не мой код. Это из статьи
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
04.06.2013, 18:46
Цитата Сообщение от delete2013 Посмотреть сообщение
что можно сделать и реально ли провести документ из формы документа?
1C
1
Записать(РежимЗаписиДокумента.Проведение);
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 19:43  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Записать(РежимЗаписиДокумента.Проведение );
я так понимаю где эту функцию вызвать, то произойдет перепроведение документа или не?
а если есть уже в модуле документа процедура созданная с помощью конструктора для проведения документа, а я хочу перепровести документ и уже используя другой код для проведения чем есть уже в той процедуре. Так сделать можнО?
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
04.06.2013, 19:52
Цитата Сообщение от delete2013 Посмотреть сообщение
а если есть уже в модуле документа процедура созданная с помощью конструктора для проведения документа
Она и должна быть, иначе при проведении ничего не произойдет.

Цитата Сообщение от delete2013 Посмотреть сообщение
а я хочу перепровести документ и уже используя другой код для проведения чем есть уже в той процедуре. Так сделать можнО?
Зачем так?
Опишите задачу, которую решаете. Скорее всего есть более правильное решение.
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 20:32  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Она и должна быть, иначе при проведении ничего не произойдет.
да, без нее никак. ДОлжна быть) не так объяснил.
Цитата Сообщение от Fenomen Посмотреть сообщение
Зачем так?
Опишите задачу, которую решаете. Скорее всего есть более правильное решение.
задача такова. Есть два документа Заказ и ТоваротранспортнаяНакладная. Документ Заказ является регистратором для регистра сведений Заказы и обработка проводится по такому коду.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    // регистр Заказы
    Движения.Заказы.Записывать = Истина;
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.Заказы.Добавить();
        Движение.Период = Дата;
        Движение.Клиент = Клиент;
        Движение.Реализатор = Реализатор;
        Движение.Сумма = ТекСтрокаТовары.Сумма;
        Движение.Обработана=Ложь;
    КонецЦикла;
 
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Ресурс Обработана в регистре сведений Заказы используется для того, чтобы различать заказы, которые обработались Зав. Экспедицией и которые еще не обработаны т.е когда я создаю документ товаротранспортная накладная, то он заполняется некоторые поля из документа Заказы и получается которую запись документа Заказы я использую в данный момент мне надо ее будет перепровести уже под другим кодом, чтобы ресурс Обработана поставить в ИСТИНУ т.е уже в обработанную заявку.
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
04.06.2013, 20:43
delete2013, Вы не понимаете как работает периодический рег. сведений

При проведении ТоваротранспортнаяНакладная, Вам не нужно менять движения документа Заказ. Вам нужно добавить еще одно движение с ресурсом Обработана=Истина. Т.е. продублируйте процедуру проведения заказа в ТТН, просто изменив там Ложь, на Истина.

СрезПоследних даст Вам корректные данные.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
04.06.2013, 20:50
А не проще создать РС с одним измерением Заказ (СправочникСсылка.Заказы) и когда заказ обработан он в этот РС будет добавлять ссылку на самого себя
Проверка.
Если в этом РС есть Заказ - значит он обработан
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 21:02  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Вы не понимаете как работает периодический рег. сведений
вполне возможно, что да. Да, я делал новое проведение в документе ТТН в этот же регистр. Но беда в чем, добавлялась в регистре новая запись от нового регистратора, а та старая запись от док. Заказы оставалась с значением Ложь. Использовал вот такой код
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    // регистр Заказы
    Движения.Заказы.Записывать = Истина;
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.Заказы.Добавить();
        Движение.Период = Дата;
        Движение.Клиент = Клиент;
        Движение.Реализатор = Реализатор;
        Движение.Сумма = ТекСтрокаТовары.Сумма;
        Движение.Обработана=Истина;
    КонецЦикла;
 
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
может тут надо чтот еще дописать, но вот что я еще не понял


Цитата Сообщение от Dethmontt Посмотреть сообщение
А не проще создать РС с одним измерением Заказ (СправочникСсылка.Заказы) и когда заказ обработан он в этот РС будет добавлять ссылку на самого себя
Проверка.
Если в этом РС есть Заказ - значит он обработан
наверно на данном этапе моих знаний по 1С вашей идеи мне пока что не понять( не понял все равно как будет ссылка на самого себя в РС помогать где заказ обработан, а где нет(
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
04.06.2013, 21:10
Есть регистр - в нем пусто
Есть 3 заказа

При работе с заказом проверяем запросом есть ли в регистре этот заказ - НЕТ (В регистре то пусто) Значит заказ не обработан

Нажимаем на форме заказа какую нибудь кнопку типа : "Обработать заказ" по нажатию этой кнопки заказ попадает в регистр и там становиться одна запись

Теперь при работе с заказом проверяем если он есть в регистре (а там сейчас 1 из 3х) то он обработан!

Добавлено через 1 минуту
В итоге можем смело делать кнопку "Вернуть заказ на доработку" - по нажатию которой заказ удаяется из регистра, соответственно он снова становиться НЕ Обработан
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 21:14  [ТС]
Цитата Сообщение от Dethmontt Посмотреть сообщение
Есть регистр - в нем пусто
Есть 3 заказа
При работе с заказом проверяем запросом есть ли в регистре этот заказ - НЕТ (В регистре то пусто) Значит заказ не обработан
Нажимаем на форме заказа какую нибудь кнопку типа : "Обработать заказ" по нажатию этой кнопки заказ попадает в регистр и там становиться одна запись
Теперь при работе с заказом проверяем если он есть в регистре (а там сейчас 1 из 3х) то он обработан! Добавлено через 1 минуту
В итоге можем смело делать кнопку "Вернуть заказ на доработку" - по нажатию которой заказ удаяется из регистра, соответственно он снова становиться НЕ Обработан
да идея вроде не плохая. Но мне она не подходит в данном случает. т.к дорабатывать заказ будет документ ТТН и ТТН смотрит в регистре есть заказы или нет. Если есть, то он их дорабатывает и потом будет помечать ресурс Обработана на истину и все.
ну или же я опять не до конца понял все сути решения вашего
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
04.06.2013, 21:24
Цитата Сообщение от delete2013 Посмотреть сообщение
Да, я делал новое проведение в документе ТТН в этот же регистр. Но беда в чем, добавлялась в регистре новая запись от нового регистратора, а та старая запись от док.
Никакой проблемы в новой записи нет. Сделайте две записи, и сделайте запрос к вирт. таблице СрезПоследних регистра. И вы увидите, что срез вернет Вам одну строку с последним значением ресурса. В этом и есть смысл периодического регистра сведений.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
04.06.2013, 21:24
на самом деле правильно так - как вам проще!
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 21:41  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Никакой проблемы в новой записи нет. Сделайте две записи, и сделайте запрос к вирт. таблице СрезПоследних регистра. И вы увидите, что срез вернет Вам одну строку с последним значением ресурса. В этом и есть смысл периодического регистра сведений.
как я понял вы имели введу вот это

и запрос
1C
1
2
3
4
5
6
7
Запрос.Текст="ВЫБРАТЬ
                     |  ЗаказыСрезПоследних.Клиент,
                     |  ЗаказыСрезПоследних.Реализатор,
                     |  ЗаказыСрезПоследних.Обработана,
                     |  ЗаказыСрезПоследних.Сумма
                     |ИЗ
                     |  РегистрСведений.Заказы.СрезПоследних(, Обработана = ЛОЖЬ) КАК ЗаказыСрезПоследних";
все равно выводит сообщения то, что запись не обработана.

но было бы не плохо изменить само значение на истино в регистре т.к при переходе в регистр сразу допустим кассир мог видеть какие заявки уже обработаны, а какие еще нет ЗавЭкспедицией
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
04.06.2013, 21:48
1C
1
2
3
4
5
6
7
8
9
Запрос.Текст="ВЫБРАТЬ
| ЗаказыСрезПоследних.Клиент,
| ЗаказыСрезПоследних.Реализатор,
| ЗаказыСрезПоследних.Обработана,
| ЗаказыСрезПоследних.Сумма
|ИЗ
| РегистрСведений.Заказы.СрезПоследних() КАК ЗаказыСрезПоследних"
|ГДЕ
|   НЕ ЗаказыСрезПоследних.Обработана";
В параметрах вирт. таблицы имеет смысл накладывать фильтр по измерениям.

Добавлено через 3 минуты
Цитата Сообщение от delete2013 Посмотреть сообщение
Обработана = ЛОЖЬ
Блин, зачем же все сравнивают два Булевых значения???
Обработана = Истина - эквивалентно Обработана.
Обработана = Ложь - эквивалентно НЕ Обработана.

Зачем делать лишние вычисления?
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 22:33  [ТС]
Все нашел решение своей проблеме как изменить реквезит Обработана на истино. Когда я буду открывать документ заказа, который мне нужно обработать уже документом ТТН (в форме заказа будет кнопка, которая вызывает форму документа ТТН). Вот когда я ее буду нажимать, то модально открывается форма документа ТТН. Если я сохраню этот документ, то тогда документ заказа будет перепроводиться под другому коду, а если я не сохраню документ ТТН, то никаких проведений происходить не будет

вот по этому условию обрабатываю записан ТТН документ или нет
1C
1
2
3
Если Не форма.Объект.Ссылка = ПредопределенноеЗначение("Документ.ТоваротранспортнаяНакладная.ПустаяСсылка") Тогда 
        Записать(РежимЗаписиДокумента.Проведение);    
    КонецЕсли;
а по этому разную запись в регистр при проведение
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Если РаботаСролями.АктивнаяРоль()=1 Тогда
        Движения.Заказы.Записывать = Истина;
        Для Каждого ТекСтрокаТовары Из Товары Цикл
            Движение = Движения.Заказы.Добавить();
            Движение.Период = Дата;
            Движение.Клиент = Клиент;
            Движение.Реализатор = Реализатор;
            Движение.Сумма = ТекСтрокаТовары.Сумма;
            Движение.Обработана=Истина;
        КонецЦикла;
 
    Иначе
        Движения.Заказы.Записывать = Истина;
        Для Каждого ТекСтрокаТовары Из Товары Цикл
            Движение = Движения.Заказы.Добавить();
            Движение.Период = Дата;
            Движение.Клиент = Клиент;
            Движение.Реализатор = Реализатор;
            Движение.Сумма = ТекСтрокаТовары.Сумма;
            Движение.Обработана=Ложь;
        КонецЦикла;
    КонецЕсли;
АктивнаяРоль() это уже моя функция, которая будет определять какая роль сейчас активна.

вот только столкнулся с новой проблемкой. Как я понял можно функцию Записать использовать в форме документа вот так
1C
1
Записать(РежимЗаписиДокумента.Проведение);
Но ругается на параметры функции
{Документ.Заказ.Форма.ФормаДокумента.Фор ма(43)}: Ошибка при вызове метода контекста (Записать)
Записать(РежимЗаписиДокумента.Проведение );
Несоответствие типов (параметр номер '1')
пока не понял в чем дело

Добавлено через 21 секунду
Цитата Сообщение от Fenomen Посмотреть сообщение
Блин, зачем же все сравнивают два Булевых значения??? Обработана = Истина - эквивалентно Обработана. Обработана = Ложь - эквивалентно НЕ Обработана.
да, вы правы
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
04.06.2013, 22:39
delete2013, Ваше решение не верно. Если пользователь, у которого РаботаСролями.АктивнаяРоль()=1, перепроведет документ, все у Вас полетит к чертям!

Движение где Обработана=Ложь; должен делать документ ТТН!
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 23:01  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Движение где Обработана=Ложь; должен делать документ ТТН!
да, было бы верней если движение документа заказов делал документ ТТН для присваивания Обработке истинного значения. Но как вызвать движение документа из другого документа мне не известно.


Цитата Сообщение от Fenomen Посмотреть сообщение
аше решение не верно. Если пользователь, у которого РаботаСролями.АктивнаяРоль()=1, перепроведет документ, все у Вас полетит к чертям!
та вроде все нормально. Хотя может да, решение не верное, но будет может работать если понять что не так в функции Записать. Только вот функция
1C
1
ЭтаФорма.аписать(РежимЗаписиДокумента.Проведение);
до сих пор выдает ошибку. Еще не нашел решения и причины почему
0
900 / 877 / 10
Регистрация: 15.03.2012
Сообщений: 2,680
04.06.2013, 23:12
Цитата Сообщение от delete2013 Посмотреть сообщение
Но как вызвать движение документа из другого документа мне не известно.
Не нужно ничего вызывать. Вам нужно обработке проведения документа ТТН, сделать такое же движение как в заказе. И не нужно будет ничего придумывать с проведением из формы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.06.2013, 23:12
Помогаю со студенческими работами здесь

Проведение документа
Всем здравствуйте. Я только начинаю изучать 1С:Предприятие. Поэтому не пинайте. Итак,есть задача: 1. Документы должны проводиться...

Проведение документа
Здравствуйте, есть вопрос. Как для кода проведения документа написать реквизит табличной части, тип данных которого является ссылка на...

Проведение документа
Документ имеет принадлежность к бухгалтерскому учету. Документ создаётся сегодня, а проводится, например завтра. Добавил в реквизиты...

Проведение документа
Я создаю на основании документа ОтгрузкаТоваровСоСкдлада документ ПриходныйКассовыйОрдер. ОтгрузаТовараСоСклада =...

Автоматичекое проведение документа
День добрый. Вот мне надо провести документ через определенное время. У меня типо конфигурация Боулинга. Я сначала провожу документ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru