Ledi29 @ Вчера, 22:46
, Перечисление "СтавкиНДС". В конфигураторе добавить новое значение перечисления. Но этого мало потом, необходимо еще в общих модулях (или модулях документов) описать расчет ставки НДС.
Максон @ Сегодня, 14:38
, В конфигураторе. Находите свой документ. Открываете его форму и там есть макеты печатных форм. И там уже их правите, как хотите. Но если не сильно ориентируетеся в 1с, лучше обращаться к программистам 1с
MK-61 @ Вчера, 15:59
, Добрый день! Попробовал у себя на конфигурации 1с7.7 "ПУБ" в монополном режиме изменить расчет БИ. Установил расчет бухгалтерских итогов на 4 квартал 2022. Прошло без вопросов. До этого расчет БИ стоял 4 квартал 2030 года.
1С 8.x : Формирование HTML-документа, содержащего ссылки на объекты базы данных В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме: “Создан документ такой-то” “Изменен документ такой-то” и т.д. От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки … То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов. Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Текст модуля формы: Код 1C v 8.х
Процедура ДобавитьТекстHTML(ТекстHTML, Элемент); // Ссылку будем формировать хитро: // Предполагаем что символ "-" не входит в имена объектов метаданных, // учавствующих в формировании html // Тогда ссылка будет иметь следующий вид: // Номенклатура-d341d377-b3b1-11dc-a100-0011d85708ff // Передавать нашу ссылку будем через атрибут id СсылкаНаЭлемент = Элемент.Метаданные().Имя+"-" +Элемент.Ссылка.УникальныйИдентификатор(); ТекстHTML.ДобавитьСтроку("<A id=""" + СсылкаНаЭлемент + """ href= """ + Элемент + """ >"+Элемент+"</A><BR>"); КонецПроцедуры
Процедура ДействияФормыСформировать(Кнопка) Запрос = Новый Запрос(" |ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура"); ТекстHTML = Новый ТекстовыйДокумент; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ДобавитьТекстHTML(ТекстHTML, Выборка.Ссылка); КонецЦикла; ЭлементыФормы.ПолеHTMLДокумента.УстановитьТекст(ТекстHTML.ПолучитьТекст()); КонецПроцедуры
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента. Код 1C v 8.х
// Функция получает элемент - <A> по данному элементу // Производит поиск элемента <A> среди родительских элементов данного // // Параметры: // Элемент - COMОбъект, элемент HTML документа, // по которому нужно найти ссылку // // Возвращаемое значение: // COMОбъект - если ссылка обнаружена, иначе - Неопределено
Функция НайтиСсылку(Элемент) Врем = Элемент; Пока Врем <> Неопределено Цикл Если НРег(Врем.tagName) = "a" Тогда Возврат Врем; КонецЕсли; Врем = Врем.parentElement; КонецЦикла; Возврат Неопределено; КонецФункции // НайтиСсылку(Элемент)
Процедура ПолеHTMLДокументаonclick(Элемент, pEvtObj) htmlElement = НайтиСсылку(pEvtObj.srcElement); // Анализируем если произошло нажание не ссылку Если htmlElement <> Неопределено Тогда // Если у ссылки есть идентификатор Если СокрЛП(htmlElement.id) <> "" Тогда // Получаем адрес ссылки из атрибута id СсылкаНаЭлемент = htmlElement.id; Разделитель = Найти(СсылкаНаЭлемент,"-"); Если Разделитель > 0 Тогда // Получаем тип элемента ТипЭлемента = Лев(СсылкаНаЭлемент,Разделитель-1); // Получаем УникальныйИдентификатор ГУИД = Сред(СсылкаНаЭлемент,Разделитель+1); Справочники[ТипЭлемента].ПолучитьСсылку( Новый УникальныйИдентификатор(ГУИД)).ПолучитьФорму().Открыть(); КонецЕсли; // Не отработали нажатие pEvtObj.returnValue = Ложь; КонецЕсли; КонецЕсли; КонецПроцедуры
Всё можно пробовать!
Заключение Обратите внимание что ссылку я формировал следующим образом: <ИмяОбъектаМетаданных>-<УникальныйИдентификатор> это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку <ОбъектМетаданных>.ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор)) Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится. Скачивать файлы может только зарегистрированный пользователь!
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема.
4andriy @ Сегодня, 15:33
, Для того чтобы исправить данную ошибку в 1С 7.7, достаточно поместить файл без содержимого с названием «OrdNoChk. prm» в папку BIN с установленной программой. Например, если 1С расположена по адресу «C:\Program Files (x86)\1Cv77», то необходимо создать файл в папке «C:\Program Files (x86)\1Cv77\BIN».
alla35 @ Сегодня, 13:05
, Обратиться за помощью к программисту. Как вариант, если хотите сами разобраться,то в инете есть инфа как создавать внешние печатные формы.
andrew76 @ 25.02.22, 9:34
, Я делал так создавал новый реквизит "ИсторическоеНаименование" в него записывали на определенную дату (до и после переименования) наименования подразделения. Потом во всех документах на печатных формах и т.д. писал
andrew76 @ 25.01.22, 9:30
, У меня была такая задача. Надо было проверить заполнение одного реквизита при изменении другого (заполнена ли статья расходов при изменении суммы), статья расходов на второй вкладки, а сумма на первой вкладке. При изменении суммы осуществляется переход на вторую вкладку
Вот такой код был при изменении суммы:
//============================= Процедура ИзмСумму() Если ПустоеЗначение(СтатьяРасходов) = 1 Тогда Форма.ИспользоватьСлой("Дополнительно",2); Форма.Закладки.ТекущаяСтрока(2); Сообщить("Выберите 'Статью","!"); Возврат; КонецЕсли; КонецПроцедуры
Если Док_Источник.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1 Тогда Пока Док_Источник.ПолучитьДокумент() = 1 Цикл Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент()); ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект)); // Для примера Объект возвращает {"O","0","0","3114","0","0"," 258156CB "}, // а ПолучитьИД(объект) = 258156CB КонецЦикла;
Еще посмотрите метод: ЗначениеВСтрокуВнутр(<?>); Синтаксис: ЗначениеВСтрокуВнутр(<Объект>) Назначение: Преобразование значения объекта агрегатного типа в строковое системное представление. Возвращает: представление значения объекта в строковом системном виде. Параметры: <Объект> - значение объекта агрегатного типа данных которое нужно преобразовать.[/code]
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!