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

Печатная форма 1С на английском языке

Автор sali, 14 мая 2025, 11:24

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

antoneus

Да, нужен запрос.

sali

antoneus, опять же по реквизиту ВалютаДенежныхСредств искать? кстати, почему не будет работать такая схема
ГДЕ
СчетНаОплатуПокупателю.БанковскийСчет.ВалютаДенежныхСредств.Наименование ПОДОБНО "%евро%"
И СчетНаОплатуПокупателю.БанковскийСчет.ВалютаДенежныхСредств.Наименование ПОДОБНО "%USD%"

antoneus

Потому что, во-первых, вряд ли найдется счет у которого в наименовании есть и "USD" и "евро", во-вторых - не надо искать по наименованию ничего, разве что в крайних случаях, если вот прямо больше вообще никак. Потому что в "евро" может быть английская "e" или "p" или "o", да чего там только может не быть. Там может вообще ничего не быть. Поэтому надо опираться в поиске на менее зыбкие сущности - на ссылки, например. Ссылка на валюту - очень хорошая сущность.

sali

antoneus, Снимок экрана (300).png
ДА ПРОСТО в этой таблице сущности для такого же доллара не найду

Quality Lab

sali, в таких случаях лучше просто привлечь умелого тестировщика и он вам быстро поможет, в том числе и с такими штуками. Есть Middle+ по тестированию 1С, готов взять проект. Опыт тестирования: 3 года. Если рассматриваете такой вариант, пишите в ЛС телеграме @Quality_lab_chat или позвоните +7 (495) 120-00-96

antoneus

Что нужно-то вообще? Что за печатная форма? Откуда выводится? Вон, боты уже приползли помогать.

Если из документа и в документе есть валюта - пихайте ее в запрос параметром.

sali

Цитата: antoneus от 15 мая 2025, 13:37Что нужно-то вообще?
я же вам объяснял что вывести три валютных номера счета организации . вы сказали за наименование лучше не цепляться, но а за что еще?? единственное молитва чтобы похожий счет не записали

однако получилось так
| СчетНаОплатуПокупателю.Ссылка В(&СписокДокументов)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("СписокДокументов", МассивОбъектов);

Шапка = Запрос.Выполнить().Выбрать();

ТекстЗапросаСчетов =
"ВЫБРАТЬ
| БанковскиеСчета.НомерСчета КАК НомерСчета
|ИЗ
| Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
| БанковскиеСчета.Наименование ПОДОБНО ""%расчетный %usd""
| Или БанковскиеСчета.ВалютаДенежныхСредств.Наименование = ""eur""";
ЗапросСчетов = Новый Запрос(ТекстЗапросаСчетов);
РезультатЗапросаПоСчетам = ЗапросСчетов.Выполнить();
ВыборкаСчетов= РезультатЗапросаПоСчетам.Выгрузить();

ДанныеПечати.Вставить("ДолларовыйСчет", ВыборкаСчетов[0]); 
ДанныеПечати.Вставить("ЕвроСчет", ВыборкаСчетов[1]);


выводит 2 нужных счета

antoneus

Ну зашибись. А если еврового счета нет или долларового? Вывалится 1с с ошибкой. А если 1с вздумается отсортировать их так, что первым будет идти евросчет?

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

Счета = Новый Структура("ДолларовыйСчет, ЕвроСчет", "840", "978");
Для каждого КлючИЗначение Из Счета Цикл
    стрСчет = ВыборкаСчетов.Найти(КлючИЗначение.Значение, "ВалютаКод");
    Если стрСчет <> Неопределено Тогда
        ДанныеПечати.Вставить(КлючИЗначение.Ключ, стрСчет.НомерСчета)
    Иначе
        ДанныеПечати.Вставить(КлючИЗначение.Ключ, "")
    КонецЕсли;
КонецЦикла;

Чем этот код лучше? Мы опираемся не на наименование счета, которое может быть каким угодно, а на код привязанной к нему валюты, в котором мы уверены. При выполнении кода не возникнет ошибок, если даже ни одного валютного счета в базе нет. В результат выполнения можно легко влепить другие валюты - нужно только добавить ключи/значения в структуру.

sali

antoneus, мне говорили что валюту кодом искать нельзя , хер знает почему

sali

Цитата: antoneus от 15 мая 2025, 14:32Счета = Новый Структура("ДолларовыйСчет, ЕвроСчет", "840", "978"); Для каждого КлючИЗначение Из Счета Цикл     стрСчет = ВыборкаСчетов.Найти(КлючИЗначение.Значение, "ВалютаКод");     Если стрСчет <> Неопределено Тогда
но он здесь возьмет первый счет usd из списка всех счетов, это будет PE CLIFTON...и тд  а мне нужен именно расчетный счет usd у которого другой номер счета

Теги:

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

Рейтинг@Mail.ru

Поиск