Как в 1с закрыть документ программно
Станислав я вот что подумал вот мне тут кодер сказал что в 8.0 все стало прозрачней и понятней (ну типа типизация — кажется так, ну и прочие понятия кодерские, а вот мне чета не привысно — писать ЭтаФорма.Закрыть()
Это хорошо или как. Тоесть придется книжки по программированию читать.
(я серьезно)
(2) А что тебе не нравится? По-моему, очень логично. Можно даже догадаться без заглядывания в синтакс-помощник.
Ага я вот теперь не могу в 8.0 сразу ответить так как не помню названия (мне то как раз нравится. Сидел УПП ковырял открыл «Oбщий мoдуль Плaниpoвaниe: Moдуль [Toлькo для чтeния]» и там как нестранно почти все понятно:)))
Закрыть документ программно в 1С 7.7 — 1С — Обсуждение 2066388
закрыть документ ексель
Такая проблема, отчета открывает документ эксель делает в нем кое-какие изменения, как при выходе.
Программно создать документ
доброго времени суток! пишу программу на делфи, которая будет работать с 1с. не могли бы вы помочь.
Программно закрыть отчет или обновить
Здравствуйте. Работаю в конфигурации Бухгалтерия предприятия, редакция 2.0 (2.0.43.6) на.
Программно перезаписать существующий документ
Всем доброго времени суток. Такая проблема: нужно, чтобы в уже существующем документе производилась.
Открыть программно созданный документ
Написал обработку по вводу платежек и выписки на основании доков на поступление ТМЦ. После записи.
Программно указать документ-основание в восьмерке
Не подскажете? А то я не нашел в документации. Или может плохо искал?
Программно сохранить документ с программно созданными реквизитами
Помогите кто знает как сохранить в Управляемом приложении (Управляемая Форма) документ с программно.
Провести программно Документ, при изменении реквизита
8,2 Управляемое приложение http://s020.***********/i721/1512/12/f9e01e33dc51.jpg Есть документ, в.
Закрыть документ программно в 1С 7.7
1С 7.7 Комплексная ред. 4.5 (7.70.493)
Пишу док.закрыть(), выскакивает ошибка — Поле агрегатного объекта не обнаружено (закрыть).
Gluk8888
а просто Закрыть() пробовали?
упс Форма.Закрыть()
KSergei
к синтакс-помощнику не пробовали обращаться?
SaschaL
Добрый день!
Функция Закрыть() работает только для формы документа и применение её актуально в том случае если вы открыли форму документа.
Если же вы создаете документ программно и так программно заполняете документ данными то в таком случае достаточно использовать функцию Записать()
например:
Вот примерно так!
Natalya
Мне нужно из обработки записать изменения в документ. Всё работает. Я хотела бы, если документ открыт, с помощью программы его закрыть, и записать изменения. Только не знаю с помощью какой функции это сделать.
процедура грузополучатель(док) док1=создатьобъект("документ"); док1.выбратьдокументы(); док1.найтидокумент(док); док1.грузополучатель = грузополучатель.текущийэлемент(); //док1.закрыть(); док1.записать(); конецпроцедуры
SaschaL
То есть если вас правильно понял, нужно документ принудительно закрыть, если он открыт у кого нибудь из пользователей?
Natalya
То есть если вас правильно понял, нужно документ принудительно закрыть, если он открыт у кого нибудь из пользователей?
vitfil
Никак. Штатно — никак. Посему и запись документа рекомендуется обрамлять в Попытку. В 7.7 не возможно отловить факт блокировки данных кем-то из пользователей, кроме как через исключения. Потому как живность эта подключается к базе данных одним пользователем. Пользователи 1С:Предприятие — это НЕ пользователи базы данных. О них даже записей в БД ВООБЩЕ НЕТ.
Hryv
А вам это зачем?
Если что-то разовое — заходите монопольно и никто кроме вас ничего не откроет
Если постоянно, то интересно ради чего это надо
Natalya
Спасибо всем.
Сделаю без закрытия формы.
vitfil
Запись без закрытия формы документа, открытого другим пользователем? Готично! 1С не даст этого сделать!
Darlock
Снятие блокировки и закрытие формы документа у другого пользователя возможно сделать. Дописать конфигурацию самую малость и можно будет закрывать форму документа у соседа. Ничего сверхестественного в этом нет.
vitfil
Darlock, а я где-то хоть словом обмолвился, что этого нельзя сделать? Вот только возникает вопрос, надо ли это делать?
Natalya
Суть такая: нужно реквизиту документа присвоить значение.
Можно, конечно, изменения внести в сам модуль формы документа. Но изменений получается много и при обновлении их придётся постоянно вносить.
Обработка специальная для записи значения не писалась, просто в некую обработку (внешний отчёт) добавлены изменения. Чтобы записать изменения в документ придётся вернуться и его закрыть (документ открывает и обработку запускает один пользователь).
При записи изменений в конфигуратор нужно будет вносить изменения при обновлении и проверять правильность записи значения. Изменения внесённые в обработку упрощают это.
simply1
Снятие блокировки и закрытие формы документа у другого пользователя возможно сделать. Дописать конфигурацию самую малость и можно будет закрывать форму документа у соседа. Ничего сверхестественного в этом нет.
Darlock, а как дописать?
Расскажи, пожалуйста! Очень заинтригован, особенно, если это DBF!
simply1
Darlock!
Ответа не будет.
jmunya
Возможно, и есть ли вообще функция в 1C проверка закрытия программы?? («Закрыть программу?»)
puh14
Я вот задумался — а как бы это сделать. Получилось примерно так — делается константа СписокНаЗакрытие, тип — строка, длина неограничена.
для закрытия вешаем на список документов кнопочку с процедуркой
процедура ВнестиВСписокНаЗакрытие()
Если СокрЛП(Константа.СписокНаЗакрытие) = «» тогда
Спс = СоздатьОбъект(«списокЗначений»);
иначе
Спс = ЗначениеИзСтроки(Константа.СписокНаЗакрытие);
КонецЕсли;
Спс.ДобавитьЗначение(ТекущийДокумент);
Константа.СписокНаЗакрытие = ЗначениеВСтроку(Спс);
КонецПроцелдуры
В форме документа пишем процедурку
Процедура ЗакрытьПоЗапросу()
Если СокрЛП(Константа.СписокНаЗакрытие) = «» тогда
Спс = СоздатьОбъект(«списокЗначений»);
иначе
Спс = ЗначениеИзСтроки(Константа.СписокНаЗакрытие);
КонецЕсли;
Нашли = Спс.НайтиЗначение(ТекущийДокумент());
Если Нашли >0 Тогда
Спс.УдалитьЗначение(Нашли);
Форма.Закрыть(0);
КонецЕсли;
КонецПроцедуры
и чтобы это работало раз в скажем 5 секунд в приОТкрытии() добавляем строчку
раз в пять сек буду всех пользователей с открытыми документами этого типа будет вызываться процедура ЗакрытьПоЗапросу() получать список документов на закрытие, если нашел себя — то закрываться без запросов.
Как в управляемых формах закрыть все окна (хождение по мукам)
В управляемых формах 1С v8.3 не всё так просто, как было в обычных формах и, зачастую, требуются более сложные действия, чтобы выполнить «простейшее» для «старого» интерфейса действие.
- Как это было в обычных формах:
- Цепочка действий
- Программное закрытие всех форм
- Резюме:
Как это было в обычных формах:
Меню «Окна\Закрыть всё» …. и всё — все окна моментально закрыты! (кроме случаев когда есть модифицированность формы, либо есть обработчик запрещающий закрытие либо закрытие без подтверждения)

Теперь же у нас передовая технология «Такси» — «потому что быстрая»).
Цепочка действий
Выходим в меню/Окна/Все окна (уже 3 нажатия, но это еще не всё)

Часть вторая «Сдвинуть мышь вправо, найти кнопку «Закрыть окна» и нажать, …… и нет не всЁ. Потому что закроется только одно выделенное — текущее окно.

Нажимаем «Выделить все» — это если горячими клавишами «Ctrl+A», либо встать на верхний и через Shift и движением стрелкой вниз выделить все (все строки должны стать желтыми), а любителям мышкой, никак…. только по одному
Затем уже нажимаем «Закрыть окна» и ….. интерфейс поворочался 2-3 секунды, но закрыл окна.
Остались в списке два окна и окно диалога не закрылось — еще одно лишнее действие по его закрытию.

Программное закрытие всех форм
Окна = ПолучитьОкна();
Для Каждого Окно Из Окна Цикл
Если Не Окно.Основное Тогда
Для каждого Форма из Окно.Содержимое Цикл
Форма.Закрыть();
КонецЦикла;
КонецЕсли;
КонецЦикла;
Этот код закроет все окна кроме файлов созданных средствами 1С: текстовых,табличных документов, открытых через Показать() .
С версии 8.3.8 при закрытии нельзя вызывать серверные процедуры, данный вариант закрытия всех ПередЗавершениемРаботыСистемы в приложении не позволяет обойти ошибку.
Система понимает, что ты уже в стадии закрытия и сообщение выходит, в момент Форма.Закрыть(); хотя верилось что можно обойти без доработки всех форм.
Резюме:
Посчитайте сами: сколько лишних действий по банальному закрытию всех окон.
В некоторых случаях будет достаточно несколько раз нажать «Esc» и окна последовательно закроются, но это тоже не 3 клика.
Я не удивлюсь, что есть «волшебная» команда, которая позволяет, это сделать быстрее, но даже если она и существует, то не «интуитивно» понятна — и не на поверхности, как должна быть в «совершенном» интерфейсе.
Любые издержки на рекламную кампанию:
— больше, чем может позволить себе клиент;
— меньше, чем ожидали люди из творческого отдела;
— примерно такие, которых с ужасом опасались бухгалтеры.— Законы Мерфи
