ПолныйПутьКОбработке = "С:/мояобработка.epf"; Расширение=Прав(ПолныйПутьКОбработке ,4); Если Расширение=".erf" тогда Форма = ВнешниеОтчеты.ПолучитьФорму(ПолныйПутьКОбработке); ИначеЕсли Расширение=".epf" тогда Форма = ВнешниеОбработки.ПолучитьФорму(ПолныйПутьКОбработке); Иначе Форма=""; КонецЕсли;
Если Не Форма = "" Тогда Форма.Открыть(); КонецЕсли;
Якось так. Хоча яка ціль воших маніпуляцій? Можливо вашу задумку можна реалізувати іншим способом.
Ось мій варіант вибора принтера. в довіднику "Користувачів" в мене прописані назви принтерів які потрібно використовувати для різних варіантів друку (назву принтера необовязково вказувати повністю - головне щоб всі назви принтерів в компютері були різні)
Функция ПолучитьИмяПринтераДляПечати(Вид) ИмяПринтера=""; принтеры = Новый COMОбъект ("WScript.Network"); prn = принтеры.EnumPrinterConnections(); i = 0; Если Вид="Чек" тогда ПроверочнПринтер=ПараметрыСеанса.Користувач.ПринтерЧеков; Иначе ПроверочнПринтер=ПараметрыСеанса.Користувач.ПринтерОсновной; КонецЕсли;
Пока i < prn.Count()-1 Цикл // НовыйПринтер=ТЗПринтеры.Добавить(); ВремИмяПринтера=prn.Item(i+1); i = i + 2; Если Найти(ВремИмяПринтера,ПроверочнПринтер)>0 тогда ИмяПринтера=ВремИмяПринтера; Прервать; КонецЕсли; КонецЦикла; Возврат ИмяПринтера;
на формі елемента є реквізит Группа. Користувач буде його заповняти "руками". Як зробити щоб єлемент записався в вибрану групу?
Перевірив. Ніяк не получиться. Змінити групу таким чином неможливо. Так як при створенні єлемента він автоматично прописується в поточній групі яка зараз відкрита. І перезаписати в іншу групу таким чином неможливо (Помилка Объект заблокирован для редагування програмно - так як редагується інтерактивно).
Хоча якщо хочете заморочитись це можна зробити обманним шляхом: при створенні відкривати не форму справочника, а звіт який імітує вігляд цього справочника і так заповнювати. І при натисненні кнопки "Записати" на формі звіту записати всі дані в справочник. Але це дуже багато потрібно переписувати
kostya77 @ Сегодня, 10:03
, Ось код, яким я переношу записаний елелемент справочника в конкретну групу (непотрібні єлементи переношу в групу "мусор")
клиент= ТекущийЭлемент(); груп=СоздатьОбъект("Справочник.Контрагенти"); ТекСпр=СоздатьОбъект("Справочник.Контрагенти"); Если груп.найтипоКоду("__",0) =1 тогда Група=Груп.ТекущийЭлемент(); ТекСпр.найтиЭлемент(клиент); ТекСпр.Родитель=Група; ТекСпр.Записать(); КонецЕсли;
Цитата(kostya77 @ 29.04.24, 10:34)
а как при создании? Элемент создается из формы списка справочника
При створенні їз форми елемент справочника і так по замовчуванню створюєтьсь в тій групі яка зараз відкрита. Звісно можна прописати щоб сворюванся в конкретній групі, незалежно від того яка зараз відкрита група. Але думаю що це неправильний підхід, так як є декілька нюансів: 1. Елемент завжди буде створюватись тільки в одній конкретній групі. А Вам думаю потрібно створювати єлементи кожен в своїй групі. 2. Після створення цей елемент, як правило потрібно зразу використати в якомусь документі. Незручно буде коли ви створили єлемент в одній групі, а знаходитесь в іншій, і небачите для вибору в документ нового створеного елемента.
Якщо всеж таки жочете реалізувати це при своренні, то це можна прописати в процедурі
1. САМЕ ГОЛОВНЕ !!! Надіюсь це все ви робите на копії ???????
Даний збій малоймовірно може виникати тільки від того що на компютері була неправильна дата. Скоріш за все або сипеться вінчестер на компютері, або під час роботи 1С компютер вимикався (пропадало світло) Не знаю чи ві вірно все виконували в базі. Пораджу що можна зробити. 1. Операции. Проведение документов. На закладці "Последовательности" . Відмітити всі і "Виконати" 2. В конфігураторі. Тестирование и исправление. Вибрати всі (крім "Упаковки таблиць") А нижче "Тестирование и исправление". І ще по кнопці "Настройки" Спочатку пробувати з настройками "Создавать Обекти". А яко не поможе, то з настройками "Очищать ссилки" і Удалать Данние" . Тоді ці проблемні документи або створяться або почиститься мусор від них.
Якщо це не допоможе тоді прийдеться застосовувати тяжку алтилерію для перегляду і редагування DBF файлів. DBF_1сViewer_2_0.ert - тільки перегляд файлів. redaktor_dbf.rar - для редагування файлів (це ті якими я користуюсь. Звичайно є і інші. в своїй конфігурації шукаєте ці проблемні файли. DH931.dbf DT931.dbf і відкриваєте цими програмами. Запись 610 - це номер рядка в вашому файлі (перша колонка Номер Записи). По ній знайдете проблемний документ дату, суму.... А далі вже вирушуйте що з цим робити.
Ще можна попробувати через конфігуратор Администрирование Вігрузить данніе. Загрузить данніе
P.S. У вас всого два проблемних документи. Просто в 1С так реалізовано що сам документ і його таблична частина зберінаються в різних файлах
// ЭлСправ- ссилка на конкректний елемент справочника Если Метаданные.Справочники.МойСправочник.ОграничиватьКоличествоУровней тогда МаксимумУровней=Метаданные.Справочники.МойСправочник.КоличествоУровней; иначе МаксимумУровней=100; // хватає з великим запасорв в реальних базах КонецЕсли; Сообщить(ЭлСправ.ПолныйКод()); Ел1=ЭлСправ; Для к=1 по МаксимумУровней цикл Ел1=Ел1.Родитель; // по ссилці Если Ел1=Справочники.МойСправочник.ПустаяСсылка() тогда Прервать; КонецЕсли; Сообщить("-"+к+"-"+Ел1.Наименование); КонецЦикла;
kostya77 @ Сегодня, 11:04
, Не нужно в разные таблицы выгружать. Достаточно в одну ТЗ выгрузить. Отсортировать ТЗ по контрагенту. Потом обходить и когда контагент изменился выводить подвал по первой печатной форме и создавать новую печатную форму (или новую страницу в той же печатной форме). После цикла по таблице значений не забыть вывести последний подвал. Нужные итоги для подвала также сумировать до момента измененения контрагента. И потом обнулять. Или есть хороший метод "Свернуть" для таблицы значений. Но тогда небудет детализации по строкам табличной части.
Если Условие1 тогда Форма.Дата1.видимость(0); Форма.ТекстНаФорме.видимость(0); Форма.ТекстНаФорме1.видимость(1); ИначеЕсли Условие2 тогда Форма.Дата1.видимость(1); Форма.ТекстНаФорме.видимость(0); Форма.ТекстНаФорме1.видимость(1); ИначеЕсли Условие3 тогда Форма.Дата1.видимость(1); Форма.ТекстНаФорме.видимость(1); Форма.ТекстНаФорме1.видимость(0); Иначе Форма.Дата1.видимость(0); Форма.ТекстНаФорме.видимость(1); Форма.ТекстНаФорме1.видимость(0); КонецЕсли
4andriy @ Вчера, 14:56
, Можно раскрасить табличную часть журнала документов. Например так. Формексом
Функция КолонкаТекстВТабличнойЧастиЖурнала() ЦветПроба=Число(НомерДок); Возврат "BRUSH["+(ЦветПроба*1450)+"] "+"COUNT["+2+"]";;
// FONT[<Цвет>] - задает цвет шрифта строки; // BRUSH[<Цвет>] - задает цвет фона строки; // FONT_S[<Цвет>] - задает цвет шрифта строки, если она является текущей (не влияет на текущую ячейку); // BRUSH_S[<Цвет>] - задает цвет фона строки, если она является текущей (не влияет на текущую ячейку); // COUNT[<КоличествоКолонок>] - задает количество колонок, на которые распространяется раскраска; // INDENT[<Отступ>] - задает количество колонок, которое необходимо пропустить перед началом раскраски; // FONTSET[<КодШрифта>] - задает шрифт строки; // FONTSET_S[<КодШрифта>] - задает шрифт строки, если она является текущей;
1. Поясните что имеется в виду. Форма документа в 1С, где заполняются данные. Или печатная форма - которая выводится на печать? 2. И каков сакральный смысл в этом?
Малий та середній бізнес, вже не на 1C.. я помиляюсь?
Помиляєтесь. Якраз малий і середній бізнес на 1С (або ведуть облік в Екселі- Особисто знаю одного такого підприємця). Хто на типових, хто на самописках, так як привикли до цього і це просто і зручно, і легко підналаштовувати під свої забаганки і забаганки законодавства
Взагалі то не повинно бути такого. Тільки що перевірив- форми відкриваються в тому порядку як завів в процедурі ПриНачалеРаботыСистемы
Що можна ще перевірити: 1. Чи дійсно в конфігураторі вказана правильна послідовність виклику форм. Можливо нижче по коду ще раз викликається форма 2. Можливо одна форма відкривається довше іншої, і тому активно. стає не та що потрібно. Попробувати після виклику відкриття першої форми поставити невеличку паузу - для перевірки цієї версії.
в базі "ПАПЄРЄДНІКІ" писали іАвтор, і Ответственный два варіанта(в різних документах по різному)
Тоді виправити так частину коду
Для Каждого Документ Из Метаданные.Документы Цикл Если Не Документ.Реквизиты.Найти("Автор") = Неопределено Тогда СтрокаАвтор=" Ссылка.Автор Как Автор "; ИначеЕсли Не Документ.Реквизиты.Найти("Створив") = Неопределено Тогда СтрокаАвтор=" Ссылка.Створив Как Автор "; ИначеЕсли Не Документ.Реквизиты.Найти("Ответственный") = Неопределено Тогда СтрокаАвтор=" Ссылка.Ответственный Как Автор "; Иначе СтрокаАвтор=Кав+" Відсутный автор"+Кав+" Как Автор "; КонецЕсли; // цей пораддок можна пробувати міняти. Так як "Папереднікі" могли до одного і того самого документа прописати і Автор і Ответственного. //А реально самого автора писати в один із реквізитів
Текст = Текст + "ВЫБРАТЬ Ссылка.Дата Как Дата, "+ Кав+ Документ.Имя+Кав+" Как Имя, "+ СтрокаАвтор+ // " Ссылка.Створив Как Автор "+ " ИЗ Документ." + Документ.Имя; Текст = Текст + " ГДЕ Ссылка.Дата МЕЖДУ &д1 И &д2 ОБЪЕДИНИТЬ "; КонецЦикла;
volodya1122 @ 27.05.22, 10:48 * ,Перемпрошую, а можливо щоб не сумувало кількість, а видало окремо дату та час і користувача. тобто: Документ, дата і час, користувач. Я розумію що це буде величезне полотно данних, але якщо можна в цьому коді поправити то буду дуже вдячна )
" Ссылка.Створив Как Автор "+ спрацює в тому виадку, якщо в кожного із документів є реквізит "Створив". Якщо у вас по інщому називається то виправити Ссылка.Створив= на Ссылка.Автор (ябо як там називається у вас в кожнім документі)
ДатаНач=НачалоГода(ДобавитьМесяц(ТекущаяДата(),-30)); // за 2 роки ДатаКонечн=ТекущаяДата(); Кав=""""; Запрос = Новый Запрос; Текст = " "; Для Каждого Документ Из Метаданные.Документы Цикл Текст = Текст + "ВЫБРАТЬ Ссылка.Дата Как Дата, "+ Кав+ Документ.Имя+Кав+" Как Имя, "+ " Ссылка.Створив Как Автор "+ // ось тут поправити " ИЗ Документ." + Документ.Имя; Текст = Текст + " ГДЕ Ссылка.Дата МЕЖДУ &д1 И &д2 ОБЪЕДИНИТЬ "; КонецЦикла;
vbi @ Сегодня, 15:44
, Далеко не всі події записуються в журнал реєстрації (наприклад "Справочники" - якщо не створювати нові елементи/редагувати існуючі, - а тільки використовувати їх в документах, то в в журналі реєстрації небуде згадки про те, що цей довідник використовували. Інший приклад. Документи рухають регістри. Але по них також немає запису в журналі реєстрації)
Diana1c @ Сегодня, 11:40
, Які параметри? Звичайний звіт (на формі звіту кнопка Сформировать. В обработчику кнопки Процедура: Процедура Сформировать()...... КонецПроцедури Ось туди вставити код
Ось нашвидкоруч накинув код, щоб визначити які документи які зараз використовуються. Але повторюю, потрібно добре подумати чи видалення документів, які не використовуються не вплинуть на правильність обліку по інших документах
ДатаНач=НачалоГода(ДобавитьМесяц(ТекущаяДата(),-30)); // за 2 роки ДатаКонечн=ТекущаяДата(); Кав=""""; Запрос = Новый Запрос; Текст = " "; Для Каждого Документ Из Метаданные.Документы Цикл Текст = Текст + "ВЫБРАТЬ Ссылка.Дата Как Дата, "+ Кав+ Документ.Имя+Кав+" Как Имя, "+ " 1 Как Повторов"+ " ИЗ Документ." + Документ.Имя; Текст = Текст + " ГДЕ Ссылка.Дата МЕЖДУ &д1 И &д2 ОБЪЕДИНИТЬ "; КонецЦикла;
// Пока Выборка.Следующий() Цикл // Сообщить(""+Выборка.Дата+" "+Выборка.Имя+" "+Выборка.Повторов ); // КонецЦикла;
Сообщить("Кількість документів за період з "+ДатаНач+" по "+ДатаКонечн); Для Каждого Стр Из КопияТЗ Цикл Сообщить(Стр.Имя + " " + Стр.Повторов); КонецЦикла; Для Каждого Документ Из Метаданные.Документы Цикл СтрокаПоиска = КопияТЗ.Найти(Документ.Имя, "Имя"); Если СтрокаПоиска = Неопределено Тогда Сообщить(Документ.Имя + " пусто"); КонецЕсли; КонецЦикла;
Diana1c @ Сегодня, 12:55
, 1. Енна кілкість співробітників. Думаю мається на увазі користувачів в 1С? На роздутість бази взагалі не впливає. (це 0,0000001% від обєму бази). А щоб непотрібних не показувати при вході в програму -то їх показ можна відключити в конфігураторі (Меню- Адміністрування-Користувачі. Випрати непотрібного користувача. в Зняти помітку "Показувати в списку вибору") 2. Багато обєктів в базі. Що тут мається на увазі? Багато різних видів документів, довідників, Регістрів.......? Чи багато в базі створено докумнентів, довідників.... (мається на увазі документи , які створюють користувачі в процесі роботи з програмою)? 2.1 Якщо перше, то тут практично неможливо щось викинути, так як одні обєкти зазвичай задіяні в різних місцях програми. І просто так їх не позбутись, не переписавши половину конфігурації. 2.2 Якщо друге, то тут також не все однозначно. Наприклад документ введення залишків. Його один раз використали на початку користування програмою -ввели залишки. Більше ним не користуються. Його можна видалити? Звичайно ні. Тут тільки аналізувати очима, розмовляти з працівниками., Якщо в програмі є різні підсистеми, які ніяк не повязані між собою.Тоді документи однієї підсистеми можно видалити. 3. База дуже роздулась? В цифрах це скільки (в Мегабайтах/ Гігабайтах) База файлова чи SQL? (Зменшення обєму допомагає в Конфігураторі "Тестування і виправлення інформаційної базі" - АЛЕ ОБОВЯЗКОВО ПОТРІБНО ТАКІ РЕЧІ РОБИТИ НА КОПІЇ І НЕ ЗАБУВАТИ ПЕРЕД ТИМ РОБИКИ АРХІВНУ КОПІЮ БАЗА!!!!ЦЕ ДУЖЕ ВАЖЛИВО)
В 1с8 я б зробив так: Текст умови програмно сформував. В циклі 1. Перевів введені дати на початок і кінець місяця. На кожній ітерації циклу добавляти рік до кожної з дат (в обидві сторони) 2. умови обєднати приблизно так: ГДЕ (Отпуск>Д1 и Отпуск<Д2) Или (Отпуск>Д1 и Отпуск<Д2) Или (Отпуск>Д1 и Отпуск<Д2) - цей текст звичайно формується програмно в циклі . Де Д1 і Д2 на кожній ітерації вже конкретні визначені в циклі значення
3. В 1с7 незнаю чи подібним методом можна сформувати умову. Тут скоріше потрібно формувати в циклі на кожен період повнісю текст запросу і обєднати ці запроси
p.s. Ще можливо дуже спростити, якщо в запросі можна використати функцію (Месяц(Дата1). Поді просто порівняти номера місяців
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!