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

выбор в выборе

Автор sali, 17 ноя 2025, 10:47

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

sali

antoneus, а какого фига происходит удаление полей после снятия галочки Автозаполнение? поле добавочное, со значением Истина

sali

и это откуда здесь?

sali

почему параметры в выборе стали выходить?

sali

antoneus, а как из таблицы значений данные записать в строку?

antoneus

Ну, например, загнать в массив и СтрСоединить.
Засунуть в СКД и СоединитьСтроки.
А вообще не понял вопроса.

sali

antoneus, уже справился , спасибо за обратную связь
Цитата: antoneus от Вчера в 13:32А вообще не понял вопроса.
запросом получаю данные в виде таблицы значений . так как данные булевые я сделал выбор когда понедельник тогда 1 , когда вторник тогда 2. и получался примерно такой результат
1;;4;;7
;;3;;;;
1;;;;6;7

и получившиеся данные записать в строку, что бы вышло
1;4;7, 3, 1;6;7

antoneus

Привести первый результат к виду
1;4;7
3
1;6;7

загнать его в массив и СтрСоединить.

sali

бляха что т не получается , еще и заболел вообще думать не получается
делаю в процедуре "при окончании редактирования" (тч)
логика какая ? - пользователь выбирает контрагента, склад и дни когда он должен пройти этот склад. в момент нажатия Enter или переход к другой строке/полю/ просто нажал на форму и в поле "ДниПрохода" появляются значения согласно выбранным дням. то бишь выбрали там пятницу со вторником и в поле высвечивается 2;5

сейчас пишу код, где передаю в запрос текущие данные - он ругается "итератор для значения не определен"
&НаСервереБезКонтекста
Функция ПолучитьДниРасписанияТекущейСтроки(элемент)   
   
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("элемент", элемент);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    МаршрутыАгентов.Маршруты.(
    |        ВЫБОР
    |            КОГДА &элемент = МаршрутыАгентов.Маршруты.Понедельник = &Элемент
    |                ТОГДА 1
    |        КОНЕЦ КАК пн,
    |        ВЫБОР
    |            КОГДА &элемент = МаршрутыАгентов.Маршруты.Вторник
    |                ТОГДА 2
    |        КОНЕЦ КАК вт,
    |        ВЫБОР
    |            КОГДА &элемент = МаршрутыАгентов.Маршруты.Среда
    |                ТОГДА 3
    |        КОНЕЦ КАК ср,
    |        ВЫБОР
    |            КОГДА &элемент = МаршрутыАгентов.Маршруты.Четверг
    |                ТОГДА 4
    |        КОНЕЦ КАК чт,
    |        ВЫБОР
    |            КОГДА &элемент = МаршрутыАгентов.Маршруты.Пятница
    |                ТОГДА 5
    |        КОНЕЦ КАК пт,
    |        ВЫБОР
    |            КОГДА &элемент = МаршрутыАгентов.Маршруты.Суббота
    |                ТОГДА 6
    |        КОНЕЦ КАК сб,
    |        ВЫБОР
    |            КОГДА &элемент = МаршрутыАгентов.Маршруты.Воскресенье
    |                ТОГДА 7
    |        КОНЕЦ КАК вс
    |    ) КАК Маршруты
    |ИЗ
    |    Справочник.МаршрутыАгентов КАК МаршрутыАгентов";   
   
   
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.выбрать();   
    пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
        возврат  ВыборкаДетальныеЗаписи
 
    КонецЦикла;

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


&НаКлиенте
Процедура МаршрутыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
     
    ДанныеСтроки = элементы.Маршруты.ТекущиеДанные;
    строковоеполе = "";
    дЛЯ КАЖДОГО Элемент из ДанныеСтроки Цикл
        Если ТипЗнч(Элемент) = Тип("Булево") Тогда
            ЗнчДня = ПолучитьДниРасписанияТекущейСтроки(Элемент);
            строковоеполе = строковоеполе + ЗнчДня;
        КонецЕсли;
        элемент.ДниПрохода = стрразделить(строковоеполе, ";", ложь);
    КонецЦикла;
           

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

antoneus

Эх, молодежь...

Дни = СтрРазделить("Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье", ",");
Номер = 1;
Номера = Новый Массив;
Для каждого День из Дни Цикл
    Если ДанныеСтроки[День] Тогда
        Номера.Добавить(Номер)
    КонецЕсли;
    Номер = Номер + 1
КонецЦикла;
ДанныеСтроки.ДниПрохода = СтрСоединить(Номера, ";")

antoneus

И вкрячивать это надо не в МаршрутыПриОкончанииРедактирования, а повесить одну и ту же процедуру на событие ПриИзменении каждой колонки дней.

Теги:

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

Рейтинг@Mail.ru

Поиск