что предупреждение будет выводиться перед открытием формы
Не будет, если вывести факт того, что форма только открывается в глобальную переменную. Например так:
Перем ФормаОткрылась
Процедура ПриВыбореЗакладки(Номер,Закладка) Если ФормаОткрылась = 1 Тогда //Вот здесь понимаем что это ПриОткрытии() и сразу ж показываем, что далее она уже открыта ФормаОткрылась = 0; Иначе //Тут, я так понимаю, должно сидеть Ваше Предупреждение КонецЕсли; КонецПроцедуры
andrew76 @ Сегодня, 18:51
, Тогда так: Условие(((ДатаЧисло(Увол_д)=0) или (Увол_д>=НачДата)) или (Перев_ф>=КонДата)); Должны попадать уволенные и не уволенные, а также те кого перевели.
Dentist @ 29.07.21, 22:49
, Створіть новий "транзитний" склад для переміщень та списання залишків. Зробіть зовнішню обробку за допомогою якої реалізуєте підбір з різних складів (Візуально користувачеві має здаватися що він працює з накладною). Форму списку для підбору можете взагалі не чіпати, заберіть з відбору лише склад (під час підбору Вам не важливо на якому складі товар зберігається) По закінченню підбору обробка хай автоматично формує спочатку переміщення на "транзитний" склад, а потім видаткову накладну. В переміщеннях в поле "Документ основание" запишіть видаткову накладну (буде зрозуміло кому виписувався товар). Забороніть розпроведення переміщень при проведенній видатковій накладній. Контролюйте наявність залишку на транзитному складі (там його бути не повинно).
ZUBR @ Вчера, 17:12
, Намагання в циклах знаходити потрібне значення - несінитниця. Ваш код:
А=ТЗ.ТекущаяСтрока();// ЗАПОМИНАЕМ СТРОКУ И ПРИСВАИВАЕМ ЕЕ ПЕРЕМЕННОЙ А ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа) Тогда ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС"); КонецЕсли; КонецЦикла;
Можете замінити на:
лпНомерЗаказа = Расх.НомерЗаказа; лпНомерИскомойСтроки = ""; Если ТЗ.НайтиЗначение(лпНомерЗаказа,лпНомерИскомойСтроки,"ЗАКАЗ") = 1 Тогда //Якщо потрібно вставити в поточну (нову) строку, використовуєте: ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС"); //Але якщо потрібно вставити в лпНомерИскомойСтроки, потрібно: ТЗ.УстановитьЗначение(лпНомерИскомойСтроки,"СуммаАкс",Расх.Итог("СуммаСНДС")); КонецЕсли;
При використанні метода НоваяСтрока(), ТекущаяСтрока() = "" і визначати її потрібно за допомогою ТЗ.НомерСтроки або ТЗ.КоличествоСтрок(). Позиціонування через ПолучитьСтрокуПоНомеру() може спрацьовувати не вірно, оскільки в процесі обробки даних може відбуватися "зміщення" (як приклад, видалення стрічок) і ТекущаяСтрока() вже <> КоличествоСтрок(). Користуйтеся методами НайтиЗначение(), ПолучитьЗначение() та УстановитьЗначение(). Уявляйте собі що у Вас не 200 стрічок та 200 документів, а по 200 000 тих і тих, тоді модель ВыбратьСтроки() и Пока ПолучитьСтроку() = 1 Цикл використовуватимете лише тільки один раз.
denis84 @ Сегодня, 14:18
, Результат той самий. Добавити лише Прервать. Сам так роблю іноді.
ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл МинДата = ТЗ.ПолучитьЗначение(номерСтроки,номер или идентификатор колонки); Сообщить(МинДата); Прервать; КонецЦикла;
На ДБФ відпрацює однаково. Мала затримка на виборці. Можна ще так:
ТЗ.ВыбратьСтроки(); Если ТЗ.ПолучитьСтроку() = 1 Тогда МинДата = ТЗ.ПолучитьЗначение(номерСтроки,номер или идентификатор колонки); Сообщить(МинДата); КонецЕсли;
ZUBR @ Вчера, 21:52
, Якщо розмова про Загальний журнал документів: ЗакладкиОтбора(<ИмяОтбора>,<ФлагОтбораЗначенийВИнтервалеЖурнала>,<ФлагУстановкиЗначенияОтбора>,<ЗначениеОтбора>) Назначение: Установить в форме журнала закладки для интерактивного осуществления отбора. Параметры: <ИмяОтбора - строка с именем отбора; <ФлагОтбораЗначенийВИнтервалеЖурнала> -: 1 - значения отбора выбираются по документам в установленном интервале журнала, 0 - значения отбора выбираются по всем документам журнала; <ФлагУстановкиЗначенияОтбора> -: 1 - сразу выбирается отбор по параметру <ЗначениеОтбора>, 0 - отбор устанавливается на первое существующее значение; <ЗначениеОтбора> - значение отбора. Замечание: Метод доступен только в контексте Модуля формы журнала.
Якщо вести мову про SQL, то Вам спочатку сюди: Мова SQL Описати "по швидкому" не зможу. Маэ бути розуміння.
лпТаблЧасть = СоздатьОбъект("ТаблицаЗначений");//Копія табличної частини для отримання номерів строк лпТаблЗнач = СоздатьОбъект("ТаблицаЗначений");//Місце пошуку дублів
лпТаблЗнач.НоваяКолонка("Количество");//Для підрахунку кількості дублів лпТаблЗнач.Заполнить(1,,,"Количество"); лпТаблЗнач.Свернуть("Контрагент","Количество"); лпТаблЗнач.Сортировать("Количество");//Сортуємо
лпКвоСтрок = лпТаблЗнач.КоличествоСтрок(); Для лпСчетчик = 1 По лпКвоСтрок Цикл лпНомСтроки = (лпКвоСтрок+1)-лпСчетчик;//Йдемо знизу вверх лпКвоПовтор = лпТаблЗнач.ПолучитьЗначение(лпНомСтроки,"Количество"); Если лпКвоПовтор = 1 Тогда// Продовжувати пошук не потрібно, вище дублів немає Прервать; КонецЕсли; лпКонтрагент = лпТаблЗнач.ПолучитьЗначение(лпНомСтроки,"Контрагент"); Если ПустоеЗначение(лпКонтрагент) = 1 Тогда//Може бути і таке, це не основне завдання. Продолжить; КонецЕсли; лпИскомаяСтрока = ""; лпТекст = ""; Пока лпТаблЧасть.НайтиЗначение(лпКонтрагент,лпИскомаяСтрока,"Контрагент") = 1 Цикл Если ПустаяСтрока(лпТекст) = 1 Тогда лпТекст = " разів в стрічках № "+лпИскомаяСтрока; Иначе лпТекст = лпТекст+", "+лпИскомаяСтрока; КонецЕсли; лпТаблЧасть.УстановитьЗначение(лпИскомаяСтрока,"Контрагент",лпПустоеЗначение);//Затираємо знайденого лпИскомаяСтрока = ""; КонецЦикла; Сообщить("Дублюється контрагент "+СокрЛП(Строка(лпКонтрагент))+" "+лпКвоПовтор+лпТекст,"!"); КонецЦикла;
Функция ВернутьЗначенияДляСравнения() лпЧетные = 2; лпНечетные = 3; лпСписЗнач = СоздатьОбъект("СписокЗначений"); Для лпНомСписка = 1 По 20 Цикл Если лпНомСписка % 2 = 0 Тогда лпСписЗнач.ДобавитьЗначение(лпЧетные); Иначе лпСписЗнач.ДобавитьЗначение(лпНечетные); КонецЕсли; КонецЦикла; Возврат лпСписЗнач; КонецФункции
//====================================================================== Процедура СравнитьЗначения(прСписЗнач,прНомер) лпЗначениеКотороеНужноСравнить = прСписЗнач.ПолучитьЗначение(прНомер); лпРазмерСписка = прСписЗнач.РазмерСписка(); Для лпНомСписка = 1 По лпРазмерСписка Цикл Если лпНомСписка = прНомер Тогда Продолжить; КонецЕсли; лпЗначение = прСписЗнач.ПолучитьЗначение(лпНомСписка); Если лпЗначениеКотороеНужноСравнить = лпЗначение Тогда Сообщить("Значение в списке № "+лпНомСписка+" = искомому значению № "+прНомер+" т.е. = "+лпЗначение); КонецЕсли; КонецЦикла; КонецПроцедуры // СравнитьЗначения
//====================================================================== Процедура Сформировать() лпСписЗнач = ВернутьЗначенияДляСравнения(); лпРазмерСписка = лпСписЗнач.РазмерСписка(); Для лпНомСписка = 1 По лпРазмерСписка Цикл СравнитьЗначения(лпСписЗнач,лпНомСписка); КонецЦикла; КонецПроцедуры // Сформировать
Погоджуюся з volodya1122. Мається на увазі додаткова перевірка:
Если Значение = "ДругаЗакладка" Тогда Если (НазваниеНабораПрав() <> "Администратор") Тогда // КОРИСТУВАЧІ НЕ БАЧАТЬ Форма.Спл.Видимость(0); Иначе Форма.Спл.Видимость(1); КонецЕсли; Если Значение = "ТретяЗакладка" Тогда // НЕ БАЧИТЬ НІХТО Форма.Спл.Видимость(0); ИначеЕсли Значение = "ПершаЗакладка" Тогда // БАЧАТЬ УСІ Форма.Спл.Видимость(1); КонецЕсли;
Це збочення звичайно, але як варіант може бути, оскільки йде управління кожною закладкою окремо...
Я б рекомендував приводити усе до єдиного, так як радить denis84. Оскільки сидіти з часом і довбатися в цьому "гімнокоді" прийдеться таки в першу чергу Вам. Тому, якщо будете використовувати варіант запропонований volodya1122, візьміть усе це й винесіть в окрему процедуру УстВидимостьРеквизитов(Значение). Наприклад:
Процедура ПриВыбореЗакладки(Номер,Значение) Форма.ИспользоватьСлой(" Совместный,"+Значение,2); УстДоступность(); УстДоступностьКнопок(); глУстановкаРеквизитаТип(Контекст); УстВидимостьРеквизитов(Значение);//Окрема процедура для збочення з реквізитами КонецПроцедуры;
Prospero @ Вчера, 22:30
, Ні, не вірно. В Вашому прикладі будуть створюватися пусті документи які будуть нікому не потрібні. По перше, в документі в процедурі ПриОткрытии() необхідно:
Процедура ПриОткрытии() Если ПустоеЗначение(Форма.Параметр) = 0 Тогда Если ТипЗначения(Форма.Параметр) = 11 Тогда Контрагент = Форма.Параметр; КонецЕсли; КонецЕсли; КонецПроцедуры
По друге, визивати з модуля довідника потрібно наступним чином:
Если ТекущийЭлемент().ЭтоГруппа() = 0 Тогда ОткрытьФорму("Документ.Ваш_документ",ТекущийЭлемент()); КонецЕсли;
При такому розвитку, введення Нового документу можливо припинити, оскільки відсутній метод Документ.Записать().
Процедура ПриВыбореЗакладки виконується пільки при відкритті форми справочника (в даному випадку) і при виборі закладки.
Цитата(volodya1122 @ 24.10.19, 10:14)
4. При відкритті форми флажок "Спл" мав би дорівнювати нулю (якшо інше не задано прорамою. Або це не реквізик справочника.
Цитата(volodya1122 @ 24.10.19, 10:14)
5. Коли на формі ви міняєте значення флажка тоді потрібно на флажок повісити виклик процедури ПриВыбореЗакладки(1,"Основной") або іншої, яка б міняда видимість/доступність іншого реквізиту.
Еххх, Вова, Вова... Нагородив городу... Це Вам не найвища математика. Тут людині потрібно при відкритті викликати ПриВыбореЗакладки() та при виборі закладки викликати Сплачено()... А Ви стільки всього нагородили.....
ZUBR @ Вчера, 19:29
, Можна виконувати постійне оновлення звіту через певний проміжок часу... Постійно потрібно опитувати відкриті в даний час вікна і при активації форми сформованого звіту оновити його якщо сплив потрібний час. Без компоненти Formex та його об'єктів "РасширениеФормы" та "Окна" не обійтися. Це буде таке собі збочення. Простіше натискати кнопочку.
Там немає нічого особливого. Відбулося зміщення полів. Їх потрібно "вирівняти" на своє місце. В описі все є. Як не справитесь - гукніть, накинемо двійку стрічок для виправлення.
ZUBR @ 03.08.19, 17:28
, Уххх, 1. ТЗ має бути розташована на формі звіту (обробки). 2. Обов'язково в ТЗ має бути така колонка як FormEx_ПланРаскраски. Від автора:
Цитата
Для ускорения и упрощения работы раскраски таблиц в компоненту с версии 2.0.5.85 введен функционал плана раскраски таблицы. Для его активизации необходимо вызвать метод ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0). По умолчанию функционал плана раскраски отключен и работает старая методика раскраски. Для реализации раскраски по новому функционалу плана раскраски, необходимо добавить в раскрашиваемую таблицу колонку с заголовком ''FormEx_ПланРаскраски'' (без кавычек, регистронезависимо). Колонка может располагаться в любом месте таблицы. Содержимое этой колонки задает план раскраски таблицы, основанный на тех же макросах, которые описаны в части ''Раскраска таблиц''. При этом макросы COUNT и INDENT не обрабатываются. В плане раскраски каждая ячейка текущей строки определяется круглыми скобками. В плане учитываются как видимые, так и невидимые колонки. Макросы раскраски надо помещать в места, соответсвующие смене раскраски. Несколько примеров помогу лучше понять этот принцип.
3. Як приклад можете подивитися тут: Тиць 4. Речі висвітлені Вами:
Ай-яй-яй: Идем в скуль, разворачиваем "базы данных" - "системные базы данных" - "master", тыкаем на "представления"(на ангельском языке - views), выбираем "создать представление". Если выскочило "добавление таблицы", жмакаем закрыть, в поле кода (там по дефолту стоят select и from) копируем следующий текст: select * from sysprocesses where cmd <> 'checkpoint' и нажимаем кнопку "выполнить код sql" (находится выше слева, красный восклицательный знак), если код поменялся и не выскочило ошибок - это хорошо, жмем сверху кнопку "сохранить" и называем это представление вот так: sksprocesses
Может не одобрить Администрация...
Че Вам мешает поднять SQL до 2008 ? Проще обслуживать.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!