Лучше избавиться от пробелов до начала работы цикла и выполнения условия. А то получится выражение каждый раз при прогоне цикла будет вычисляться снова- если в базе 1000 контрагентов,то 1000 раз будут убираться пробелы из переменной Телефон.
Попробуйте использовать функцию удаления лишних пробелов СокрЛП(). Только если в базе много контрагентов, обрабатывать будет не очень быстро.
Телефон=СокрЛП(Телефон); //убирает лишние пробелы справа и слева Расх.ВыбратьДокументы(НачДата,КонДата); Пока Расх.ПолучитьДокумент()=1 Цикл Если (Найти(Расх.Телефон,Телефон)=1)и(Расх.СтатусЗаказа <> Перечисление.Статусы.Акс) Тогда ТЗ.НоваяСтрока(); ТЗ.Модель = Расх.Модель;
Вообще-то этот код лучше записать в процедуру ПриОткрытии() формы, где расположена табличная часть справочника. Реквизит ИНН какого типа ? Числовой или строковый ? Количество элементов в списке проверяли? Может список значений пуст ? Сколько уровней в справочнике ?
Пока Контрагенты.ПолучитьЭлемент()=1 Цикл Если Контрагенты.ИНН=0 Тогда СписокЭлементов.ДобавитьЗначение(Контрагенты.ТекущийЭлемент()); КонецЕсли; КонецЦикла;
ИспользоватьСписокЭлементов(<СписокЗначений>) Назначение: Реализует фильтрацию элементов справочника, используя нединамический фильтр. Параметры: <СписокЗначений> - необязательный параметр. Значение типа - ''СписокЗначений'' - должен представлять собой список элементов справочника, выбранных для просмотра. Если это значение пустое, то фильтр отключается. Замечание: Метод доступен только в контексте Модуля формы списка справочника и относится ко всему текущему справочнику.
Мистер = СоздатьОбъект("Справочник.Контрагенты"); Мистер.НайтиПоНаименованию("Покупатели"); //ищем группу справочника "Покупатели" Род=Мистер.ТекущийЭлемент(); // в переменную Род записываем ссылку на запись группы "Покупатели"
Мистер.Новый(); Мистер.Родитель=Род; //при записи в справочник нового контрагента указываем ссылку на Группу "Покупатели" //Свойство элемента справочника Родитель это и есть Группа - в нашем случае "Покупатели"
Мистер = СоздатьОбъект("Справочник.Контрагенты"); Мистер.НайтиПоНаименованию("Покупатели"); Род=Мистер.ТекущийЭлемент(); //получаем ссылку на запись Группы
Мистер.Новый(); Мистер.Родитель=Род; //при записи в справочник сопоставляем со ссылкой на Группу
Не понял , что за условие выполняется для переменной Кл ?
В принципе сделать 2 запроса отдельно.Выгружать результаты из запросов в 1 ТЗ.ТЗ отсортировать по дате- по убыванию.Прочитать из ТЗ первую запись и все.
Доброе утро ! Попробуйте метод СдвинутьСтроку.Если не получится,что-то надо выдумывать с эмуляцией нажатия клавиш прокрутки.
СдвинутьСтроку(<?>,); Синтаксис: СдвинутьСтроку(<КоличСтрок>,<НомерСтроки>) Назначение: Переместить строку таблицы значений на новую позицию. Параметры: <КоличСтрок> - число строк, на которое надо переместить строку. Если число положительное, то строка сдвигается вниз, если отрицательное, то вверх. <НомерСтроки> - необязательный параметр. Номер строки, которую надо переместить. Если не задан, то текущая.
Доброе утро ! Посмотрите в конфигураторе,какия процедуры-обраблотчики висят на кнопках.В нужной копке допишите вызов-обрабочик нужной Вам второй процедуры. Не видя конфигурации я могу писать только такие советы.
НайтиПоРеквизиту(<?>,,); Синтаксис: НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>) Назначение: Найти элемент справочника по значению реквизита. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден). Параметры: <ИмяРеквизита> - строка с наименованием реквизита; <Значение> - значение реквизита для поиска; <ФлагГлобальногоПоиска> - флаг поиска: 0 - поиск выполняется в пределах подчинения справочника, 1 - поиск выполняется по всему справочнику. Замечание: Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''. Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
Если Поиск=0 Тогда //Добавляется запись в справочник Контрагенты КонецЕсли;
Цитата(ZUBR @ 03.11.19, 15:52)
Попутный вопрос - а можно ли сделать так, чтобы по окончании ввода, скажем, телефона, автоматически включался поиск и при нахождении клиента в справочнике автоматически подставлял в поля документа его данные, а при ненахождении создавалась бы новая запись в справочнике?
Можно.На свойствах поля ввода номера телефона (на форме) найдите вкладку Дополнительно.В поле "Формула" пропишите имя процедуры (имя придумайте сами).и в модуле пропишите заготовку процедуры с таким же именем.Подставте в текст процедуры вышеуказанные примеры поиска.
а при проведении документа автоматически создать новый элемент справочника Контрагенты
Доброе утро ! Можно.Код такой примерно :
Клиент=СоздатьОбъект("Спрвочник.Контрагенты"); Клиент.Новый(); //создается новая запись в справочнике контрагентов Клиент.Наименование=Наименование //ф.и.о из документа накладная Клиент.Телефон=Телефон //№ телефона из документа накладная Клиент.Записать(); //записываем новую запись в справочник Контрагенты.
Можно еще продумать проверку на поиск уже существующего клиента в справочнике Контрагентов. Т.е. новую запись добавлять , только если такого клиента нет в справочнике.
Клиент=СоздатьОбъект("Спрвочник.Контрагенты"); Поиск=Клиент.НайтиПоНаименованию(НовыйКлиент,,1); //поиск на точное соответствие Если Поиск=0 тогда Клиент.Новый(); //создается новая запись в справочнике контрагентов Клиент.Наименование=Наименование //ф.и.о из документа накладная Клиент.Телефон=Телефон //№ телефона из документа накладная Клиент.Записать(); //записываем новую запись в справочник Контрагенты. КонецЕсли;
Доброе утро ! Есть файлы , должны быть по крайней мере,расширение вроде ".SPL".Файлы должны быть в каталоге ,где установлена 1с или в каталоге , где записана конфигурация БД.Вот этот файл (spl) отредактируйте ,замените значения на русском языке на украинский язык.
Добрый вечер.У этого документа нет подчиненных документов ? Лучше перед этим скопируйте всю базу в архив,чтобы была копия на всякий случай. Сначала сделайте документ не проведённым. Для этого, щелкните на нем правой кнопкой мыши и выберите соответствующую команду : "Cделать не проведённым" . Значок документа изменится - он будет без пиктограммы "птичка-галочка" слева. Теперь открывайте документ, меняйте дату на нужную и проводите.
Подсчет делается внутри перебора элементов справочника, нет смысла писать сотрудника в таблицу и потом сравнивать с таблицей. Нужно сделать выборку накладных по текущему элементу справочника, потом добавить все в строку таблицы.
Этт точно !.Я с Вами совершенно согласен !
ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка ("Инженер"); ТЗ.НоваяКолонка ("КолСис"); // количество систем
Расх.ВыбратьДокументы(НачДата,КонДата);
Пока Расх.ПолучитьДокумент()=1 Цикл ТЗ.НоваяСтрока(); ТЗ.Инженер=Расх.Инженер; ТЗ.КолСис=1; КонецЦикла;
ТЗ.Свернуть("Инженер","КолСис"); //Подсчет итогов по каждому из инженеров
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!