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

возврат значения

Автор sali, 28 мар 2025, 10:32

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

sali

не могу высветить сообщение о всех созданных документов, после открытия формы.
&НаКлиенте
Процедура СоздатьРеализацию(Команда) 
Для каждого Элемент из объект.ДанныеФайлаРеализации цикл
если элемент.СортироватьПоНулю = 0 тогда
сообщить("У вас остались незаполненые данные!");
возврат;
конецесли;
конеццикла;


Если НЕ ЗначениеЗаполнено(Объект.ДанныеФайлаРеализации)  Тогда
Сообщить("Заполните табличную часть!");
Возврат;
Иначе 
СсылкаНаРозничныеПродажи = СоздатьРеализациюНаСервере(); 
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", СсылкаНаРозничныеПродажи); 
ОткрытьФорму("Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента", ПараметрыФормы);
// Сообщить("Создан " + СсылкаНаРозничныеПродажи.СообщениеДокумента);
конецесли; 
КонецПроцедуры   

&НаСервере
функция СоздатьРеализациюНаСервере()

Если Константы.ФункциональнаяОпцияВестиРозничныеПродажи.Получить() Тогда   

ВЫБОРКА  = ШАПКА.Выгрузить();
выборка.Свернуть("НомерМагазина, НомерСмены");

Для Каждого СтрокаДанных Из Выборка Цикл   

НовыйДокумент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();   
Если Не Объект.Организация.Пустая() Тогда
НовыйДокумент.Организация = Объект.Организация; 
Иначе
НовыйДокумент.Организация = Справочники.Организации.ОрганизацияПоУмолчанию();
КонецЕсли;
НовыйДокумент.Касса = Справочники.Кассы.НайтиПоРеквизиту("НомерМагазина", СтрокаДанных.НомерМагазина); 
НовыйДокумент.СчетРасчетовДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("1410"); 
НовыйДокумент.СчетРасчетовКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("3210");
НовыйДокумент.ВалютаДокумента = НовыйДокумент.Касса.ВалютаДенежныхСредств;
НовыйДокумент.Автор = Пользователи.ТекущийПользователь();

ПроверитьЗаписьНаСервере(НовыйДокумент);
ЗаполнитьДанныеШапки(НовыйДокумент);

СтрокиТЧ = Объект.ДанныеФайлаРеализации.НайтиСтроки(Новый Структура("НомерМагазина, НомерСмены", СтрокаДанных.НомерМагазина, СтрокаДанных.НомерСмены));
Для каждого СтрокаТЧ из СтрокиТЧ Цикл
Если СтрокаТЧ.номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Товары") Тогда   
Если СтрокаТЧ.ЭтоВозврат = Ложь Тогда
Строка = НовыйДокумент.Товары.Добавить();
НовыйДокумент.НомерСмены = строкатч.номерсмены;
ЗаполнитьСчетаУчета(Строка);     
ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ);
ПолучитьВидДеятельности(НовыйДокумент, Строка);
Иначе
Строка = НовыйДокумент.Возвраты.Добавить();
ЗаполнитьСчетаУчета(Строка);     
Строка.НомерФискальногоЧека = СтрокаТЧ.ФиксНомер;     
ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ);
КонецЕсли;
Если СтрокаТЧ.ОплатаБезналом = Истина Тогда
Строка = НовыйДокумент.Оплата.Добавить();
Строка.СуммаОплаты = СтрокаТЧ.Сумма;
Строка.ВидОплаты = СтрокаТЧ.ВидОплаты;
Конецесли;

ИначеЕсли СтрокаТЧ.номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Услуги") Тогда 
Если СтрокаТЧ.ЭтоВозврат = Ложь Тогда
Строка = НовыйДокумент.Услуги.Добавить();
НовыйДокумент.НомерСмены = строкатч.номерсмены;
ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ); 
ПолучитьВидДеятельности(НовыйДокумент, Строка);
Иначе
Строка = НовыйДокумент.ВозвратУслуг.Добавить();
ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ);
ПолучитьВидДеятельности(НовыйДокумент, Строка);
КонецЕсли;     
Если СтрокаТЧ.ОплатаБезналом = Истина Тогда
Строка = НовыйДокумент.Оплата.Добавить(); 
Строка.СуммаОплаты = СтрокаТЧ.Сумма;
Строка.ВидОплаты = СтрокаТЧ.ВидОплаты;
Конецесли;
КонецЕсли;   
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);   
Конеццикла;   
сообщить("Создан " + новыйдокумент);
конеццикла;
Иначе
Сообщить("Настройте параметры учета - розничные продажи");
КонецЕсли;

Возврат НовыйДокумент.Ссылка;

КонецФункции 
как мне тут отобразить сообщение "создан такой-то документ" для всех созданных?
пробовал счтчик документов подставлять , не помогло

antoneus

Ну вот же, сообщает

сообщить("Создан " + новыйдокумент);

sali

antoneus, ну он сообщает это еще в обработке , а мне нужно чтобы я нажал на кнопку создать документ у меня открылась форма с последним документом(например, с документом 690) и высветилось уже на форме
создан документ 687
создан документ 688 (не проведен)
создан документ 689
создан документ 690

antoneus

Что такое "счетчик документов" и куда и как пробовал подставлять?

sali

antoneus, в самом начале функции СоздатьРеализациюНаСервере()
количествоДокументов = 0;потом НовыйДокумент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
ВсегоДокументов = КоличествоДокументов + 1;
по этому счетчику хотел написать цикл уже в процедуре СоздатьРеализацию(Команда)
для количестводокументов = 1 по ВсегоДокументов Цикл
сообщить("создан " + СсылкаНаРозничныеПродажи);
конеццикла;
открытьформу(.....);

antoneus

И что не получилось?

sali

antoneus, нет. в переменной всегодокументов всегда 1 стоял .
видимо на не правильно строке писал

antoneus

Вот интересно, почему?
Вот мы объявляем переменную.

количествоДокументов = 0;
Вот мы идем по циклу и там такая команда.

ВсегоДокументов = КоличествоДокументов + 1;
После выполнения этой команды: ВсегоДокументов = 1, КоличествоДокументов - 0.

На следующем проходе цикла мы опять встречаем эту команду:

ВсегоДокументов = КоличествоДокументов + 1;
КоличествоДокументов у нас равно 0, ВсегоДокументов, получается - 0 + 1 = 1.

Ну и если мы пройдем по циклу тысячу раз, ВсегоДокументов у нас будет все равно 1.
Счетчики работают немного не так.

sali

antoneus, просто тогда объявить так?

&НаСервере
функция СоздатьРеализациюНаСервере()
перемколичестводокументов;
  Если Константы.ФункциональнаяОпцияВестиРозничныеПродажи.Получить() Тогда   

ВЫБОРКА  = ШАПКА.Выгрузить();
выборка.Свернуть("НомерМагазина, НомерСмены");

Для Каждого СтрокаДанных Из Выборка Цикл   

НовыйДокумент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();   
Если Не Объект.Организация.Пустая() Тогда
или реквизит на форме создать с типом числа?

antoneus

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

Теги:

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

Рейтинг@Mail.ru

Поиск