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

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

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

fruitella и 1 гость просматривают эту тему.

sali

antoneus, окей сначала я так и сделал, но походу тоже не правильно раз пришел к тупому выводу и создал  ВсегоДокументов

скажите, прописываем КоличествоДокументов= КоличествоДокументов + 1; после новыйдокумент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();а создается КоличествоДокументов где??

antoneus

Перед циклом.
Другое дело, что этот счетчик в конце концов окажется не нужен)

sali

Цитата: antoneus от 28 мар 2025, 12:41окажется не нужен)
а как по другому можно было? если в процедуру СоздатьРеализацию(Команда)  мне приходит последний документ для открытия

antoneus

эхх

В функции СоздатьРеализациюНаСервере создаешь массив. Туда складываешь ссылки на созданные документы. Возвращаешь из функции массив. Открываешь последний элемент. Сообщаешь.

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

sali

antoneus, в функции СоздатьРеализациюНаСервере() создать массив перед возвратом с вызовом самой функции?


sali

может, вы, имели ввиду процедуру СоздатьРеализацию(Команда)  ??

antoneus

Цитата: sali от 28 мар 2025, 13:07antoneus, в функции СоздатьРеализациюНаСервере() создать массив перед возвратом с вызовом самой функции?

чиво?

sali

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


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

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


&НаСервере
Функция ПроверитьЗаполненностьЗначенийКолонкиТЗ(НовыйДокумент)
Для Каждого СтрокаШапки Из НовыйДокумент.Ссылка Цикл
Если Не ЗначениеЗаполнено(СтрокаШапки) Тогда
Сообщить("НЕ УРА");
ВсеЗначенияЗаполнены = Ложь;
КонецЕсли;
КолонкиТЗ = Объект.ДанныеФайлаРеализации.Выгрузить().Колонки;
Для Каждого Строка Из Объект.ДанныеФайлаРеализации Цикл
Для Каждого КолонкаТЗ Из КолонкиТЗ Цикл
Если Не ЗначениеЗаполнено(Строка[КолонкаТЗ.Имя]) Тогда
Сообщить("не все ура");
ВсеЗначенияЗаполнены = ложь;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;  
Возврат ВсеЗначенияЗаполнены;

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




ВсеЗначенияЗаполнены = реквизит на форме

sali

как проверить заполненность шапки документа? для нее отдельную функцию писал &НаСервере
Процедура ПроверитьЗаписьНаСервере(НовыйДокумент)   

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Кассы.Ссылка КАК Касса
|ИЗ
| Справочник.Кассы КАК Кассы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыРозничныхПродаж КАК ПараметрыРозничныхПродаж
| ПО Кассы.Ссылка = ПараметрыРозничныхПродаж.Касса
|ГДЕ
| ПараметрыРозничныхПродаж.Касса ЕСТЬ NULL";

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

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

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

Если  КассаДокумента = НовыйДокумент.Касса Тогда   
Сообщить("У вас нет установленного параметра для кассы " + НовыйДокумент.Касса); 
КонецЕсли;


КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаполнитьДанныеШапки(НовыйДокумент)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПараметрыРозничныхПродаж.Касса КАК Касса,
| ПараметрыРозничныхПродаж.Склад КАК Склад,
| ПараметрыРозничныхПродаж.Контрагент КАК Контрагент,
| ПараметрыРозничныхПродаж.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ПараметрыРозничныхПродаж.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств
|ИЗ
| РегистрСведений.ПараметрыРозничныхПродаж КАК ПараметрыРозничныхПродаж
|ГДЕ
| ПараметрыРозничныхПродаж.Касса = &Касса";

Запрос.УстановитьПараметр("Касса", НовыйДокумент.Касса);
РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ЗаполнитьЗначенияСвойств(НовыйДокумент, ВыборкаДетальныеЗаписи);

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    ЗаполнитьЗначенияСвойств(НовыйДокумент, ВыборкаДетальныеЗаписи);
КонецЕсли

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

antoneus

Ну ПроверитьЗаполнение, не?

Теги:

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

Рейтинг@Mail.ru

Поиск