helpf.pro
Регистрация

v8.3: Как сделать проверку на проведенность документа перед печатью?

xVadimx
24.05.2019 10:14Прочитано: 6556

Добрый день! Мучаюсь уже 2 неделю с этим вопросом. Есть самописная база в 1С 8.3 по складскому учету и движению оборудования созданная мной же (оооочень простая, но мне это и нужно). Есть необходимость  создания проверки на проведенность документов перед печатью( важно, что бы распечатать можно было тот документ, который проведен), но на создание формулы не хватает ума/опыта/времени т.к. создается эта база на работе, которая никак не относится к программированию + сам я не программист и до недавнего времени знал 1с не более чем простой пользователь и то не слишком опытный. Собственно по этому пишу сюда и очень надеюсь на помощь. 

Есть простая процедура печати:

Код 1C v 8.3
 Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.ВыдачаОборудованияИИнструмента.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВыдачаОборудованияИИнструмента.Дата,
| ВыдачаОборудованияИИнструмента.КладовщикОтпустил,
| ВыдачаОборудованияИИнструмента.Комментарий,
| ВыдачаОборудованияИИнструмента.Номер,
| ВыдачаОборудованияИИнструмента.Организация,
| ВыдачаОборудованияИИнструмента.СкладОтправитель,
| ВыдачаОборудованияИИнструмента.Оборудование.(
| НомерСтроки,
| Номенклатура,
| Количество,
| Сотрудники
| )
|ИЗ
| Документ.ВыдачаОборудованияИИнструмента КАК ВыдачаОборудованияИИнструмента
|ГДЕ
| ВыдачаОборудованияИИнструмента.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();


ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьОборудованиеШапка = Макет.ПолучитьОбласть("ОборудованиеШапка");
ОбластьОборудование = Макет.ПолучитьОбласть("Оборудование");
Подвал = Макет.ПолучитьОбласть("Подвал");


ТабДок.Очистить();


ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;


ТабДок.Вывести(ОбластьЗаголовок);


Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());


ТабДок.Вывести(ОбластьОборудованиеШапка);
ВыборкаОборудование = Выборка.Оборудование.Выбрать();
Пока ВыборкаОборудование.Следующий() Цикл
ОбластьОборудование.Параметры.Заполнить(ВыборкаОборудование);
ТабДок.Вывести(ОбластьОборудование, ВыборкаОборудование.Уровень());
КонецЦикла;


Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);


ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры


и есть куча попыток не увенчавшихся успехом построить код на проверку проведения перед документа и куча времени потраченного на поиски чего-то подобного в интернете. 

Вот пример на мой взгляд (но я могу конечно же ошибаться) чего то более близкого к успеху:

Код 1C v 8.3
   Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если РежимЗаписи = РежимЗаписиДокумента.Проведение  Тогда
Документы.ВыдачаОборудованияИИнструмента.Печать(Ссылка.ТабДок);
Отказ = Истина;
Возврат;
КонецЕсли;     
КонецПроцедуры 

Но все равно не все так просто, как хотелось бы:

Код 1C v 8.3
 {Документ.ВыдачаОборудованияИИнструмента.МодульМенеджера(63,50)}: Переменная не определена (Ссылка)
Документы.ВыдачаОборудованияИИнструмента.Печать(<<?>>Ссылка.ТабДок); (Проверка: Сервер)

Объясните не опытному - что не так и что нужно, что бы все было так?

Заранее благодарен!

Yandex
Возможно, вас также заинтересует
Реклама на портале
АВП
11.06.2019 18:38Ответ № 1
Код 1C v 8.3
 Процедура Печать(ТабДок, Ссылка) Экспорт
Если НЕ Ссылка.Проведен Тогда
Сообщить ("здесь все что хочешь сообщить");
Возврат;
КонецЕсли;
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.