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

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

04.06.2013, 18:36. Показов 26640. Ответов 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 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
04.06.2013, 23:17  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fenomen Посмотреть сообщение
Не нужно ничего вызывать. Вам нужно обработке проведения документа ТТН, сделать такое же движение как в заказе. И не нужно будет ничего придумывать с проведением из формы.
да это так. Но в регистре будет запись от другого регистратора, а та запись останется с таким же значением регистра как ложь. А мне б хотелось ту запись изменить.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
05.06.2013, 00:04
Цитата Сообщение от delete2013 Посмотреть сообщение
Но в регистре будет запись от другого регистратора, а та запись останется с таким же значением регистра как ложь. А мне б хотелось ту запись изменить.
0
900 / 877 / 11
Регистрация: 15.03.2012
Сообщений: 2,680
05.06.2013, 09:30
delete2013, Я уже объяснил Вам, что не нужно менять "ту" запись. Две записи в регистре от разных регистраторов - это правильное решение!
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
05.06.2013, 12:19  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Я уже объяснил Вам, что не нужно менять "ту" запись. Две записи в регистре от разных регистраторов - это правильное решение!
все до меня дошло) да это глупо будет изменять ту запись на истину т.к если ТТН обработает тот документ через два дня, то и изменится при повторном проведение и дата заказа лучше как вы предложили, спасибо.

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

до этого был вот такой отбор
1C
1
2
3
ЗначениеОтбора = Новый Структура("Обработана", Ложь);
        ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
        ОткрытьФорму("РегистрСведений.Заказы.ФормаСписка",ПараметрыВыбора);
теперь при таком отборе у меня выходят уже обработанные записи и те которые уже поступили и до сих пор не обработаны.

что нужно добавить в этот отбор, чтобы исключить обработанные заказы?
0
900 / 877 / 11
Регистрация: 15.03.2012
Сообщений: 2,680
05.06.2013, 13:19
Цитата Сообщение от delete2013 Посмотреть сообщение
что нужно добавить в этот отбор, чтобы исключить обработанные заказы?
Вам нужно чтобы список отображал СрезПоследних, а не основную таблицу регистра. Сделайте произвольный запрос в дин. списке и обращайтесь к срезу.
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
05.06.2013, 13:41  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Вам нужно чтобы список отображал СрезПоследних, а не основную таблицу регистра. Сделайте произвольный запрос в дин. списке и обращайтесь к срезу.
да точно, можно через него.
думаю там запрос сделать уже смогу. А можно ли формировать динамический запрос при нажатие созданной на форме кнопки?

вот у меня загвозка. Вы писали для отбора тех записей, которые еще не обработаны ТТН нужно использовать срез последних и чтот про виртуальную таблицу.

вот использовал такой запрос
1C
1
2
3
4
5
6
7
8
9
ВЫБРАТЬ
                     |  ЗаказыСрезПоследних.Клиент,
                     |  ЗаказыСрезПоследних.Кассир,
                     |  ЗаказыСрезПоследних.Обработана,
                     |  ЗаказыСрезПоследних.Сумма
                     |ИЗ
                     |  РегистрСведений.Заказы.СрезПоследних() КАК ЗаказыСрезПоследних
                     |ГДЕ
                     |  Не ЗаказыСрезПоследних.Обработана";
а вот что писать в параметрах виртуальной таблицы так и не сообразил.
я так понимаю параметры виртуальной таблицы будут отображатся в скобках вот этой строки
1C
1
2
|ИЗ
                     |  РегистрСведений.Заказы.СрезПоследних() КАК ЗаказыСрезПоследних
а точнее здесь
1C
1
РегистрСведений.Заказы.СрезПоследних()
0
900 / 877 / 11
Регистрация: 15.03.2012
Сообщений: 2,680
05.06.2013, 15:43
Цитата Сообщение от delete2013 Посмотреть сообщение
а вот что писать в параметрах виртуальной таблицы так и не сообразил.
В данном случае ничего.
Если Вам понадобится фильтровать данные, по какому либо измерению регистра, то такой фильтр нужно указывать в параметрах виртуальной таблицы.
Например:
1C
1
РегистрСведений.Заказы.СрезПоследних(,Клиент = &Клиент)
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
05.06.2013, 15:54  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Если Вам понадобится фильтровать данные, по какому либо измерению регистра, то такой фильтр нужно указывать в параметрах виртуальной таблицы.
Например:
ага, это вроде понял. Спасибо.
а вот что с запросом не так тогда. По прежнему выводит те записи, которые уже обработаны.
вот код
1C
1
2
3
4
5
6
7
8
9
ВЫБРАТЬ
                     |  ЗаказыСрезПоследних.Клиент,
                     |  ЗаказыСрезПоследних.Кассир,
                     |  ЗаказыСрезПоследних.Обработана,
                     |  ЗаказыСрезПоследних.Сумма
                     |ИЗ
                     |  РегистрСведений.Заказы.СрезПоследних() КАК ЗаказыСрезПоследних
                     |ГДЕ
                     |  Не ЗаказыСрезПоследних.Обработана";
он походу эти новые записи от регистратора ТТН не замечает, хотя они уже в регистре появились и обработка в истине у них. Что может быть не так?;(
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
05.06.2013, 19:07  [ТС]
не могу разобраться, почему выводит все равно те событий, которые уже обработаны.
вот конфигурация.
1Cv8.rar
не судите только строго, я только начинаю изучать 1С;(
все сейчас завинчено на работе пользователя Предприятие (ну в дальнейшем может это будет администратор)
получается при запуске предприятия будет вылетать форма списка регистра заказы с новыми заказами, которые еще не обработаны (на данный момент будут отображатся все что обработаны и не обработаны).
при выборе какой либо записи в списке откроется форма документа документа заказа (ну это и понятно, что она откроется). На панели команд будет кнопка Создание путевого листа. При нажатии на нее откроется форма документа ТТН. Там все заполняем и сохраняем. Получается проходит движение в регистр Заказы с значением реквезита обороты в истину. Теперь в регистре есть две записи одного заказа (одна со значением ложь (обработанная документов заказ) другая с истиной от документа ТТН). Теперь при повторном запуске системы будет обрабатыватся процедура и функция


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Функция ЗапросНовыхЗаказов() Экспорт
    Перем кол;
    кол=0;
    Если РаботаСролями.АктивнаяРоль()=1 Тогда
        Запрос=Новый Запрос;
        Запрос.Текст="ВЫБРАТЬ
                     |  ЗаказыСрезПоследних.Клиент,
                     |  ЗаказыСрезПоследних.Кассир,
                     |  ЗаказыСрезПоследних.Обработана,
                     |  ЗаказыСрезПоследних.Сумма
                     |ИЗ
                     |  РегистрСведений.Заказы.СрезПоследних() КАК ЗаказыСрезПоследних
                     |ГДЕ
                     |  Не ЗаказыСрезПоследних.Обработана";
        выборка=Запрос.Выполнить().Выбрать();
        Пока выборка.Следующий() Цикл
            кол=Число(кол)+Число(1);
        КонецЦикла;
        Если кол>0 Тогда
            Сообщить("Поступили новые заказы");
        КонецЕсли;
    КонецЕсли;
    Возврат кол;
КонецФункции
1C
1
2
3
4
5
6
7
8
9
Процедура ПриНачалеРаботыСистемы()
    кол=РаботаСзапросами.ЗапросНовыхЗаказов();
    Если кол>0 Тогда
        //ЗначениеОтбора = Новый Структура("Обработана", Ложь);
        //ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
        //ОткрытьФорму("РегистрСведений.Заказы.ФормаСписка",ПараметрыВыбора);   
        ОткрытьФорму("РегистрСведений.Заказы.ФормаСписка"); 
    КонецЕсли;
КонецПроцедуры
то как я понял по запросу уже заказ со значением ложь должна пропускаться т.к есть ближе по времени обработанный заказ документов ТТН с значением реквезита обработана в истину.

уважаемые 1С программисты можете сказать в чем дело, в чем я накасячил? спасибо огромное за помощь.
0
900 / 877 / 11
Регистрация: 15.03.2012
Сообщений: 2,680
06.06.2013, 10:02
Цитата Сообщение от delete2013 Посмотреть сообщение
уважаемые 1С программисты можете сказать в чем дело, в чем я накасячил?
Много в чем

1. Каково назначение регистра сведений Заказы? Если Вы помните, то когда я предлогал его использовать, я предлагал структуру: Измерение - Заказ, Ресурс - Обработана. У Вас же много измерений да еще проблема в том, что у Вас при формировании движения в Заказе не заполнен ЗавЭкспедицией, но заполнен Кассир. А в движении ТТН не заполнен кассир, но заполнен ЗавЭкспедицией. Отсюда у вас в срезе две записи.

2. ОткрытьФорму("РегистрСведений.Заказы.Фор маСписка") - здесь Вы просто открываете форму без каких либо фильтров.

Не знаю с какой целью Вы сейчас используете(или планируете использовать) регистр сведений Заказы, поэтому либо его меняйте, либо добавьте еще один, с описанной мной структурой.
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
06.06.2013, 14:15  [ТС]
Цитата Сообщение от Fenomen Посмотреть сообщение
Много в чем
да я согласен, косяков у меня хватает


Цитата Сообщение от Fenomen Посмотреть сообщение
Каково назначение регистра сведений Заказы?
будет хранится инфа о проведенных заказах.
Цитата Сообщение от Fenomen Посмотреть сообщение
Если Вы помните, то когда я предлогал его использовать, я предлагал структуру: Измерение - Заказ, Ресурс - Обработана
т.е то, что у меня сейчас есть лучше переделать и изменить под такой вот варинат
Регистр Сведений Заказ:
измерения:
-Заказ тип ссылка на документ Заказ
Ресурс:
-обработано тип булево

и теперь как я понял будет в результате чтоль одна запись после проведение документа ТТН оставаться в этом регистре? записи должно быть все равно две, т.к два регистратора
сейчас только вот попробую этот вариант как вы написали, то раньше я значит не так понял((

Добавлено через 8 минут
блин, работает) прикольно. Спасибо. Все оказалось проще чем казалось

Добавлено через 2 минуты
а можно ли вызвать динамический список запроса или как правильно лучше сказать, вообщем чтоб при нажатии на кнопку срабатывал один запрос, а при нажатии на другую кнопку срабатывал другой запрос динамического списка
(знаю как сделать это все через свойство реквезита список) а как вот программно имеено и чтоб этот запрос обработался и вывел в форме то, что надо не знаю. Возможно ли это?

Добавлено через 6 минут
как сделать запрос динамического списка только для новых заказов я думаю знаю, он будет таким же как и этот)
вот только б мне его к кнопке прикрутить)
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
06.06.2013, 14:26
ВЫБРАТЬ ЗАКАЗ ИЗ РЕГИСТР ГДЕ РЕСУРС = &Параметр

ДинамическийСписок.Параметры.УстановитьЗ начениеПараметра("Параметр",ИСТИНА);
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
06.06.2013, 19:11  [ТС]
Цитата Сообщение от Dethmontt Посмотреть сообщение
ВЫБРАТЬ ЗАКАЗ ИЗ РЕГИСТР ГДЕ РЕСУРС = &Параметр
ДинамическийСписок.Параметры.УстановитьЗ начениеПараметра("Па раметр",ИСТИНА);

ага, вот как это делается. Буду знать) спасибо)

Добавлено через 4 часа 39 минут
блин не знаю, что произошло или что я сделал. Вообщем проблемка такая. Есть регистр сведений Заказ. У него есть регистратор Заказ. После того, когда Заказ проведен, запись попала в регистр. Перехожу в форму списка регистра, хочу открыть запись и вылетает сообщение что объект не найден. И не удается открыть запись.
Обработка движения проходит по след. коду

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    // регистр Заказы2
    Движения.Заказы2.Записывать = Истина;
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.Заказы2.Добавить();
        Движение.Период = Дата;
        Движение.Заказ = Клиент;
        Движение.Обработана = Ложь;
    КонецЦикла;
 
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
уже как-то была такая проблема и я решил довольно быстро, но уже не помню как. А сейчас 30 минут просидел и не понял в чем дело. Думал может чтот с ролями гдет доступ не поставил, та вроде нет, везде все проставлено. Что можете подсказать, в чем может быть косяк?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
06.06.2013, 23:00
Всегда вставляй ошибки на форум, так быстрее и понятнее.
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
06.06.2013, 23:40  [ТС]
Цитата Сообщение от Dethmontt Посмотреть сообщение
Всегда вставляй ошибки на форум, так быстрее и понятнее.
это да, согласен. Но дело в том, что прога не вылетает, она работает. Просто выходит сообщение, что объект не найден и все. Вылетов нет, все работает. Просто открыть запись через регистр регистратора не выходит. А движения документа работает, запись попадает в регистр. Не пойму где я уже опять накасячил или что сделал лишнего. Думаю может удалить документ и регистр и заново попробывать создать. Но не хотелось бы прибегать к таким радикальным мерам.
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
07.06.2013, 00:28
Движение.Активность=Истина; ??
Глянуть через меню.операции... может, там Регистратор отвалился?
Если стоит "Не удалять движения" - дубль, должно отругаться... Что ещё?
Как правило, косяк в самом неожиданном месте
1
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
07.06.2013, 00:51  [ТС]
Цитата Сообщение от duk337 Посмотреть сообщение
Как правило, косяк в самом неожиданном месте
да я согласен. Может он у меня и под носом, но я слепой тогда


Цитата Сообщение от duk337 Посмотреть сообщение
Глянуть через меню.операции... может, там Регистратор отвалился?
в управляемом приложение чтот того не нашел(((
Цитата Сообщение от duk337 Посмотреть сообщение
Движение.Активность=Истина; ??
не, это в движение не включена строка, но с ней тоже тот же эффект

это ппц, я уже не знаю что может быть.
1Cv8.rar
если кому будет не тяжело, гляньте пожалуйста. Я уже не знаю, что там не так Все документы и регистры доступны в подсистеме предприятие.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
07.06.2013, 01:14
РС подчиненный регистратору редактируется только через документ и так его открыть нельзя (У него нет формы записи)
0
1 / 1 / 0
Регистрация: 30.05.2013
Сообщений: 82
07.06.2013, 01:48  [ТС]
Цитата Сообщение от Dethmontt Посмотреть сообщение
РС подчиненный регистратору редактируется только через документ и так его открыть нельзя (У него нет формы записи)
если выбрать запись в форме списка регистра, то откроется запись документа самого. А сейчас и этого не происходит т.к выдает сообщение, что объект не найден
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
07.06.2013, 08:00
Цитата Сообщение от delete2013 Посмотреть сообщение
в управляемом приложение чтот того не нашел(((
вверху слева пупочка с треугольничком. Все функции
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2013, 08:00
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru