INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Ошнуров Андрей | Программист | Предприниматель

«РусскийФокс — 1С-подобный язык программирования»

Новый язык 1С-подобный объектно-ориентированный язык программирования РусскийФокс (интерпретатор), FreeWare. Удобен для обучения (Размер платформы 14Мб, инсталляции не требует. Разрабатывается на FoxPro 9) Удобен для системных администраторов: писать сценарии для командной строки. Операционная система WinXP и выше. На данный момент из синтакс-помошника учебной версии 1С реализованы все функции работы со строками, все функции работы со значениями типа Дата, функции преобразования значений (число, строка, дата). Пока отсутствует отладчик, но реализованы операторы ПОПЫТКА, ИСКЛЮЧЕНИЕ, КОНЕЦПОПЫТКИ; В ближайшее время планируется создать объекты для работы с DBF-файлами (с CDX индексами), объект для работы с MySQL-сервером, генерация отчетных форм на основе шаблонов OpenOffice и LibreOffice (либо на MS Excel), создание экранных форм ввода данных, создания меню, объекты типа строка ввода, кнопки, таблица, чекбоксы и т.д.. Особое внимание будет уделено взаимодействию с платформой 1С. Доклад будет посвящен краткому обзору возможностей и демонстрации примеров написания кода.

Внешние печатные формы в восьмерке II (дополнительные параметры)

Программирование - Практика программирования

190
С выходом платформы 8.1 появились новые редакции типовых конфигураций (УТ 10.3 и БП 1.6), а с ними и новые возможности в создании внешних печатных форм.

Статья является продолжением цикла статей и разработок:
Внешние печатные формы в восьмерке http://infostart.ru/blogs/157
Обработка для тестирования внешних печатных форм в восьмерке http://infostart.ru/projects/833/
Использование встроенного почтового клиента - http://infostart.ru/blogs/161/
Документ с печатью и подписью - http://infostart.ru/blogs/162/
Внешние печатные формы в восьмерке II - http://infostart.ru/blogs/324/
Заполнение табличных частей документов в восьмерке (внешние обработки) http://infostart.ru/blogs/345/
Обработка для тестирования внешних обработок изменения табличных частей http://infostart.ru/projects/1749/
Использование свойств объектов при доработке типовых конфигураций http://infostart.ru/blogs/692/
В конфигурациях под 8.1 появилась возможность передавать параметры во внешнюю обработку. Для того чтобы воспользоваться новой технологией у обработки должен быть реквизит ДополнительныеПараметры типа «Произвольный». Если для вызова обработки предусмотрены параметры, то они будут в указанном реквизите. Параметры передаются в виде структуры.
Например, в типовой конфигурации в документе «РеализацияТоваровУслуг» предусмотрена печать накладной, как в валюте, так и в рублях. Реализуется это с помощью параметра, передаваемого в функцию Функция ПечатьДокумента(СуммыВРублях = Ложь).
Аналогично можно передать параметр во внешнюю печатную форму через реквизит «ДополнительныеПараметры». Для приема параметра можно воспользоваться кодом:
СуммыВРублях = Ложь;
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
	Если ДополнительныеПараметры.Свойство("СуммыВРублях") Тогда
		СуммыВРублях = ДополнительныеПараметры.СуммыВРублях;
	КонецЕсли;
КонецЕсли; 

Теперь осталось настроить передачу параметра внешней печатной форме в конфигурации. Для этого создаем новый элемент справочника «Внешние обработки» и заполняем его, как показано на рисунке.
В результате, мы получаем две печатные формы в одной внешней обработке.
190

См. также

Комментарии
Сортировка: Древо
1. ineoosaki 04.02.08 12:47 Сейчас в теме
2 poppy
Скоро появиться продолжение от м-ра Евгена ;)
2. Abadonna 3718 04.02.08 14:53 Сейчас в теме
(1) Жаль что этому мистеру по интернету не получится кое-что почистить
17. Kolunya 7 26.02.13 14:10 Сейчас в теме
Спасибо за инфу!!!
создал обработку, при регистрации сделал несколько строк с разными доп.параметрами (указал разные ИмяМакета)
все супер!, но ...
в списке печФорм при нажатии на кн.Печать - одно и тоже наименование из регистрации ПФ "Комплект документов покупателя" и "Комплект документов покупателя(2)", "Комплект документов покупателя(3)"..(((
как можно задать разные названия? типа "Комплект - Торг12", "Комплект Спецификация"
Вариант с регистрацией еще одной печформы не предлагать, хочу вот так красиво попробовать реализовать..;-)
возможно такое?
3. poppy 3334 05.02.08 11:51 Сейчас в теме
4. Yra_bes 27.08.08 20:04 Сейчас в теме
9. Altez 251 08.11.09 23:57 Сейчас в теме
(4) хароший умный дэвушка,)
списиб
5. ineoosaki 15.01.09 05:03 Сейчас в теме
даду еще ссылку на статью о печатных формах в восьмерке.
http://uit.kiev.ua/ru/company/articles/index.php?ELEMENT_ID=3055
6. Alex_1066 16.09.09 17:27 Сейчас в теме
...очень хотел посмотреть реализацию, но в бухгалтерии этого не нашёл :(
7. poppy 3334 16.09.09 19:13 Сейчас в теме
(6) Чего не нашел?

Описанный механизм в типовой БП поддерживается. В качестве примера можешь посмотреть эту http://infostart.ru/projects/4355/ обработку.
8. Alex_1066 16.09.09 20:24 Сейчас в теме
спасибки... обязательно посмотрю
10. Jako 47 05.01.10 10:40 Сейчас в теме
За обработку тестирования табличных частей особ спасиб!!!
11. h_vitya 20.09.11 17:03 Сейчас в теме
ineoosaki пишет:

даду еще ссылку на статью о печатных формах в восьмерке.
http://uit.kiev.ua/ru/company/article...NT_ID=3055


Спасибо! То что надо =)
12. Пуд 14.12.11 14:55 Сейчас в теме
Спасибо!Как-то этот момент от меня ускользнул.
13. maratimus 22 15.12.11 12:43 Сейчас в теме
очень помогла , спасибо разбогатею пришлю деньги, да для тех кто не знает, для отладки нужно поставить брейк на строку ТабДокумент = ВнешняяОбработка.Печать(); , а потом нажать F11.
Maximysis; perforator; +2 Ответить
14. OLga_gab 02.02.12 02:16 Сейчас в теме
За ссылочку на статью о печатных формах в восьмерке.
http://uit.kiev.ua/ru/company/article...NT_ID=3055
спасибо = очень классно написано
15. Shickom 29.02.12 07:46 Сейчас в теме
Хотелось бы аналогичной статьи для 8.2 управляемого приложения
16. rom-x 152 25.10.12 17:40 Сейчас в теме
Есть внешняя обработка, в которой 2 макета, в процедуре Печать() код:
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
    	Если ДополнительныеПараметры.Свойство("ИмяМакета") Тогда
    		ИмяМакета = ДополнительныеПараметры.ИмяМакета;
    	КонецЕсли;
    КонецЕсли;    


При регистрации указываю 2 строки, в первой Параметр ИмяМакета = Макет, во второй ИмяМакета = Макет1, выходит всегда только одна печатная форма, если первую строчку указываю Макет, то выходит Макет, соответственно если узказать Макет1 а во второй Макет, то выходит Макет1, что не так делаю?
18. msv23 03.04.14 13:37 Сейчас в теме
19. MasterIt 09.12.14 16:18 Сейчас в теме
Хороший материал, мне как новичку очень пригодился, спасибо!
20. Rustig 976 06.08.15 19:12 Сейчас в теме
для всех остальных:
для использования ДополнительныхПараметров приходится указывать ЗаменяемыеПечатныеФормы... то есть они должны быть изначально....
а если печатная форма создается как новая, а не как заменяемая?... тогда обходимся без дополнительных параметров..... просто создаем столько печатных форм, сколько разных значений параметра.
кстати, дополнительные параметры могут принимать только значения примитивных типов: строка, булево, дата, число.
21. Mehanik1977 30.04.17 20:07 Сейчас в теме
Подскажите пожалуйста, совсем новичок. Делал внешнюю печатную форму для документа ОС_Инвентаризация. Перенес в нее функцию из модуля документа
Функция ПолучитьЛокальнуюПеременную(ИмяПеременной) Экспорт
	Результат = "";
	Если НЕ ДополнительныеСвойства.Свойство(ИмяПеременной,Результат) Тогда
		Если ИмяПеременной = "Счет101" Тогда
			Результат = ПланыСчетов.ЕПСБУ.ОС;
		ИначеЕсли ИмяПеременной = "Счет102" Тогда
			Результат = ПланыСчетов.ЕПСБУ.НМА;
		ИначеЕсли ИмяПеременной = "Счет103" Тогда
			Результат = ПланыСчетов.ЕПСБУ.НПА;
		ИначеЕсли ИмяПеременной = "МассивКВД" Тогда
			Результат = Новый Массив;
			Результат.Добавить(Перечисления.КВД.Бюджет);
			Результат.Добавить(Перечисления.КВД.Внебюджет);
			Результат.Добавить(Перечисления.КВД.СубсидииНаГосзадание);
			Результат.Добавить(Перечисления.КВД.СубсидииНаИныеЦели);
			Результат.Добавить(Перечисления.КВД.БюджетныеИнвестиции);
			Результат.Добавить(Перечисления.КВД.СредстваОМС);
		ИначеЕсли ИмяПеременной = "МассивВидовНФА" Тогда
			Результат = Новый Массив;
			Результат.Добавить(Перечисления.ВидыНФА.ОС);
			Результат.Добавить(Перечисления.ВидыНФА.НМА);
			Результат.Добавить(Перечисления.ВидыНФА.НПА);
		ИначеЕсли ИмяПеременной = "МассивИсключаемыхСостояний" Тогда
			Результат = Новый Массив;
			Результат.Добавить(Перечисления.СостоянияОС.ПустаяСсылка());
			Результат.Добавить(Перечисления.СостоянияОС.СнятоСУчета);
		ИначеЕсли ИмяПеременной = "СписокБалансов" Тогда
			Результат = УправлениеМатериальнымиЗапасами.СформироватьСписокБалансовДляВыбора();
		ИначеЕсли ИмяПеременной = "СчетБибл" Тогда
			Результат = Новый Массив;
			Результат.Добавить(ПланыСчетов.ЕПСБУ.ОС_ОЦДИ_БиблиотечныйФонд);
			Результат.Добавить(ПланыСчетов.ЕПСБУ.ОС_ИДИ_БиблиотечныйФонд);
			Результат.Добавить(ПланыСчетов.ЕПСБУ.ОС_ПЛ_БиблиотечныйФонд);
		КонецЕсли;
		ДополнительныеСвойства.Вставить(ИмяПеременной,Результат);
	КонецЕсли;
	
	Возврат Результат;
КонецФункции
Показать


При проверке синтаксиса пишет что переменная ДополнительныеСвойства не определена. Я не понимаю откуда она должна браться? В модуле документа тоже не понял как посмотреть где она определяется и что это такое вообще. Подскажите пожалуйста, в инете не нашел что почитать про это(
22. user785506 01.01.18 20:09 Сейчас в теме
(21) Посмотрите в синтаксис-помощнике ветку:
Прикладные объекты
Документы
ДокументОбъект.<ИмяДокумента>
Свойства
ДополнительныеСвойства
В Вашей внешней печатной форме согласно требованиям должен быть реквизит СсылкаНаОбъект, которому нужно присвоить тип ДокументСсылка.ОС_Инвентаризация
Из него можно получить тип ДокументОбъект.ОС_Инвентаризация:
ДокОбъ=СсылкаНаОбъект.ПолучитьОбъект();
- а потом уже и ДополнительныеСвойства:
ДополнительныеСвойства=ДокОбъ.ДополнительныеСвойства
23. Mehanik1977 09.01.18 14:51 Сейчас в теме
(22)Спасибо большое за подробный ответ
Оставьте свое сообщение