Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не коректно виконується умова в запиті          
mister-x Подменю пользователя
сообщение 26.12.12, 14:05
Сообщение #1

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

//====================
функция ПроверкаСтраны(Страна)
    
    возврат СписокСубконто.принадлежит(Страна);
    
конецфункции

//===========================
Процедура Сформировать()
....
        Запрос = создатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(п)
        |Обрабатывать НеПомеченныеНаУдаление;
        |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент;
        |Страна = Справочник.Сотрудники.Страна; // чи так Страна = Справочник.Сотрудники.Страна.ТекущийЭлемент;
        |Группировка Сотрудники упорядочить по Сотрудники.Наименование;
        |Условие(ПроверкаСтраны(Страна)=1);
        |Условие(Сотрудники.этоГруппа()=0);
        |"//}}ЗАПРОС
;
....

СписокСубконто - список країн на формі, питання в тому, що у виборку попадають співробітники в яких Страна не заповнена взагалі. Чому?

ЗІ. наразі вирішив не оптимальним варіантом - перебором списку країн і довідника і порівнянням

Сообщение отредактировал mister-x - 26.12.12, 14:09

Стрелок Подменю пользователя
сообщение 26.12.12, 14:32
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 96
Спасибо сказали: 8 раз
Рейтинг: 0

1 страна может периодика?
2 СписокСубконто должен содержать страны? точно?
2. зачем писать внешнюю функцию если то же самое можно написать в запросе?

Условие(СписокСубконто.Принадлежит(Страна)=1);

Сообщение отредактировал Vofka - 26.12.12, 14:33
Причина редактирования: Правила, 13


Signature
Программист 1С - любимчик бухгалтеров

mister-x Подменю пользователя
сообщение 26.12.12, 14:49
Сообщение #3

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

зробив так
СписСотрудники = создатьОбъект("СписокЗначений");

    Запрос = создатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(п)
        |Обрабатывать НеПомеченныеНаУдаление;
        |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент;
        |Страна = Справочник.Сотрудники.Страна;
        |Группировка Сотрудники упорядочить по Сотрудники.Наименование;
        |Условие(СписокСубконто.принадлежит(Страна)=1);
        |Условие(Сотрудники.этоГруппа()=0);
        |"//}}ЗАПРОС
;
        если Запрос.Выполнить(ТекстЗапроса)=0 тогда
            сообщить("Запит не виконаний");
        конецесли;
        
        пока запрос.группировка(1)=1 цикл
            Сотрудник = Запрос.Сотрудники;
            если Сотрудник.выбран()= 0 тогда продолжить конецесли;
            
            если СписСотрудники.принадлежит(Сотрудник)=0 тогда
                СписСотрудники.добавитьЗначение(Сотрудник);        
            конецесли
        конеццикла;

результат не змінився, Страна - не періодичний реквізит

в список попадають всі співробітники, а має попасти один (тільки в нього наразі країна заповнена) - по методиці неоптимального варіанту все коректно працює

ось неоптимальний варіант - робочий
для к=1 по СписокСубконто.размерСписка() цикл 
        _страна = СписокСубконто.получитьЗначение(к);
        спрСотрудники = создатьОбъект("Справочник.Сотрудники");
        спрСотрудники.выбратьЭлементы();
        пока спрСотрудники.получитьЭлемент()=1 цикл
            если (спрСотрудники.ЭтоГруппа()=1)  или (спрСотрудники.пометкаУдаления()=1) тогда продолжить конецесли;
            
            если (спрСотрудники.Страна = _страна) и (СписСотрудники.принадлежит(спрСотрудники.текущийЭлемент())=0) тогда
                СписСотрудники.добавитьЗначение(спрСотрудники.текущийЭлемент());    
            конецесли    
        конеццикла    
    конеццикла;

Реліз платформи 27, хз може тут причина.

Сообщение отредактировал mister-x - 26.12.12, 14:53

Zaval Подменю пользователя
сообщение 26.12.12, 14:57
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Я б замість умови на групу використав "без групп" в рядку "Группировка".
А в другій умові - "Страна В &СписокСубконто"

Перевірте, що саме в тому "СписокСубконто" - це тип "СписокЗначений"? Як він формується? Якщо через ВидиСубконто і дозволено пусте - то чи не додається туди порожнє субконто?

Сообщение отредактировал Zaval - 26.12.12, 15:04

Спасибо сказали: mister-x,

alex040269 Подменю пользователя
сообщение 26.12.12, 14:57
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

витяг з синтаксис-помічника:

Оператор языка запросов ''Условие (А в Б);'' говорит о том, что условие истинно, когда значение А является подмножеством значения Б. Следует особо отметить, что если значение Б пустое (объект не выбран), то условие является истинным, в отличие от оператора ''='' (равно)

тому пропоную додактокву умову
|Условие ПустоеЗначение(Страна) = 0



Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 26.12.12, 15:03
Сообщение #6

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(alex040269 @ 26.12.12, 14:57) *
Оператор языка запросов ''Условие (А в Б);''

тут його немає, є умова щодо приналежності списку на формі, вона в неоптимальному варіанті працює правильно
Цитата(Zaval @ 26.12.12, 14:57) *
А в другій умові - "Страна В &СписокСубконто"

тут 7.7, а не 8.х smile.gif
Цитата(Zaval @ 26.12.12, 14:57) *
Я б замість умови на групу використав "без групп" в рядку "Группировка".

дякую, добавлю

Zaval Подменю пользователя
сообщение 26.12.12, 15:07
Сообщение #7

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(mister-x @ 26.12.12, 15:03) *
тут 7.7, а не 8.х smile.gif


smile.gif так, для 7.7 - без "&"

mister-x Подменю пользователя
сообщение 26.12.12, 15:15
Сообщение #8

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

так працює
Запрос = создатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(п)
        |Обрабатывать НеПомеченныеНаУдаление;
        |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент;
        |Страна = Справочник.Сотрудники.Страна;
        |Группировка Сотрудники упорядочить по Сотрудники.Наименование без групп;
        |Условие((Страна в СписокСубконто) и (ПустоеЗначение(Страна) = 0));     
        |"//}}ЗАПРОС
    ;

отже, надалі на замітку метод для списку значень Принадлежит в запиті працює як оператор В


всім дякую

XBrut Подменю пользователя
сообщение 27.12.12, 4:31
Сообщение #9

Статус
**********
Группа: Пользователи
Сообщений: 1543
Спасибо сказали: 254 раз
Рейтинг: 0

Коли щось уже зовсім мутне, вивожу результат умови у вікно повідомлень

функция ПроверкаСтраны(Страна)
    
    Результат = СписокСубконто.принадлежит(Страна);
    Сообщить(Результат);
    Возврат Результат;
    
конецфункции

P.S.
доречно завжди використовувати оператор " В ", крім випадків, коли він , (падло) , не працює. (див. вашу ж тему про глюки) smile.gif

Сообщение отредактировал XBrut - 27.12.12, 4:32

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.06.24, 19:56
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!