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