Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 09:36

Внешняя обработка перенумерации документов

Автор Danceva, 24 ноя 2014, 19:08

0 Пользователей и 1 гость просматривают эту тему.

Danceva

Всем здравствуйте.

Вот пишу свою первую обработку и сразу столкнулась с проблемами. Надеюсь, вы мне поможете их решить.

Платформа: 8.3.5.1231
Конфигурация: Бухгалтерия ПРОФ 3.0.36.19

Задача: Перенумеровать все выданные счета-фактуры (СФ) за год.
Условия:
1) СФ на реализацию
2) СФ не авансовые

Нумерация должна совпадать с документом "Реализация товаров и услуг" + 00.
Например: № РТиУ 0000-0001 - № СФ 0000-000001.

В начале я решила выбрать все СФ за год.
В модуле формы прописала код:

Процедура ПриОткрытии(Отказ)
    ВыборкаДокументов = Документы.СчетФактураВыданный.Выбрать(НачалоГода(ТекущаяДата()), КонецГода(ТекущаяДата()));
   Пока ВыборкаДокументов.Следующий() Цикл
        Сообщить(ВыборкаДокументов);
        КонецЦикла
КонецПроцедуры


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

MuI_I_Ika

Попробуйте так:

Сообщить(ВыборкаДокументов.Ссылка);

KKurgan

Обратите внимание, что все процедуры модуля формы в режиме управляемого приложения делятся на компилируемые на сервере и на клиенте!
В вашем случае вы не указали директиву компиляции перед процедурой. В этом случае, вступает в силу директива по умолчанию - "НаСервере". Т.е. на клиенте, где происходит событие "ПриОткрытии" у Вас отсутствует требуемая процедура и никакой код не исполняется. В остальном код у Вас правильный. Нужно только его оформить в следующем виде:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПриОткрытииНаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПриОткрытииНаСервере()
// Ваш код из сообщения
КонецПроцедуры

cska-fanat-kz

Вы лучше обработчик события приучитесь добавлять со страницы "Диалог"
Встаете на нужный элемент (в данном случае на саму форму), открываете свойства, переходите вниз, туда, где перечислены события текущего элемента, выбираете требуемое событие, нажимаете на кнопку с лупой и вуаля - процедура добавляется автоматически со всеми необходимыми директивами и пр...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

KrivosheevEV

Точка останова и Shift+F9 намного удобнее вывода в окно сообщений всех счёт-фактур за текущий год.
И ещё, без запроса вам в вашей задаче не обойтись.

Danceva

Цитата: KrivosheevEV от 25 ноя 2014, 08:07
Точка останова и Shift+F9 намного удобнее вывода в окно сообщений всех счёт-фактур за текущий год.
И ещё, без запроса вам в вашей задаче не обойтись.

Всё верно. В итоге код такой:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетФактураВыданный.Ссылка
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
|ГДЕ
| СчетФактураВыданный.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И СчетФактураВыданный.Организация = &Организация
| И СчетФактураВыданный.ВидСчетаФактуры.Ссылка = &ВидСФ";

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

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;

Всё выводит как надо.

А как сделать, чтобы счет-фактуре присваивался номер документа основания "Реализация товаров и услуг"?
В этом же цикле где "Сообщить".
Добавлено: 26 ноя 2014, 01:00


Дополню. Нужно первой итерацией присвоить номер РТиУ счет-фактуре и добавить 00 после тире.
А второй итерацией убрать эти два нуля.

Например,
№ Реализация ТиУ 0000-1034
№ Cчет-фактуры должен быть 0000-001034

Вторая итерация:
№ Cчет-фактуры 0000-1034

cska-fanat-kz

смысл номера счета-фактуры при первой итерации?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

KrivosheevEV

Дополнить запрос получением связанных по номеру реализаций. Внутренней связью (1 к 1). В цикле получать объект сч-ф., менять номер по нужной маске, записывать. В другом цикле делать обратное.

Цитата: cska-fanat-kz от 26 ноя 2014, 05:59
смысл номера счета-фактуры при первой итерации?

Тестовое задание, наверное. На работу устраивается.

cska-fanat-kz

ааа, т.е. надо установить номер и вернуть обратно?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Danceva

Цитата: KrivosheevEV от 26 ноя 2014, 08:02
Дополнить запрос получением связанных по номеру реализаций. Внутренней связью (1 к 1). В цикле получать объект сч-ф., менять номер по нужной маске, записывать. В другом цикле делать обратное.

Цитата: cska-fanat-kz от 26 ноя 2014, 05:59
смысл номера счета-фактуры при первой итерации?

Тестовое задание, наверное. На работу устраивается.

Cмысл в том, что у СФ сбита нумерация. И если заменять на идентичный 9-тизначный номер, то они могут повториться. А когда всё будет по порядку, то можно убрать 2 знака.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск