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

Автонумерация в документе

Автор Sonik, 05 апр 2011, 08:56

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

Sonik

хорошо а как выбрать максимум если Счет.НомерСФ -строковое значение?

Sonik

получается что из 9 и 11 он считает наибольшим 9

cska-fanat-kz

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

cska-fanat-kz

возможно через ВЫРАЗИТЬ(НомерСФ КАК Число)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Sonik

Делаю теперь запрос:
|ВЫБРАТЬ
|МАКСИМУМ(РеализацияМатериальныхАктивовСуммы.Ссылка.Дата) КАК ДатаС,
|ВЫРАЗИТЬ(РеализацияМатериальныхАктивовСуммы.Ссылка.ПостфиксНомераСчетаФактуры КАК Число) КАК НомерСФ1,
|МАКСИМУМ(НомерСФ1) КАК НомерСФ
|ИЗ
|Документ.РеализацияМатериальныхАктивов.Суммы  КАК РеализацияМатериальныхАктивовСуммы
|Где
|РеализацияМатериальныхАктивовСуммы.Ссылка.Дата МЕЖДУ &A И &Б";

Ошибку выдает
Несовместимые типы "ВЫРАЗИТЬ"
<<?>>ВЫРАЗИТЬ(РеализацияМатериальныхАктивовСуммы.Ссылка.ПостфиксНомераСчетаФактуры КАК Число) КАК НомерСФ1,

has

А в постфиксе кроме цифр точно ничего нет? И зачем максимальная дата?

"ВЫБРАТЬ
|МАКСИМУМ(ВЫРАЗИТЬ(РеализацияМатериальныхАктивовСуммы.Ссылка.ПостфиксНомераСчетаФактуры КАК Число(10))) КАК НомерСФ1
|ИЗ
|Документ.РеализацияМатериальныхАктивов.Суммы  КАК РеализацияМатериальныхАктивовСуммы
|Где
|РеализацияМатериальныхАктивовСуммы.Ссылка.Дата МЕЖДУ &A И &Б";

Sonik

нет, видимо в запросе менять тип нельзя, только выбирать те что есть, может сравнивать строчные значения посимвольно?

Sonik

Может вот так? только ругается на какуюто ошибку?
Б = НачалоМесяца(Документ.Дата);
Б2 = КонецМесяца(Документ.Дата);
Запрос = Новый Запрос;Запрос.Текст ="
|ВЫБРАТЬ
|Счет.Ссылка.ПостфиксНомераСчетаФактуры  КАК НомерСФ
|ИЗ
|Документ.РеализацияМатериальныхАктивов.Суммы  КАК Счет
|Где
|(Счет.Ссылка.Дата МЕЖДУ &A И &Б)";
Запрос.УстановитьПараметр("A",Б2);
Запрос.УстановитьПараметр("Б",Б);
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий()Цикл
   Если Число(Выборка.НомерСФ)>Знач Тогда
      Знач=Число(Выборка.НомерСФ);
   КонецЕсли;
КонецЦикла;
Результат=Знач+1;

Sonik

Исправил:
Б = НачалоМесяца(Документ.Дата);
Б2 = КонецМесяца(Документ.Дата);
Значен=0;
Запрос = Новый Запрос;Запрос.Текст ="
|ВЫБРАТЬ
|Счет.Ссылка.ПостфиксНомераСчетаФактуры  КАК НомерСФ
|ИЗ
|Документ.РеализацияМатериальныхАктивов.Суммы  КАК Счет
|Где
|(Счет.Ссылка.Дата МЕЖДУ &A И &Б)";
Запрос.УстановитьПараметр("A",Б2);
Запрос.УстановитьПараметр("Б",Б);
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий()Цикл
   Если Число(Выборка.НомерСФ)>Значен Тогда
      Значен=Число(Выборка.НомерСФ);
   КонецЕсли;
КонецЦикла;
Результат=Значен+1;

Но каждый раз теперь выводит единицу((

Sonik

Все получилось! Правильный код:
Б = НачалоМесяца(Документ.Дата);
Б2 = КонецМесяца(Документ.Дата);
Значен1=0;
Запрос = Новый Запрос;Запрос.Текст ="
|ВЫБРАТЬ
|Счет.Ссылка.ПостфиксНомераСчетаФактуры  КАК НомерСФ
|ИЗ
|Документ.РеализацияМатериальныхАктивов.Суммы  КАК Счет
|Где
|(Счет.Ссылка.Дата<&A)И
|(Счет.Ссылка.Дата>=&Б)";Запрос.УстановитьПараметр("A",Б2);Запрос.УстановитьПараметр("Б",Б);Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий()Цикл
   Если ЗначениеЗаполнено(Выборка.НомерСФ) Тогда
   Если Число(Выборка.НомерСФ)>Значен1 Тогда
      Значен1=Число(Выборка.НомерСФ);
   КонецЕсли;
   КонецЕсли;
КонецЦикла;
Результат=Значен1+1;


Теги:

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

Рейтинг@Mail.ru

Поиск