Создание динамически подгружаемых печатных форм на 8.2, как это было реализовано в 1С:7.7

Публикация № 655604

Разработка - Практика программирования

Печать внешняя xml

13
При создании собственной, легкой, автономной конфигурации для филиалов на управляемых формах необходимо было решить одну задачу: «БЕЗ обновления конфигураций необходимо легко и быстро обновлять/добавлять печатные формы для любого документа в 1С». Очень понравилось ранее существовавшее решение по динамической подгрузке внешних печатных форм в 1С 7.7. Его и реализуем.

Вопросы безопасности пока опустим, это тема для отдельных разговоров, но это решение позволяло нам через GPRS соединение в филиале обновлять выборочные печатный формы «на фоне», не останавливая работу в 1С и не отвлекая филиал от работы. Им даже никаких действия для обновления предпринимать не надо, по мере обновления файлов в папке, формы автоматические будут подхватываться.
Описывая далее наше решение, следует помнить, что в разработке собственной конфигурации мы умышленно не используем «библиотеку стандартных процедур», дабы не увеличивать размер и  нагрузку для конфигурации филиала.
Конечно, некоторые общие модули кастрировав, мы все же перенесли в свою конфигурацию (например: «АдресныйКлассификатор, СтроковыеФункцииКлиентСервер»).

И так план решения поставленной задачи:

  1. Выделяем каталог где хранятся печатные внешние формы. В нашем случае: «%КаталогБД%/ExtForms/PrnForms»
  2. В данный каталог складываем одноимённые файлы печатной формы ERF и XML с описанием формы, например: «ЗакупочныйАкт.erf» и «ЗакупочныйАкт.xml»
  3. При открытии любой формы документов (справочников) собираются список печатных форм из файлов XML и создаются на форме соответствующие кнопки печать.
  4. При старте формирования печатной формы, загружается внешняя печатная форма и открывается ее форма.

Реализуем:

1. Этап

Создаем константу для хранения каталога печатных форм: «КаталогПечатныхФорм». Тип(«Строка») . Длина(255). Ее, кстати, заполнять не обязательно, если не заполнена будем использовать условленный в плане путь «по умолчанию».

Создаем Общий модуль «_ВнешниеПечатныеФормы» доступный с клиентов и с сервера.

Добавляем функцию:

//Получает каталог Печатных форм
Функция КаталогПечатныхФорм() Экспорт
	СтрКаталогПечатныхФорм = СокрЛП(ОбщегоНазначения.ЗначениеКонстантыПоИмени("КаталогПечатныхФорм"));
	#Если ВебКлиент Тогда
		Если ПустаяСтрока(СтрКаталогПечатныхФорм) Тогда
		СтрКаталогПечатныхФорм = "D:\Filial82\ExtForms\PrnForms\";
		КонецЕсли;
	    Возврат СтрКаталогПечатныхФорм;
	#Иначе
		Если ПустаяСтрока(СтрКаталогПечатныхФорм) Тогда
			СтрКаталогПечатныхФорм = НСтр(СтрокаСоединенияИнформационнойБазы(), "File");
			Если ЗначениеЗаполнено(СтрКаталогПечатныхФорм) Тогда    //Файловая версия
				Возврат СтрКаталогПечатныхФорм + ?(Прав(СтрКаталогПечатныхФорм,1)="\","","\")+"ExtForms\PrnForms\";
			Иначе
				СтрКаталогПечатныхФорм = КаталогПрограммы();
				Возврат СтрКаталогПечатныхФорм + ?(Прав(СтрКаталогПечатныхФорм,1)="\","","\")+"ExtForms\PrnForms\";
			КонецЕсли;		
		Иначе	
		    Возврат СтрКаталогПечатныхФорм;
		КонецЕсли;
	#КонецЕсли
КонецФункции

2. Этап

Определяем для себя формат файла XML

Например для печатной формы "Закупочный акт" создаем файл: «ЗакупочныйАкт.xml»

<?xml version="1.0" encoding="windows-1251"?>
<ПечатнаяФорма ИД="ЗакупочныйАкт" ИмяФормы="ЗакупочныйАкт" ИмяВСпискеМеню="Закупочный акт" ИмяКнопки="Закупочный акт" ОтображатьКнопку="Авто" Иконка="Печать">
<СсылкаНаОбъект>ДокументСсылка.ЗакупочныйАкт</СсылкаНаОбъект>
</ПечатнаяФорма>

Добавляем в общий модуль «_ВнешниеПечатныеФормы» функцию получения массива печатных форм для объекта

//Возвращает массив печатных форм
//Пример1: ПолучитьМассивПечатныхФорм("ДокументСсылка","РКО");
//Пример2: ПолучитьМассивПечатныхФорм("СправочникСсылка","Контрагенты");
Функция ПолучитьМассивПечатныхФорм(стрТипОбъекта,стрВидОбъекта) Экспорт
	Перем МассивПечатныхФорм;
	МассивПечатныхФорм=Новый Массив;
	КаталогПечатныхФорм = Новый Файл(КаталогПечатныхФорм());
	Если НЕ КаталогПечатныхФорм.Существует() Тогда
		Сообщить("Каталог печатных форм не существует: "+КаталогПечатныхФорм());
		Возврат МассивПечатныхФорм;
	КонецЕсли;
	Для каждого ФайлXML из НайтиФайлы(КаталогПечатныхФорм.ПолноеИмя,"*.xml",Ложь) 
Цикл
		Попытка
			ФайлERF=Новый Файл(Сред(ФайлXML.ПолноеИмя,1,СтрДлина(ФайлXML.ПолноеИмя)-4)+".erf");
			Если НЕ ФайлERF.Существует() Тогда
				Продолжить;
			КонецЕсли;
			ЧитатьХМЛ = Новый ЧтениеXML;
			ЧитатьХМЛ.ОткрытьФайл(ФайлXML.ПолноеИмя);
			ПостроитьДУМ = Новый ПостроительDOM; 
			ДокументДУМ = ПостроитьДУМ.Прочитать(ЧитатьХМЛ);
			КорневойУзел = ДокументДУМ.ПервыйДочерний;
			Если НЕ КорневойУзел.ЕстьАтрибуты() Тогда
				Продолжить;
			КонецЕсли;
			Если КорневойУзел.ЕстьДочерниеУзлы() Тогда
				Для Каждого УзелСсылкаНаОбъект ИЗ КорневойУзел.ПолучитьЭлементыПоИмени("СсылкаНаОбъект") Цикл
					Если (стрТипОбъекта+"."+стрВидОбъекта = УзелСсылкаНаОбъект.ТекстовоеСодержимое) Тогда
						СтруктураДанныхВМассив = Новый Структура("ТипОбъекта,ВидОбъекта,ФайлПолныйПуть,ИД,ИмяФормы,ИмяВСпискеМеню,ИмяКнопки,ОтображатьКнопку,Иконка");
						СтруктураДанныхВМассив.ТипОбъекта = стрТипОбъекта;
						СтруктураДанныхВМассив.ВидОбъекта = стрВидОбъекта;
						СтруктураДанныхВМассив.ФайлПолныйПуть = ФайлERF.ПолноеИмя;
						СтруктураДанныхВМассив.ИД = КорневойУзел.ПолучитьАтрибут("ИД");
						СтруктураДанныхВМассив.ИмяФормы = КорневойУзел.ПолучитьАтрибут("ИмяФормы");
						СтруктураДанныхВМассив.ИмяВСпискеМеню = КорневойУзел.ПолучитьАтрибут("ИмяВСпискеМеню");
						СтруктураДанныхВМассив.ИмяКнопки = КорневойУзел.ПолучитьАтрибут("ИмяКнопки");
						СтруктураДанныхВМассив.ОтображатьКнопку = КорневойУзел.ПолучитьАтрибут("ОтображатьКнопку");
						СтруктураДанныхВМассив.Иконка = КорневойУзел.ПолучитьАтрибут("Иконка");
					МассивПечатныхФорм.Добавить(СтруктураДанныхВМассив);
						Прервать;
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;
			ПостроитьДУМ = Неопределено;
			ЧитатьХМЛ.Закрыть();
		Исключение
		КонецПопытки;
	КонецЦикла;	 	
	Возврат МассивПечатныхФорм;
КонецФункции

Тут конечно можно все оптимизировать… но это я оставляю для вашего творчества 😉

3. Этап

Добавляем в  модуль  «_ВнешниеПечатныеФормы» процедуру генерации кнопок «Печать», вызываемую с формы документа на основании полученного массива XML из 2 этапа

Процедура СоздатьКнопкиПечатныхФорм(массивПечФорм, ЭтаФорма, Элементы, Команды) Экспорт
	текПечФорм =  Новый Cтруктура("ТипОбъекта,ВидОбъекта,ФайлПолныйПуть,ИД,ИмяФормы,ИмяВСпискеМеню,ИмяКнопки,ОтображатьКнопку,Иконка");
	СписокДобавленныхКоманд= Новый Массив;
	Если массивПечФорм.ВГраница()>-1 Тогда 
		Для Каждого текПечФорм Из массивПечФорм Цикл
			Если (текПечФорм.ОтображатьКнопку="Всегда") ИЛИ (массивПечФорм.ВГраница()=0) Тогда
				КомандаФормы  =  Команды.Добавить(Строка(текПечФорм.ИД));
				КомандаФормы.Действие = "ПроцедураОбработкиНажатияПечать";       
				ТекКнопка = Элементы.Добавить(Строка(текПечФорм.ИД),Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель);       
				ТекКнопка.Заголовок = текПечФорм.ИмяКнопки;  
				Если ЗначениеЗаполнено(текПечФорм.Иконка) Тогда
					ТекКнопка.Картинка = ПолучитьИконкуКнопки(текПечФорм.Иконка);
					ТекКнопка.Отображение = ОтображениеКнопки.КартинкаИТекст;
				Иначе
					ТекКнопка.Отображение = ОтображениеКнопки.Текст;
				КонецЕсли;
				ТекКнопка.ИмяКоманды = Строка(текПечФорм.ИД); 
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	Если массивПечФорм.ВГраница()>0 Тогда 
		ГруппаПечать = Элементы.Добавить("ГруппаПечать",Тип("ГруппаФормы"),ЭтаФорма.КоманднаяПанель);       
		ГруппаПечать.Заголовок="Печать...";
		Для Каждого текПечФорм Из массивПечФорм Цикл
			КомандаФормы  =  Команды.Добавить(Строка(текПечФорм.ИД)+"Список");
			КомандаФормы.Действие = "ПроцедураОбработкиНажатияПечать";       
			ТекКнопка = Элементы.Добавить(Строка(текПечФорм.ИД)+"Список",Тип("КнопкаФормы"),ГруппаПечать);       
			ТекКнопка.Заголовок = текПечФорм.ИмяВСпискеМеню;  
			Если ЗначениеЗаполнено(текПечФорм.Иконка) Тогда
				ТекКнопка.Картинка = ПолучитьИконкуКнопки(текПечФорм.Иконка);
				ТекКнопка.Отображение = ОтображениеКнопки.КартинкаИТекст;
			Иначе
				ТекКнопка.Отображение = ОтображениеКнопки.Текст;
			КонецЕсли;
			ТекКнопка.ИмяКоманды = Строка(текПечФорм.ИД)+"Список"; 
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

Сюда же прикладываем небольшую заглушку для подхвата иконок на кнопки "Печать"

Функция ПолучитьИконкуКнопки(ИмяИконки)
	Попытка
		Если ИмяИконки="Файл" Тогда
			Возврат БиблиотекаКартинок.Печать;      //Пока так
		Иначе	
			Возврат БиблиотекаКартинок[ИмяИконки];
		КонецЕсли;
	Исключение
		Возврат БиблиотекаКартинок.Печать;
	КонецПопытки;
КонецФункции

4. Этап

Теперь во всех формах документов добавляем следующий код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	//необходимо для генерации кнопок печать на форме
	МассивПечатныхФорм=_ВнешниеПечатныеФормы.ПолучитьМассивПечатныхФорм("ДокументСсылка",Объект.Ссылка.Метаданные().Имя);
	_ВнешниеПечатныеФормы.СоздатьКнопкиПечатныхФорм(МассивПечатныхФорм,ЭтаФорма,Элементы,Команды);
КонецПроцедуры

//ВНЕШНИЕ ПЕЧАТНЫЕ ФОРМЫ
&НаКлиенте
Функция ПроверкаНаЗаписьПередПечатью(ЭтаФорма) Экспорт
              //тут ваши проверки перед печатью
              //…
	Возврат Истина;  //или Ложь если не разрешить печать
КонецФункции

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
	Возврат ВнешниеОтчеты.Подключить(АдресХранилища,,Ложь);
КонецФункции 

&НаСервере
Функция ПолучитьМассив()
	Возврат _ВнешниеПечатныеФормы.ПолучитьМассивПечатныхФорм("ДокументСсылка",Объект.Ссылка.Метаданные().Имя); 
КонецФункции

&НаКлиенте
Процедура ПроцедураОбработкиНажатияПечать(Элемент)
	Если НЕ Объект.Проведен Тогда
		Сообщить("Перед выводом на печать необходимо провести документ.");
		Возврат;
	КонецЕсли;
	МассивПечатныхФорм =  ПолучитьМассив();
	ИмяВызваннойКнопки = Элемент.Имя;
	АдресХранилища = "";
	Для Каждого элМассиваПечФорм из МассивПечатныхФорм Цикл
		Если (ИмяВызваннойКнопки = элМассиваПечФорм.ИД) или (ИмяВызваннойКнопки = (элМассиваПечФорм.ИД + "Список"))Тогда
			Если НЕ ПроверкаНаЗаписьПередПечатью(ЭтаФорма) Тогда
				Возврат;
			КонецЕсли;
			ДополнительныеПараметры = Неопределено;//В некоторых документах возможно тут нужны дополнительные параметры
			Результат = ПоместитьФайл(АдресХранилища, элМассиваПечФорм.ФайлПолныйПуть, , Ложь);       
			ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
			ФормаОтчета= ПолучитьФорму("ВнешнийОтчет." + ИмяОбработки + ".Форма");
			Попытка
				ФормаОтчета.Отчет.СсылкаНаОбъект = Объект.Ссылка;
			Исключение
				Сообщить("Не удалось установить ссылку на объект в печатной форме.");
				Возврат;
			КонецПопытки;
			Если  НЕ ДополнительныеПараметры = Неопределено Тогда
				Попытка
					ФормаОтчета.Отчет.ДополнительныеПараметры = ДополнительныеПараметры;
				Исключение
					//ну и не надо значит
				КонецПопытки;
			Конецесли;
			ФормаОтчета.Открыть();
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
5. Этап
Создаем внешний отчет.
Во внешней печатной форме обязательно добавляем реквизит «СсылкаНаОбъект» с типом: ссылка на конкретный вид документа.
В некоторых случаях можно добавить реквизит «ДополнительныеПараметры» с любым типом, чтобы получать дополнительный параметр при вызове из формы документа.

В модуль объекта добавляем экспортную процедуру «Печать»:

Функция Печать() Экспорт
   ТабДокумент = Новый ТабличныйДокумент
   //….
   Возврат  ТабДокумент;
КонецФункции

И в модуль формы внешней печатной формы добавляем:

&НаСервере
Функция ВызватьПечать()
	ЭтотОбъект = РеквизитФормыВЗначение("Отчет");
	ТабДок = ЭтотОбъект.Печать();
	Возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ТабДок = ВызватьПечать();
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Ложь;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабДок.АвтоМасштаб = Истина;
	ТабДок.Показать();
	Отказ = Истина;
КонецПроцедуры

В принципе готово.
В справочниках все тоже самое, только вместо слов «ДокументСсылка» ставим «СправочникСсылка».

Работает эта система уже несколько лет, с 2013 года без сбоев. А если учесть то, что печатные формы, из-за постоянного изменения законодательства, приходится менять(добавлять) чуть ли не квартал, то такой подход сохранил нам много времени на обновлениях при 160 филиалах.

PS/ На дополнительные вопросы, включая вопросы о причинах наших поступков и решений, буду отвечать в комментариях .

13

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. platon_ 10 28.07.17 17:15 Сейчас в теме
А чем Механизм Внешних Печатных Форм из БСП не устроил?
3. dima_home 110 29.07.17 10:50 Сейчас в теме
(1) Антон.
Давайте с начало рассмотрим различия:
1. Наша реализация: При открытии формы документа каждый раз заново собираются печатные формы из локального каталога.
Реализация БСП: Для подключения нужно зайти в 1С (администратору) и подгрузить печатную форму.
2. Наша реализация: С помощью ftp или dropbox можно синхронизировать печатные формы сразу в 160 филиалах (с полностью автономными 1С - не РИБ)
Реализация БСП: Нужно подключаться в каждую 1С и подгружать форму вручную либо организовывать РИБ.
3. Наша реализация: Позволяет указывать кнопке печатной формы, где она должна быть: в раскрывающимся списке печать или в виде отдельной кнопки прямо на форме. Позволяет менять иконку, в планах было даже подгружать любую иконку, даже динамически с диска.
Реализация БСП: Печатные формы только в список (но возможно я не прав).

А теперь рассмотрим условия, в которых все делалось:
1. 2013 год (управляемые формы только входили в оборот).
2. Все филиалы находятся не в городе, а по селам. Интернет во многих филиалах – очень нестабильное GPRS соединение с ограниченным объемам трафика в день (Москвичам не понять этого со своим 3G и 4G).
3. Не всегда удается даже удаленно подключиться по UVNC с максимальным сжатием (2х битный цвет) , не говоря уже чтобы удаленно подключаться администратору и работать в 1С.
4. В некоторых филиалах обновление 1С - это отправка флэшек с автозапуском копирования файла cf в заранее прописанный каталог, и при перезагрузке компьютера автоматическое обновление 1С из cf.
5. Ни при каких обстоятельствах не должны останавливаться продажи на долго.
6. Конфигурация для филиалов делалась с нуля, исключительно заточенной под наши задачи. Стандартные решения от 1С тихо курят в сторонке ;).

Выводы:
1. RDP не приемлем. Нет связи, а ее иногда не было целыми неделями, нет продаж.
2. РИБ (есть опыт - могу поделится но уже отдельно) при изменениях конфигурации, или при массовых действиях с данными может тоже приводить к коллапсу обмена и к неработоспособности 1С филиала.
3. Подключение администратора удаленно для добавления печатных форм (как при БСП) в виду количества филиалов и низкого качества связи является не лучшим решением.
4. Местные сотрудники, работающие в региональных филиалах , как правило не могут отличить монитор от системного блока, и просить их что либо делать с 1С та еще задача ;)

В итоге:
Идеальным решением было - организовать обмен с филиалом через негарантированную связь, с защитой от порченных файлов, с поддержкой скачивания частями, по пассив FTP. Пытались даже аналог dropbox прикрутить, не взлетело, были случаи когда файлы просто отказывались синхронизироваться или просто исчезали.
Соответственно, когда по FTP приходили печатные формы в архиве, они при перезагрузке компьютера, при удачном разархивировании (защита от порчи файлов при передачи), копировались в папку с PrnForms. А 1С автоматом их подхватывала.
Аналогичное решение применяли к всякого рода дополнительным файлам (инструкциям) доступным из 1С.

Думаю наше решение (возможно не реализация) было самым оптимальным.
sbcode; juricher; suepifanov; +3 Ответить
2. CheBurator 3402 29.07.17 01:14 Сейчас в теме
В настроечные иксемель файлы можно пихать еще всякие ограничения, типа
Кроме="тутпереченьгуидовконтрагентовккоторымнеприменяетсядан­наяпечформа"

в той же 77 недостатком ВПФ является то что они не делятся на ОТЧЕТЫ (не изменяют базу) и ОБРАБОТКИ (изменяют базу). по уму - ВПФ должны быть разделены на "ПЕЧФОРМЫ" и "ДЕЙСТВИЯ" (действия могут тоже формировать печформы, но это побочный плюс действий).
4. dima_home 110 29.07.17 10:56 Сейчас в теме
(2) Сергей. Конечно я в статье описал только пример для печатных форм.
У нас конечно были реализованы и погрузка самовыполняемых задач в 1С. И в 1С был раздел дополнительные возможности куда налету подцеплялись инструкции, и иные общие формы (не под документы) типа: xls/doc,pdf,html,erf,epf.
Прикрепленные файлы:
5. dima_home 110 29.07.17 11:11 Сейчас в теме
Сразу отвечу на будущие вопросы: "Почему не использовали стандартные 1С, а занялись своей разработкой".

Основная причина: Неконтролируемый рост размеров стандартных конфигураций, и их неудержимые попытки занять весь интернет канал, пытаясь "слить/залить что-то" в/из 1С.
У нас например в одном филиале: база живет с 2013 года. Ее размер 108 Мбайт, при среднем 30000 документов в год по рознице и 5000 документов в год по оптовым продажам. При этом почти половина размера базы занимает стандартный классификатор адресов. Все это крутится(летает) на обычном пентиуме (P4).
Вторая причина: В любую секунду можно выбросить жесткий диск с 1С в филиале и установить пустую базу, начальные остатки (не путать с восстановлением старых документов) и настройки можно выгрузить из центральной базы, при этом это никак не скажется на возможности учета (даже в части возврата прошлых продаж)...
и ее много других решений, на много опередивших стандартные решения от 1С.
juricher; +1 Ответить
6. Vortigaunt 72 09.08.17 12:40 Сейчас в теме
(5) Заинтересовало, каким образом реализован обмен между центральной базой и филиалами?
7. dima_home 110 13.08.17 21:39 Сейчас в теме
На FTP сервере (в локальной сети с головной базой 1С) создаются две папки IN_FILIAL и OUT_FILIAL
На компьютере филиала создаются локальные аналогичные папки.
Каждый N-час со стороны филиала инициируется передача файлов из "LOCAL\OUT_FILIAL" в
"FTP\N_FILIAL\OUT_FILIAL" и забор файла из "FTP\N_FILIAL\IN_FILIAL" в "LOCAL\IN_FILIAL".
Файлы могут быть XML/ZIP, ZIP файлы автоматически разворачиваются по окончанию загрузки. Используются возможности докачки файла. При неудачном получении/отправки файл удаляется в приемнике и его передача начинается званого в следующем сеансе.
Всегда приоритет на обмен XML файлами, при их отсутствии принимаются ZIP - это позволяет избежать заторы обмена важных данных, если вдруг крупный файл ZIP не удается передать.
Прикреплю выдержку из инструкции по работе с обменом в филиале.

Теперь виды файлов:
Из Головы в филиал:
NMK - Номенклатура - в виде txt файла, так как это самый большой файл (65к наименований номенклатуры) и XML такого размера 1С просто не может переварить. При передаче файл zip-пуется;
CEN - Цены на номенклатуру - xml
DDS- ВыпискаБанка- xml
DIS- дисконтные карты- xml
FIO- физ лица сотрудников (для подотчета)- xml
INV- документы инвентаризации - xml
SOS- состыковка контрагентов (про контрагентов надо отдельную тему создавать про их состыковку и обмен.)
...ну и так далее не буду все перечислять... каждого вида документа есть свой вид файла xml

Из филиала в голову:
Также все документы выгружаются в отдельные файлы xml. Кроме розницы, розница выгружается по закрытию торгового дня.

Файлы создаются каждый раз при проведении документов в каталоге "LOCAL\OUT_FILIAL" в базе филиала, и в каталоге "FTP\N_FILIAL\IN_FILIAL" в головной базе. Если проводится один и тот же документ, файл перезаписывается.

И еще:
Некоторые файлы передаются только в одну сторону... например номенклатура и цены только из головы в филиал, или розничная выручка только из филиала в голову.

Но некоторые файлы могут бегать в обе стороны...например "реализация оптовая (торг-12)"... ее можно создать в филиале, затем исправить в голове. Задачи соответствия документов при одновременном проведении сводится к назначению последней руки - т.е. всегда когда проводится документ реализации в филиале (в ручную или при приеме документа из головы) происходит выгрузки документа из филиала в голову, при этом когда голова принимает документ, выгрузка в филиал не происходит.

Что касается согласования справочников.
Номенклатура/сотрудники/цены/дисконт только из головы, так что здесь нет проблем, а вот справочник контрагентов - целая система сопоставления независимых справочников (наше ноу-хау). Контрагенты могут создаваться раздельно или одновременно на любой стороне и будут все равно связаны.

Любые документы (в любую сторону) можно заказывать повторно и загружать поверх.

Еще, для отслеживания расхождений в базах, при закрытии торгового дня отправляется автоматически отправляется из филиала сверка остатков товаров, продаж...при наличии расхождений уведомляется менеджер филиала.
Прикрепленные файлы:
Обмен.pdf
8. dima_home 110 14.08.17 14:51 Сейчас в теме
Вот пример файла xml, все ценное заменено *****
Прикрепленные файлы:
8_GLV_RNK_20170404_117.xml
Оставьте свое сообщение

См. также

Изменение макета в карточке номенклатуры(УТ 11, КА 2) 3

Статья Программист Нет файла v8::УФ ERP2 УТ11 КА2 Бесплатно (free) Практика программирования Работа с интерфейсом

Краткая памятка по выведению добавленного реквизита в справочнике Номенклатура в стандартную карточку номенклатуры в УТ 11, КА 2, ERP 2.

24.10.2019    1124    darkultro37    0       

Формы. Трудности программной работы 77

Статья Программист Нет файла v8 v8::УФ 1cv8.cf Бесплатно (free) Работа с интерфейсом

Рассматриваем основные подводные камни, с которыми приходится сталкиваться при программной работе с формами, а также способы обхода самых частых проблем.

06.10.2019    4840    YPermitin    21       

"Вы всё сломали!". Разбираемся, кто прав, кто виноват 9

Статья Программист Нет файла v8::УФ ИТ-компания Россия Бесплатно (free) Практика программирования

О том, как "всё испортил" программист, а на самом деле виноват заказчик.

20.09.2019    3338    RomanCrow13    26       

Оповещения боту из 1С за 31 минуту 121

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Интеграция

Поделюсь опытом, как быстро сделать бота с оповещениями в Телеграмм из 1С без лишних затрат.

18.09.2019    9624    4    feva    31       

Агрегатные функции СКД, о которых мало кто знает 343

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    13685    ids79    44       

EnterpriseData – часть 3. Загрузка данных, идентификация объектов 62

Статья Программист Нет файла v8 v8::УФ 1cv8.cf ОС Бесплатно (free) Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    4417    ids79    7       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 255

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    14991    ids79    30       

Кодовое создание документа на 8.3, управляемые формы (на примере) 11

Статья Программист Стажер Нет файла v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Разработка

В своё время мне нужен был код создания документа через обработку, пол дня потерял пока нашёл гайд по решению данной задачи. Поэтому просто решил поделиться данным решением. Подойдёт только новичкам, опытные программисты могут даже не читать =)

07.08.2019    2429    Nefilimus    15       

Подсистема "Варианты отчетов". Используете ли Вы ее правильно? 217

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом БСП (Библиотека стандартных подсистем)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    17434    YPermitin    49       

Вставка гиперссылки в форматированный документ 9

Статья Программист Нет файла v8::УФ Бесплатно (free) Практика программирования Разработка

Да, форматированный документ это умеет и сам, но возможности можно расширить!

03.06.2019    2500    Yashazz    0       

Добавление внешних отчетов / обработок в собственные подсистемы 23

Статья Программист Стажер Нет файла v8::УФ Россия Бесплатно (free) Практика программирования Разработка

Краткая инструкция по добавлению функционала доп обработок/отчетов в собственную подсистему.

24.05.2019    4236    login1020    7       

Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП 93

Статья Программист Нет файла v8 v8::УФ v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования Работа с интерфейсом Разработка

В данной статье рассмотрим механизм работы с расшифровкой отчета, созданного при помощи системы компоновки данных, в управляемом приложении. Показывать буду на примере реальной задачи. Условие: использовать имеющиеся в конфигурации механизмы БСП, с минимальными и "правильными" изменениями. Расшифровка должны быть двух видов на каждом поле: 1. Открывать ссылочный объект 2. Открывать новую форму с детализацией табличной части документа. Собственно ради второго пункта и писалась статья, в основном для себя, чтобы не забыть.

14.05.2019    8649    Viktor_Ermakov    6       

Оперативная доработка отчетов без обновления конфигурации или расширения 7

Статья Программист Нет файла v8::УФ 1cv8.cf Россия Бесплатно (free) Практика программирования Разработка

В статье рассматривается вариант оперативной доработки отчетов при помощи механизма дополнительных отчетов и обработок и небольшой модификации конфигурации.

12.05.2019    2308    samvani    0       

Выгрузка документа по условию 5

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    6392    m-rv    2       

Автоматизация печатной формы (автоформирование табличного документа на основе любой таблицы значений) 3

Статья Программист Нет файла v8 v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Разработка

Автоматическое формирование табличного документа из выбранной таблицы значений. Пример как можно рутинные действия по оформлению внешнего вида печатной формы переложить на программу. Статья предназначена в первую очередь для тех, кто не сильно владеет СКД (как я, например), но которым не хочется тратить свое время на формирование разных макетов, если вывести документ нужно в стандартном виде. Код полностью открыт, пользуйтесь на здоровье. :)

18.04.2019    1643    NeSPEC    0       

Этюды по программированию. Хитрости создания расширений для конфигураций на БСП. Часть 2 43

Статья Программист Нет файла v8::УФ Бесплатно (free) Практика программирования Разработка

Некоторые нюансы, если вы захотите создавать свои расширения. Продолжение первой части.

16.04.2019    7433    milkers    8       

Как прикрутить ГУИД к регистру сведений 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    9045    m-rv    16       

Выбор периода на управляемой форме почти как на обычных формах 24

Статья Программист Стажер Нет файла v8 v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Разработка

Простой механизм выбора периода на управляемой форме максимально похожий на аналог в обычных формах, тестировалось на платформах 8.3.8.ХХХ и выше.

26.03.2019    3569    independ    6       

Как добавить типовую форму для СКД (для начинающих) (1С 8.3, управляемые формы) 9

Статья Программист Стажер Нет файла v8 v8::УФ v8::СКД Бесплатно (free) Инструментарий разработчика Работа с интерфейсом

Кастомизация СКД, нестандартная расшифровка, загрузка параметров и другие действия требуют наличия формы отчета. При создании СКД отчета по умолчанию форма не создается, в большинстве случаев это и не требуется. Однако при ситуациях, перечисленных выше, форму все же нужно создать. Это простая инструкция по созданию такой типовой формы.

25.03.2019    6275    ellavs    9       

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4 101

Статья Программист Нет файла v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free) Практика программирования Универсальные функции Разработка

Различные варианты корректировки типовых механизмов проведения документов, без корректировки основной конфигурации. Использование расширений, подписок на событие и механизма локализации типовых документов.

22.03.2019    9849    ids79    14       

Иерархия групп и элементов в форме списка справочника как в проводнике. УФ 37

Статья Программист Нет файла v8 v8::УФ 1cv8.cf Россия Бесплатно (free) Практика программирования Разработка

Если в форме списке надо выводить группы и элементы в разных таблицах, так как, например, в проводнике - слева группы, справа элементы, то для тех кто не знал или забыл, представлена инструкция, как это сделать.

20.03.2019    4562    rebuzx    11       

Добавление отчетов в типовые конфигурации 1С 206

Статья Программист Нет файла v8::УФ v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

Описание различных способов добавления общих и контекстных отчетов в конфигурации 1С, построенные на базе БСП. Основные моменты и нюансы.

07.03.2019    26747    ids79    33       

Программное изменение управляемых форм 29

Статья Программист Нет файла v8::УФ Бесплатно (free) Практика программирования Разработка

При адаптации типовых конфигураций 1С часто приходится изменять в 1С 8 управляемые формы. Такие адаптации сложно потом поддерживать при обновлении. Такие изменения приходится вносить вручную заново, перепроверять корректность изменений в каждом обновлении. И если таких изменений множество, то каждое обновление может представлять серьезные трудозатраты. Есть несколько решений, которые позволяют упростить поддержку и обновление измененных систем 1С. Одно из них – это программное изменение форм. Вести разработку в таком режиме получается немного дольше, чем прямое изменение формы. Но это хорошо компенсируется в дальнейшем при поддержке и обновлении системы 1С. На самом деле ничего сложного в этом нет, просто нужно привыкнуть. Рассмотрим на примерах, как делать доработку управляемых форм кодом в 1С.

05.03.2019    5792    user759624    10       

Функциональные опции 1С 8.3 – все возможные варианты использования 172

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Разработка

Примеры использования функциональных опций для управления интерфейсом и элементами управляемых форм, с различными вариантами хранения значений: константа, реквизит справочника, ресурс регистра сведений.

22.02.2019    18022    ids79    5       

Информирование пользователя. Работа с объектом «СообщениеПользователю» 253

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Разработка

Различные варианты и нюансы использования объекта СообщениеПользователю и другие способы информирования пользователя: без привязки к какой-либо форме и с выводом сообщения в отдельном окне.

15.02.2019    19606    ids79    38       

Установка шрифтов из 1С, управляемые формы 4

Статья Программист Нет файла v8 v8::УФ Windows Бесплатно (free) Практика программирования Разработка

При разворачивании своей конфигурации (специализированной) потребовалось автоматически установить необходимые шрифты. Быстрый поиск привел на статью https://infostart.ru/public/355315/ но у меня шрифты устанавливались неправильно - в реестре информация не обновлялась, да и в списке шрифтов данные так же не обновились (Проверял на Windows 10). Пришлось писать свой код.

04.02.2019    3223    zsrg    0       

Исправление отрицательных остатков по организациям в УТ 11.4, КА 2.4, ЕРП 2.4. Интеркампани, механизм формирования резервов 65

Статья Программист Нет файла v8 v8::УФ ERP2 УТ11 КА2 УУ Учет ТМЦ Бесплатно (free) Практика программирования Адаптация типовых решений

Подробно рассмотрены два способа исправления отрицательных остатков по организациям без использования подсистемы Интеркампани и с использованием. Описан механизм формирования резервов на уровне процедур общего модуля. Доработки механизма и исправление ошибок.

29.01.2019    14742    ids79    25       

Отладка дополнительных отчетов и обработок (Управляемые формы 8.3 БСП) 26

Статья Программист Нет файла v8::УФ 1cv8.cf Россия Бесплатно (free) Практика программирования

Собственно отладка дополнительных отчетов и обработок (Управляемые формы 8.3 БСП).

17.01.2019    7911    aagubarev    22       

Раздельный вывод частей даты на форму без программирования 71

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Работа с интерфейсом

Небольшой лайфхак для повышения удобства редактирования пользователем полей с типом "Дата".

12.01.2019    6095    drmaxart    20       

Добавление ставки НДС 20% на старой УТ 11.0 за 2 шага 14

Статья Программист Нет файла v8::ОУ v8::УФ УТ11 Оптовая торговля, дистрибуция, логистика Россия НДС Бесплатно (free) Практика программирования

Предлагаю Вам небольшую инструкцию по добавлению ставки НДС 20% в старую "необновляемую" конфигурацию "Управление торговлей 11.0".

02.01.2019    12986    aximo    12       

EnterpriseData – часть 2. Процесс выгрузки данных 127

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    14102    ids79    27       

Новый подход к обмену данными EnterpriseData 207

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    23547    ids79    72       

Тот самый Рабочий стол. Возрождение легенды 78

Статья Программист Нет файла v8::УФ v8::СКД 1cv8.cf Бесплатно (free) Работа с интерфейсом

Невероятный инструмент построения адаптивных интерфейсов.

30.11.2018    10493    1c-intelligence    23       

Подсчёт и отображение количества строк в динамическом списке 21

Статья Программист Нет файла v8::УФ Бесплатно (free) Работа с интерфейсом

Зачастую пользователи хотят видеть, сколько же строк содержится в форме списка, например, товаров. Да ещё и с учётом отборов, полнотекстового или "обычного" поиска, чтобы это работало в многих формах списка конфигурации, да ещё и не тормозило.

28.11.2018    6271    sano    22       

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации 119

Статья Программист Нет файла v8 v8::УФ БП3.0 УТ11 Россия Windows Бесплатно (free) Практика программирования Обмен через XML

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    20710    ids79    20       

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 127

Статья Программист Нет файла v8 v8::blocking 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    22549    ids79    40       

Отладка запроса с содержимым временных таблиц (управляемые формы) 66

Статья Программист Нет файла v8 v8::УФ v8::Запросы 1cv8.cf Россия Бесплатно (free) Практика программирования

Получение данных запроса из отладки. Загрузка текста запроса, параметров, данных временных таблиц

01.11.2018    11962    Evg-Lylyk    49       

Вспомогательные инструкции в коде 1С 106

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    21727    tormozit    100       

Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час 380

Статья Программист Нет файла v8::СКД Бесплатно (free) Практика программирования

Сергей Наумов делится опытом нестандартного использования системы компоновки данных. Он рассказывает о построении сложных отчетов с помощью функций СКД, описывает преимущества использования компоновки в коде для значительного сокращения строк кода и времени на решение задач, а также рассказывает про отладку компоновки и возможности оптимизации ее работы.

03.09.2018    32981    SergeyN    26       

Переопределение кнопки "Провести и закрыть" 8

Статья Программист Нет файла v8::УФ 1cv8.cf Россия Бесплатно (free) Практика программирования

Бывает, что возникает задача, когда перед записью или проведением документа необходимо задать пользователю вопрос для дальнейше записи. Процедура "ПередЗаписью" не всегда может подойти и возникает необходимо переопределить действие кнопки "Провести и закрыть". Ниже расскажу простой способ, как это можно сделать.

17.08.2018    7796    Anchoret    16       

Повышаем эффективность разработки правил обмена 125

Статья Программист Нет файла v8 КД ОС Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    20493    olegtymko    47       

Добавляем кнопку "Присоединенные файлы" к любому документу без строчки кода 17

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Практика программирования

Добавляем кнопку "Присоединенные файлы" к любому документу на примере базы Зарплата и управление персоналом в кредитных организациях, редакция 3.1 (3.1.4.171)

20.06.2018    9159    pavel_pss    9       

Как сделать запрос на изменение данных 75

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Практика программирования

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    22434    m-rv    21       

Бодаемся с отображением отборов на управляемых формах 84

Статья Программист Нет файла v8::УФ 1cv8.cf Россия Бесплатно (free) Работа с интерфейсом

Рассмотрим в статье, как настроить отображение пользовательских отборов на форме по своему желанию.

30.05.2018    15450    lemz    14       

Строим графы средствами 1С (без GraphViz) 43

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    18207    slozhenikin_com    19