1С:Предприятие
:: 1С:Предприятие 7.7 и ранее
|
|
| ||
SiMBa_R38 02.12.20 - 09:40 | Здравствуйте.
Имею справочник НомераСФ, в нем отключено наименование, код числовой, нумерация кодов в пределах подчинения. Реквизиты: Ссылка на документ Дата СФ Создаю папку 2020 в ней Код, Документ, НомерСФ 1, ТТН 10 (10.01.20), 10.01.20 .... 115632, ТТН 120365 (30.11.20), 02.12.20 Хотел сделать выборку крайних значений через СпрСФ.ПорядокКодов(); СпрСФ.ВыбратьЭлементыПоРеквизиту("ДатаСФ", ДатаСФ, 1, 0); СпрСФ.ПолучитьЭлемент(); первый = СпрСФ.Код; СпрСФ.ПорядокКодов(); СпрСФ.ОбратныйПорядок(1); СпрСФ.ВыбратьЭлементыПоРеквизиту("ДатаСФ", ДатаСФ, 1, 0); СпрСФ.ПолучитьЭлемент(); последний = СпрСФ.Код; Но, выяснилось что возвращается в каком-то ином порядке... Пришлось делать через такой костыль СпрСФ.ПорядокКодов(); СпрСФ.ВыбратьЭлементыПоРеквизиту("ДатаСФ", ДатаСФ, 1, 0); первый = 0; последний = 0; Пока СпрСФ.ПолучитьЭлемент() = 1 Цикл Если первый = 0 Тогда первый = Число(СпрСФ.Код); Иначе Если первый > Число(СпрСФ.Код) Тогда Сообщить("Первый не первый " + первый + " " + Число(СпрСФ.Код)); КонецЕсли; первый = Мин(первый,Число(СпрСФ.Код)); КонецЕсли; последний = Макс(последний, Число(СпрСФ.Код)); КонецЦикла; Может кто-нибудь разъяснить ЧЯДНТ? СпрСФ.ПорядокКодов(); СпрСФ.ОбратныйПорядок(1); местами менял, не помогает. Возможно дело в OrdNoChk.prm? | ||
SiMBa_R38 1 - 02.12.20 - 10:29 | При этом СпрСФ.ПорядокКодов(); СпрСФ.ОбратныйПорядок(1); СпрСФ.ВыбратьЭлементы(); Пока СпрСФ.ПолучитьЭлемент() = 1 Цикл Если естьБольше < Число(СпрСФ.Код) Тогда Если естьБольше <> 0 Тогда Сообщить("Есть больше " + естьБольше + " и " + Число(СпрСФ.Код)); естьБольше = Число(СпрСФ.Код); КонецЕсли; КонецЕсли; КонецЦикла; // отрабатывает нормально..., все коды по порядку убывания | ||
Mikeware 2 - 02.12.20 - 10:54 | ПорядокКодов(); и ВыбратьЭлементыПоРеквизиту(); - это по сути выбор индекса таблицы. | ||
SiMBa_R38 3 - 02.12.20 - 11:12 | (2) Понял, значит смысла нет искать в рамках текущих данных.
Благо время < секунды, можно позволить. | ||
Mikeware 4 - 02.12.20 - 11:36 | (3) сделай прямым запросом. "удобно и всерьез"™ | ||
SiMBa_R38 5 - 02.12.20 - 11:43 | (4) До сих пор расширения не использовались, а так да, как много чего переделать можно.
Просто в голове не укладывалось, вроде ж делаю порядоккодов, почему возвращает не по порядку. | ||
Mikeware 6 - 02.12.20 - 12:24 | (5) "До сих пор расширения не использовались" - а зря. 1с++ и формекс уже по факту джентльменский набор. Если до сих пор на клюшках - значил, есль на то причины, значит, есть причины повысить удобство.
даже не за скорость разговор. "вроде ж делаю порядоккодов, почему возвращает не по порядку." - просто полезно знать, что происходит, когда делаешь то или другое | ||
SiMBa_R38 7 - 02.12.20 - 12:58 | (6) "просто полезно знать, что происходит, когда делаешь то или другое" согласен, поэтому и задал вопрос.
1С++ в обработке обмена ЭДО использую, и то только для объекта "Структура" потому что Свойство("Поставщик") = 1, удобнее предст = ""; Получить("Поставщик", предст); xml весь на MSXML, формекс до сих пор не пригодился раскрашивать таблички документов не часто возникает желание, а вот ловить самопроизвольные падения (был опыт в другом проекте с FormEx) не очень хочется. События формы все корректно ловлю, экспортом пару раз хотелось воспользоваться, но потом открыл для себя Процедура ДействиеПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда
И как кто всё штатными. А ну openconf стоит конечно, так что не совсем ванила. | ||
Злопчинский 8 - 02.12.20 - 13:06 | (7) ДействиеПриОткрытии - это откуда и что? из 1С++? | ||
Cthulhu 9 - 02.12.20 - 13:16 | чонеясно. при установленной сортировке по коду(или наименованию) выборка без учета иерархии сортирует по полному коду(или полному наименованию). | ||
SiMBa_R38 10 - 03.12.20 - 04:10 | (8) Закидываем в шаблоны, и пользуемся, сейчас любой отчет с этого начинаю.
// в форме заводится метод Процедура Метод() Сообщение("Метод запустился") КонецПроцедуры Процедура ДействиеПриОткрытии() Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда  // заполнение переменных формы НачДата = Форма.Параметр.Получить("НачДата");  // флаги запуска ЗапуститьМетод = Форма.Параметр.Получить("ЗапуститьМетод"); ЗакрытьФорму = Форма.Параметр.Получить("ЗакрытьФорму"); Если ЗапуститьМетод = 1 Тогда Метод(); КонеЕсли; Если ЗапуститьМетод = 1 Тогда Форма.Закрыть(0); КонеЕсли; КонецЕсли; КонецПроцедуры Процедура ПриОткрытии() ДействиеПриОткрытии(); КонецПроцедуры Процедура ПриПовторномОткрытии()  // если это отчет имеет смысл, а вот в документах не стоит ДействиеПриОткрытии(); КонецПроцедуры // в форме откуда надо вызвыать или в расшифровке ТЗ Процедура ВызватьОтчетСМетодом() Парам = СоздатьОбъект("СписокЗначений"); Парам.Установить("НачДата", НачДата); Парам.Установить("ЗапуститьМетод", 1); Парам.Установить("ЗакрытьФорму", 1); ОткрытьФорму("Отчет.ОтчетСМетодом", Парам); КонецПроцедуры | ||
SiMBa_R38 11 - 03.12.20 - 04:13 | (9) упустил в коде, делаю конечно же ИспользоватьРодителя(папкаГода.ТекущийЭлемент()) Уже объяснили в (2) (10) С помарками, не копипастите | ||
Злопчинский 12 - 03.12.20 - 16:21 | тьфу ты елы палы.
глРасшифровка и механизм передачи как в типовых отчетах в ТИС и команды как в типовых формах документов в ТИС. |
|
Список тем форума |