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

Пустой документ

Автор sali, 31 мар 2025, 08:01

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

sali

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


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

МассивДокументов = СоздатьРеализациюНаСервере();
Если МассивДокументов.Количество() <> 0 Тогда
ПоказатьЗначение(, МассивДокументов[МассивДокументов.ВГраница()])  ;
КонецЕсли;

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

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

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

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

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

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

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

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


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

КонецФункции   

дело в коде или в файле?

Denis1010

Доброе утро, так у Вас в коде есть кусок который и открывает форму документа

Цитата: sali от 31 мар 2025, 08:01ОткрытьФорму("Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента", ПараметрыФормы);


antoneus

"Ключ" в параметрах - это ссылка, а не массив ссылок.

sali

antoneus, это так массивдокументов.получить()??

sali

Denis1010, ну это открывает просто последний документ для видимости. просто фигни такой ранее не было , может единичные случаи... а сейчас посмотрел он из 4 документов создает только 2 или может 1 документ не заполнить - это если изменения в колонке "номер магазина, номер смены" могут произойти в самой обработки. а вот если загрузить данные и сразу создавать документ то все ок, единственно может опять же открыться документ создание.


antoneus

sali, для кого я все вот это вот здесь пишу стараюсь?

не ту ссылку закинул, теперь правильная.

sali

antoneus, я написал ведь это

antoneus

А, вижу. А зачем дальше вот это:

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", МассивДокументов);   
ОткрытьФорму("Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента", ПараметрыФормы);

?

sali

antoneus, да, не нужное . после изменения на ваш код

sali

antoneus, а вот как правильно прописать условие на выявление ошибки?
бывает выберут товар которого нет ни в одной группе и выходит ошибка "Элемент не выбран!", когда на создание документа нажимаешь или проще проверить на наличие товара в группе?

Теги:

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

Рейтинг@Mail.ru

Поиск